UNPKG

@ark-ui/solid

Version:

A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.

26 lines (23 loc) 1.01 kB
import { composeRefs } from './ROP6QZQ7.js'; import { createSplitProps } from './ZMHI4GDJ.js'; import { ark } from './EPLBB4QN.js'; import { createComponent, mergeProps } from 'solid-js/web'; import { trapFocus } from '@zag-js/focus-trap'; import { createEffect, onCleanup } from 'solid-js'; var FocusTrap = (props) => { let localNode; const [trapProps, localProps] = createSplitProps()(props, ["disabled", "onActivate", "onDeactivate", "initialFocus", "fallbackFocus", "returnFocusOnDeactivate", "setReturnFocus"]); createEffect(() => { if (!localNode || trapProps.disabled) return; const autoFocusNode = localNode.querySelector("[autofocus], [data-autofocus]"); trapProps.initialFocus ||= autoFocusNode ?? void 0; onCleanup(trapFocus(localNode, trapProps)); }); return createComponent(ark.div, mergeProps(localProps, { ref(r$) { var _ref$ = composeRefs((el) => localNode = el, props.ref); typeof _ref$ === "function" && _ref$(r$); } })); }; export { FocusTrap };