{"version":3,"file":"navigation-19b28c44.js","sources":["../../../../app/frontend/components/shared/moveFacetedFilters.js","../../../../app/frontend/components/shared/navigation.js"],"sourcesContent":["// used by navigation.js and facetedFilterController.js\n\nfunction moveFacetedFilters(nav) {\n  const facetedHero = document.querySelector('section.directory-hero.directory-hero--faceted');\n  const filtersForm = document.querySelector('.faceted-filters__container');\n  const newHero = document.querySelector('[data-directory-new-header-hero]');\n  const heroDescription = document.querySelector('[data-hero-description]');\n  const subheading = document.querySelector('[data-directory-header-subheading]');\n  if (facetedHero && filtersForm && newHero && nav) {\n    const headerHeight = getComputedStyle(nav).getPropertyValue('--header-height');\n    if (nav.classList.contains('is-sticking')) {\n      nav.appendChild(filtersForm);\n    } else {\n      facetedHero.appendChild(newHero);\n      if (subheading)\n        facetedHero.appendChild(subheading);\n      if (heroDescription)\n        facetedHero.appendChild(heroDescription);\n      facetedHero.appendChild(filtersForm);\n    }\n    document.body.style.setProperty('--header-height', headerHeight);\n  }\n}\n\nexport {\n  moveFacetedFilters\n}\n","import {moveFacetedFilters} from './moveFacetedFilters.js';\nimport {getElementProperties, trackSegmentEvent} from \"@/components/shared/tracking/segmentAnalytics\";\n\ndocument.addEventListener('DOMContentLoaded', function () {\n    // make header sticky and attach faceted filters\n    // activate_moveFacetedFilters = directory_page? && !hero_test && !disable_directory_filters_test\n    let lastScrollPosition = 0;\n    const generalNav = document.querySelector('[data-general-nav]');\n\n    if (generalNav) {\n        document.addEventListener('scroll', function () {\n\n            // I am allowing pageYOffset to be less than 0 here because apparently on iphone 14 it can be less than 0\n            if (window.pageYOffset > 0 && lastScrollPosition <= 0) {\n                generalNav.classList.add('is-sticking');\n                moveFacetedFilters(generalNav);\n            } else if (window.pageYOffset <= 0 && lastScrollPosition > 0) {\n                generalNav.classList.remove('is-sticking');\n                moveFacetedFilters(generalNav);\n            }\n\n            if (window.pageYOffset > 0 && window.pageYOffset > lastScrollPosition) {\n                generalNav.classList.add('hide-header');\n            } else {\n                generalNav.classList.remove('hide-header');\n            }\n\n            lastScrollPosition = window.pageYOffset;\n        });\n    }\n\n    const closeAllAccordionSections = () => {\n        const sectionButtons = document.querySelectorAll(\"[data-navigation-mobile-browse-section]\");\n        const subsections = document.querySelectorAll(\"[data-navigation-mobile-browse-subsection]\");\n        const subsectionButtons = document.querySelectorAll(\"[data-navigation-browse-subsection]\");\n        const subsectionLinks = document.querySelectorAll(\"[data-navigation-browse-section-links]\");\n        subsections.forEach(function (subsection) {\n            subsection.classList.add('closed');\n        })\n        subsectionLinks.forEach(function (link) {\n            link.classList.add('closed');\n        })\n        sectionButtons.forEach(function (link) {\n            link.classList.remove(\"open\")\n        });\n        subsectionButtons.forEach(function (button) {\n            button.classList.remove(\"open\")\n        })\n    }\n\n    const toggleMegaMenu = () => {\n        if (navigation.classList.contains('solv-header--open')) {\n            closeAllAccordionSections();\n        }\n        navigation.classList.toggle('solv-header--open');\n    }\n\n    const openMegaMenu = () => {\n        navigation.classList.add('solv-header--open');\n    }\n    const closeMegaMenu = () => {\n        navigation.classList.remove('solv-header--open');\n        closeAllAccordionSections();\n    }\n\n\n    const browseSection = document.querySelector(\"[data-navigation-browse]\");\n    const browseButtons = document.querySelectorAll(\"[data-navigation-browse-button]\");\n    const navigation = document.querySelector(\"[data-navigation]\");\n    const mobileMenuToggleButtons = document.querySelectorAll(\"[data-navigation-mobile-toggle]\");\n    const loginButton = document.querySelector(\"[data-login-button]\");\n\n    // only show the login button on the opening of the menu on mobile\n    mobileMenuToggleButtons.forEach((button) => {\n        button.addEventListener('click', (e) => {\n            loginButton.classList.toggle('hidden');\n            toggleMegaMenu()\n            if (loginButton.classList.contains('hidden')) {\n                trackSegmentEvent('Directory Header Links - Show Mobile Link Menu', {...getElementProperties(button)});\n            } else {\n                trackSegmentEvent('Directory Header Links - Close Mobile Link Menu', {...getElementProperties(button)});\n            }\n        });\n    });\n\n    browseButtons.forEach(function (button) {\n        button.addEventListener('mouseenter', function (e) {\n            openMegaMenu();\n            trackSegmentEvent('Directory Header Links - Show Desktop Link Menu', {...getElementProperties(button)});\n        });\n        button.addEventListener('mouseleave', function (e) {\n            closeMegaMenu()\n            trackSegmentEvent('Directory Header Links - Close Desktop Link Menu', {...getElementProperties(button)});\n        });\n        browseSection.addEventListener('mouseenter', function (e) {\n            openMegaMenu();\n        });\n        browseSection.addEventListener('mouseleave', function (e) {\n            closeMegaMenu()\n        });\n    })\n\n\n    const subsectionButtons = document.querySelectorAll(\"[data-navigation-browse-subsection]\");\n\n    subsectionButtons.forEach(function (button) {\n        button.addEventListener('click', function (e) {\n\n            const subsectionName = button.dataset.navigationBrowseSubsection;\n            const subsectionLinks = document.querySelector(`[data-navigation-browse-subsection-links=\"${subsectionName}\"]`);\n            const sectionName = button.dataset.navigationBrowseSection;\n            const allSubsectionLinks = document.querySelectorAll(`[data-navigation-browse-subsection-links]`);\n\n            if (!subsectionLinks.classList.contains('closed')) {\n                subsectionLinks.classList.add('closed');\n                button.classList.remove('open')\n                subsectionButtons.forEach(function (button) {\n                    button.classList.remove(\"open\")\n                })\n            } else {\n                allSubsectionLinks.forEach(function (link) {\n                    if (link.dataset.navigationBrowseSectionLinks === sectionName) {\n                        link.classList.add('closed');\n                    }\n                });\n                subsectionButtons.forEach(function (button) {\n                    button.classList.remove(\"open\")\n                })\n                subsectionLinks.classList.remove('closed');\n                button.classList.add('open')\n            }\n        });\n    })\n\n    const mobileSectionButtons = document.querySelectorAll(\"[data-navigation-mobile-browse-section]\");\n\n    mobileSectionButtons.forEach(function (button) {\n        button.addEventListener('click', function (e) {\n\n            const sectionName = button.dataset.navigationMobileBrowseSection;\n            const subsections = document.querySelectorAll(`[data-navigation-mobile-browse-subsection=\"${sectionName}\"]`);\n            const allSubsections = document.querySelectorAll(`[data-navigation-mobile-browse-subsection]`);\n\n            const firstSubsection = subsections[0]\n\n            if (!firstSubsection.classList.contains('closed')) {\n                subsections.forEach(function (subsection) {\n                    subsection.classList.add('closed');\n                })\n                mobileSectionButtons.forEach(function (button) {\n                    button.classList.remove(\"open\")\n                })\n                button.classList.remove('open')\n            } else {\n                allSubsections.forEach(function (link) {\n                    link.classList.add('closed');\n                });\n                subsections.forEach(function (subsection) {\n                    subsection.classList.remove('closed');\n                })\n                mobileSectionButtons.forEach(function (button) {\n                    button.classList.remove(\"open\")\n                })\n                button.classList.add('open')\n            }\n        });\n    })\n\n})\n"],"names":["moveFacetedFilters","nav","facetedHero","filtersForm","newHero","heroDescription","subheading","headerHeight","lastScrollPosition","generalNav","closeAllAccordionSections","sectionButtons","subsections","subsectionButtons","subsectionLinks","subsection","link","button","toggleMegaMenu","navigation","openMegaMenu","closeMegaMenu","browseSection","browseButtons","mobileMenuToggleButtons","loginButton","e","trackSegmentEvent","getElementProperties","subsectionName","sectionName","allSubsectionLinks","mobileSectionButtons","allSubsections"],"mappings":"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"}