@@ -5,19 +5,39 @@ let isSmallScreen = mobileScreen?.matches;
55mobileScreen ?. 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
1515const itemsMenu = document . querySelectorAll ( ".submenu" ) ;
16+ const navDrawers = document . querySelectorAll ( '#navmenu > li' )
17+ let activeDrawer // active dropdown nav link
18+
1619
1720for ( 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
116136document
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