Skip to content

Commit 1d9c326

Browse files
chrisdel101Chris Del
andauthored
Submenu anchor active (#1798) Merge
Co-authored-by: Chris Del <[email protected]>
1 parent 1e05e8b commit 1d9c326

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

_includes/head.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
<script data-cfasync="false" src="/js/theme.js"></script>
88
<link rel="stylesheet" href="/css/variables.css?_={{ site.time | date: '%s' }}">
99
<link rel="stylesheet" href="/css/themes/dark-theme.css?_={{ site.time | date: '%s' }}">
10-
<link rel="stylesheet" href="/css/themes/light-theme.css?_={{ site.time | date: '%s' }}">
1110
<link rel="stylesheet" href="/css/style.css?_={{ site.time | date: '%s' }}">
1211
<link rel="stylesheet" href="/css/sintax.css?_={{ site.time | date: '%s' }}">
1312

js/menu.js

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,39 @@ let isSmallScreen = mobileScreen?.matches;
55
mobileScreen?.addEventListener("change", (event) => {
66
isSmallScreen = event.matches
77

8-
if (!event.matches) {
8+
if (!isSmallScreen) {
99
document.body.classList.remove("no-scroll")
1010
}
1111
});
1212

1313
// Desktop Menu
1414

1515
const itemsMenu = document.querySelectorAll(".submenu");
16+
const navDrawers = document.querySelectorAll('#navmenu > li')
17+
let activeDrawer // active dropdown nav link
18+
1619

1720
for (const el of itemsMenu) {
1821
el.addEventListener("click", () => {
1922
if (isSmallScreen || 'ontouchstart' in document.documentElement) {
23+
// HANDLE ACTIVE LINKS IN DROPDOWN NAV
24+
// if no activeDrawer set then page was set in md logic
25+
if (!activeDrawer) {
26+
// remove default active link
27+
removeActiveFromDrawers(navDrawers)
28+
// set new active drawer to clicked
29+
activeDrawer = el
30+
// add active class
31+
addActiveToDrawer(el)
32+
// remove prev activeDrawer and set current to active
33+
} else if (activeDrawer.id !== el.id) {
34+
activeDrawer.querySelector('a').classList.remove('active')
35+
addActiveToDrawer(el)
36+
activeDrawer = el
37+
}
38+
2039
for (const item of itemsMenu) {
40+
// close any open drawers on click next drawer
2141
if (item.id !== el.id) {
2242
item.classList.remove("open");
2343
}
@@ -114,5 +134,16 @@ overlay?.addEventListener("click", () => {
114134
});
115135

116136
document
117-
.querySelector(`.submenu-content a[href="${document.location.pathname}"]`)
118-
?.classList.add("current");
137+
.querySelector(`.submenu-content a[href="{document.location.pathname}"]`)
138+
?.classList.add("current");
139+
140+
// when active is unknown, loop over and remove any active link
141+
function removeActiveFromDrawers(navDrawers) {
142+
for (const item of navDrawers) {
143+
item.querySelector('a').classList.remove('active')
144+
}
145+
}
146+
// add active to known link
147+
function addActiveToDrawer(drawer) {
148+
drawer.querySelector('a').classList.add('active')
149+
}

0 commit comments

Comments
 (0)