{"version":3,"file":"Src_Scripts_components_top-navigation_js.e98191aaf8d77f7af290.js","sources":["webpack://AlmenNet.Setup/./Src/Scripts/components/top-navigation.js"],"sourcesContent":["export default class TopNavigation {\r\n constructor(elm) {\r\n this.didScroll = false;\r\n this.lastScrollTop = 0;\r\n this.delta = 5;\r\n this.header = elm;\r\n this.offset = this.header.offsetHeight;\r\n\r\n // Scroll event listener\r\n window.addEventListener('scroll', () => {\r\n this.didScroll = true;\r\n });\r\n\r\n // Mouseover event for dropdown menu\r\n document.addEventListener('mouseover', evt => {\r\n if (!evt.target.closest('.navbar-nav')) {\r\n document.querySelectorAll('.dropdown-menu.active').forEach(item => {\r\n item.classList.remove('active');\r\n });\r\n }\r\n });\r\n\r\n // Periodic check for scroll\r\n setInterval(() => {\r\n if (this.didScroll) {\r\n this.hasScrolled();\r\n this.didScroll = false;\r\n }\r\n }, 250);\r\n\r\n // Dropdown menus\r\n const elements = this.header.querySelectorAll('.nav-item.dropdown');\r\n\r\n // Toggle dropdown behavior\r\n elements.forEach(element => {\r\n const dropdownToggle = element.querySelector('.dropdown-toggle');\r\n const dropdownMenu = element.querySelector('.dropdown-menu');\r\n\r\n function toggleDropdown() {\r\n\r\n // Close all dropdown menus\r\n document.querySelectorAll('.dropdown-menu').forEach(item => {\r\n item.classList.remove('active');\r\n });\r\n\r\n const isActive = dropdownMenu.classList.contains('active');\r\n\r\n // Open/close dropdown based on class\r\n if (dropdownToggle.classList.contains('knowledge')) {\r\n if (!isActive) {\r\n setTimeout(() => {\r\n dropdownMenu.classList.add('active');\r\n }, 500);\r\n }\r\n } else {\r\n dropdownMenu.classList.toggle('active');\r\n }\r\n }\r\n\r\n // Attach appropriate event listener based on touch/mouse\r\n const eventType = 'ontouchstart' in document.documentElement ? 'click' : 'mouseover';\r\n dropdownToggle.addEventListener(eventType, e => {\r\n e.preventDefault();\r\n toggleDropdown();\r\n });\r\n });\r\n\r\n // Observe dropdown menu changes for styling\r\n function observeDropdownMenuChanges() {\r\n const dropdownMenuKnowledge = document.querySelector('.dropdown-menu.dropdown-menu-knowledge');\r\n\r\n if (dropdownMenuKnowledge) {\r\n const headerWrapper = document.querySelector('.header__wrapper');\r\n const dropDownMenu = document.querySelector('.nav-link.dropdown-toggle');\r\n\r\n const observer = new MutationObserver(mutations => {\r\n mutations.forEach(mutation => {\r\n if (mutation.attributeName === 'class') {\r\n if (dropdownMenuKnowledge.classList.contains('active')) {\r\n headerWrapper.classList.add('white');\r\n dropDownMenu.classList.add('active');\r\n } else {\r\n headerWrapper.classList.remove('white');\r\n dropDownMenu.classList.remove('active');\r\n }\r\n }\r\n });\r\n });\r\n\r\n observer.observe(dropdownMenuKnowledge, { attributes: true });\r\n }\r\n }\r\n\r\n observeDropdownMenuChanges();\r\n\r\n // Second level dropdowns\r\n const secondLevelElements = this.header.querySelectorAll('.dropdown-menu-knowledge__second-level-nav .dropdown-item-container');\r\n\r\n secondLevelElements.forEach(element => {\r\n const thirdLevelNav = element.querySelector('.dropdown-menu-knowledge__third-level-nav');\r\n\r\n if (thirdLevelNav) {\r\n element.classList.add('has-child');\r\n\r\n const dropdownItemLinkContainer = element.querySelector('.dropdown-item-link-container');\r\n dropdownItemLinkContainer.addEventListener('click', e => {\r\n document.querySelectorAll('.dropdown-menu-knowledge__third-level-nav.active').forEach(item => {\r\n item.classList.remove('active');\r\n });\r\n\r\n e.preventDefault();\r\n\r\n if (!thirdLevelNav.classList.contains('active')) {\r\n thirdLevelNav.classList.add('active');\r\n } else {\r\n thirdLevelNav.classList.remove('active');\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Scroll to top on page leave\r\n window.onbeforeunload = () => {\r\n window.scrollTo(0, 0);\r\n };\r\n\r\n // Search functionality\r\n const searchOverlay = document.querySelector('#filter-overlay');\r\n const searchBtn = elm.querySelector('.btn-search');\r\n const searchBtnActive = 'btn-search--active';\r\n const headerSearch = elm.querySelector('.header-search');\r\n const headerSearchActive = 'header-search--active';\r\n const headerContainer = elm.querySelector('.header__container');\r\n const headerContainerActive = 'header__container--search-active';\r\n\r\n searchBtn.addEventListener('click', e => {\r\n e.preventDefault();\r\n searchBtn.classList.toggle(searchBtnActive);\r\n headerSearch.classList.toggle(headerSearchActive);\r\n headerContainer.classList.toggle(headerContainerActive);\r\n document.body.classList.toggle('stop-scrolling');\r\n\r\n if (headerContainer.classList.contains(headerContainerActive)) {\r\n searchOverlay.style.display = 'block';\r\n } else {\r\n searchOverlay.style.display = 'none';\r\n }\r\n });\r\n\r\n // Close search overlay on click outside\r\n searchOverlay.onclick = () => {\r\n searchBtn.classList.remove(searchBtnActive);\r\n headerSearch.classList.remove(headerSearchActive);\r\n headerContainer.classList.remove(headerContainerActive);\r\n searchOverlay.style.display = 'none';\r\n document.body.classList.remove('stop-scrolling');\r\n };\r\n }\r\n\r\n // Handle scrolling effects\r\n hasScrolled() {\r\n const st = window.pageYOffset !== undefined ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;\r\n\r\n if (st > 0 && document.querySelector('.hero-section-subpage')) {\r\n this.header.classList.add('white-bg');\r\n } else {\r\n this.header.classList.remove('white-bg');\r\n }\r\n\r\n if (Math.abs(this.lastScrollTop - st) <= this.delta) return;\r\n\r\n this.header.classList.toggle('scrolled', st > this.offset);\r\n this.header.classList.toggle('nav-down', st > this.lastScrollTop && st);\r\n this.header.classList.toggle('nav-up', st > this.lastScrollTop && st);\r\n\r\n this.lastScrollTop = st;\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAjLA;AACA;A;;A;;A","sourceRoot":""}