{"version":3,"file":"primary-nav.js","mappings":"gzBAAA,IAKMA,EAAU,WACd,SAAAA,K,4FAAcC,CAAA,KAAAD,GACZE,KAAKC,WAAaC,SAASC,cAAc,eACzCH,KAAKI,SAAWF,SAASG,iBAAiB,cAC1CL,KAAKM,eAAiB,KAEtBN,KAAKO,YACP,C,QA2DC,O,EA3DAT,E,EAAA,EAAAU,IAAA,aAAAC,MAED,WAAa,IAAAC,EAAA,KACXV,KAAKI,SAASO,SAAQ,SAAAC,GAEhBA,EAAKT,cAAc,mBACrBS,EAAKT,cAAc,yBAAyBU,iBAAiB,SAAS,WACpEH,EAAKI,eAAeF,EACtB,GAEJ,GACF,GAAC,CAAAJ,IAAA,iBAAAC,MAED,SAAeM,GACTA,EAAOC,UAAUC,SAAS,mBAC5BjB,KAAKkB,mBAAmBH,GAExBf,KAAKmB,iBAAiBJ,EAE1B,GAAC,CAAAP,IAAA,mBAAAC,MAED,SAAiBM,GAAuB,IAAAK,EAAA,KAAfC,EAAKC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACtBG,EAAWV,EAAOZ,cAAc,8BAIpCH,KAAKM,gBACLN,KAAKM,iBAAmBS,EAAOZ,cAAc,+BAE7CH,KAAKkB,mBAAmBlB,KAAKM,eAAeoB,eAI9C1B,KAAKM,eAAiBmB,EAEtBzB,KAAKC,WAAWe,UAAUW,IAAI,mBAC9BZ,EAAOC,UAAUW,IAAI,mBACrBZ,EAAOZ,cAAc,yBAAyByB,aAAa,gBAAiB,QAIxEP,GACFQ,YAAW,WAAM,IAAAC,EACfL,SAA4B,QAApBK,EAARL,EAAUtB,cAAc,YAAI,IAAA2B,GAA5BA,EAA8BT,OAChC,GAAG,KAILN,SAAAA,EAAQF,iBAAiB,YAAY,SAAAkB,GAC9BN,EAASR,SAASc,EAAEC,gBACvBZ,EAAKF,mBAAmBH,EAE5B,GACF,GAAC,CAAAP,IAAA,qBAAAC,MAED,SAAmBM,GACjBf,KAAKC,WAAWe,UAAUiB,OAAO,mBACjClB,EAAOC,UAAUiB,OAAO,mBACxBlB,EAAOZ,cAAc,yBAAyByB,aAAa,gBAAiB,QAC9E,I,uEAAC9B,CAAA,CAlEa,GAqEhB,W","sources":["webpack://cornell-engineering/./static/js/components/primary-nav.js"],"sourcesContent":["/**\n * PrimaryNav\n *\n * Add behaviors to toggle the primary navigation dropdowns\n */\nclass PrimaryNav {\n  constructor() {\n    this.primaryNav = document.querySelector('.nav__inner');\n    this.navItems = document.querySelectorAll('.nav__item');\n    this.activeDropdown = null;\n\n    this.bindEvents();\n  }\n\n  bindEvents() {\n    this.navItems.forEach(item => {\n      // Add event listeners if nav item has submenu dropdown\n      if (item.querySelector('.nav__dropdown')) {\n        item.querySelector('.nav__item-expand-btn').addEventListener('click', () => {\n          this.toggleDropdown(item);\n        });\n      }\n    });\n  }\n\n  toggleDropdown(target) {\n    if (target.classList.contains('dropdown-active')) {\n      this.onDropdownCollapse(target);\n    } else {\n      this.onDropdownExpand(target);\n    }\n  }\n\n  onDropdownExpand(target, focus = false) {\n    const dropdown = target.querySelector('.js--primary-nav__dropdown');\n\n    // Collapse active dropdown\n    if (\n      this.activeDropdown &&\n      this.activeDropdown !== target.querySelector('.js--primary-nav__dropdown')\n    ) {\n      this.onDropdownCollapse(this.activeDropdown.parentElement);\n    }\n\n    // Set new active dropdown\n    this.activeDropdown = dropdown;\n\n    this.primaryNav.classList.add('dropdown-active');\n    target.classList.add('dropdown-active');\n    target.querySelector('.nav__item-expand-btn').setAttribute('aria-expanded', 'true');\n\n    // Focus on first link in dropdown\n    // Delay focus to account for enter animation\n    if (focus) {\n      setTimeout(() => {\n        dropdown?.querySelector('a')?.focus();\n      }, 300);\n    }\n\n    // Close dropdown when focus leaves the dropdown\n    target?.addEventListener('focusout', e => {\n      if (!dropdown.contains(e.relatedTarget)) {\n        this.onDropdownCollapse(target);\n      }\n    });\n  }\n\n  onDropdownCollapse(target) {\n    this.primaryNav.classList.remove('dropdown-active');\n    target.classList.remove('dropdown-active');\n    target.querySelector('.nav__item-expand-btn').setAttribute('aria-expanded', 'false');\n  }\n}\n\nexport default PrimaryNav;\n"],"names":["PrimaryNav","_classCallCheck","this","primaryNav","document","querySelector","navItems","querySelectorAll","activeDropdown","bindEvents","key","value","_this","forEach","item","addEventListener","toggleDropdown","target","classList","contains","onDropdownCollapse","onDropdownExpand","_this2","focus","arguments","length","undefined","dropdown","parentElement","add","setAttribute","setTimeout","_dropdown$querySelect","e","relatedTarget","remove"],"sourceRoot":""}