{"version":3,"file":"Src_Scripts_components_accordion_js.93aa0fdeeb78a7826bb1.js","sources":["webpack://haveselskabet/./Src/Scripts/components/accordion.js"],"sourcesContent":["export default class Accordion {\n constructor(elm, args) {\n var accordion = elm || [];\n if (!accordion) { return; }\n\n \n var items = accordion.querySelectorAll('.accordion__item');\n if (items.length == 0)\n return;\n\n const isAccordionMacro = () => {\n if (elm.classList.container('accordion-macro')) {\n return true;\n }\n }\n\n if (!isAccordionMacro) {\n items[items.length - 1].classList.add('no-border-bottom');\n \n }\n\n items[0].style.paddingTop = 0;\n \n for (var i = 0; i < items.length; i++) {\n var target = items[i].querySelector('.accordion__toggle-container');\n target.addEventListener('click', toggleTab);\n target.item = elm;\n }\n\n function toggleTab(event) {\n var parentItem = this.parentNode;\n var target = parentItem.querySelector('.accordion__item-body');\n \n if (parentItem.classList.contains('accordion__item--active')) {\n collapseSection(target);\n parentItem.classList.remove('accordion__item--active');\n return false;\n }\n\n var item = event.currentTarget.item;\n var media = parentItem.dataset.mediaUrl;\n\n if (media) {\n var mediaAlt = parentItem.dataset.mediaAlt;\n var mediaTarget = item.querySelector('.accordion__media .dynamic-image');\n\n if (mediaTarget.src !== media) {\n mediaTarget.src = media;\n mediaTarget.alt = mediaAlt;\n }\n }\n\n var active = item.querySelector('.accordion__item--active');\n\n if (active !== null) {\n var activeTarget = active.querySelector('.accordion__item-body');\n collapseSection(activeTarget);\n active.classList.remove('accordion__item--active');\n }\n\n parentItem.classList.add('accordion__item--active');\n expandSection(target);\n\n let chevron;\n\n if (document.body.offsetWidth <= 768) {\n chevron = parentItem.querySelector('.accordion__chevron--mobile');\n } else {\n chevron = parentItem.querySelector('.accordion__chevron');\n }\n\n if (chevron) {\n chevron.classList.add('accordion__chevron--up');\n }\n\n const accordionToggle = parentItem.querySelector('.accordion__toggle');\n if (accordionToggle) {\n accordionToggle.marginBottom = '11px';\n }\n\n \n\n }\n\n function collapseSection(element) {\n \n // get the height of the element's inner content, regardless of its actual size\n var sectionHeight = element.scrollHeight;\n\n // temporarily disable all css transitions\n var elementTransition = element.style.transition;\n element.style.transition = '';\n\n // on the next frame (as soon as the previous style change has taken effect),\n // explicitly set the element's height to its current pixel height, so we \n // aren't transitioning out of 'auto'\n requestAnimationFrame(function () {\n element.style.height = sectionHeight + 'px';\n element.style.transition = elementTransition;\n\n // on the next frame (as soon as the previous style change has taken effect),\n // have the element transition to height: 0\n requestAnimationFrame(function () {\n element.style.height = 0 + 'px';\n });\n });\n\n const parentItem = element.parentNode;\n let chevron;\n if (document.body.offsetWidth <= 768) {\n chevron = parentItem.querySelector('.accordion__chevron--mobile');\n } else {\n chevron = parentItem.querySelector('.accordion__chevron');\n }\n if (chevron) {\n chevron.classList.remove('accordion__chevron--up');\n }\n const accordionToggle = parentItem.querySelector('.accordion__toggle');\n\n if (accordionToggle) {\n accordionToggle.marginBottom = '0';\n }\n }\n\n function expandSection(element) {\n // get the height of the element's inner content, regardless of its actual size\n var sectionHeight = element.scrollHeight;\n\n // have the element transition to the height of its inner content\n element.style.height = sectionHeight + 'px';\n\n // when the next css transition finishes (which should be the one we just triggered)\n const endTransition = () => {\n element.removeEventListener('transitionend', endTransition);\n element.style.height = '';\n\n if (!element.closest('.accordion__item--active')) {\n element.style.height = '';\n } else {\n element.style.height = 'auto';\n }\n };\n\n element.addEventListener('transitionend', endTransition);\n }\n \n\n }\n}\n\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AAAA;;A;;A","sourceRoot":""}