@@ -5,19 +5,39 @@ let isSmallScreen = mobileScreen?.matches;
5
5
mobileScreen ?. addEventListener ( "change" , ( event ) => {
6
6
isSmallScreen = event . matches
7
7
8
- if ( ! event . matches ) {
8
+ if ( ! isSmallScreen ) {
9
9
document . body . classList . remove ( "no-scroll" )
10
10
}
11
11
} ) ;
12
12
13
13
// Desktop Menu
14
14
15
15
const itemsMenu = document . querySelectorAll ( ".submenu" ) ;
16
+ const navDrawers = document . querySelectorAll ( '#navmenu > li' )
17
+ let activeDrawer // active dropdown nav link
18
+
16
19
17
20
for ( const el of itemsMenu ) {
18
21
el . addEventListener ( "click" , ( ) => {
19
22
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
+
20
39
for ( const item of itemsMenu ) {
40
+ // close any open drawers on click next drawer
21
41
if ( item . id !== el . id ) {
22
42
item . classList . remove ( "open" ) ;
23
43
}
@@ -114,5 +134,16 @@ overlay?.addEventListener("click", () => {
114
134
} ) ;
115
135
116
136
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