{"version":3,"file":"2671.2aa7128db6e263f4cc8e.js","mappings":"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","sources":["webpack://riat/./wwwroot/app/src/js/main-navigation.js","webpack://riat/./wwwroot/app/src/js/keyboard-accessibility-check.js"],"sourcesContent":["// *****************************\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","// 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});"],"names":["$html","document","querySelector","isMobile","resizeTimeout","mobileNavigation","active","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","classList","add","window","requestAnimationFrame","ontransitionend","transitionEnd","update","remove","hide","closeAllSubmenus","l","hasSubmenu","submenu","mode","storeTriggerPositions","button","b","getBoundingClientRect","buttonX","Math","floor","left","right","positionSubmenu","submenuEl","submenuWidth","offsetWidth","submenuLeft","style","setProperty","setFocus","itemIndex","submenuItemIndex","keyboardControl","focus","toggle","link","nextTabIndex","obj","level","index","li","sub","subMenu","closeBtn","inner","push","animate","maxHeight","offsetHeight","e","target","m","addEventListener","bodyClickTouch","t","inMenu","body","parentNode","o","clearTimeout","focusTimeout","setTimeout","xx","ll","oo","key","preventDefault","next","list","hasSearch","click","resize","prev","innerWidth","breakPoint","LG","s","accessibilityTimeout","toggleAccessibilityClass"],"sourceRoot":""}