{"version":3,"file":"50.min.js?t=1757401264672","mappings":"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","sources":["webpack://@hero-digital/masonite/./src/js/utilities/accordion.js","webpack://@hero-digital/masonite/./src/components/modules/Footer/Footer.js"],"sourcesContent":["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\tif (!el) return\n\tthis.el = el\n\tthis.services = Services.getInstance()\n\tthis.EventEmitterService = this.services.EventEmitterService\n\n\tlet triggerClass = 'js-accordion-trigger'\n\tlet panelClass = 'js-accordion-panel'\n\tif (props.id) {\n\t\ttriggerClass += props.id\n\t\tpanelClass += props.id\n\t}\n\tconst expandFirst = el.dataset.firstexpanded === 'true'\n\tthis.multiSelectable = this.el.hasAttribute('aria-multiselectable')\n\n\tlet selectedIndex\n\tif (Number.isInteger(props.selectedIndex))\n\t\tselectedIndex = props.selectedIndex\n\telse if (expandFirst) selectedIndex = 0\n\n\tthis.accordionTriggers = this.el.getElementsByClassName(triggerClass)\n\tthis.accordionPanels = this.el.getElementsByClassName(panelClass)\n\n\tthis.observer = new ResizeObserver((entries) => {\n\t\tentries.forEach((entry) => {\n\t\t\tif (!entry.borderBoxSize) return\n\t\t\tconst { blockSize: height } = entry.borderBoxSize[0]\n\t\t\tentry.target\n\t\t\t\t.closest('.js-accordion-panel')\n\t\t\t\t.style.setProperty('--height', `${height}px`)\n\t\t})\n\t})\n\n\tif (\n\t\tthis.accordionTriggers.length === 0 ||\n\t\tthis.accordionTriggers.length !== this.accordionPanels.length\n\t) {\n\t\treturn\n\t}\n\n\t// if we do not already have a selected index see if we have the open panels attribute\n\tif (selectedIndex === undefined && el.dataset.openPanels) {\n\t\tlet openPanels = el.dataset.openPanels\n\t\topenPanels = openPanels.split(',')\n\t\tconst panelArr = []\n\t\tfor (const panel of openPanels) {\n\t\t\tconst n = parseInt(panel)\n\t\t\t// quick test to make sure we have a positive value\n\t\t\tif ((n | 0) > 0 && n % 1 === 0 && n <= this.accordionTriggers.length) {\n\t\t\t\tpanelArr.push(n - 1)\n\t\t\t\t// if this is not multiselectable then stop after first validated value\n\t\t\t\tif (!this.multiSelectable) break\n\t\t\t}\n\t\t}\n\t\tif (panelArr.length) selectedIndex = panelArr\n\t}\n\n\tthis._init(selectedIndex)\n}\n\nAccordionWidget.prototype._init = function (selectedIndex) {\n\tthis.accordionTriggersLength = this.accordionTriggers.length\n\tthis.expandedAccordions = new Array(this.accordionTriggersLength)\n\tthis.clickListener = this._clickEvent.bind(this)\n\tthis.keydownListener = this._keydownEvent.bind(this)\n\tthis.focusListener = this._focusEvent.bind(this)\n\tthis.keys = {\n\t\tprev: 38,\n\t\tnext: 40,\n\t\tspace: 32\n\t}\n\n\tlet initialSelectedIndex\n\n\tfor (let i = 0; i < this.accordionTriggersLength; i++) {\n\t\tthis.accordionTriggers[i].index = i\n\t\tthis.accordionTriggers[i].addEventListener(\n\t\t\t'click',\n\t\t\tthis.clickListener,\n\t\t\tfalse\n\t\t)\n\t\tthis.accordionTriggers[i].addEventListener(\n\t\t\t'keydown',\n\t\t\tthis.keydownListener,\n\t\t\tfalse\n\t\t)\n\t\tthis.accordionTriggers[i].addEventListener(\n\t\t\t'focus',\n\t\t\tthis.focusListener,\n\t\t\tfalse\n\t\t)\n\t\tthis.accordionTriggers[i].classList.add('is-accordion-trigger')\n\n\t\tif (this.accordionTriggers[i].classList.contains('is-selected')) {\n\t\t\tthis.expandedAccordions[i] = true\n\t\t}\n\t}\n\n\tfor (let i = 0; i < this.accordionPanels.length; i++) {\n\t\tthis.accordionPanels[i].classList.add('is-accordion-panel')\n\n\t\tif (\n\t\t\tthis.accordionPanels[i].querySelector('.accordion-panel__inner') !==\n\t\t\tnull\n\t\t) {\n\t\t\tconst el = this.accordionPanels[i].querySelector(\n\t\t\t\t'.accordion-panel__inner'\n\t\t\t)\n\t\t\tthis.observer.observe(el)\n\t\t}\n\t}\n\n\t// determine which panels need to be open\n\tif (!isNaN(selectedIndex)) {\n\t\tinitialSelectedIndex = selectedIndex\n\t\tthis.expandedAccordions = new Array(this.accordionTriggersLength)\n\t\tthis.expandedAccordions[initialSelectedIndex] = true\n\t} else if (Array.isArray(selectedIndex)) {\n\t\tinitialSelectedIndex = selectedIndex\n\t\tthis.expandedAccordions = new Array(this.accordionTriggersLength)\n\t\tfor (let i = 0; i < this.accordionTriggersLength; i++) {\n\t\t\tif (selectedIndex.includes(i)) this.expandedAccordions[i] = true\n\t\t}\n\t} else {\n\t\tinitialSelectedIndex = this.expandedAccordions.lastIndexOf(true)\n\n\t\tif (!this.multiSelectable) {\n\t\t\tthis.expandedAccordions = new Array(this.accordionTriggersLength)\n\t\t\tthis.expandedAccordions[initialSelectedIndex] = true\n\t\t}\n\t}\n\n\tthis.initialSetIndex = selectedIndex\n\tthis.setSelected(initialSelectedIndex)\n\tthis.setExpanded()\n\tthis.setAPI()\n\tthis.el.classList.add('is-accordion')\n\tthis.el.classList.add('is-initialized')\n}\n\nAccordionWidget.prototype._clickEvent = function (e) {\n\te.preventDefault()\n\tthis.setSelected(e.target.index, true)\n\tthis.setExpanded(e.target.index, true)\n}\n\nAccordionWidget.prototype._keydownEvent = function (e) {\n\tlet targetIndex\n\n\tswitch (e.keyCode) {\n\t\tcase this.keys.space:\n\t\tcase this.keys.prev:\n\t\tcase this.keys.next:\n\t\t\te.preventDefault()\n\t\t\tbreak\n\t\tdefault:\n\t\t\treturn\n\t}\n\n\tif (e.keyCode === this.keys.space) {\n\t\t// this.setExpanded(e.target.index, true);\n\t\te.target.click()\n\n\t\treturn\n\t} else if (e.keyCode === this.keys.prev && e.target.index > 0) {\n\t\ttargetIndex = e.target.index - 1\n\t} else if (\n\t\te.keyCode === this.keys.next &&\n\t\te.target.index < this.accordionTriggersLength - 1\n\t) {\n\t\ttargetIndex = e.target.index + 1\n\t} else {\n\t\treturn\n\t}\n\n\tthis.setSelected(targetIndex, true)\n}\n\nAccordionWidget.prototype._focusEvent = function () {\n\tif (this.accordionTriggersLength === 1) {\n\t\tthis.setSelected(0)\n\t}\n}\n\nAccordionWidget.prototype.setSelected = function (index, userInvoked) {\n\tif (index === -1) {\n\t\tthis.accordionTriggers[0].setAttribute('tabindex', 0)\n\n\t\treturn\n\t}\n\n\tif (Array.isArray(index)) index = index[0]\n\tfor (let i = 0; i < this.accordionTriggersLength; i++) {\n\t\tif (i === index) {\n\t\t\tthis.accordionTriggers[i].classList.add('is-selected')\n\t\t\tthis.accordionTriggers[i].setAttribute('aria-selected', true)\n\t\t\t// this.accordionTriggers[i].setAttribute('tabindex', 0);\n\n\t\t\tif (userInvoked) {\n\t\t\t\tthis.accordionTriggers[i].focus()\n\t\t\t}\n\t\t} else {\n\t\t\tthis.accordionTriggers[i].classList.remove('is-selected')\n\t\t\tthis.accordionTriggers[i].setAttribute('aria-selected', false)\n\n\t\t\t// this.accordionTriggers[i].setAttribute('tabindex', -1);\n\t\t}\n\t}\n}\n\nAccordionWidget.prototype.setExpanded = function (index, userInvoked) {\n\tlet i\n\n\t// special case to close all\n\tif (index === -1) this.expandedAccordions = []\n\n\tif (userInvoked) {\n\t\tif (this.multiSelectable) {\n\t\t\tthis.expandedAccordions[index] = !this.expandedAccordions[index]\n\t\t} else {\n\t\t\tfor (i = 0; i < this.accordionTriggersLength; i++) {\n\t\t\t\tif (i === index) {\n\t\t\t\t\tthis.expandedAccordions[i] = !this.expandedAccordions[i]\n\t\t\t\t} else {\n\t\t\t\t\tthis.expandedAccordions[i] = false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Emit event for the clicked accordion panel\n\t\tconst accordionTitle = this.accordionTriggers[index]?.innerText\n\t\tconst status = this.expandedAccordions[index] ? 'open' : 'close'\n\n\t\tthis.EventEmitterService.emit('accordion', {\n\t\t\taccordionElement: this.el,\n\t\t\taccordionTitle,\n\t\t\tstatus\n\t\t})\n\t}\n\n\tlet hasExpanded = false\n\tfor (i = 0; i < this.accordionTriggersLength; i++) {\n\t\tif (this.expandedAccordions[i]) {\n\t\t\tthis.accordionTriggers[i].setAttribute('aria-expanded', true)\n\t\t\tthis.accordionTriggers[i].classList.add('is-expanded')\n\n\t\t\tthis.accordionPanels[i].setAttribute('aria-hidden', false)\n\t\t\tthis.accordionPanels[i].classList.add('is-open')\n\n\t\t\tthis.accordionTriggers[i].parentElement.classList.add('is-active')\n\t\t\t// this.accordionPanels[i].setAttribute('tabindex', 0);\n\n\t\t\thasExpanded = true\n\t\t} else {\n\t\t\tthis.accordionTriggers[i].setAttribute('aria-expanded', false)\n\t\t\tthis.accordionTriggers[i].classList.remove('is-expanded')\n\n\t\t\tthis.accordionPanels[i].setAttribute('aria-hidden', true)\n\t\t\tthis.accordionPanels[i].classList.remove('is-open')\n\n\t\t\tthis.accordionTriggers[i].parentElement.classList.remove('is-active')\n\t\t\t// this.accordionPanels[i].setAttribute('tabindex', -1);\n\t\t}\n\t}\n\n\t// add close to parent to indicate there is an open element\n\tif (hasExpanded) this.el.classList.add('has-expanded-el')\n\telse this.el.classList.remove('has-expanded-el')\n\tthis.hasExpanded = hasExpanded\n}\n\nAccordionWidget.prototype.setAPI = function () {\n\t// add API functionality here\n\tthis.close = function () {\n\t\tthis.setSelected(-1)\n\t\tthis.setExpanded(-1)\n\t}\n\t// open initial index\n\tthis.openInit = function () {\n\t\tconst index = this.initialSetIndex\n\t\tif (Number.isInteger(index)) {\n\t\t\tthis.setSelected(index, true)\n\t\t\tthis.setExpanded(index, true)\n\t\t}\n\t}\n}\n\nAccordionWidget.prototype.destroy = function () {\n\tthis.el.classList.remove('is-initialized')\n\n\tfor (let i = 0; i < this.accordionTriggersLength; i++) {\n\t\tthis.accordionTriggers[i].removeAttribute('aria-expanded')\n\t\tthis.accordionTriggers[i].removeAttribute('aria-selected')\n\t\tthis.accordionTriggers[i].classList.remove('is-expanded')\n\n\t\tthis.accordionPanels[i].removeAttribute('aria-hidden')\n\t\tthis.accordionPanels[i].classList.remove('is-open')\n\t\tthis.accordionPanels[i].removeAttribute('tabindex')\n\n\t\tthis.accordionTriggers[i].removeEventListener(\n\t\t\t'click',\n\t\t\tthis.clickListener,\n\t\t\tfalse\n\t\t)\n\t\tthis.accordionTriggers[i].removeEventListener(\n\t\t\t'keydown',\n\t\t\tthis.keydownListener,\n\t\t\tfalse\n\t\t)\n\t\tthis.accordionTriggers[i].removeEventListener(\n\t\t\t'focus',\n\t\t\tthis.focusListener,\n\t\t\tfalse\n\t\t)\n\n\t\tif (\n\t\t\tthis.accordionPanels[i].querySelector('.accordion-panel__inner') !==\n\t\t\tnull\n\t\t) {\n\t\t\tconst el = this.accordionPanels[i].querySelector(\n\t\t\t\t'.accordion-panel__inner'\n\t\t\t)\n\t\t\tthis.observer.unobserve(el)\n\t\t}\n\n\t\tdelete this.accordionTriggers[i].index\n\t}\n}\n\nexport { AccordionWidget }\n","import { AccordionWidget } from '../../../js/utilities/accordion'\nimport tippy from 'tippy.js'\nimport Pristine from 'pristinejs'\nimport Analytics from 'services/Analytics/Analytics'\n\n// Footer Component\nexport default class Footer {\n\tconstructor(element) {\n\t\tthis.element = element // ref to component element\n\t\tthis.config = {\n\t\t\tmatch: false,\n\t\t\taccordionArray: document.getElementsByClassName('js-module-footer-nav')\n\t\t}\n\t\tthis.analyticsService = Analytics.getInstance() // ref to analytics service\n\t\tthis.init()\n\t}\n\n\tinit() {\n\t\tconst _ = this\n\n\t\t_.mqContext()\n\n\t\t_.initPopover()\n\n\t\t_.initNewsletter()\n\t}\n\n\tmqContext() {\n\t\tconst _ = this\n\t\tconst mediaQuery = window.matchMedia('(min-width: 768px)')\n\n\t\tfunction mediaQueryChange(mediaQuery) {\n\t\t\t// Desktop\n\t\t\tif (mediaQuery.matches) {\n\t\t\t\t_.config.match = true\n\t\t\t\t_.initAccordion()\n\t\t\t\t// Mobile / Tablet\n\t\t\t} else {\n\t\t\t\t_.config.match = false\n\t\t\t\t_.initAccordion()\n\t\t\t}\n\t\t}\n\n\t\t// add a listener event\n\t\tif (mediaQuery?.addEventListener) {\n\t\t\tmediaQuery.addEventListener('change', mediaQueryChange)\n\t\t} else if (mediaQuery.addListener) {\n\t\t\tmediaQuery.addListener(mediaQueryChange)\n\t\t} else {\n\t\t\tconsole.error('Could not attach media query change listener')\n\t\t}\n\n\t\t// on page load\n\t\tmediaQueryChange(mediaQuery)\n\t}\n\n\tinitAccordion() {\n\t\tconst _ = this\n\t\tthis.accordions = []\n\n\t\t// this was changed to a for-of loop to fix a sonar lint error\n\t\tfor (const accElement of _.config.accordionArray) {\n\t\t\tconst acc = new AccordionWidget(accElement)\n\t\t\tthis.accordions.push(acc)\n\t\t\tif (_.config.match !== false) {\n\t\t\t\tacc.destroy()\n\t\t\t}\n\t\t}\n\t}\n\n\tinitPopover() {\n\t\tconst tooltipContent = document.querySelector('#js-microsites-content')\n\n\t\ttippy('.tooltip', {\n\t\t\tallowHTML: true,\n\t\t\tcontent: tooltipContent,\n\t\t\tanimateFill: true,\n\t\t\tinteractive: true,\n\t\t\tplacement: 'bottom',\n\t\t\ttrigger: 'click'\n\t\t})\n\t}\n\n\tinitNewsletter() {\n\t\tconst _ = this\n\t\tconst config = {\n\t\t\t// class of the parent element where the error/success class is added\n\t\t\tclassTo: 'newsletter__form-input',\n\t\t\terrorClass: 'fdn-input__error',\n\t\t\tsuccessClass: 'success',\n\t\t\t// class of the parent element where error text element is appended\n\t\t\terrorTextParent: 'newsletter__form-input',\n\t\t\t// type of element to create for the error text\n\t\t\terrorTextTag: 'div',\n\t\t\t// class of the error text element\n\t\t\terrorTextClass: 'fdn-input__error-container',\n\t\t\thiddenClass: 'hidden',\n\t\t\terrorDivClass: 'form__error',\n\t\t\terrorIntroDefault: 'Please correct the following errors',\n\t\t\tapiErrorDefault:\n\t\t\t\t'There was an error connecting to the server. Please try again.'\n\t\t}\n\n\t\t// get form\n\t\tconst form = document.querySelector('.newsletter__form')\n\t\tconst successMessage = document.querySelector('.newsletter__thank-you')\n\n\t\t// look for error field and create one if needed\n\t\tlet errorWrapper = form.querySelector('.' + config.errorDivClass)\n\n\t\tlet intro, introtext\n\t\tif (!errorWrapper) {\n\t\t\terrorWrapper = document.createElement('div')\n\t\t\terrorWrapper.classList.add(config.errorDivClass, config.hiddenClass)\n\t\t\tintro = document.createElement('p')\n\t\t\tintrotext = form.dataset.errorIntro || config.errorIntroDefault\n\t\t\tintro.innerHTML = introtext\n\t\t\terrorWrapper.append(intro)\n\t\t\tform.prepend(errorWrapper)\n\t\t}\n\n\t\tconst errorList = null\n\n\t\t// create the pristine\n\t\tconst pristine = new Pristine(form, config)\n\t\t// attach pristine to form object if needed by other scripts\n\t\tform.pristine = pristine\n\n\t\t// if we have a custom submit, attach validation to form object and do nothing more\n\t\tform.addEventListener('submit', (e) => {\n\t\t\tsubmitForm(\n\t\t\t\te,\n\t\t\t\tintro,\n\t\t\t\tintrotext,\n\t\t\t\terrorWrapper,\n\t\t\t\terrorList,\n\t\t\t\tpristine,\n\t\t\t\tform\n\t\t\t)\n\t\t})\n\n\t\tformActionInit()\n\n\t\tfunction submitForm(\n\t\t\te,\n\t\t\tintro,\n\t\t\tintrotext,\n\t\t\terrorWrapper,\n\t\t\terrorList,\n\t\t\tpristine,\n\t\t\tform\n\t\t) {\n\t\t\te.preventDefault()\n\n\t\t\t// re-instantiate intro text as it gets overwritten in special circumstances\n\t\t\tintro.innerHTML = introtext\n\t\t\terrorWrapper.classList.add(config.hiddenClass)\n\t\t\tconst valid = pristine.validate() // returns true or false\n\n\t\t\tif (valid) {\n\t\t\t\tsuccessMessage.classList.add('newsletter__thank-you--visible')\n\t\t\t\tform.classList.add('newsletter__form--hidden')\n\t\t\t\t_.analyticsService.trackInteraction('sign_up', {\n\t\t\t\t\tmethod: 'newsletter'\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tfunction formActionInit() {\n\t\t\tconst form = document.querySelector('form.js-validate-form')\n\t\t\tif (form) {\n\t\t\t\tconst requiredfields = form.querySelectorAll('input[required]')\n\t\t\t\tif (requiredfields) {\n\t\t\t\t\trequiredfields[0].addEventListener('focus', function () {\n\t\t\t\t\t\tupdateFormAction()\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction updateFormAction() {\n\t\t\tconst form = document.querySelector('form.js-validate-form')\n\t\t\tconst formAction = document.querySelector('#formaction')\n\t\t\tform.action = formAction?.value\n\t\t}\n\t}\n}\n"],"names":["AccordionWidget","el","props","arguments","length","undefined","this","services","Services","getInstance","EventEmitterService","triggerClass","panelClass","id","expandFirst","dataset","firstexpanded","selectedIndex","multiSelectable","hasAttribute","Number","isInteger","accordionTriggers","getElementsByClassName","accordionPanels","observer","ResizeObserver","entries","forEach","entry","borderBoxSize","blockSize","height","target","closest","style","setProperty","concat","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","addEventListener","classList","add","contains","querySelector","observe","isNaN","isArray","includes","lastIndexOf","initialSetIndex","setSelected","setExpanded","setAPI","e","preventDefault","targetIndex","keyCode","click","userInvoked","setAttribute","focus","remove","_this$accordionTrigge","accordionTitle","innerText","status","emit","accordionElement","hasExpanded","parentElement","close","openInit","destroy","removeAttribute","removeEventListener","unobserve","Footer","constructor","element","config","match","accordionArray","document","analyticsService","Analytics","init","_","mqContext","initPopover","initNewsletter","mediaQuery","window","matchMedia","mediaQueryChange","matches","initAccordion","addListener","console","error","accordions","accElement","acc","tooltipContent","tippy","allowHTML","content","animateFill","interactive","placement","trigger","classTo","errorClass","successClass","errorTextParent","errorTextTag","errorTextClass","hiddenClass","errorDivClass","errorIntroDefault","apiErrorDefault","form","successMessage","intro","introtext","errorWrapper","createElement","errorIntro","innerHTML","append","prepend","pristine","Pristine","errorList","validate","trackInteraction","method","submitForm","requiredfields","querySelectorAll","formAction","action","value","updateFormAction","formActionInit"],"sourceRoot":""}