@@ -67,13 +67,18 @@ const CSidebar = props => {
6767 }
6868 }
6969
70+ const onKeydown = e => {
71+ e . key . includes ( 'Esc' ) && isAutoclosable ( ) && closeSidebar ( )
72+ }
73+
7074 const createBackdrop = ( ) => {
7175 const backdrop = document . createElement ( 'div' )
7276 if ( overlaid ) {
7377 document . addEventListener ( 'click' , sidebarCloseListener )
7478 } else {
7579 backdrop . addEventListener ( 'click' , closeSidebar )
7680 }
81+ document . addEventListener ( 'keydown' , onKeydown )
7782 backdrop . className = 'c-sidebar-backdrop c-show'
7883 backdrop . id = key + 'backdrop'
7984 document . body . appendChild ( backdrop )
@@ -84,6 +89,7 @@ const CSidebar = props => {
8489 if ( backdrop ) {
8590 document . removeEventListener ( 'click' , sidebarCloseListener )
8691 backdrop . removeEventListener ( 'click' , closeSidebar )
92+ document . removeEventListener ( 'keydown' , onKeydown )
8793 document . body . removeChild ( backdrop )
8894 }
8995 }
@@ -97,13 +103,15 @@ const CSidebar = props => {
97103 return Boolean ( getComputedStyle ( node . current ) . getPropertyValue ( '--is-mobile' ) )
98104 }
99105
106+ const isAutoclosable = ( ) => isOnMobile ( ) || overlaid
107+
100108 const onSidebarClick = e => {
101109 const sidebarItemClicked = String ( e . target . className ) . includes ( 'c-sidebar-nav-link' )
102110 if (
103- sidebarItemClicked &&
104- hideOnMobileClick &&
105- ( isOnMobile ( ) || overlaid )
106- ) {
111+ sidebarItemClicked &&
112+ hideOnMobileClick &&
113+ isAutoclosable ( )
114+ ) {
107115 closeSidebar ( )
108116 }
109117 }
0 commit comments