UNPKG

@ariakit/react-core

Version:

Ariakit React core

75 lines (62 loc) 2.42 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _3PV6Y4XHcjs = require('../__chunks/3PV6Y4XH.cjs'); require('../__chunks/WWNMQZJA.cjs'); var _SQLDFLTEcjs = require('../__chunks/SQLDFLTE.cjs'); var _4KGS3DOWcjs = require('../__chunks/4KGS3DOW.cjs'); require('../__chunks/TWX5YNTH.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 = _SQLDFLTEcjs.createHook.call(void 0, function useFocusTrapRegion2({ enabled = false, ...props }) { const ref = _react.useRef.call(void 0, null); props = _4KGS3DOWcjs.useWrapElement.call(void 0, props, (element) => { const renderFocusTrap = () => { if (!enabled) return null; return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _3PV6Y4XHcjs.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: _4KGS3DOWcjs.useMergeRefs.call(void 0, ref, props.ref) }; return _misc.removeUndefinedValues.call(void 0, props); } ); var FocusTrapRegion = _SQLDFLTEcjs.forwardRef.call(void 0, function FocusTrapRegion2(props) { const htmlProps = useFocusTrapRegion(props); return _SQLDFLTEcjs.createElement.call(void 0, TagName, htmlProps); }); exports.FocusTrapRegion = FocusTrapRegion; exports.useFocusTrapRegion = useFocusTrapRegion;