@guruhotel/aura-hooks
Version:
🪝 Hooks library designed by the Guruhotel team for Aura UI
1 lines • 847 B
JavaScript
const t=/input|select|textarea|button|object/;export const FOCUS_SELECTOR="a, input, select, textarea, button, object, [tabindex]";function e(t){return"test"!==process.env.NODE_ENV&&"none"===t.style.display}function n(t){let e=t.getAttribute("tabindex");return null===e&&(e=""),parseInt(e,10)}export function focusable(r){const o=r.nodeName.toLowerCase(),u=!Number.isNaN(n(r));return(t.test(o)&&!r.disabled||r instanceof HTMLAnchorElement&&r.href||u)&&function(t){if(t.getAttribute("aria-hidden")||t.getAttribute("hidden")||"hidden"===t.getAttribute("type"))return!1;let n=t;for(;n&&n!==document.body;){if(e(n))return!1;n=n.parentNode}return!0}(r)}export function tabbable(t){const e=n(t);return(Number.isNaN(e)||e>=0)&&focusable(t)}export function findTabbableDescendants(t){return Array.from(t.querySelectorAll(FOCUS_SELECTOR)).filter(tabbable)}