UNPKG

rsuite

Version:

A suite of react components

34 lines (31 loc) 939 B
'use client'; "use strict"; exports.__esModule = true; exports.default = void 0; exports.useFocus = useFocus; var _react = require("react"); function useFocus(elementRef) { // When grabbing focus, keep track of previous activeElement // so that we can return focus later const previousActiveElementRef = (0, _react.useRef)(null); // Focus the element itself const grab = (0, _react.useCallback)(() => { requestAnimationFrame(() => { if (document.activeElement !== elementRef.current) { previousActiveElementRef.current = document.activeElement; elementRef.current?.focus(); } }); }, [elementRef]); // Return focus to previous active element const release = (0, _react.useCallback)(options => { requestAnimationFrame(() => { previousActiveElementRef.current?.focus(options); }); }, []); return { grab, release }; } var _default = exports.default = useFocus;