@gravity-ui/uikit
Version:
Gravity UI base styling and components
29 lines (28 loc) • 1.08 kB
JavaScript
;
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