@@ -13,28 +13,42 @@ const TRANSITION_SPEED = 500;
1313
1414export default function InfoBox ( { desc, displayMode, title, url } ) {
1515 const [ closed , setClosed ] = useState ( true ) ;
16+ const [ spaceKeyPressed , setSpaceKeyPressed ] = useState ( false ) ;
1617
1718 const ref = useRef ( null ) ;
1819
19- const setKeyboardUser = ( e ) => {
20+ const handleKeyUp = ( e ) => {
2021 const body = document . body ;
2122
2223 if ( e . keyCode === 9 ) {
2324 body . classList . add ( "using-keyboard" ) ;
2425 }
26+
27+ if ( e . keyCode === 32 ) {
28+ if ( document . activeElement . classList . contains ( "leaflet-container" ) ) {
29+ setSpaceKeyPressed ( true ) ;
30+ }
31+ }
2532 } ;
2633
34+ useEffect ( ( ) => {
35+ if ( spaceKeyPressed ) {
36+ setClosed ( ! closed ) ;
37+ }
38+ } , [ spaceKeyPressed ] ) ;
39+
2740 useEffect ( ( ) => {
2841 const map = document . getElementsByClassName ( "leaflet-container" ) [ 0 ] ;
2942
30- map . addEventListener ( "keyup" , setKeyboardUser ) ;
43+ map . addEventListener ( "keyup" , handleKeyUp ) ;
3144
3245 return ( ) => {
33- map . removeEventListener ( "keyup" , setKeyboardUser ) ;
46+ map . removeEventListener ( "keyup" , handleKeyUp ) ;
3447 } ;
3548 } , [ ] ) ;
3649
3750 useEffect ( ( ) => {
51+ setSpaceKeyPressed ( false ) ;
3852 const intro = document . querySelector ( ".leaflet-control-zoom" ) ;
3953 const height = ref . current . clientHeight ;
4054
@@ -49,21 +63,18 @@ export default function InfoBox({ desc, displayMode, title, url }) {
4963 }
5064 } , [ closed ] ) ;
5165
66+ const handleMapClick = ( ) => {
67+ setClosed ( true ) ;
68+ } ;
69+
5270 useEffect ( ( ) => {
5371 const body = document . body ;
5472 body . classList . add ( "overflow-hidden" ) ;
5573
5674 const map = document . getElementsByClassName ( "leaflet-container" ) [ 0 ] ;
5775
58- const handleMapClick = ( ) => {
59- setClosed ( ! closed ) ;
60- } ;
61-
6276 if ( closed ) {
6377 document . querySelector ( ".leaflet-container" ) . focus ( ) ;
64- map . removeEventListener ( "click" , handleMapClick ) ;
65- map . removeEventListener ( "touchstart" , handleMapClick ) ;
66- map . removeEventListener ( "touchmove" , handleMapClick ) ;
6778 } else {
6879 map . addEventListener ( "click" , handleMapClick ) ;
6980 map . addEventListener ( "touchstart" , handleMapClick ) ;
0 commit comments