UNPKG

@ark-ui/solid

Version:

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

37 lines (34 loc) 933 B
import { composeRefs } from "./PT2CJE3O.jsx"; import { createSplitProps } from "./6WEDGJKQ.jsx"; import { ark } from "./UFYZ7HLU.jsx"; // src/components/focus-trap/focus-trap.tsx 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 <ark.div {...localProps} ref={composeRefs((el) => localNode = el, props.ref)} />; }; export { FocusTrap };