fix: close map layers with escape

This commit is contained in:
Nico 2026-06-15 23:35:13 -07:00
parent 407d8a6943
commit ff68413e62
2 changed files with 23 additions and 0 deletions

View File

@ -88,6 +88,21 @@ export default function LocationMapBottomSheet({
}
}, [selectedObject, setLayersOpen]);
useEffect(() => {
if (!layersOpen || typeof window === "undefined") {
return undefined;
}
const handleKeyDown = (event) => {
if (event.key === "Escape") {
setLayersOpen(false);
}
};
window.addEventListener("keydown", handleKeyDown);
return () => window.removeEventListener("keydown", handleKeyDown);
}, [layersOpen, setLayersOpen]);
const changedLayerCount = useMemo(
() => MAP_DISPLAY_CONTROLS.filter(([key]) => filters[key] !== DEFAULT_MAP_FILTERS[key]).length,
[filters]

View File

@ -1394,6 +1394,14 @@ test("mode switches close open map layers without resetting filters", async ({ p
await expect(page.getByRole("button", { name: "Layers, 1 changed" })).toHaveAttribute("aria-expanded", "true");
await expect(page.getByRole("group", { name: "Layer filters" })).toBeVisible();
await page.keyboard.press("Escape");
await expect(page.getByRole("button", { name: "Layers, 1 changed" })).toHaveAttribute("aria-expanded", "false");
await expect(page.getByRole("group", { name: "Layer filters" })).toHaveCount(0);
await page.getByRole("button", { name: "Layers, 1 changed" }).click();
await expect(page.getByRole("group", { name: "Layer filters" })).toBeVisible();
await page.getByRole("button", { name: "Edit Draft" }).click();
await expect(page.getByRole("button", { name: "Layers, 1 changed" })).toHaveAttribute("aria-expanded", "false");