{"version":3,"file":"expander-single-level.js","names":["SesoExpander","constructor","selector","accOption","this","el","wrapper","HTMLElement","document","getElementById","querySelector","expander","querySelectorAll","expanderController","expanderContentInner","params","openClass","isAccordion","undefined","dataAttrExpandableHeight","initExpander","that","window","addEventListener","detectExpanderHeights","detectHeightsInterval","setInterval","hasAttribute","getAttribute","clearInterval","i","length","event","preventDefault","clicked","target","closest","classList","contains","closeExpander","closeAllExpandersAndOpenClicked","openExpander","expHeight","exp","clientHeight","setAttribute","style","maxHeight","element","expanderContent","remove","add","setTimeout","scrollIntoView","behavior","j","forEach","fragment","a1ExpanderSingleLevel"],"sources":["expander-single-level.js"],"mappings":"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","sourcesContent":["// seso expander\nif(typeof SesoExpander === 'undefined'){\n const SesoExpander = class {\n constructor(selector, accOption) {\n this.el = {};\n this.el.wrapper = selector instanceof HTMLElement\n ? selector\n : (\n document.getElementById(selector) ||\n document.querySelector(selector)\n );\n\n this.el.expander = this.el.wrapper ? this.el.wrapper.querySelectorAll('.expander')\n : [];\n this.el.expanderController = this.el.wrapper ? this.el.wrapper.querySelectorAll('.expander-controller')\n : [];\n this.el.expanderContentInner = this.el.wrapper ? this.el.wrapper.querySelectorAll('.expander-content > .inner')\n : [];\n\n this.params = {\n openClass: 'is-open',\n isAccordion: undefined,\n dataAttrExpandableHeight: 'data-expander-height'\n };\n\n this.params.isAccordion = accOption ? accOption\n : false;\n\n this.initExpander();\n }\n\n initExpander() {\n let that = this;\n\n // manage resize\n window.addEventListener('resize', function() {\n that.detectExpanderHeights();\n });\n\n // detect expander heights initial\n let detectHeightsInterval = setInterval(function() {\n if (that.el.expanderContentInner[0].hasAttribute(that.params.dataAttrExpandableHeight) && that.el.expanderContentInner[0].getAttribute(that.params.dataAttrExpandableHeight) > 0) {\n clearInterval(detectHeightsInterval);\n } else {\n that.detectExpanderHeights();\n }\n }, 400);\n\n // react on expander controller click\n for (var i = 0; i < this.el.expanderController.length; i++) {\n this.el.expanderController[i].addEventListener('click', (event) => {\n event.preventDefault();\n let clicked = event.target.closest('.expander');\n\n if(this.params.isAccordion) {\n // accordion\n if (that.el.wrapper.classList.contains(that.params.openClass)) {\n // if any expander is open\n if(clicked.classList.contains(that.params.openClass)) {\n // if clicked is open -> close clicked\n that.closeExpander(clicked);\n } else {\n // not the open expander was clicked\n that.closeAllExpandersAndOpenClicked(clicked);\n }\n } else {\n // all expanders are closed -> open clicked\n that.openExpander(clicked);\n }\n } else if(clicked.classList.contains(that.params.openClass)) {\n // simple expander\n // close clicked\n that.closeExpander(clicked);\n } else {\n // if clicked is NOT open -> open clicked\n that.openExpander(clicked);\n }\n });\n }\n }\n\n detectExpanderHeights () {\n var expHeight, exp;\n\n for (var i = 0; i < this.el.expanderContentInner.length; i++) {\n exp = this.el.expanderContentInner[i].closest('.expander');\n expHeight = this.el.expanderContentInner[i].clientHeight;\n\n this.el.expanderContentInner[i].setAttribute(this.params.dataAttrExpandableHeight, expHeight);\n\n if(exp.classList.contains(this.params.openClass)) {\n exp.querySelector('.expander-content').style.maxHeight = expHeight + 'px';\n }\n }\n }\n\n closeExpander(element) {\n var expanderContent = element.closest('.expander').querySelector('.expander-content');\n\n element.classList.remove(this.params.openClass);\n expanderContent.style.maxHeight = '0px';\n\n if(this.params.isAccordion) {\n this.el.wrapper.classList.remove(this.params.openClass);\n }\n }\n\n openExpander(element) {\n var expanderContent = element.closest('.expander').querySelector('.expander-content');\n\n element.classList.add(this.params.openClass);\n expanderContent.style.maxHeight = (expanderContent.querySelector('.inner').getAttribute(this.params.dataAttrExpandableHeight)) + 'px';\n\n if(this.params.isAccordion) {\n this.el.wrapper.classList.add(this.params.openClass);\n\n setTimeout(function() {\n // position elemtent on top of viewport\n element.scrollIntoView({behavior: \"smooth\"});\n }, 400);\n }\n }\n\n closeAllExpandersAndOpenClicked(clicked) {\n let that = this;\n for (var j = 0; j < this.el.expander.length; j++) {\n // close all other expander\n this.el.expander[j].classList.remove(this.params.openClass);\n this.el.expander[j].closest('.expander').querySelector('.expander-content').style.maxHeight = '0px';\n\n // open clicked\n if(j == (this.el.expander.length - 1)) {\n setTimeout(function() {\n that.openExpander(clicked);\n }, 200);\n }\n }\n }\n }\n\n if (typeof window !== 'undefined') {\n window.SesoExpander = SesoExpander;\n }\n\n window.addEventListener('load', () => {\n // expander single level\n document.querySelectorAll('a1-fragment[name=\"expander-single-level\"]').forEach(function (fragment) {\n // params: selector, optional: accordionOption\n window.a1ExpanderSingleLevel = new SesoExpander(fragment.querySelector('.expander-wrapper'));\n });\n });\n}\n"]}