{"version":3,"file":"zoomv.7638.min.js?t=c3c5311adb0d36d67b4c","mappings":"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","sources":["webpack://@hero-digital/zoom/./src/components/modules/SubNav/SubNav.js","webpack://@hero-digital/zoom/./src/js/utilities/accordion.js"],"sourcesContent":["import { AccordionWidget } from '../../../js/utilities/accordion'\r\n\r\nclass SubNav {\r\n constructor(el) {\r\n this.el = el\r\n this.domMap = {\r\n $accordionPanel: this.el.querySelector('.sub-nav__accordion-panel'),\r\n $accordionTrigger: this.el.querySelector('.sub-nav__accordion-trigger'),\r\n $triggers: this.el.querySelectorAll('.sub-nav__trigger'),\r\n $lists: this.el.querySelectorAll('.sub-nav__sub-list')\r\n }\r\n\r\n this.initAccordion()\r\n this.addListeners()\r\n }\r\n\r\n addListeners() {\r\n const { $accordionTrigger, $triggers, $lists } = this.domMap\r\n\r\n $accordionTrigger.addEventListener('click', this.toggleAccordion.bind(this))\r\n $triggers.forEach(($trigger) =>\r\n $trigger.addEventListener('click', this.toggleMenu.bind(this))\r\n )\r\n $lists.forEach(($list) =>\r\n $list.addEventListener('focusout', this.handleListFocusout.bind(this))\r\n )\r\n window.addEventListener('click', this.handleWindowClick.bind(this))\r\n }\r\n\r\n initAccordion() {\r\n const { $accordionPanel } = this.domMap\r\n\r\n if ($accordionPanel) {\r\n new AccordionWidget($accordionPanel)\r\n }\r\n }\r\n\r\n toggleAccordion() {\r\n const { $accordionPanel, $accordionTrigger } = this.domMap\r\n const isOpen = $accordionPanel.getAttribute('aria-hidden') === 'false'\r\n\r\n $accordionPanel.setAttribute('aria-hidden', isOpen)\r\n $accordionTrigger.setAttribute('aria-expanded', !isOpen)\r\n }\r\n\r\n toggleMenu(e) {\r\n const { $triggers } = this.domMap\r\n const $trigger = e.target\r\n const isOpen = $trigger.getAttribute('aria-expanded') === 'true'\r\n\r\n $trigger.setAttribute('aria-expanded', !isOpen)\r\n $triggers.forEach(($trigger) => {\r\n if ($trigger !== e.target) {\r\n $trigger.setAttribute('aria-expanded', false)\r\n }\r\n })\r\n }\r\n\r\n handleWindowClick(e) {\r\n const { $triggers } = this.domMap\r\n const $target = e.target\r\n\r\n if (\r\n !$target.closest('.sub-nav__trigger') &&\r\n !$target.closest('.sub-nav__sub-list')\r\n ) {\r\n if ($triggers) {\r\n $triggers.forEach(($trigger) =>\r\n $trigger.setAttribute('aria-expanded', false)\r\n )\r\n }\r\n }\r\n }\r\n\r\n handleListFocusout(e) {\r\n const { $triggers } = this.domMap\r\n const $target = e.relatedTarget\r\n\r\n if (!$target.closest('.sub-nav__sub-list')) {\r\n $triggers.forEach(($trigger) =>\r\n $trigger.setAttribute('aria-expanded', false)\r\n )\r\n }\r\n }\r\n}\r\n\r\nexport default SubNav\r\n","/* ACCESSIBLE ACCORDION COMPONENT\r\n Code modified taken from here: https://codepen.io/stowball/pen/eZKwRv\r\n Options (add to parent element that has class \"accordion-interface\"):\r\n Multiselect: aria-multiselectable=\"true\"\r\n Always expand first item: data-firstexpanded=\"true\"\r\n To have selected panel(s) expanded at start use data-open-panels attribute with panel numbers separated by commas.\r\n Example: data-open-panels=\"1,2\"\r\n To keep panels always open at tablet breakpoints and above add to class list: accordion-interface__open-panels__md\r\n and for desktop only: accordion-interface__open-panels__lg\r\n*/\r\nimport gsap from 'gsap'\r\n\r\nfunction AccordionWidget(el, props = {}) {\r\n if (!el) return\r\n this.el = el\r\n\r\n this.preventClose = props.preventClose === true\r\n\r\n let triggerClass = 'js-accordion-trigger'\r\n let panelClass = 'js-accordion-panel'\r\n if (props.id) {\r\n triggerClass += props.id\r\n panelClass += props.id\r\n }\r\n const expandFirst = el.dataset.firstexpanded === 'true'\r\n this.multiSelectable = this.el.hasAttribute('aria-multiselectable')\r\n\r\n let selectedIndex\r\n if (Number.isInteger(props.selectedIndex)) selectedIndex = props.selectedIndex\r\n else if (expandFirst) selectedIndex = 0\r\n\r\n this.accordionTriggers = this.el.getElementsByClassName(triggerClass)\r\n this.accordionPanels = this.el.getElementsByClassName(panelClass)\r\n\r\n if (\r\n this.accordionTriggers.length === 0 ||\r\n this.accordionTriggers.length !== this.accordionPanels.length\r\n ) {\r\n return\r\n }\r\n\r\n // if we do not already have a selected index see if we have the open panels attribute\r\n if (selectedIndex === undefined && el.dataset.openPanels) {\r\n let openPanels = el.dataset.openPanels\r\n openPanels = openPanels.split(',')\r\n const panelArr = []\r\n for (const panel of openPanels) {\r\n const n = parseInt(panel)\r\n // quick test to make sure we have a positive value\r\n if ((n | 0) > 0 && n % 1 === 0 && n <= this.accordionTriggers.length) {\r\n panelArr.push(n - 1)\r\n // if this is not multiselectable then stop after first validated value\r\n if (!this.multiSelectable) break\r\n }\r\n }\r\n if (panelArr.length) selectedIndex = panelArr\r\n }\r\n\r\n this._init(selectedIndex)\r\n}\r\n\r\nAccordionWidget.prototype._init = function (selectedIndex) {\r\n this.accordionTriggersLength = this.accordionTriggers.length\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n this.clickListener = this._clickEvent.bind(this)\r\n this.keydownListener = this._keydownEvent.bind(this)\r\n this.focusListener = this._focusEvent.bind(this)\r\n this.keys = {\r\n prev: 38,\r\n next: 40,\r\n space: 32\r\n }\r\n\r\n let initialSelectedIndex\r\n\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n this.accordionTriggers[i].index = i\r\n this.accordionTriggers[i].addEventListener(\r\n 'click',\r\n this.clickListener,\r\n false\r\n )\r\n this.accordionTriggers[i].addEventListener(\r\n 'keydown',\r\n this.keydownListener,\r\n false\r\n )\r\n this.accordionTriggers[i].addEventListener(\r\n 'focus',\r\n this.focusListener,\r\n false\r\n )\r\n this.accordionTriggers[i].classList.add('is-accordion-trigger')\r\n\r\n if (this.accordionTriggers[i].classList.contains('is-selected')) {\r\n this.expandedAccordions[i] = true\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.accordionPanels.length; i++) {\r\n this.accordionPanels[i].classList.add('is-accordion-panel')\r\n }\r\n\r\n // determine which panels need to be open\r\n if (!isNaN(selectedIndex)) {\r\n initialSelectedIndex = selectedIndex\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n this.expandedAccordions[initialSelectedIndex] = true\r\n } else if (Array.isArray(selectedIndex)) {\r\n initialSelectedIndex = selectedIndex\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n if (selectedIndex.includes(i)) this.expandedAccordions[i] = true\r\n }\r\n } else {\r\n initialSelectedIndex = this.expandedAccordions.lastIndexOf(true)\r\n\r\n if (!this.multiSelectable) {\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n this.expandedAccordions[initialSelectedIndex] = true\r\n }\r\n }\r\n\r\n this.initialSetIndex = selectedIndex\r\n this.setSelected(initialSelectedIndex)\r\n this.setExpanded()\r\n this.setAPI()\r\n this.el.classList.add('is-accordion')\r\n this.el.classList.add('is-initialized')\r\n}\r\n\r\nAccordionWidget.prototype._clickEvent = function (e) {\r\n e.preventDefault()\r\n this.setSelected(e.target.index, true)\r\n this.setExpanded(e.target.index, true)\r\n}\r\n\r\nAccordionWidget.prototype._keydownEvent = function (e) {\r\n let targetIndex\r\n\r\n switch (e.keyCode) {\r\n case this.keys.space:\r\n case this.keys.prev:\r\n case this.keys.next:\r\n e.preventDefault()\r\n break\r\n default:\r\n return\r\n }\r\n\r\n if (e.keyCode === this.keys.space) {\r\n // this.setExpanded(e.target.index, true);\r\n e.target.click()\r\n\r\n return\r\n } else if (e.keyCode === this.keys.prev && e.target.index > 0) {\r\n targetIndex = e.target.index - 1\r\n } else if (\r\n e.keyCode === this.keys.next &&\r\n e.target.index < this.accordionTriggersLength - 1\r\n ) {\r\n targetIndex = e.target.index + 1\r\n } else {\r\n return\r\n }\r\n\r\n this.setSelected(targetIndex, true)\r\n}\r\n\r\nAccordionWidget.prototype._focusEvent = function () {\r\n if (this.accordionTriggersLength === 1) {\r\n this.setSelected(0)\r\n }\r\n}\r\n\r\nAccordionWidget.prototype.setSelected = function (index, userInvoked) {\r\n if (index === -1) {\r\n this.accordionTriggers[0].setAttribute('tabindex', 0)\r\n\r\n return\r\n }\r\n\r\n if (Array.isArray(index)) index = index[0]\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n if (i === index) {\r\n this.accordionTriggers[i].classList.add('is-selected')\r\n // this.accordionTriggers[i].setAttribute('tabindex', 0);\r\n\r\n if (userInvoked) {\r\n this.accordionTriggers[i].focus()\r\n }\r\n } else {\r\n this.accordionTriggers[i].classList.remove('is-selected')\r\n\r\n // this.accordionTriggers[i].setAttribute('tabindex', -1);\r\n }\r\n }\r\n}\r\n\r\nAccordionWidget.prototype.setExpanded = function (index, userInvoked) {\r\n let i\r\n\r\n // special case to close all\r\n if (index === -1) this.expandedAccordions = []\r\n\r\n if (userInvoked) {\r\n if (this.multiSelectable) {\r\n if (!this.expandedAccordions[index]) {\r\n this.expandedAccordions[index] = true\r\n } else if (!this.preventClose) {\r\n this.expandedAccordions[index] = false\r\n }\r\n } else {\r\n const isAlreadyOpen = this.expandedAccordions[index]\r\n if (isAlreadyOpen && this.preventClose) {\r\n return\r\n }\r\n for (i = 0; i < this.accordionTriggersLength; i++) {\r\n this.expandedAccordions[i] = i === index\r\n }\r\n }\r\n }\r\n\r\n AccordionWidget.prototype.hidePanelContent = function (item) {\r\n //allows animation to finish before hiding inner content from assistive technology\r\n setTimeout(() => {\r\n item.setAttribute('aria-hidden', true)\r\n item.setAttribute('hidden', true)\r\n }, 325)\r\n }\r\n\r\n let hasExpanded = false\r\n for (i = 0; i < this.accordionTriggersLength; i++) {\r\n if (this.expandedAccordions[i]) {\r\n this.accordionPanels[i].setAttribute('aria-hidden', false)\r\n this.accordionPanels[i].removeAttribute('hidden')\r\n\r\n this.accordionTriggers[i].setAttribute('aria-expanded', true)\r\n this.accordionTriggers[i].classList.add('is-expanded')\r\n\r\n this.accordionPanels[i].classList.add('is-open')\r\n gsap.to(this.accordionPanels[i], { height: 'auto', duration: 0.3 })\r\n\r\n this.accordionTriggers[i].parentElement.classList.add('is-active')\r\n\r\n hasExpanded = true\r\n } else {\r\n this.accordionTriggers[i].setAttribute('aria-expanded', false)\r\n this.accordionTriggers[i].classList.remove('is-expanded')\r\n\r\n this.accordionPanels[i].classList.remove('is-open')\r\n gsap.to(this.accordionPanels[i], { height: 0, duration: 0.3 })\r\n\r\n this.accordionTriggers[i].parentElement.classList.remove('is-active')\r\n this.hidePanelContent(this.accordionPanels[i])\r\n }\r\n }\r\n\r\n // add close to parent to indicate there is an open element\r\n if (hasExpanded) this.el.classList.add('has-expanded-el')\r\n else this.el.classList.remove('has-expanded-el')\r\n this.hasExpanded = hasExpanded\r\n}\r\n\r\nAccordionWidget.prototype.setAPI = function () {\r\n // add API functionality here\r\n this.close = function () {\r\n this.setSelected(-1)\r\n this.setExpanded(-1)\r\n }\r\n // open initial index\r\n this.openInit = function () {\r\n const index = this.initialSetIndex\r\n if (Number.isInteger(index)) {\r\n this.setSelected(index, true)\r\n this.setExpanded(index, true)\r\n }\r\n }\r\n}\r\n\r\nAccordionWidget.prototype.destroy = function () {\r\n this.el.classList.remove('is-initialized')\r\n\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n this.accordionTriggers[i].removeAttribute('aria-expanded')\r\n this.accordionTriggers[i].classList.remove('is-expanded')\r\n\r\n this.accordionPanels[i].removeAttribute('aria-hidden')\r\n this.accordionPanels[i].classList.remove('is-open')\r\n this.accordionPanels[i].removeAttribute('tabindex')\r\n\r\n this.accordionTriggers[i].removeEventListener(\r\n 'click',\r\n this.clickListener,\r\n false\r\n )\r\n this.accordionTriggers[i].removeEventListener(\r\n 'keydown',\r\n this.keydownListener,\r\n false\r\n )\r\n this.accordionTriggers[i].removeEventListener(\r\n 'focus',\r\n this.focusListener,\r\n false\r\n )\r\n\r\n delete this.accordionTriggers[i].index\r\n }\r\n}\r\n\r\nexport { AccordionWidget }\r\n"],"names":["SubNav","el","_classCallCheck","this","domMap","$accordionPanel","querySelector","$accordionTrigger","$triggers","querySelectorAll","$lists","initAccordion","addListeners","key","value","_this","_this$domMap","addEventListener","toggleAccordion","bind","forEach","$trigger","toggleMenu","$list","handleListFocusout","window","handleWindowClick","AccordionWidget","_this$domMap2","isOpen","getAttribute","setAttribute","e","target","$target","closest","relatedTarget","props","arguments","length","undefined","preventClose","triggerClass","panelClass","id","selectedIndex","expandFirst","dataset","firstexpanded","multiSelectable","hasAttribute","Number","isInteger","accordionTriggers","getElementsByClassName","accordionPanels","openPanels","_step","panelArr","_iterator","_createForOfIteratorHelper","split","s","n","done","panel","parseInt","push","err","f","_init","prototype","initialSelectedIndex","accordionTriggersLength","expandedAccordions","Array","clickListener","_clickEvent","keydownListener","_keydownEvent","focusListener","_focusEvent","keys","prev","next","space","i","index","classList","add","contains","isNaN","isArray","includes","lastIndexOf","initialSetIndex","setSelected","setExpanded","setAPI","preventDefault","targetIndex","keyCode","click","userInvoked","focus","remove","hidePanelContent","item","setTimeout","hasExpanded","removeAttribute","gsap","to","height","duration","parentElement","close","openInit","destroy","removeEventListener"],"sourceRoot":""}