UNPKG

@gravity-ui/uikit

Version:

Gravity UI base styling and components

25 lines (24 loc) 892 B
import * as React from 'react'; import { tabbable } from 'tabbable'; export function useInitialFocus({ open, initialFocus, floatingRef }) { React.useEffect(() => { if (!open || initialFocus === undefined) return; const timerId = setTimeout(() => { const floatingEl = floatingRef.current; if (!floatingEl) return; let elToFocus = null; if (typeof initialFocus === 'number') { const tabbableEls = tabbable(floatingEl); elToFocus = tabbableEls[initialFocus] ?? null; } else { elToFocus = initialFocus.current; } elToFocus?.focus({ preventScroll: true }); }, 0); return () => clearTimeout(timerId); }, [open, initialFocus, floatingRef]); } //# sourceMappingURL=useInitialFocus.js.map