{"version":3,"file":"accordion.2cc237beeb7a062b3c7c.min.js","mappings":"gJAAe,MAAMA,EACjBC,WAAAA,CAAYC,GACRC,KAAKD,UAAYA,EACjBC,KAAKC,SAAWD,KAAKD,UAAUG,iBAAiB,yBAChDF,KAAKG,aAAeH,KAAKD,UAAUK,aAAa,wBAEhDJ,KAAKK,MACT,CAEAC,QAAAA,CAAUC,EAASC,EAAOC,GACtBF,EAAQG,aAAa,iBAAiB,GACtCF,EAAMG,MAAMC,OAAS,GAAGH,MACxBD,EAAMG,MAAME,WAAa,SAC7B,CAEAC,QAAAA,CAAUP,EAASC,GACfD,EAAQG,aAAa,iBAAiB,GACtCF,EAAMG,MAAMC,OAAS,MACrBJ,EAAMG,MAAME,WAAa,QAC7B,CAEAE,WAAAA,CAAaC,EAAWb,EAAcI,EAASC,EAAOC,GAClD,GAA8C,SAA1CF,EAAQU,aAAa,iBACrBjB,KAAKc,SAASP,EAASC,OACpB,CACH,IAAKL,EAAc,CACf,MAAMe,EAAiBF,EAAUG,cAAc,0BAE/C,GAAID,EAAgB,CAChB,MAAME,EAAeC,SAASC,eAAeJ,EAAeD,aAAa,kBAEzEjB,KAAKc,SAASI,EAAgBE,EAClC,CACJ,CAEApB,KAAKM,SAASC,EAASC,EAAOC,EAClC,CACJ,CAEAc,gBAAAA,CAAiBC,GACbC,MAAMC,UAAUC,QAAQC,KAAKJ,EAAKzB,UAAUG,iBAAiB,2BAA2BM,IACpFA,EAAMG,MAAMC,OAAS,OAErB,MAAMH,EAAcD,EAAMqB,aACpBtB,EAAUc,SAASC,eAAed,EAAMS,aAAa,oBAG3DT,EAAME,aAAa,wBAAyBD,GAGE,SAA1CF,EAAQU,aAAa,iBACrBT,EAAMG,MAAMC,OAAS,GAAGH,OAExBD,EAAMG,MAAMC,OAAS,MACrBJ,EAAMG,MAAME,WAAa,SAC7B,GAER,CAEAR,IAAAA,GAgBI,IAAIyB,EAfJ9B,KAAKuB,iBAAiBvB,MAEtBA,KAAKD,UAAUgC,iBAAiB,SAASC,IACrC,MAAMzB,EAAUyB,EAAMC,OAAOC,QAAQ,4BAErC,GAAI3B,EAAS,CACT,MAAMC,EAAQa,SAASC,eAAef,EAAQU,aAAa,kBACrDR,EAAeD,EAASA,EAAMS,aAAa,yBAA2B,KAExER,GACAT,KAAKe,YAAYf,KAAKD,UAAWC,KAAKG,aAAcI,EAASC,EAAOC,EAE5E,KAIJ0B,OAAOJ,iBAAiB,UAAU,KAC9BK,aAAaN,GACbA,EAAcO,YAAW,KACrBrC,KAAKuB,iBAAiBvB,KAAK,GAC5B,IAAI,IAGXA,KAAKD,UAAUuC,gBAAgB,+BACnC,E","sources":["webpack://intracto-deheus/./Frontend/js/components/accordion/index.js"],"sourcesContent":["export default class Accordion {\r\n    constructor(component) {\r\n        this.component = component;\r\n        this.triggers = this.component.querySelectorAll('[data-accordion-open]');\r\n        this.openMultiple = this.component.hasAttribute('data-accordion-multi');\r\n        \r\n        this.init();\r\n    }\r\n\r\n    showItem (trigger, panel, panelHeight) {\r\n        trigger.setAttribute('aria-expanded', true);\r\n        panel.style.height = `${panelHeight}px`;\r\n        panel.style.visibility = 'visible';\r\n    }\r\n    \r\n    hideItem (trigger, panel) {\r\n        trigger.setAttribute('aria-expanded', false);\r\n        panel.style.height = '0px';\r\n        panel.style.visibility = 'hidden';\r\n    }\r\n    \r\n    toggleItems (accordion, openMultiple, trigger, panel, panelHeight) {\r\n        if (trigger.getAttribute('aria-expanded') === 'true') {\r\n            this.hideItem(trigger, panel);\r\n        } else {\r\n            if (!openMultiple) {\r\n                const currentTrigger = accordion.querySelector('[aria-expanded=\"true\"]');\r\n    \r\n                if (currentTrigger) {\r\n                    const currentPanel = document.getElementById(currentTrigger.getAttribute('aria-controls'));\r\n    \r\n                    this.hideItem(currentTrigger, currentPanel);\t\t\t\r\n                }\r\n            }\r\n    \r\n            this.showItem(trigger, panel, panelHeight);\r\n        }\r\n    }\r\n\r\n    calculateHeights(root) {\r\n        Array.prototype.forEach.call(root.component.querySelectorAll('[data-accordion-panel]'), panel => {\r\n            panel.style.height = 'auto';\r\n\r\n            const panelHeight = panel.offsetHeight;\r\n            const trigger = document.getElementById(panel.getAttribute('aria-labelledby'));\r\n            \r\n            // Add calculated to data-attribute for later use\r\n            panel.setAttribute('data-accordion-height', panelHeight);\r\n    \r\n            // Add initial height to panel\r\n            if (trigger.getAttribute('aria-expanded') === 'true') {\r\n                panel.style.height = `${panelHeight}px`;\r\n            } else {\r\n                panel.style.height = '0px';\r\n                panel.style.visibility = 'hidden';\r\n            }\r\n        });\r\n    }\r\n\r\n    init() {\r\n        this.calculateHeights(this);\r\n        \r\n        this.component.addEventListener('click', event => {\r\n            const trigger = event.target.closest('[data-accordion-trigger]');\r\n\r\n            if (trigger) {\r\n                const panel = document.getElementById(trigger.getAttribute('aria-controls'));\r\n                const panelHeight = (panel) ? panel.getAttribute('data-accordion-height') : null;\r\n\r\n                if (panelHeight) {\r\n                    this.toggleItems(this.component, this.openMultiple, trigger, panel, panelHeight);\r\n                }\r\n            }\r\n        });\r\n\r\n        let resizeTimer;\r\n        window.addEventListener('resize', () => {\r\n            clearTimeout(resizeTimer);\r\n            resizeTimer = setTimeout(() => {\r\n                this.calculateHeights(this);\r\n            }, 250);\r\n        });\r\n\r\n        this.component.removeAttribute('data-accordion-uninitialized');\r\n    }\r\n}\r\n"],"names":["Accordion","constructor","component","this","triggers","querySelectorAll","openMultiple","hasAttribute","init","showItem","trigger","panel","panelHeight","setAttribute","style","height","visibility","hideItem","toggleItems","accordion","getAttribute","currentTrigger","querySelector","currentPanel","document","getElementById","calculateHeights","root","Array","prototype","forEach","call","offsetHeight","resizeTimer","addEventListener","event","target","closest","window","clearTimeout","setTimeout","removeAttribute"],"sourceRoot":""}