{"version":3,"file":"8591.651d4a6f9b29188332d8.js","mappings":"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","sources":["webpack://riat/./wwwroot/app/src/js/keyboard-accessibility-check.js","webpack://riat/./wwwroot/app/src/js/main-navigation.js"],"sourcesContent":["// keyboard control detection\r\n\r\nexport const keyboardControl = {\r\n active: false\r\n}\r\n\r\nlet accessibilityTimeout = null;\r\nconst toggleAccessibilityClass = (mode) => {\r\n clearTimeout(accessibilityTimeout);\r\n accessibilityTimeout = setTimeout(() => {\r\n document.body.classList.toggle('keyboard-control', mode);\r\n keyboardControl.active = mode;\r\n }, 100);\r\n}\r\ndocument.body.addEventListener('keydown', function(e) {\r\n switch (e.key) {\r\n case 'Escape':\r\n case 'Up':\r\n case 'ArrowUp':\r\n case 'Down':\r\n case 'ArrowDown':\r\n case 'Left':\r\n case 'ArrowLeft':\r\n case 'Tab':\r\n case 'Right':\r\n case 'ArrowRight':\r\n case 'PageUp':\r\n case 'PageDown':\r\n case 'Spacebar':\r\n case ' ':\r\n case 'Enter':\r\n case 'Return':\r\n toggleAccessibilityClass(true);\r\n break;\r\n }\r\n});\r\ndocument.body.addEventListener('mousedown', function() {\r\n toggleAccessibilityClass(false);\r\n});\r\ndocument.body.addEventListener('touchstart', function() {\r\n toggleAccessibilityClass(false);\r\n});","// *****************************\r\n// ***** Main Navigation *****\r\n// *****************************\r\nimport { breakPoint } from './config';\r\nimport { keyboardControl } from './keyboard-accessibility-check';\r\n\r\nconst $html = document.querySelector('html');\r\nlet isMobile = true,\r\n resizeTimeout = null;\r\n\r\nexport const mobileNavigation = {\r\n active: false\r\n}\r\nexport const desktopNavigation = {\r\n active: false\r\n}\r\n\r\nclass menu {\r\n\r\n constructor(wrapper, toggleButton, ul) {\r\n this.wrapper = wrapper;\r\n this.desktopSubmenuIndicator = wrapper.querySelector('.submenu--menu-indicator');\r\n this.navContent = wrapper.querySelector('nav');\r\n this.mobileToggle = toggleButton;\r\n this.ul = ul;\r\n this.expanded = false;\r\n this.hideTimeout = null;\r\n this.hideDelay = 500;\r\n this.activeItemIndex = -1;\r\n this.activeSubmenuItemIndex = -1;\r\n this.items = [];\r\n [...this.ul.querySelectorAll('.header--content--menu > nav > ul > li')].forEach(i => {\r\n let x = this.items.length;\r\n this.items[x] = new menuItem(x, i, 1);\r\n });\r\n }\r\n\r\n show() {\r\n // make menu semantically visible in both mobile and desktop versions\r\n this.expanded = true;\r\n this.wrapper.removeAttribute('aria-hidden');\r\n if(isMobile) {\r\n // mobile - animate in the menu element\r\n this.mobileToggle.setAttribute('aria-expanded', true);\r\n $html.classList.add('mobile-menu-fading');\r\n mobileNavigation.active = true;\r\n window.requestAnimationFrame(() => {\r\n $html.classList.add('mobile-menu-active');\r\n this.wrapper.ontransitionend = () => {\r\n this.transitionEnd(true);\r\n this.update(true, 0, -1);\r\n };\r\n });\r\n } else {\r\n // desktop resets\r\n mobileNavigation.active = false;\r\n window.requestAnimationFrame(() => {\r\n $html.classList.remove('mobile-menu-active');\r\n });\r\n }\r\n }\r\n\r\n hide() {\r\n if(isMobile && mobileNavigation.active) {\r\n // mobile - animate out menu element\r\n this.expanded = false;\r\n mobileNavigation.active = false;\r\n this.mobileToggle.setAttribute('aria-expanded', false);\r\n $html.classList.add('mobile-menu-fading');\r\n $html.classList.remove('mobile-menu-active');\r\n this.wrapper.ontransitionend = () => {\r\n this.transitionEnd(false);\r\n };\r\n } else {\r\n // hide menu semantically in both mobile and desktop versions\r\n this.expanded = false;\r\n this.mobileToggle.setAttribute('aria-expanded', false);\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n }\r\n }\r\n\r\n closeAllSubmenus() {\r\n for(let x = 0, l = this.items.length; x < l; x++) {\r\n if(this.items[x].hasSubmenu) {\r\n this.items[x].submenu.hide();\r\n }\r\n }\r\n this.activeItemIndex = -1;\r\n this.activeSubmenuItemIndex = -1;\r\n }\r\n\r\n transitionEnd(mode) {\r\n if(!mode) {\r\n // menu has hidden\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n }\r\n $html.classList.remove('mobile-menu-fading');\r\n this.wrapper.ontransitionend = null;\r\n }\r\n\r\n storeTriggerPositions() {\r\n for(let x = 0, l = this.items.length; x < l; x++) {\r\n if(this.items[x].button != null) {\r\n let b = this.items[x].button.getBoundingClientRect();\r\n this.items[x].buttonX = Math.floor((b.left + b.right) / 2);\r\n }\r\n }\r\n }\r\n\r\n positionSubmenu() {\r\n if(!isMobile && this.activeItemIndex > -1 && this.items[this.activeItemIndex].hasSubmenu) {\r\n let submenuEl = this.items[this.activeItemIndex].submenu.wrapper;\r\n let submenuWidth = submenuEl.offsetWidth;\r\n let submenuLeft = `clamp(var(--submenu-min-left), ${this.items[this.activeItemIndex].buttonX - (submenuWidth / 2)}px, calc((var(--submenu-min-left) + var(--submenu-width-limit)) - ${submenuWidth}px))`;\r\n submenuEl.style.setProperty('--submenu-left', submenuLeft);\r\n }\r\n }\r\n\r\n update(setFocus = false, itemIndex = -1, submenuItemIndex = -1) {\r\n if(!isMobile) this.storeTriggerPositions();\r\n if (itemIndex > -1 && submenuItemIndex > -1) {\r\n\r\n // FOCUS TARGET IS SUBMENU MENU ITEM\r\n\r\n if (isMobile && !this.expanded) this.show();\r\n // close old submenu without animation?\r\n if (this.activeItemIndex > -1 && this.activeSubmenuItemIndex > -1 && itemIndex != this.activeItemIndex && this.items[this.activeItemIndex].submenu.expanded) this.items[this.activeItemIndex].submenu.hide(isMobile);\r\n // open new submenu\r\n if (!this.items[itemIndex].submenu.expanded) this.items[itemIndex].submenu.show(isMobile || (this.activeItemIndex == -1 || this.activeSubmenuItemIndex == -1));\r\n // focus on item\r\n if (keyboardControl.active && setFocus) this.items[itemIndex].submenu.items[submenuItemIndex].focus();\r\n\r\n } else if (itemIndex > -1) {\r\n\r\n // FOCUS TARGET IS TOP-LEVEL MENU ITEM\r\n\r\n if (isMobile && !this.expanded) this.show();\r\n // close old submenu with animation?\r\n if (this.activeItemIndex > -1 && this.items[this.activeItemIndex].hasSubmenu) {\r\n if (this.items[this.activeItemIndex].submenu.expanded) this.items[this.activeItemIndex].submenu.hide(true);\r\n }\r\n // focus on item\r\n if (keyboardControl.active && setFocus) {\r\n if (this.items[itemIndex].hasSubmenu) {\r\n this.items[itemIndex].submenu.toggle.focus();\r\n } else {\r\n this.items[itemIndex].link.focus();\r\n }\r\n }\r\n\r\n } else {\r\n if (this.activeItemIndex > -1 && this.activeSubmenuItemIndex > -1 && this.items[this.activeItemIndex].submenu.expanded) this.items[this.activeItemIndex].submenu.hide(!isMobile);\r\n if (isMobile && this.expanded) {\r\n this.hide();\r\n if (keyboardControl.active && setFocus) this.mobileToggle.focus();\r\n }\r\n }\r\n // update tabIndex setting\r\n if (this.activeItemIndex != itemIndex) {\r\n if (this.activeItemIndex > -1) {\r\n if (this.items[this.activeItemIndex].hasSubmenu) {\r\n this.items[this.activeItemIndex].submenu.toggle.setAttribute('tabindex', '-1');\r\n } else {\r\n this.items[this.activeItemIndex].link.setAttribute('tabindex', '-1');\r\n }\r\n }\r\n let nextTabIndex = itemIndex;\r\n if (!isMobile && nextTabIndex == -1) nextTabIndex = 0;\r\n if (nextTabIndex > -1) {\r\n if (this.items[nextTabIndex].hasSubmenu) {\r\n this.items[nextTabIndex].submenu.toggle.setAttribute('tabindex', '0');\r\n } else {\r\n this.items[nextTabIndex].link.setAttribute('tabindex', '0');\r\n }\r\n }\r\n }\r\n // store new values\r\n this.activeItemIndex = itemIndex;\r\n this.activeSubmenuItemIndex = submenuItemIndex;\r\n // position submenu?\r\n if (this.activeItemIndex > -1) this.positionSubmenu();\r\n }\r\n}\r\n\r\nclass menuItem {\r\n constructor(itemIndex, obj, level) {\r\n this.level = level;\r\n this.index = itemIndex;\r\n this.li = obj;\r\n this.button = obj.querySelector('button.submenu--toggle');\r\n this.buttonX = 0;\r\n let sub = obj.querySelector('div.submenu');\r\n if (this.button && sub) {\r\n this.hasSubmenu = true;\r\n this.submenu = new subMenu(sub, this.button, level);\r\n } else {\r\n this.hasSubmenu = false;\r\n this.link = obj.querySelector('a');\r\n }\r\n }\r\n}\r\n\r\nclass subMenu {\r\n constructor(sub, button, level) {\r\n this.expanded = false;\r\n this.toggle = button;\r\n this.wrapper = sub;\r\n this.level = level;\r\n this.closeBtn = this.wrapper.querySelector('.submenu--close');\r\n this.inner = this.wrapper.querySelector('.submenu--content-area');\r\n this.items = [];\r\n [...this.inner.querySelectorAll('a, button')].forEach(i => {\r\n this.items.push(i);\r\n });\r\n }\r\n show(animate) {\r\n this.expanded = true;\r\n this.wrapper.removeAttribute('aria-hidden');\r\n this.toggle.setAttribute('aria-expanded', true);\r\n if(isMobile) {\r\n this.wrapper.style.maxHeight = this.inner.offsetHeight + 'px';\r\n if (animate) {\r\n this.wrapper.classList.add('animate');\r\n this.wrapper.ontransitionend = () => {\r\n this.wrapper.classList.remove('animate');\r\n if (this.level > 1 || isMobile) {\r\n this.wrapper.style.maxHeight = 'none';\r\n this.wrapper.ontransitionend = null;\r\n }\r\n };\r\n } else {\r\n this.wrapper.style.maxHeight = 'none';\r\n }\r\n } else {\r\n this.wrapper.style.maxHeight = 'none';\r\n desktopNavigation.active = true;\r\n if (animate) {\r\n window.requestAnimationFrame(() => {\r\n $html.classList.add('desktop-menu-fading');\r\n window.requestAnimationFrame(() => {\r\n $html.classList.add('desktop-menu-active');\r\n this.wrapper.ontransitionend = () => {\r\n $html.classList.remove('desktop-menu-fading');\r\n this.wrapper.ontransitionend = null;\r\n };\r\n });\r\n });\r\n } else {\r\n $html.classList.add('desktop-menu-active');\r\n }\r\n }\r\n }\r\n hide(animate) {\r\n this.expanded = false;\r\n if (isMobile) {\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n this.toggle.setAttribute('aria-expanded', false);\r\n this.wrapper.style.maxHeight = this.inner.offsetHeight + 'px';\r\n window.requestAnimationFrame(() => {\r\n this.wrapper.style.maxHeight = 0;\r\n });\r\n if (animate) {\r\n this.wrapper.classList.add('animate');\r\n this.wrapper.ontransitionend = (e) => {\r\n if(e.target == this.wrapper) this.wrapper.classList.remove('animate');\r\n };\r\n }\r\n } else {\r\n desktopNavigation.active = false;\r\n if (animate) {\r\n $html.classList.add('desktop-menu-fading');\r\n $html.classList.remove('desktop-menu-active');\r\n this.wrapper.ontransitionend = () => {\r\n this.wrapper.ontransitionend = null;\r\n $html.classList.remove('desktop-menu-fading');\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n this.toggle.setAttribute('aria-expanded', false);\r\n };\r\n } else {\r\n $html.classList.remove('desktop-menu-active');\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n this.toggle.setAttribute('aria-expanded', false);\r\n }\r\n }\r\n }\r\n}\r\n\r\n// create instance of menu\r\n\r\nif(document.querySelector('.header--content--menu') != null) {\r\n const m = new menu(document.querySelector('.header--content--menu'), document.querySelector('.header--content--menu-toggle button'), document.querySelector('.header--content--menu > nav > ul'));\r\n\r\n\r\n // mobile 'whole menu toggle' functionality\r\n\r\n m.mobileToggle.addEventListener('click', () => {\r\n if (isMobile) {\r\n if (m.expanded) {\r\n // close\r\n m.hide();\r\n } else {\r\n // open\r\n m.show();\r\n }\r\n }\r\n });\r\n\r\n // close menu if user focus moves outside\r\n\r\n const bodyClickTouch = (t) => {\r\n if (!isMobile && m.activeSubmenuItemIndex > -1) {\r\n let inMenu = false;\r\n while (t != document.body) {\r\n if (t == m.wrapper) {\r\n inMenu = true;\r\n break\r\n }\r\n t = t.parentNode;\r\n }\r\n if (!inMenu) {\r\n m.update();\r\n }\r\n }\r\n }\r\n document.body.addEventListener('click', (e) => {\r\n bodyClickTouch(e.target);\r\n });\r\n\r\n // add menu item listeners\r\n\r\n for (let x = 0, l = m.items.length; x < l; x++) {\r\n let o = m.items[x];\r\n if (o.hasSubmenu) {\r\n\r\n o.submenu.toggle.addEventListener('click', () => {\r\n clearTimeout(m.focusTimeout);\r\n m.focusTimeout = null;\r\n if (o.submenu.expanded) {\r\n m.update(true, o.index);\r\n } else {\r\n m.update(true, o.index, 0);\r\n }\r\n });\r\n \r\n o.submenu.toggle.addEventListener('focus', () => {\r\n if (m.expanded && m.activeItemIndex != o.index) {\r\n clearTimeout(m.focusTimeout);\r\n m.focusTimeout = setTimeout(() => {\r\n m.update(true, o.index);\r\n m.focusTimeout = null;\r\n }, 250);\r\n }\r\n });\r\n \r\n // add submenu expander listeners if required\r\n \r\n for (let xx = 0, ll = o.submenu.items.length; xx < ll; xx++) {\r\n let oo = o.submenu.items[xx];\r\n if (oo.hasSubmenu) {\r\n oo.submenu.toggle.addEventListener('click', () => {\r\n m.update(true, o.index, oo.index);\r\n });\r\n }\r\n }\r\n \r\n // desktop only - submenu close button\r\n \r\n o.submenu.closeBtn.addEventListener('click', () => {\r\n if (o.submenu.expanded) m.update(true, o.index);\r\n });\r\n }\r\n }\r\n\r\n // add keyboard accessibility\r\n m.ul.addEventListener('keydown', (e) => {\r\n switch (e.key) {\r\n // ESCAPE jumps out a level\r\n case 'Escape':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n m.update(true, m.activeItemIndex);\r\n } else {\r\n m.update(true);\r\n }\r\n break;\r\n // DOWN / RIGHT to move through items at current level\r\n case 'Down':\r\n case 'ArrowDown':\r\n case 'Right':\r\n case 'ArrowRight':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n let next = m.activeSubmenuItemIndex + 1,\r\n list = m.items[m.activeItemIndex].submenu.items;\r\n if (next >= (isMobile ? list.length - 1 : list.length)) next = 0; // don't include submenu close button in mobile mode\r\n m.update(true, m.activeItemIndex, next);\r\n } else {\r\n let next = m.activeItemIndex + 1,\r\n list = m.items;\r\n if (next >= list.length) next = 0;\r\n m.update(true, next);\r\n }\r\n break;\r\n // UP / LEFT to move backwards through items at current level\r\n case 'Up':\r\n case 'ArrowUp':\r\n case 'Left':\r\n case 'ArrowLeft':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n let next = m.activeSubmenuItemIndex - 1,\r\n list = m.items[m.activeItemIndex].submenu.items;\r\n if (next < 0) next = isMobile ? list.length - 2 : list.length - 1; // don't include submenu close button in mobile mode\r\n m.update(true, m.activeItemIndex, next);\r\n } else {\r\n let next = m.activeItemIndex - 1,\r\n list = m.items;\r\n if (next < 0) next = list.length - 1;\r\n m.update(true, next);\r\n }\r\n break;\r\n // TAB close menu (if open) and move to next tab element\r\n case 'Tab':\r\n if(isMobile) {\r\n if (!m.hasSearch && m.activeItemIndex > -1) {\r\n m.hide();\r\n }\r\n } else {\r\n m.update();\r\n }\r\n break;\r\n // SPACE/ENTER/RETURN to click a item\r\n case 'Spacebar':\r\n case ' ':\r\n case 'Enter':\r\n case 'Return':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n m.items[m.activeItemIndex].submenu.items[m.activeSubmenuItemIndex].click();\r\n } else {\r\n if (m.items[m.activeItemIndex].hasSubmenu) {\r\n m.items[m.activeItemIndex].submenu.toggle.click();\r\n } else {\r\n m.items[m.activeItemIndex].link.click();\r\n }\r\n }\r\n break;\r\n }\r\n });\r\n\r\n // define and trigger resize check\r\n\r\n const resize = () => {\r\n let prev = isMobile;\r\n isMobile = window.innerWidth < breakPoint.LG;\r\n if(!isMobile) {\r\n m.storeTriggerPositions();\r\n // position submenu?\r\n if (m.activeItemIndex > -1) m.positionSubmenu();\r\n }\r\n if(isMobile !== prev) {\r\n if(!isMobile) {\r\n m.show();\r\n m.update(false,1); // 'home' is hidden on desktop, so set menu to item 1 (without setting focus)\r\n } else {\r\n m.update(false);\r\n }\r\n // loop through all submenus and force close them\r\n m.items.forEach(s => {\r\n if(s.hasSubmenu) s.submenu.hide(false);\r\n });\r\n mobileNavigation.active = false;\r\n m.mobileToggle.setAttribute('aria-expanded', false);\r\n desktopNavigation.active = false;\r\n $html.classList.remove('mobile-menu-active');\r\n $html.classList.remove('desktop-menu-active');\r\n }\r\n };\r\n \r\n resize();\r\n window.addEventListener('resize', () => {\r\n clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(() => {\r\n resize();\r\n }, 100);\r\n });\r\n\r\n}\r\n"],"names":["keyboardControl","active","accessibilityTimeout","toggleAccessibilityClass","mode","clearTimeout","setTimeout","document","body","classList","toggle","addEventListener","e","key","$html","querySelector","isMobile","resizeTimeout","mobileNavigation","desktopNavigation","menu","constructor","wrapper","toggleButton","ul","this","desktopSubmenuIndicator","navContent","mobileToggle","expanded","hideTimeout","hideDelay","activeItemIndex","activeSubmenuItemIndex","items","querySelectorAll","forEach","i","x","length","menuItem","show","removeAttribute","setAttribute","add","window","requestAnimationFrame","ontransitionend","transitionEnd","update","remove","hide","closeAllSubmenus","l","hasSubmenu","submenu","storeTriggerPositions","button","b","getBoundingClientRect","buttonX","Math","floor","left","right","positionSubmenu","submenuEl","submenuWidth","offsetWidth","submenuLeft","style","setProperty","setFocus","itemIndex","submenuItemIndex","focus","link","nextTabIndex","obj","level","index","li","sub","subMenu","closeBtn","inner","push","animate","maxHeight","offsetHeight","target","m","bodyClickTouch","t","inMenu","parentNode","o","focusTimeout","xx","ll","oo","preventDefault","next","list","hasSearch","click","resize","prev","innerWidth","breakPoint","s"],"sourceRoot":""}