fix: request map area delete from keyboard
This commit is contained in:
parent
d3194959fc
commit
fc883e9f62
@ -285,6 +285,47 @@ export default function LocationMapManager() {
|
||||
saving,
|
||||
]);
|
||||
|
||||
useEffect(() => {
|
||||
const hasOpenModal = Boolean(buyModalItem || pendingDeleteObject || pendingLeaveTarget);
|
||||
if (
|
||||
!selectedObjectKey ||
|
||||
mode !== "edit" ||
|
||||
!canManage ||
|
||||
saving ||
|
||||
layersOpen ||
|
||||
hasOpenModal ||
|
||||
typeof window === "undefined"
|
||||
) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const handleKeyDown = (event) => {
|
||||
if (
|
||||
event.defaultPrevented ||
|
||||
!["Backspace", "Delete"].includes(event.key) ||
|
||||
isTextEditingTarget(event.target)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
requestDeleteObject();
|
||||
};
|
||||
|
||||
window.addEventListener("keydown", handleKeyDown, true);
|
||||
return () => window.removeEventListener("keydown", handleKeyDown, true);
|
||||
}, [
|
||||
buyModalItem,
|
||||
canManage,
|
||||
layersOpen,
|
||||
mode,
|
||||
pendingDeleteObject,
|
||||
pendingLeaveTarget,
|
||||
requestDeleteObject,
|
||||
saving,
|
||||
selectedObjectKey,
|
||||
]);
|
||||
|
||||
if (!hasLoaded || householdLoading || loading) {
|
||||
return (
|
||||
<LocationMapMessageState
|
||||
|
||||
@ -2438,6 +2438,18 @@ test("admin selected map area uses compact editable fields", async ({ page }) =>
|
||||
await expect(page.getByRole("spinbutton", { name: "W" })).toHaveCount(0);
|
||||
await expect(page.getByRole("spinbutton", { name: "H" })).toHaveCount(0);
|
||||
|
||||
await page.getByRole("textbox", { name: "Label" }).focus();
|
||||
await page.keyboard.press("Delete");
|
||||
await expect(page.getByRole("heading", { name: "Delete Bakery?" })).toHaveCount(0);
|
||||
await expect(page.locator(".location-map-object.is-selected")).toHaveCount(1);
|
||||
|
||||
await page.getByRole("button", { name: "Visible" }).focus();
|
||||
await page.keyboard.press("Delete");
|
||||
await expect(page.getByRole("heading", { name: "Delete Bakery?" })).toBeVisible();
|
||||
await page.getByRole("button", { name: "Cancel" }).click();
|
||||
await expect(page.getByRole("heading", { name: "Delete Bakery?" })).toHaveCount(0);
|
||||
await expect(page.locator(".location-map-object.is-selected")).toHaveCount(1);
|
||||
|
||||
await page.getByRole("textbox", { name: "Label" }).focus();
|
||||
await page.keyboard.press("Escape");
|
||||
await expect(page.getByRole("textbox", { name: "Label" })).toBeVisible();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user