UNPKG

@ariakit/react-core

Version:

Ariakit React core

75 lines (62 loc) 2.42 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _VMIEHJBRcjs = require('../__chunks/VMIEHJBR.cjs'); require('../__chunks/6HGRCOFA.cjs'); var _WBFXWJUHcjs = require('../__chunks/WBFXWJUH.cjs'); var _MZ2HG624cjs = require('../__chunks/MZ2HG624.cjs'); require('../__chunks/XMDZRF6Y.cjs'); // src/focus-trap/focus-trap-region.tsx var _focus = require('@ariakit/core/utils/focus'); var _misc = require('@ariakit/core/utils/misc'); var _react = require('react'); var _jsxruntime = require('react/jsx-runtime'); var TagName = "div"; var useFocusTrapRegion = _WBFXWJUHcjs.createHook.call(void 0, function useFocusTrapRegion2({ enabled = false, ...props }) { const ref = _react.useRef.call(void 0, null); props = _MZ2HG624cjs.useWrapElement.call(void 0, props, (element) => { const renderFocusTrap = () => { if (!enabled) return null; return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _VMIEHJBRcjs.FocusTrap, { onFocus: (event) => { const container = ref.current; if (!container) return; const tabbables = _focus.getAllTabbableIn.call(void 0, container, true); const first = tabbables[0]; const last = tabbables[tabbables.length - 1]; if (!tabbables.length) { container.focus(); return; } if (event.relatedTarget === first) { last == null ? void 0 : last.focus(); } else { first == null ? void 0 : first.focus(); } } } ); }; return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [ renderFocusTrap(), element, renderFocusTrap() ] }); }, [enabled] ); props = { ...props, ref: _MZ2HG624cjs.useMergeRefs.call(void 0, ref, props.ref) }; return _misc.removeUndefinedValues.call(void 0, props); } ); var FocusTrapRegion = _WBFXWJUHcjs.forwardRef.call(void 0, function FocusTrapRegion2(props) { const htmlProps = useFocusTrapRegion(props); return _WBFXWJUHcjs.createElement.call(void 0, TagName, htmlProps); }); exports.FocusTrapRegion = FocusTrapRegion; exports.useFocusTrapRegion = useFocusTrapRegion;