@@ -67,13 +67,18 @@ const CSidebar = props => {
67
67
}
68
68
}
69
69
70
+ const onKeydown = e => {
71
+ e . key . includes ( 'Esc' ) && isAutoclosable ( ) && closeSidebar ( )
72
+ }
73
+
70
74
const createBackdrop = ( ) => {
71
75
const backdrop = document . createElement ( 'div' )
72
76
if ( overlaid ) {
73
77
document . addEventListener ( 'click' , sidebarCloseListener )
74
78
} else {
75
79
backdrop . addEventListener ( 'click' , closeSidebar )
76
80
}
81
+ document . addEventListener ( 'keydown' , onKeydown )
77
82
backdrop . className = 'c-sidebar-backdrop c-show'
78
83
backdrop . id = key + 'backdrop'
79
84
document . body . appendChild ( backdrop )
@@ -84,6 +89,7 @@ const CSidebar = props => {
84
89
if ( backdrop ) {
85
90
document . removeEventListener ( 'click' , sidebarCloseListener )
86
91
backdrop . removeEventListener ( 'click' , closeSidebar )
92
+ document . removeEventListener ( 'keydown' , onKeydown )
87
93
document . body . removeChild ( backdrop )
88
94
}
89
95
}
@@ -97,13 +103,15 @@ const CSidebar = props => {
97
103
return Boolean ( getComputedStyle ( node . current ) . getPropertyValue ( '--is-mobile' ) )
98
104
}
99
105
106
+ const isAutoclosable = ( ) => isOnMobile ( ) || overlaid
107
+
100
108
const onSidebarClick = e => {
101
109
const sidebarItemClicked = String ( e . target . className ) . includes ( 'c-sidebar-nav-link' )
102
110
if (
103
- sidebarItemClicked &&
104
- hideOnMobileClick &&
105
- ( isOnMobile ( ) || overlaid )
106
- ) {
111
+ sidebarItemClicked &&
112
+ hideOnMobileClick &&
113
+ isAutoclosable ( )
114
+ ) {
107
115
closeSidebar ( )
108
116
}
109
117
}
0 commit comments