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,
|
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) {
|
if (!hasLoaded || householdLoading || loading) {
|
||||||
return (
|
return (
|
||||||
<LocationMapMessageState
|
<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: "W" })).toHaveCount(0);
|
||||||
await expect(page.getByRole("spinbutton", { name: "H" })).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.getByRole("textbox", { name: "Label" }).focus();
|
||||||
await page.keyboard.press("Escape");
|
await page.keyboard.press("Escape");
|
||||||
await expect(page.getByRole("textbox", { name: "Label" })).toBeVisible();
|
await expect(page.getByRole("textbox", { name: "Label" })).toBeVisible();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user