Jake Vanderwerf
2026-01-04 d38d825e3484d822ea3c1f0fb1df37ecf386b18a
assets/js/concise/navigation.js
@@ -2,7 +2,7 @@
   constructor() {
      this.counter = 0;
      this.initElements();
      if (this.navs.length === 0) {
      if (this.navs.size === 0) {
         return;
      }
@@ -44,10 +44,6 @@
      });
   }
   navIDs() {
      return Array.from(this.navs.keys()).map((nav) => `#${nav}`);
   }
   initListeners() {
      this.clickListener = this.handleClick.bind(this);
      this.escapeListener = this.handleEscape.bind(this);
@@ -57,22 +53,34 @@
      document.addEventListener('click', this.clickListener);
   }
   handleClick(e) {
      if (this.openNav && !e.target.closest(this.openNav)) {
         this.toggleNav(false);
      }
      if (!e.target.closest(... this.navIDs())) {
      if (this.navs.size === 0) {
         return;
      }
      if (this.openNav && e.target.closest(`#${this.openNav}`) === null) {
         this.toggleNav(false, this.openNav);
      }
      // if (!e.target.closest(this.openNav)) {
      //    console.log('Not closest nav ids');
      //    console.log(this.navIDs());
      //    return;
      // }
      let toggle = e.target.closest('.toggle.main');
      if (toggle) {
         let nav = toggle.closest('nav');
         this.toggleNav(!nav.classList.contains('open'), nav.id);
      }
      let submenuToggle = e.target.closest('[data-action="toggle-submenu"], .has-submenu .a')
      if (submenuToggle) {
         let li = submenuToggle.closest('li');
         this.toggleSubmenu(!li.classList.contains('open'), li);
      }
   }
   handleHoverOn(e) {
      console.log(e.target);
      let nav =  e.target.closest('nav');
      if (nav) {
         this.toggleNav(true, nav.id);
@@ -84,7 +92,6 @@
   }
   handleHoverOff(e) {
      console.log(e.target);
      let nav =  e.target.closest('nav');
      if (nav) {
         this.toggleNav(false, nav.id);
@@ -118,11 +125,13 @@
            this.openNav = null;
         }
         document.removeEventListener('keydown', this.escapeListener);
         Array.from(nav.submenus).forEach(submenu => {
            if(submenu.classList.contains('open')) {
               this.toggleSubmenu(false, submenu);
            }
         });
         if (!nav.nav.classList.contains('sidebar')) {
            Array.from(nav.submenus).forEach(submenu => {
               if(submenu.classList.contains('open')) {
                  this.toggleSubmenu(false, submenu);
               }
            });
         }
      }
      nav.nav.ariaExpanded = on;