tgl-focus-navigation
Version:
```bash npm install tgl-focus-navigation ```
1 lines • 2.04 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports["tgl-focus-navigation"]=t(require("react")):e["tgl-focus-navigation"]=t(e.react)}(this,(e=>(()=>{"use strict";var t={156:t=>{t.exports=e}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var u=r[e]={exports:{}};return t[e](u,u.exports,n),u.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{n.r(o),n.d(o,{default:()=>r});var e=n(156),t=function(e){return Array.from(e.querySelectorAll('a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"])')).filter((function(t){for(var r=t;r&&r!==e;){if("none"===window.getComputedStyle(r).display)return!1;r=r.parentElement}return!0}))};const r=function(r){void 0===r&&(r=!1);var n=(0,e.useRef)(null),o=(0,e.useRef)(0),u=function(e){var r=n.current;if(r&&r.children){var u=t(r);if("Tab"===e.key||"Enter"===e.key){for(var a=e.shiftKey,f=a?-1:1,i=o.current+f;i>=0&&i<u.length&&u[i].disabled;)i+=f;i>=0&&i<u.length&&!["button","textarea","a"].includes(u[o.current].tagName.toLowerCase())&&(e.preventDefault(),u[i].focus(),o.current=i),i<0&&a&&"Enter"===e.key&&e.preventDefault()}}};return(0,e.useEffect)((function(){var e=n.current;if(e){var a=function(e){o.current=e};e.addEventListener("keydown",u);var f=t(e);return f.forEach((function(e,t){e.addEventListener("focus",(function(){return a(t)}))})),r&&f.length>0&&f[0].focus(),function(){e.removeEventListener("keydown",u),f.forEach((function(e,t){e.removeEventListener("focus",(function(){return a(t)}))}))}}}),[r]),function(e){n.current=e}}})(),o})()));