{"version":3,"file":"FAQViewComponent.min.js","sources":["../../../../Business/Components/FAQ/FAQViewComponent.js"],"sourcesContent":["(function (win) {\n win.kombiApp = win.kombiApp || {};\n win.kombiApp.Components = win.kombiApp.Components || {};\n\n win.kombiApp.Components.FAQ = function (\n element, // The element that the component is attached to\n ) {\n const accordionHeaders = element.querySelectorAll('[data-accordion-header]');\n Array.prototype.forEach.call(accordionHeaders, accordionHeader => {\n accordionHeader.addEventListener('click', () => onHeaderClick(accordionHeader));\n const panel = accordionHeader.nextElementSibling;\n updateFocusableState(panel);\n })\n }\n\n function onHeaderClick(accordionHeader) {\n const isExpanded = accordionHeader.getAttribute('aria-expanded') === 'true' || false;\n const willBeExpanded = !isExpanded;\n\n const panel = accordionHeader.nextElementSibling;\n\n accordionHeader.setAttribute('aria-expanded', willBeExpanded);\n panel.setAttribute('aria-hidden', !willBeExpanded);\n\n if (willBeExpanded) {\n panel.style.maxHeight = panel.scrollHeight + \"px\";\n } else {\n panel.style.maxHeight = null;\n }\n updateFocusableState(panel)\n\n const parentPanel = panel.parentElement.closest('[data-accordion-panel]');\n if (!!parentPanel) {\n if (willBeExpanded) {\n parentPanel.style.maxHeight = (parentPanel.scrollHeight + panel.scrollHeight) + \"px\";\n } else {\n parentPanel.style.maxHeight = (parentPanel.scrollHeight - panel.scrollHeight) + \"px\";\n }\n }\n }\n\n // Make every hidden element not focusable.\n // This is for ARIA reasons so that the element is not focusable with for example a keyboard\n function updateFocusableState(rootEl) {\n // loop through all focusable elements\n rootEl.querySelectorAll('button, a').forEach(el => {\n // check if all the panels are exanded or not\n const isParentExpanded = isAllParentPanelsOpen(el);\n const newValue = isParentExpanded ? null : -1;\n el.tabIndex = newValue;\n })\n }\n\n function isAllParentPanelsOpen(el) {\n var panelEl = el.parentElement.closest('[data-accordion-panel]');\n if (!panelEl) {\n return true;\n }\n const isPanelExpanded = panelEl.getAttribute('aria-hidden') === 'false';\n if (isPanelExpanded == false) {\n return false;\n }\n return isAllParentPanelsOpen(panelEl);\n }\n\n})(window); "],"names":["win","updateFocusableState","rootEl","querySelectorAll","forEach","el","isParentExpanded","isAllParentPanelsOpen","panelEl","parentElement","closest","isPanelExpanded","getAttribute","tabIndex","kombiApp","Components","FAQ","element","accordionHeaders","Array","prototype","call","accordionHeader","addEventListener","onHeaderClick","willBeExpanded","isExpanded","panel","nextElementSibling","setAttribute","style","maxHeight","scrollHeight","parentPanel","window"],"mappings":"AAAA,CAAA,SAAWA,GA2CP,SAASC,EAAqBC,GAE1BA,EAAOC,iBAAiB,WAAW,EAAEC,QAAQC,IAEzC,IAAMC,EAMd,SAASC,EAAsBF,GACvBG,EAAUH,EAAGI,cAAcC,QAAQ,wBAAwB,EAC/D,GAAI,CAACF,EACD,MAAO,CAAA,EAEX,MAAMG,EAA0D,UAAxCH,EAAQI,aAAa,aAAa,EAC1D,GAAuB,GAAnBD,EACA,MAAO,CAAA,EAEX,OAAOJ,EAAsBC,CAAO,CACxC,EAhBuDH,CAAE,EAEjDA,EAAGQ,SADcP,EAAmB,KAAO,CAAC,CAEhD,CAAC,CACL,CAlDAN,EAAIc,SAAWd,EAAIc,UAAY,GAC/Bd,EAAIc,SAASC,WAAaf,EAAIc,SAASC,YAAc,GAErDf,EAAIc,SAASC,WAAWC,IAAM,SAC1BC,GAEMC,EAAmBD,EAAQd,iBAAiB,yBAAyB,EAC3EgB,MAAMC,UAAUhB,QAAQiB,KAAKH,EAAkBI,IAC3CA,EAAgBC,iBAAiB,QAAS,KAAMC,IAMjCF,EAN+CA,EAQ5DG,EAAiB,EAACC,EAD6C,SAAlDJ,EAAgBV,aAAa,eAAe,GAAgB,CAAA,GAGzEe,EAAQL,EAAgBM,mBAE9BN,EAAgBO,aAAa,gBAAiBJ,CAAc,EAC5DE,EAAME,aAAa,cAAe,CAACJ,CAAc,EAG7CE,EAAMG,MAAMC,UADZN,EACwBE,EAAMK,aAAe,KAErB,KAE5B/B,EAAqB0B,CAAK,GAEpBM,EAAcN,EAAMlB,cAAcC,QAAQ,wBAAwB,KAGhEuB,EAAYH,MAAMC,UADlBN,EAC+BQ,EAAYD,aAAeL,EAAMK,aAAgB,KAEjDC,EAAYD,aAAeL,EAAMK,aAAgB,KA3BP,CAAC,EAE9E/B,EADcqB,EAAgBM,kBACJ,CAC9B,CAAC,CACL,CAoDH,EAAEM,MAAM"}