{"version":3,"sources":["navigationController.js"],"names":["mobileNavToggle","toggleButton","bodyTag","navBanner","nav","publicNavAPI","document","submenu","navLevel1","querySelector","contains","setAttribute","classList","remove","removeAttribute","add","alertOffset","alert","clientHeight","headerLvlAlerts","forEach","target","nextElementSibling","resetNav","e","mchild","dd","openeventKeys","indexOf","preventDefault","querySelectorAll","li","ulItem","ilItem","closest","mparent","key","handleDOMContentLoaded","body","parentElement","downarrow","addEventListener","handleNavLinkDownArrow","window","handleWindowBlur","lastLink","undefined","menu","handleNavLinkClick","handleNavLinkFocus","backlink","handleBackLinkClick","pNavLinks","closeeventKeys","handleNavOffset","event","exports","module","code"],"mappings":"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","file":"navigationController.min.js","sourcesContent":["/* *** START VANILLA JS *** */\r\n\r\n/* NAV */\r\nvar mobileNavToggle = (function() {\r\n\r\n\t// Variables\r\n\tlet toggleButton = null;\r\n\tlet bodyTag = null;\r\n\tlet navBanner = null;\r\n\tlet nav = null;\r\n\r\n\t// Private functions\r\n\r\n\r\n\t// Public functions\r\n\tvar publicNavAPI = {};\r\n\r\n\tpublicNavAPI.resetNav = function() {\r\n\t\tlet navLevel1 = document.querySelector('header div.collapse');\r\n\t\tif (toggleButton !== null && toggleButton.classList.contains(\"show\")) {\r\n\t\t\ttoggleButton.setAttribute('aria-expanded', 'false');\r\n\t\t\ttoggleButton.classList.remove('show');\r\n\t\t\tbodyTag.classList.remove('nav-open');\r\n\t\t\tnav.removeAttribute('style');\r\n\t\t\tnavLevel1.classList.remove('show');\r\n\t\t\tlet submenu = document.querySelector('li.dropdown >ul.dropdown-menu.show');\r\n\t\t\tif (submenu !== null) {\r\n\t\t\t\tsubmenu.classList.remove(\"show\");\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttoggleButton.setAttribute('aria-expanded', 'true');\r\n\t\t\ttoggleButton.classList.add('show');\r\n\t\t\tbodyTag.classList.add('nav-open');\r\n\r\n\t\t\t// Change offset\r\n\t\t\tpublicNavAPI.handleNavOffset();\r\n\t\t\tnavLevel1.classList.add('show');\r\n\t\t}\r\n\t};\r\n\r\n\tpublicNavAPI.handleNavOffset = function() {\r\n\r\n\t\t// Check to see if alerts are present in header, if so add to banner offset\r\n\t\tlet headerLvlAlerts = document.querySelectorAll('header > .alert');\r\n\t\tlet alertOffset = 0;\r\n\t\theaderLvlAlerts.forEach(alert => {\r\n\t\t\talertOffset += alert.clientHeight;\r\n\t\t});\r\n\r\n\t\tnav.style.top = alertOffset + navBanner.clientHeight + 'px';\r\n\t};\r\n\r\n\tpublicNavAPI.handleWindowBlur = function() {\r\n\t\tif (toggleButton !== null && toggleButton.classList.contains(\"show\")) {\r\n\t\t\tpublicNavAPI.resetNav();\r\n\t\t}\r\n\t};\r\n\r\n\tpublicNavAPI.handleNavLinkClick = function(e) {\r\n\t\tlet mchild = e.target.nextElementSibling;\r\n\r\n\t\tif (!mchild) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (mchild.classList.contains(\"show\")) {\r\n\t\t\tmchild.classList.remove(\"show\");\r\n\t\t} else {\r\n\t\t\tmchild.classList.add(\"show\");\r\n\t\t}\r\n\t};\r\n\r\n\tpublicNavAPI.handleNavLinkFocus = function() {\r\n\t\tdocument.querySelectorAll('ul.dropdown-menu').forEach(dd => {\r\n\t\t\tdd.classList.remove('show');\r\n\t\t});\r\n\r\n\t\tdocument.querySelectorAll('li.keypress-show').forEach(li => {\r\n\t\t\tli.classList.remove('keypress-show');\r\n\t\t});\r\n\t};\r\n\r\n\tpublicNavAPI.handleNavLinkDownArrow = function(e) {\r\n\t\tlet openeventKeys = [ 'Enter', 'ArrowDown', 'Down', ' ', 'Spacebar' ];\r\n\r\n\t\tif (openeventKeys.indexOf(e.key) >= 0) {\r\n\t\t\te.preventDefault();\r\n\t\t\tlet ulItem = e.target.nextElementSibling;// Show the dropdown menu\r\n\t\t\tif (ulItem.classList.contains('dropdown-menu')) {\r\n\t\t\t\tif (ulItem.classList.contains('show')) {\r\n\t\t\t\t\tulItem.classList.remove('show');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tulItem.classList.add('show');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet ilItem = e.target.closest('li');// Apply the hover styling to the li\r\n\t\t\tif (ilItem.classList.contains('nav-menuItem')) {\r\n\t\t\t\tif (ilItem.classList.contains('keypress-show')) {\r\n\t\t\t\t\tilItem.classList.remove('keypress-show');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tilItem.classList.add('keypress-show');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Firefox double dips on the keydown functionality from the botton controller JS\r\n\t\t\tlet ffCheck = -1;\r\n\t\t\tif (navigator.userAgent.indexOf(\"Firefox\") !== ffCheck && e.key === ' ' ) {\r\n\t\t\t\tif (ulItem.classList.contains('dropdown-menu')) {\r\n\t\t\t\t\tif (ulItem.classList.contains('show')) {\r\n\t\t\t\t\t\tulItem.classList.remove('show');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tulItem.classList.add('show');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tpublicNavAPI.handleBackLinkClick = function(e) {\r\n\t\tlet mparent = e.target.parentElement.parentElement;\r\n\t\tmparent.classList.remove('show');\r\n\t};\r\n\r\n\tpublicNavAPI.handleDOMContentLoaded = function() {\r\n\t\t// Variables\r\n\t\ttoggleButton = document.querySelector('button.navbar-toggler');\r\n\t\tbodyTag = document.body;\r\n\t\tnavBanner = document.querySelector('body >header >.container');\r\n\t\tnav = document.querySelector('body >header >nav.navbar .navbar-collapse');\r\n\t\t// Turn on event listener\r\n\t\twindow.addEventListener('blur', publicNavAPI.handleWindowBlur);\r\n\t\t// If there's a toggle button add resetNav click event listener\r\n\t\tif (toggleButton !== null) {\r\n\t\t\ttoggleButton.addEventListener('click', publicNavAPI.resetNav);\r\n\t\t}\r\n\t\t// Loop through nav-links and add click and focus event listeners\r\n\t\tdocument.querySelectorAll('li.dropdown > .nav-link').forEach(menu => {\r\n\t\t\tmenu.addEventListener('click', publicNavAPI.handleNavLinkClick);\r\n\t\t\tmenu.addEventListener('focus', publicNavAPI.handleNavLinkFocus);\r\n\t\t});\r\n\t\t// Loop through nav-links and add down arrow event listeners\r\n\t\tdocument.querySelectorAll('li.nav-menuItem > button.nav-link').forEach(downarrow => {\r\n\t\t\tdownarrow.addEventListener('keydown', publicNavAPI.handleNavLinkDownArrow);\r\n\t\t});\r\n\t\t// Loop through backlinks and add click event listeners\r\n\t\tdocument.querySelectorAll('li.dropdown > ul.dropdown-menu > li > a.backLink').forEach(backlink => {\r\n\t\t\tbacklink.addEventListener('click', publicNavAPI.handleBackLinkClick);\r\n\t\t});\r\n\t\t// Add tab press event to last link\r\n\t\tlet pNavLinks = document.querySelectorAll('ul.dropdown-menu > li.row > ul.col-xl > li > a.dropdown-item');\r\n\t\tlet lastLink = pNavLinks[pNavLinks.length - 1];\r\n\t\tif (lastLink !== undefined) {\r\n\t\t\tlastLink.addEventListener('keydown', function(event) {\r\n\t\t\t\tif (event.key === 'Tab') {\r\n\t\t\t\t\tlastLink.closest('ul.dropdown-menu.show').classList.remove('show');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t// When alert dismissible button is pressed, reset the offset of the nav\r\n\t\tdocument.querySelectorAll('header > .alert').forEach(alert => {\r\n\t\t\talert.addEventListener('click', publicNavAPI.handleNavOffset);\r\n\t\t\talert.addEventListener('keydown', function(e) {\r\n\t\t\t\tlet spaceKeyCode = 'Space';\r\n\t\t\t\tlet closeeventKeys = [ 'Spacebar', 'Enter' ];\r\n\r\n\t\t\t\tif (closeeventKeys.indexOf(e.key) >= 0 || e.code === spaceKeyCode) {\r\n\t\t\t\t\tpublicNavAPI.handleNavOffset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n\r\n\treturn publicNavAPI;\r\n}());\r\nwindow.addEventListener('load', mobileNavToggle.handleDOMContentLoaded); //end ready\r\n\r\nif (typeof exports !== 'undefined') {\r\n\tmodule.exports = mobileNavToggle;\r\n}\r\n/* eslint-enable no-unused-vars */"]}