@@ -13,6 +13,9 @@ export default class ContextualSidebar {
13
13
initDomElements ( ) {
14
14
this . $page = $ ( '.layout-page' ) ;
15
15
this . $sidebar = $ ( '.nav-sidebar' ) ;
16
+
17
+ if ( ! this . $sidebar . length ) return ;
18
+
16
19
this . $innerScroll = $ ( '.nav-sidebar-inner-scroll' , this . $sidebar ) ;
17
20
this . $overlay = $ ( '.mobile-overlay' ) ;
18
21
this . $openSidebar = $ ( '.toggle-mobile-nav' ) ;
@@ -21,20 +24,22 @@ export default class ContextualSidebar {
21
24
}
22
25
23
26
bindEvents ( ) {
27
+ if ( ! this . $sidebar . length ) return ;
28
+
24
29
document . addEventListener ( 'click' , e => {
25
30
if (
26
31
! e . target . closest ( '.nav-sidebar' ) &&
27
32
( bp . getBreakpointSize ( ) === 'sm' || bp . getBreakpointSize ( ) === 'md' )
28
33
) {
29
- this . toggleCollapsedSidebar ( true ) ;
34
+ this . toggleCollapsedSidebar ( true , true ) ;
30
35
}
31
36
} ) ;
32
37
this . $openSidebar . on ( 'click' , ( ) => this . toggleSidebarNav ( true ) ) ;
33
38
this . $closeSidebar . on ( 'click' , ( ) => this . toggleSidebarNav ( false ) ) ;
34
39
this . $overlay . on ( 'click' , ( ) => this . toggleSidebarNav ( false ) ) ;
35
40
this . $sidebarToggle . on ( 'click' , ( ) => {
36
41
const value = ! this . $sidebar . hasClass ( 'sidebar-collapsed-desktop' ) ;
37
- this . toggleCollapsedSidebar ( value ) ;
42
+ this . toggleCollapsedSidebar ( value , true ) ;
38
43
} ) ;
39
44
40
45
$ ( window ) . on ( 'resize' , ( ) => _ . debounce ( this . render ( ) , 100 ) ) ;
@@ -53,16 +58,19 @@ export default class ContextualSidebar {
53
58
this . $sidebar . removeClass ( 'sidebar-collapsed-desktop' ) ;
54
59
}
55
60
56
- toggleCollapsedSidebar ( collapsed ) {
61
+ toggleCollapsedSidebar ( collapsed , saveCookie ) {
57
62
const breakpoint = bp . getBreakpointSize ( ) ;
58
63
59
64
if ( this . $sidebar . length ) {
60
65
this . $sidebar . toggleClass ( 'sidebar-collapsed-desktop' , collapsed ) ;
61
66
this . $page . toggleClass ( 'page-with-icon-sidebar' , breakpoint === 'sm' ? true : collapsed ) ;
62
67
}
63
- ContextualSidebar . setCollapsedCookie ( collapsed ) ;
64
68
65
- this . toggleSidebarOverflow ( ) ;
69
+ if ( saveCookie ) {
70
+ ContextualSidebar . setCollapsedCookie ( collapsed ) ;
71
+ }
72
+
73
+ requestIdleCallback ( this . toggleSidebarOverflow ) ;
66
74
}
67
75
68
76
toggleSidebarOverflow ( ) {
@@ -74,13 +82,15 @@ export default class ContextualSidebar {
74
82
}
75
83
76
84
render ( ) {
85
+ if ( ! this . $sidebar . length ) return ;
86
+
77
87
const breakpoint = bp . getBreakpointSize ( ) ;
78
88
79
89
if ( breakpoint === 'sm' || breakpoint === 'md' ) {
80
- this . toggleCollapsedSidebar ( true ) ;
90
+ this . toggleCollapsedSidebar ( true , false ) ;
81
91
} else if ( breakpoint === 'lg' ) {
82
92
const collapse = parseBoolean ( Cookies . get ( 'sidebar_collapsed' ) ) ;
83
- this . toggleCollapsedSidebar ( collapse ) ;
93
+ this . toggleCollapsedSidebar ( collapse , false ) ;
84
94
}
85
95
}
86
96
}
0 commit comments