Skip to content

Commit 725141e

Browse files
committed
make space bar press on map toggle InfoBox
1 parent c9fe848 commit 725141e

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

src/components/InfoBox.js

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,42 @@ const TRANSITION_SPEED = 500;
1313

1414
export 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

Comments
 (0)