@@ -3,6 +3,8 @@ document.addEventListener('click', onClick);
33
44document . addEventListener ( 'keydown' , onKeyDown ) ;
55
6+ initSidebarHighlight ( ) ;
7+
68function toggle ( ) {
79
810 let pageWrapper = document . querySelector ( '.page-wrapper' ) ;
@@ -11,11 +13,15 @@ function toggle() {
1113
1214 pageWrapper && pageWrapper . classList . toggle ( 'page-wrapper_sidebar_on' ) ;
1315
14- if ( document . querySelector ( '.page' ) . classList . contains ( 'page_sidebar_on' ) ) {
15- delete localStorage . noSidebar ;
16- } else {
17- localStorage . noSidebar = 1 ;
18- }
16+ window . acceptGdpr ( accepted => {
17+ if ( document . querySelector ( '.page' ) . classList . contains ( 'page_sidebar_on' ) ) {
18+ delete localStorage . noSidebar ;
19+ } else {
20+ if ( accepted ) {
21+ localStorage . noSidebar = 1 ;
22+ }
23+ }
24+ } ) ;
1925
2026}
2127
@@ -45,3 +51,42 @@ function onKeyDown(event) {
4551 event . preventDefault ( ) ;
4652
4753}
54+
55+ function initSidebarHighlight ( ) {
56+
57+ function highlight ( ) {
58+
59+ let current = document . getElementsByClassName ( 'sidebar__navigation-link_active' ) ;
60+ if ( current [ 0 ] ) current [ 0 ] . classList . remove ( 'sidebar__navigation-link_active' ) ;
61+
62+ //debugger;
63+ let h2s = document . getElementsByTagName ( 'h2' ) ;
64+ let i ;
65+ for ( i = 0 ; i < h2s . length ; i ++ ) {
66+ let h2 = h2s [ i ] ;
67+ // first in-page header
68+ // >1, because when visiting http://javascript.local/native-prototypes#native-prototype-change,
69+ // top may be 0.375 or kind of...
70+ if ( h2 . getBoundingClientRect ( ) . top > 1 ) break ;
71+ }
72+ i -- ; // we need the one before it (currently reading)
73+
74+ if ( i >= 0 ) {
75+ let href = h2s [ i ] . firstElementChild && h2s [ i ] . firstElementChild . getAttribute ( 'href' ) ;
76+ let li = document . querySelector ( '.sidebar__navigation-link a[href="' + href + '"]' ) ;
77+ if ( href && li ) {
78+ li . classList . add ( 'sidebar__navigation-link_active' ) ;
79+ }
80+ }
81+
82+ }
83+
84+ document . addEventListener ( 'DOMContentLoaded' , function ( ) {
85+ highlight ( ) ;
86+
87+ window . addEventListener ( 'scroll' , highlight ) ;
88+ } ) ;
89+
90+
91+ }
92+
0 commit comments