({
initialFocusRef,
returnFocusRef,
containerRef,
preventFocusOnOpen,
}: UseOpenAndCloseFocusSettings)
| 10 | } |
| 11 | |
| 12 | export function useOpenAndCloseFocus({ |
| 13 | initialFocusRef, |
| 14 | returnFocusRef, |
| 15 | containerRef, |
| 16 | preventFocusOnOpen, |
| 17 | }: UseOpenAndCloseFocusSettings): void { |
| 18 | useEffect(() => { |
| 19 | if (preventFocusOnOpen) { |
| 20 | return |
| 21 | } |
| 22 | const returnRef = returnFocusRef.current |
| 23 | if (initialFocusRef && initialFocusRef.current) { |
| 24 | initialFocusRef.current.focus() |
| 25 | } else if (containerRef.current) { |
| 26 | const firstItem = iterateFocusableElements(containerRef.current).next().value |
| 27 | firstItem?.focus() |
| 28 | } |
| 29 | return function () { |
| 30 | returnRef?.focus() |
| 31 | } |
| 32 | }, [initialFocusRef, returnFocusRef, containerRef, preventFocusOnOpen]) |
| 33 | } |
no outgoing calls