{"version":3,"file":"75.min.js?t=1743173738202","mappings":"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","sources":["webpack://@hero-digital/masonite/./src/components/modules/Accordion/Accordion.js","webpack://@hero-digital/masonite/./src/js/utilities/accordion.js"],"sourcesContent":["import { AccordionWidget } from 'utilities/accordion'\nimport Services from 'services'\nimport Analytics from 'services/Analytics/Analytics'\n\n/**\n * Module that displays an Accordion\n */\nexport default class Accordion {\n constructor(element) {\n this.element = element\n this.accordionArray = this.element.getElementsByClassName(\n 'accordion-interface'\n )\n this.config = {\n match: false,\n accordionArray: this.accordionArray\n }\n this.services = Services.getInstance()\n this.EventEmitterService = this.services.EventEmitterService\n this.analyticsService = Analytics.getInstance() // ref to analytics service\n\n this.init()\n }\n\n /**\n * Initialize the accordion component.\n */\n init() {\n this.mqContext()\n this.attachEvents()\n }\n\n /**\n * Destroy the component and clean up event listeners\n */\n destroy() {\n this.removeEvents()\n }\n\n mqContext () {\n const _ = this\n const mediaQuery = window.matchMedia('(min-width: 2000px)')\n\n function mediaQueryChange (mediaQuery) {\n _.config.match = false // Switch to true to disable accordion in desktop mode\n _.initAccordion()\n }\n\n // Add a listener event\n mediaQuery.addEventListener('change', mediaQueryChange)\n\n // On page load\n mediaQueryChange(mediaQuery)\n }\n\n /**\n * Initialize the accordion utility\n */\n initAccordion () {\n const _ = this\n\n for (const element of _.config.accordionArray) {\n const accordionWidget = new AccordionWidget(element) // Changed line: store instance in a variable\n if (_.config.match) {\n accordionWidget.destroy() // Changed line: call destroy on the stored instance\n }\n }\n }\n\n /**\n * Track interaction\n * @param {object} event - event object\n */\n trackInteraction = (event) => {\n if (this.accordionArray[0] === event.accordionElement) {\n this.analyticsService.trackInteraction('accordion', {\n accordion_title: event.accordionTitle,\n accordion_status: event.status\n })\n }\n }\n\n /**\n * Attach events to the accordion component\n */\n attachEvents() {\n this.EventEmitterService.on('accordion', this.trackInteraction)\n }\n\n /**\n * Remove events from the accordion component\n */\n removeEvents() {\n this.EventEmitterService.off('accordion', this.trackInteraction)\n }\n}\n","import Services from 'services'\n\n/* ACCESSIBLE ACCORDION COMPONENT\n Code modified taken from here: https://codepen.io/stowball/pen/eZKwRv\n Options (add to parent element that has class \"accordion-interface\"):\n Multiselect: aria-multiselectable=\"true\"\n Always expand first item: data-firstexpanded=\"true\"\n To have selected panel(s) expanded at start use data-open-panels attribute with panel numbers separated by commas.\n Example: data-open-panels=\"1,2\"\n To keep panels always open at tablet breakpoints and above add to class list: accordion-interface__open-panels__md\n and for desktop only: accordion-interface__open-panels__lg\n*/\n\nfunction AccordionWidget(el, props = {}) {\n if (!el) return\n this.el = el\n this.services = Services.getInstance()\n this.EventEmitterService = this.services.EventEmitterService\n\n let triggerClass = 'js-accordion-trigger'\n let panelClass = 'js-accordion-panel'\n if (props.id) {\n triggerClass += props.id\n panelClass += props.id\n }\n const expandFirst = el.dataset.firstexpanded === 'true'\n this.multiSelectable = this.el.hasAttribute('aria-multiselectable')\n\n let selectedIndex\n if (Number.isInteger(props.selectedIndex)) selectedIndex = props.selectedIndex\n else if (expandFirst) selectedIndex = 0\n\n this.accordionTriggers = this.el.getElementsByClassName(triggerClass)\n this.accordionPanels = this.el.getElementsByClassName(panelClass)\n\n this.observer = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n if (!entry.borderBoxSize) return\n const { blockSize: height } = entry.borderBoxSize[0]\n entry.target\n .closest('.js-accordion-panel')\n .style.setProperty('--height', `${height}px`)\n })\n })\n\n if (\n this.accordionTriggers.length === 0 ||\n this.accordionTriggers.length !== this.accordionPanels.length\n ) {\n return\n }\n\n // if we do not already have a selected index see if we have the open panels attribute\n if (selectedIndex === undefined && el.dataset.openPanels) {\n let openPanels = el.dataset.openPanels\n openPanels = openPanels.split(',')\n const panelArr = []\n for (const panel of openPanels) {\n const n = parseInt(panel)\n // quick test to make sure we have a positive value\n if ((n | 0) > 0 && n % 1 === 0 && n <= this.accordionTriggers.length) {\n panelArr.push(n - 1)\n // if this is not multiselectable then stop after first validated value\n if (!this.multiSelectable) break\n }\n }\n if (panelArr.length) selectedIndex = panelArr\n }\n\n this._init(selectedIndex)\n}\n\nAccordionWidget.prototype._init = function (selectedIndex) {\n this.accordionTriggersLength = this.accordionTriggers.length\n this.expandedAccordions = new Array(this.accordionTriggersLength)\n this.clickListener = this._clickEvent.bind(this)\n this.keydownListener = this._keydownEvent.bind(this)\n this.focusListener = this._focusEvent.bind(this)\n this.keys = {\n prev: 38,\n next: 40,\n space: 32\n }\n\n let initialSelectedIndex\n\n for (let i = 0; i < this.accordionTriggersLength; i++) {\n this.accordionTriggers[i].index = i\n this.accordionTriggers[i].addEventListener(\n 'click',\n this.clickListener,\n false\n )\n this.accordionTriggers[i].addEventListener(\n 'keydown',\n this.keydownListener,\n false\n )\n this.accordionTriggers[i].addEventListener(\n 'focus',\n this.focusListener,\n false\n )\n this.accordionTriggers[i].classList.add('is-accordion-trigger')\n\n if (this.accordionTriggers[i].classList.contains('is-selected')) {\n this.expandedAccordions[i] = true\n }\n }\n\n for (let i = 0; i < this.accordionPanels.length; i++) {\n this.accordionPanels[i].classList.add('is-accordion-panel')\n\n if (\n this.accordionPanels[i].querySelector('.accordion-panel__inner') !== null\n ) {\n const el = this.accordionPanels[i].querySelector(\n '.accordion-panel__inner'\n )\n this.observer.observe(el)\n }\n }\n\n // determine which panels need to be open\n if (!isNaN(selectedIndex)) {\n initialSelectedIndex = selectedIndex\n this.expandedAccordions = new Array(this.accordionTriggersLength)\n this.expandedAccordions[initialSelectedIndex] = true\n } else if (Array.isArray(selectedIndex)) {\n initialSelectedIndex = selectedIndex\n this.expandedAccordions = new Array(this.accordionTriggersLength)\n for (let i = 0; i < this.accordionTriggersLength; i++) {\n if (selectedIndex.includes(i)) this.expandedAccordions[i] = true\n }\n } else {\n initialSelectedIndex = this.expandedAccordions.lastIndexOf(true)\n\n if (!this.multiSelectable) {\n this.expandedAccordions = new Array(this.accordionTriggersLength)\n this.expandedAccordions[initialSelectedIndex] = true\n }\n }\n\n this.initialSetIndex = selectedIndex\n this.setSelected(initialSelectedIndex)\n this.setExpanded()\n this.setAPI()\n this.el.classList.add('is-accordion')\n this.el.classList.add('is-initialized')\n}\n\nAccordionWidget.prototype._clickEvent = function (e) {\n e.preventDefault()\n this.setSelected(e.target.index, true)\n this.setExpanded(e.target.index, true)\n}\n\nAccordionWidget.prototype._keydownEvent = function (e) {\n let targetIndex\n\n switch (e.keyCode) {\n case this.keys.space:\n case this.keys.prev:\n case this.keys.next:\n e.preventDefault()\n break\n default:\n return\n }\n\n if (e.keyCode === this.keys.space) {\n // this.setExpanded(e.target.index, true);\n e.target.click()\n\n return\n } else if (e.keyCode === this.keys.prev && e.target.index > 0) {\n targetIndex = e.target.index - 1\n } else if (\n e.keyCode === this.keys.next &&\n e.target.index < this.accordionTriggersLength - 1\n ) {\n targetIndex = e.target.index + 1\n } else {\n return\n }\n\n this.setSelected(targetIndex, true)\n}\n\nAccordionWidget.prototype._focusEvent = function () {\n if (this.accordionTriggersLength === 1) {\n this.setSelected(0)\n }\n}\n\nAccordionWidget.prototype.setSelected = function (index, userInvoked) {\n if (index === -1) {\n this.accordionTriggers[0].setAttribute('tabindex', 0)\n\n return\n }\n\n if (Array.isArray(index)) index = index[0]\n for (let i = 0; i < this.accordionTriggersLength; i++) {\n if (i === index) {\n this.accordionTriggers[i].classList.add('is-selected')\n this.accordionTriggers[i].setAttribute('aria-selected', true)\n // this.accordionTriggers[i].setAttribute('tabindex', 0);\n\n if (userInvoked) {\n this.accordionTriggers[i].focus()\n }\n } else {\n this.accordionTriggers[i].classList.remove('is-selected')\n this.accordionTriggers[i].setAttribute('aria-selected', false)\n\n // this.accordionTriggers[i].setAttribute('tabindex', -1);\n }\n }\n}\n\nAccordionWidget.prototype.setExpanded = function (index, userInvoked) {\n let i\n\n // special case to close all\n if (index === -1) this.expandedAccordions = []\n\n if (userInvoked) {\n if (this.multiSelectable) {\n this.expandedAccordions[index] = !this.expandedAccordions[index]\n } else {\n for (i = 0; i < this.accordionTriggersLength; i++) {\n if (i === index) {\n this.expandedAccordions[i] = !this.expandedAccordions[i]\n } else {\n this.expandedAccordions[i] = false\n }\n }\n }\n\n // Emit event for the clicked accordion panel\n const accordionTitle = this.accordionTriggers[index]?.innerText\n const status = this.expandedAccordions[index] ? 'open' : 'close'\n\n this.EventEmitterService.emit('accordion', {\n accordionElement: this.el,\n accordionTitle,\n status\n })\n }\n\n let hasExpanded = false\n for (i = 0; i < this.accordionTriggersLength; i++) {\n if (this.expandedAccordions[i]) {\n this.accordionTriggers[i].setAttribute('aria-expanded', true)\n this.accordionTriggers[i].classList.add('is-expanded')\n\n this.accordionPanels[i].setAttribute('aria-hidden', false)\n this.accordionPanels[i].classList.add('is-open')\n\n this.accordionTriggers[i].parentElement.classList.add('is-active')\n // this.accordionPanels[i].setAttribute('tabindex', 0);\n\n hasExpanded = true\n } else {\n this.accordionTriggers[i].setAttribute('aria-expanded', false)\n this.accordionTriggers[i].classList.remove('is-expanded')\n\n this.accordionPanels[i].setAttribute('aria-hidden', true)\n this.accordionPanels[i].classList.remove('is-open')\n\n this.accordionTriggers[i].parentElement.classList.remove('is-active')\n // this.accordionPanels[i].setAttribute('tabindex', -1);\n }\n }\n\n // add close to parent to indicate there is an open element\n if (hasExpanded) this.el.classList.add('has-expanded-el')\n else this.el.classList.remove('has-expanded-el')\n this.hasExpanded = hasExpanded\n}\n\nAccordionWidget.prototype.setAPI = function () {\n // add API functionality here\n this.close = function () {\n this.setSelected(-1)\n this.setExpanded(-1)\n }\n // open initial index\n this.openInit = function () {\n const index = this.initialSetIndex\n if (Number.isInteger(index)) {\n this.setSelected(index, true)\n this.setExpanded(index, true)\n }\n }\n}\n\nAccordionWidget.prototype.destroy = function () {\n this.el.classList.remove('is-initialized')\n\n for (let i = 0; i < this.accordionTriggersLength; i++) {\n this.accordionTriggers[i].removeAttribute('aria-expanded')\n this.accordionTriggers[i].removeAttribute('aria-selected')\n this.accordionTriggers[i].classList.remove('is-expanded')\n\n this.accordionPanels[i].removeAttribute('aria-hidden')\n this.accordionPanels[i].classList.remove('is-open')\n this.accordionPanels[i].removeAttribute('tabindex')\n\n this.accordionTriggers[i].removeEventListener(\n 'click',\n this.clickListener,\n false\n )\n this.accordionTriggers[i].removeEventListener(\n 'keydown',\n this.keydownListener,\n false\n )\n this.accordionTriggers[i].removeEventListener(\n 'focus',\n this.focusListener,\n false\n )\n\n if (\n this.accordionPanels[i].querySelector('.accordion-panel__inner') !== null\n ) {\n const el = this.accordionPanels[i].querySelector(\n '.accordion-panel__inner'\n )\n this.observer.unobserve(el)\n }\n\n delete this.accordionTriggers[i].index\n }\n}\n\nexport { AccordionWidget }\n"],"names":["Accordion","constructor","element","this","accordionArray","getElementsByClassName","config","match","services","Services","getInstance","EventEmitterService","analyticsService","Analytics","init","mqContext","attachEvents","destroy","removeEvents","_","mediaQueryChange","mediaQuery","initAccordion","window","matchMedia","addEventListener","accordionWidget","AccordionWidget","trackInteraction","event","accordionElement","accordion_title","accordionTitle","accordion_status","status","on","off","el","props","arguments","length","undefined","triggerClass","panelClass","id","expandFirst","dataset","firstexpanded","selectedIndex","multiSelectable","hasAttribute","Number","isInteger","accordionTriggers","accordionPanels","observer","ResizeObserver","entries","forEach","entry","borderBoxSize","blockSize","height","target","closest","style","setProperty","openPanels","split","panelArr","panel","n","parseInt","push","_init","prototype","initialSelectedIndex","accordionTriggersLength","expandedAccordions","Array","clickListener","_clickEvent","bind","keydownListener","_keydownEvent","focusListener","_focusEvent","keys","prev","next","space","i","index","classList","add","contains","querySelector","observe","isNaN","isArray","includes","lastIndexOf","initialSetIndex","setSelected","setExpanded","setAPI","e","preventDefault","targetIndex","keyCode","click","userInvoked","setAttribute","focus","remove","innerText","emit","hasExpanded","parentElement","close","openInit","removeAttribute","removeEventListener","unobserve"],"sourceRoot":""}