{"version":3,"file":"assets/js/751.a7dbc4ec0dee5d5a71e3.js","mappings":"ghBAKA,E,oQC0GMA,IAnBSC,EAAAA,EAAAA,IAAO,WAmBMC,EAAAA,EAAAA,IAAI,KAE1BC,GAAcC,EAAAA,EAAAA,KAAS,IAAMC,EAAMC,mBAAqBD,EAAME,yBAE9DC,GAAcJ,EAAAA,EAAAA,KAAS,IAAOD,EAAc,KAAO,WACnDM,GAAaL,EAAAA,EAAAA,KAAS,IAAOD,EAAc,KAAO,SAExD,SAASO,EAAgBC,GACvBX,EAAoBY,MAAMC,KAAKF,EACjC,C,OAuBAG,EAAAA,EAAAA,KAAe,KACbd,EAAoBY,MAAQ,EAAE,KAGhCG,EAAAA,EAAAA,KAAU,MAzBV,WACE,MAAMC,EAAmBhB,EAAoBY,MAAM,GAC7CK,EAAkBjB,EAAoBY,MAAMZ,EAAoBY,MAAMM,OAAS,GAEjFD,GACFA,EAAgBE,iBAAiB,WAAYC,IAC7B,QAAVA,EAAEC,KAAkBD,EAAEE,UACxBC,EAAK,eACP,IAIAP,GACFA,EAAiBG,iBAAiB,WAAYC,IAC9B,QAAVA,EAAEC,KAAiBD,EAAEE,UACvBC,EAAK,eACP,GAGN,CAOEC,EAAe,I,ksECpHXC,EAAyB,UC3B/B,E,+BDoBA,MAAMC,GAASzB,EAAAA,EAAAA,IAAO,UAEhBM,GAAyBL,EAAAA,EAAAA,IAAI,MAC7ByB,GAAuBzB,EAAAA,EAAAA,IAAI,MAE3B0B,EAAaC,OAAOC,WAAW,wBAG/BC,EAA8BC,SAASC,iBAAiB,+BAE9D,SAASC,EAAwBC,GAC/BA,IAAM5B,EAAuBK,MAAQwB,IAuBvC,SAAqBD,GACnB5B,EAAuBK,MAAQuB,EAC/BJ,EAA4BM,SAAS1B,GAAOA,EAAG2B,aAAa,QAAS,MACrEN,SAASO,KAAKC,UAAUC,IAAIhB,GAE5BI,OAAOV,iBAAiB,QAASuB,GACjCb,OAAOV,iBAAiB,UAAWwB,EACrC,CA9BwDC,CAAYT,EACpE,CAEA,SAASO,EAAatB,GACpB,MAAMyB,EAAc,IAAIlB,EAAqBf,OAAOL,EAAuBK,QAC3EkC,EAAAA,EAAAA,KAAS,KACFD,IAIAA,EAAYE,SAAS3B,EAAE4B,SAC1BZ,IACF,GAEJ,CAEA,SAASO,EAAavB,GACN,WAAVA,EAAEC,KAAqD,OAAjCd,EAAuBK,QAC/CQ,EAAE6B,iBACFb,IAEJ,CAWA,SAASA,IACP7B,EAAuBK,MAAQ,KAC/BmB,EAA4BM,SAAS1B,GAAOA,EAAGuC,gBAAgB,WAC/DlB,SAASO,KAAKC,UAAUW,OAAO1B,GAE/BI,OAAOuB,oBAAoB,QAASV,GACpCb,OAAOuB,oBAAoB,UAAWT,EACxC,C,OAEA5B,EAAAA,EAAAA,KAAU,KACRa,EAAWT,iBAAiB,UAAU,KACpCiB,GAAc,GACd,I,goBEpEJ,QATA,WACE,MAAMiB,EAAmBrB,SAASsB,eAAe,eACjD,GAAID,EAAkB,CACpB,MAAME,GAAMC,EAAAA,EAAAA,IAAUC,GACtBF,EAAIG,QAAQ,SAAUC,WACtBJ,EAAIK,MAAMP,EACZ,CACF,C","sources":["webpack://mps/./src/app/components/nav-desktop-inner.vue?058d","webpack://mps/./src/app/components/nav-desktop-inner.vue","webpack://mps/./src/app/views/nav-desktop/nav-desktop.vue","webpack://mps/./src/app/views/nav-desktop/nav-desktop.vue?779e","webpack://mps/./src/app/views/nav-desktop/nav-desktop.ts"],"sourcesContent":["import script from \"./nav-desktop-inner.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./nav-desktop-inner.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\r\n <!-- Primary level nav item -->\r\n <a\r\n v-if=\"!firstLevelItem.children.length\"\r\n class=\"c-nav-desktop__primary-link\"\r\n :href=\"firstLevelItem.url\"\r\n :ref=\"(el) => addFocusableRef(el)\"\r\n >\r\n {{ firstLevelItem.label }}\r\n </a>\r\n <button\r\n v-else\r\n class=\"c-nav-desktop__primary-link\"\r\n :aria-controls=\"`second-level-list-${firstLevelNumber}`\"\r\n :aria-expanded=\"panelIsOpen\"\r\n @click=\"() => emit('primaryLevelButtonClick', firstLevelNumber)\"\r\n :ref=\"(el) => addFocusableRef(el)\"\r\n >\r\n {{ firstLevelItem.label }}\r\n <svg focusable=\"false\" aria-hidden=\"true\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#down-arrow\"></use>\r\n </svg>\r\n </button>\r\n\r\n <!-- Meganav panel -->\r\n <section\r\n class=\"c-nav-desktop__panel\"\r\n :aria-label=\"firstLevelItem.label\"\r\n tabindex=\"-1\"\r\n :hidden=\"panelHidden\"\r\n :inert=\"panelInert\"\r\n v-if=\"firstLevelItem.children.length\"\r\n >\r\n <ul class=\"c-nav-desktop__panel-list\" :id=\"`second-level-list-${firstLevelNumber}`\" role=\"list\">\r\n <!-- Link to the parent primary nav item's page -->\r\n <li\r\n v-if=\"firstLevelItem.url\"\r\n class=\"c-nav-desktop__item c-nav-desktop__item--parent\"\r\n role=\"listitem\"\r\n >\r\n <a\r\n class=\"c-nav-desktop__link c-nav-desktop__link--second-level\"\r\n :href=\"firstLevelItem.url\"\r\n :ref=\"(el) => addFocusableRef(el)\"\r\n >\r\n {{ firstLevelItem.label }}\r\n </a>\r\n </li>\r\n <!-- Second level: Child pages of primary items -->\r\n <li\r\n class=\"c-nav-desktop__item c-nav-desktop__item--second-level\"\r\n v-for=\"(secondLevelItem, secondLevelNumber) in firstLevelItem.children\"\r\n :key=\"`second-level-${secondLevelNumber}`\"\r\n role=\"listitem\"\r\n >\r\n <a\r\n class=\"c-nav-desktop__link c-nav-desktop__link--second-level\"\r\n :href=\"secondLevelItem.url\"\r\n :ref=\"(el) => addFocusableRef(el)\"\r\n >\r\n {{ secondLevelItem.label }}\r\n </a>\r\n <!-- Third level: Child pages of secondary items -->\r\n <template v-if=\"secondLevelItem.children.length\">\r\n <ul\r\n class=\"c-nav-desktop__third-level\"\r\n :id=\"`third-level-list-${firstLevelNumber}-${secondLevelNumber}`\"\r\n role=\"list\"\r\n >\r\n <li\r\n class=\"c-nav-desktop__item c-nav-desktop__item--third-level\"\r\n v-for=\"(thirdLevelItem, thirdLevelNumber) in secondLevelItem.children\"\r\n :key=\"`third-level-${thirdLevelNumber}`\"\r\n role=\"listitem\"\r\n >\r\n <a\r\n class=\"c-nav-desktop__link c-nav-desktop__link--third-level\"\r\n :href=\"thirdLevelItem.url\"\r\n :ref=\"(el) => addFocusableRef(el)\"\r\n >\r\n {{ thirdLevelItem.label }}\r\n </a>\r\n </li>\r\n </ul>\r\n </template>\r\n </li>\r\n </ul>\r\n </section>\r\n</template>\r\n\r\n<script setup>\r\nimport { inject, computed, onBeforeUpdate, onMounted, ref } from 'vue';\r\nconst config = inject('config');\r\n\r\nconst props = defineProps({\r\n activeFirstLevelNumber: {\r\n type: [Number, null],\r\n required: true,\r\n },\r\n firstLevelItem: {\r\n type: Object,\r\n required: true,\r\n },\r\n firstLevelNumber: {\r\n type: Number,\r\n required: true,\r\n },\r\n});\r\n\r\nconst emit = defineEmits(['primaryLevelButtonClick', 'closeMeganav']);\r\n\r\nconst focusableElementRef = ref([]);\r\n\r\nconst panelIsOpen = computed(() => props.firstLevelNumber === props.activeFirstLevelNumber);\r\n\r\nconst panelHidden = computed(() => (panelIsOpen ? null : 'hidden'));\r\nconst panelInert = computed(() => (panelIsOpen ? null : 'true'));\r\n\r\nfunction addFocusableRef(el) {\r\n focusableElementRef.value.push(el);\r\n}\r\n\r\nfunction handleTabbing() {\r\n const firstFocucableEl = focusableElementRef.value[0];\r\n const lastFocusableEl = focusableElementRef.value[focusableElementRef.value.length - 1];\r\n\r\n if (lastFocusableEl) {\r\n lastFocusableEl.addEventListener('keydown', (e) => {\r\n if (e.key === 'Tab' && !e.shiftKey) {\r\n emit('closeMeganav');\r\n }\r\n });\r\n }\r\n\r\n if (firstFocucableEl) {\r\n firstFocucableEl.addEventListener('keydown', (e) => {\r\n if (e.key === 'Tab' && e.shiftKey) {\r\n emit('closeMeganav');\r\n }\r\n });\r\n }\r\n}\r\n\r\nonBeforeUpdate(() => {\r\n focusableElementRef.value = [];\r\n});\r\n\r\nonMounted(() => {\r\n handleTabbing();\r\n});\r\n</script>\r\n","<template>\r\n <nav v-if=\"config.nav.length\" class=\"c-nav-desktop__nav\" :aria-label=\"config.primaryNavAriaLabel\">\r\n <!-- First level -->\r\n <ul class=\"c-nav-desktop__primary-nav-list\" role=\"list\">\r\n <li\r\n class=\"c-nav-desktop__primary-nav-item\"\r\n v-for=\"(firstLevelItem, firstLevelNumber) in config.nav\"\r\n :key=\"`first-level-${firstLevelNumber}`\"\r\n ref=\"meganavFirstLevelRef\"\r\n role=\"listitem\"\r\n >\r\n <desktopNavItem\r\n :activeFirstLevelNumber=\"activeFirstLevelNumber\"\r\n :firstLevelItem=\"firstLevelItem\"\r\n :firstLevelNumber=\"firstLevelNumber\"\r\n @primaryLevelButtonClick=\"primaryLevelButtonClick\"\r\n @closeMeganav=\"closeMeganav\"\r\n />\r\n </li>\r\n </ul>\r\n </nav>\r\n</template>\r\n<script setup>\r\nimport { inject, ref, onMounted, nextTick } from 'vue';\r\nimport desktopNavItem from '@/app/components/nav-desktop-inner.vue';\r\nconst config = inject('config');\r\n\r\nconst activeFirstLevelNumber = ref(null);\r\nconst meganavFirstLevelRef = ref(null);\r\n\r\nconst mediaQuery = window.matchMedia('(min-width: 61.25em)');\r\n\r\nconst activeBodyOverlayClass = 'is-menu';\r\nconst selectorsToBeInertOnOpenNav = document.querySelectorAll('main, footer, .js-vue-inert');\r\n\r\nfunction primaryLevelButtonClick(i) {\r\n i === activeFirstLevelNumber.value ? closeMeganav() : openMeganav(i);\r\n}\r\n\r\nfunction clickOutside(e) {\r\n const activeInner = [...meganavFirstLevelRef.value][activeFirstLevelNumber.value];\r\n nextTick(() => {\r\n if (!activeInner) {\r\n return;\r\n }\r\n\r\n if (!activeInner.contains(e.target)) {\r\n closeMeganav();\r\n }\r\n });\r\n}\r\n\r\nfunction handleEscape(e) {\r\n if (e.key === 'Escape' && activeFirstLevelNumber.value !== null) {\r\n e.preventDefault();\r\n closeMeganav();\r\n }\r\n}\r\n\r\nfunction openMeganav(i) {\r\n activeFirstLevelNumber.value = i;\r\n selectorsToBeInertOnOpenNav.forEach((el) => el.setAttribute('inert', ''));\r\n document.body.classList.add(activeBodyOverlayClass);\r\n\r\n window.addEventListener('click', clickOutside);\r\n window.addEventListener('keydown', handleEscape);\r\n}\r\n\r\nfunction closeMeganav() {\r\n activeFirstLevelNumber.value = null;\r\n selectorsToBeInertOnOpenNav.forEach((el) => el.removeAttribute('inert'));\r\n document.body.classList.remove(activeBodyOverlayClass);\r\n\r\n window.removeEventListener('click', clickOutside);\r\n window.removeEventListener('keydown', handleEscape);\r\n}\r\n\r\nonMounted(() => {\r\n mediaQuery.addEventListener('change', () => {\r\n closeMeganav();\r\n });\r\n});\r\n</script>\r\n","import script from \"./nav-desktop.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./nav-desktop.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createApp } from 'vue';\r\nimport meganavDesktopApp from '@/app/views/nav-desktop/nav-desktop.vue';\r\n\r\nfunction init() {\r\n const meganavDesktopEl = document.getElementById('nav-desktop');\r\n if (meganavDesktopEl) {\r\n const app = createApp(meganavDesktopApp);\r\n app.provide('config', VueConfig);\r\n app.mount(meganavDesktopEl);\r\n }\r\n}\r\n\r\nexport default init;\r\n"],"names":["focusableElementRef","inject","ref","panelIsOpen","computed","props","firstLevelNumber","activeFirstLevelNumber","panelHidden","panelInert","addFocusableRef","el","value","push","onBeforeUpdate","onMounted","firstFocucableEl","lastFocusableEl","length","addEventListener","e","key","shiftKey","emit","handleTabbing","activeBodyOverlayClass","config","meganavFirstLevelRef","mediaQuery","window","matchMedia","selectorsToBeInertOnOpenNav","document","querySelectorAll","primaryLevelButtonClick","i","closeMeganav","forEach","setAttribute","body","classList","add","clickOutside","handleEscape","openMeganav","activeInner","nextTick","contains","target","preventDefault","removeAttribute","remove","removeEventListener","meganavDesktopEl","getElementById","app","createApp","meganavDesktopApp","provide","VueConfig","mount"],"sourceRoot":""}