{"version":3,"sources":["webpack:///./src/js/modules/faq-listing.js","webpack:///./node_modules/@verndale/roving-ux/dist/index.module.js"],"names":["Module","Component","setupDefaults","this","dom","$innerContainer","el","querySelector","$panels","querySelectorAll","$panelsContainer","$panelsList","$navContainer","$selectName","dataset","selectName","$selectId","selectId","$navRole","navRole","$navAriaLabel","navAriaLabel","enableFirstValidTab","generateSelect","generateSideNav","implementRovin","length","i","innerHTML","trim","setAttribute","select","document","createElement","classList","add","Array","from","map","panel","id","navTitle","join","addEventListener","handleClick","bind","insertBefore","ul","hash","children","forEach","option","decodeURI","window","location","substring","toLowerCase","index","findIndex","click","append","addListeners","handleResize","rovingIndex","element","target","selected","value","e","focus","getAttribute","navSideOptions","remove","Map","t","c","d","callback","o","s","tabIndex","set","targets","active","u","get","v","f","keyCode","preventDefault","r","n","a","removeEventListener","delete"],"mappings":"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","file":"67.bundle.js","sourcesContent":["import { Component } from '@verndale/core'\nimport { rovingIndex } from '@verndale/roving-ux'\nclass Module extends Component {\n setupDefaults() {\n this.dom = {\n $innerContainer: this.el.querySelector('.faq-listing__inner'),\n $panels: this.el.querySelectorAll('.faq-listing__panel'),\n $panelsContainer: this.el.querySelector('.faq-listing__panels-container'),\n $panelsList: this.el.querySelector('.faq-listing__panel'),\n $navContainer: this.el.querySelector('.faq-listing__side-nav'),\n $selectName: this.el.dataset.selectName,\n $selectId: this.el.dataset.selectId,\n $navRole: this.el.dataset.navRole,\n $navAriaLabel: this.el.dataset.navAriaLabel\n }\n\n this.enableFirstValidTab()\n this.generateSelect()\n this.generateSideNav()\n this.implementRovin()\n }\n\n enableFirstValidTab() {\n if (this.dom.$panels && this.dom.$panels.length) {\n for(let i = 0; i < this.dom.$panels.length; i++) {\n if (this.dom.$panels[i].innerHTML && this.dom.$panels[i].innerHTML.trim()) {\n this.dom.$panels[i]?.setAttribute('tabindex', 0)\n break\n }\n }\n }\n }\n\n generateSelect() {\n this.select = document.createElement('select')\n this.select.classList.add('faq-listing__select')\n this.select.setAttribute('name', this.dom.$selectName)\n this.select.setAttribute('id', this.dom.$selectId)\n this.select.innerHTML = Array.from(this.dom.$panels)\n .map((panel) => {\n if (panel.innerHTML && panel.innerHTML.trim()) {\n return ``\n }\n })\n .join('')\n this.select.addEventListener('input', this.handleClick.bind(this))\n this.dom.$innerContainer.insertBefore(this.select, this.dom.$panelsContainer)\n }\n\n generateSideNav() {\n const ul = document.createElement('ul')\n ul.classList.add('faq-listing__faq-list')\n ul.setAttribute('role', this.dom.$navRole)\n ul.setAttribute('aria-label', this.dom.$navAriaLabel)\n ul.innerHTML = Array.from(this.dom.$panels)\n .map((panel) => {\n if (panel.innerHTML && panel.innerHTML.trim()) {\n return `
  • ${panel.dataset.navTitle}
  • `\n }\n })\n .join('')\n Array.from(ul.children).forEach((option) =>\n option.addEventListener('click', this.handleClick.bind(this))\n )\n\n const hash = decodeURI(window.location.hash?.substring(1, window.location.hash?.length)).toLowerCase();\n\n if (hash) {\n const index = Array.from(ul.children).findIndex(\n (el) => el.dataset.hash === hash\n )\n if (index > -1) {\n ul.children[index]?.classList.add('faq-listing__option--active')\n ul.children[index].click();\n } else {\n ul.children[0].classList.add('faq-listing__option--active')\n }\n } else {\n ul.children[0].classList.add('faq-listing__option--active')\n }\n this.dom.$navContainer.append(ul)\n }\n\n addListeners() {\n window.addEventListener('resize', this.handleResize.bind(this))\n }\n\n implementRovin() {\n\n rovingIndex({\n element: this.dom.$navContainer,\n target: '.faq-listing__option'\n })\n\n\n }\n\n handleResize() {\n const selected = this.el.querySelector('.faq-listing__panel[tabindex=\"0\"]')\n this.select.value = selected.id\n }\n\n handleClick(e) {\n e.target.focus()\n const value = e.target.value ? e.target.value : e.target.getAttribute('aria-controls')\n const navSideOptions = this.el.querySelectorAll('.faq-listing__option')\n this.dom.$panels.forEach((panel) => {\n if (value === panel.id) {\n panel.setAttribute('tabindex', 0)\n } else {\n panel.setAttribute('tabindex', -1)\n }\n })\n navSideOptions.forEach((option) => {\n if (value === option.getAttribute('aria-controls')) {\n option.classList.add('faq-listing__option--active')\n } else {\n option.classList.remove('faq-listing__option--active')\n }\n })\n }\n}\n\nexport default Module\n","var e=new Map,t=function(t){var c=t.element,d=t.callback,o=c.querySelectorAll(t.target||\":scope *\"),s=o[0];c.tabIndex=-1,o.forEach(function(e){return e.tabIndex=-1}),s.tabIndex=0,e.set(c,{targets:o,active:s,index:0});var u=function(t){e.get(\"last_rover\")!=c&&(v(c,e.get(c).active),e.set(\"last_rover\",c))};c.addEventListener(\"focusin\",u);var f=function(e){switch(e.keyCode){case 39:case 40:e.preventDefault(),r(c,d);break;case 37:case 38:e.preventDefault(),i(c,d);break;case 36:e.preventDefault(),n(c,d);break;case 35:e.preventDefault(),a(c,d)}};c.addEventListener(\"keydown\",f),c.addEventListener(\"DOMNodeRemovedFromDocument\",function t(n){c.removeEventListener(\"focusin\",u),c.removeEventListener(\"keydown\",f),c.removeEventListener(\"DOMNodeRemoved\",t),e.delete(c),o.forEach(function(e){return e.tabIndex=\"\"})})},n=function(t,n){var a=e.get(t);a.index=0;var r=a.targets[a.index];r&&v(t,r,n)},a=function(t,n){var a=e.get(t);a.index=a.targets.length-1;var r=a.targets[a.index];r&&v(t,r,n)},r=function(t,n){var a=e.get(t);a.index+=1,a.index>a.targets.length-1&&(a.index=a.targets.length-1);var r=a.targets[a.index];r&&v(t,r,n)},i=function(t,n){var a=e.get(t);a.index-=1,a.index<1&&(a.index=0);var r=a.targets[a.index];r&&v(t,r,n)},v=function(t,n,a){var r=e.get(t);r.active.tabIndex=-1,a&&a(n),r.active=n,r.active.tabIndex=0,r.active.focus()};export{t as rovingIndex};\n//# sourceMappingURL=index.module.js.map\n"],"sourceRoot":""}