Add store location map manager #20

Open
nalalangan wants to merge 206 commits from feature/location-map-manager into feature/store-selector-modal
2 changed files with 53 additions and 0 deletions
Showing only changes of commit fc883e9f62 - Show all commits

View File

@ -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

View File

@ -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();