@gravity-ui/uikit
Version:
Gravity UI base styling and components
25 lines (24 loc) • 892 B
JavaScript
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