From 0e4b986e81f8132a44e61fa8df18860301cc3468 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Thu, 01 Jan 2026 20:31:10 +0000
Subject: [PATCH] =JakeVan preliminary additions

---
 assets/js/concise/navigation.js |   41 +++++++++++++++++++++++++----------------
 1 files changed, 25 insertions(+), 16 deletions(-)

diff --git a/assets/js/concise/navigation.js b/assets/js/concise/navigation.js
index d1fd398..cc2648d 100644
--- a/assets/js/concise/navigation.js
+++ b/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;

--
Gitblit v1.10.0