{"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":""}