UNPKG

@gravity-ui/uikit

Version:

Gravity UI base styling and components

29 lines (28 loc) 1.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useInitialFocus = useInitialFocus; const tslib_1 = require("tslib"); const React = tslib_1.__importStar(require("react")); const tabbable_1 = require("tabbable"); 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 = (0, tabbable_1.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