UNPKG

koval-ui

Version:

React components collection with minimalistic design. Supports theming, layout, and input validation.

3 lines (2 loc) 818 B
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),f=require("./useEventListener.cjs"),y=(n,t,s=!0)=>{const u=r.useRef(null),[c,o]=r.useState([]);r.useEffect(()=>{if(s&&t){u.current=n?.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');const e=u.current?u.current[0]:null,l=u.current?u.current[u.current.length-1]:null;o([e,l])}},[t,n,s]),r.useEffect(()=>{s&&t&&c[0]?.focus()},[s,c,t]);const b=r.useCallback(e=>{const[l,a]=c;s&&t&&e.key==="Tab"&&(e.shiftKey&&document.activeElement===l?(e.preventDefault(),a.focus()):!e.shiftKey&&document.activeElement===a&&(e.preventDefault(),l.focus()))},[s,c,t]);f.useEventListener(f.EventType.keydown,b)};exports.useFocusTrap=y; //# sourceMappingURL=useFocusTrap.cjs.map