UNPKG

@ariakit/react-core

Version:

Ariakit React core

80 lines (63 loc) 2.64 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _RDDLXR5Tcjs = require('../__chunks/RDDLXR5T.cjs'); require('../__chunks/EQD56WGF.cjs'); var _WULEED4Qcjs = require('../__chunks/WULEED4Q.cjs'); var _OZM4QA2Vcjs = require('../__chunks/OZM4QA2V.cjs'); require('../__chunks/FDRJDQ5Y.cjs'); var _7EQBAZ46cjs = require('../__chunks/7EQBAZ46.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 = _WULEED4Qcjs.createHook.call(void 0, function useFocusTrapRegion2(_a) { var _b = _a, { enabled = false } = _b, props = _7EQBAZ46cjs.__objRest.call(void 0, _b, ["enabled"]); const ref = _react.useRef.call(void 0, null); props = _OZM4QA2Vcjs.useWrapElement.call(void 0, props, (element) => { const renderFocusTrap = () => { if (!enabled) return null; return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _RDDLXR5Tcjs.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 = _7EQBAZ46cjs.__spreadProps.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, {}, props), { ref: _OZM4QA2Vcjs.useMergeRefs.call(void 0, ref, props.ref) }); return _misc.removeUndefinedValues.call(void 0, props); } ); var FocusTrapRegion = _WULEED4Qcjs.forwardRef.call(void 0, function FocusTrapRegion2(props) { const htmlProps = useFocusTrapRegion(props); return _WULEED4Qcjs.createElement.call(void 0, TagName, htmlProps); }); exports.FocusTrapRegion = FocusTrapRegion; exports.useFocusTrapRegion = useFocusTrapRegion;