From 784d0f4d48657359a06c6ebf81a1369cdfafc856 Mon Sep 17 00:00:00 2001 From: Nico Date: Wed, 3 Jun 2026 22:24:40 -0700 Subject: [PATCH] fix: recover hidden areas from map canvas --- .../src/components/maps/LocationMapCanvas.jsx | 20 ++++++++++++++++++- frontend/src/pages/LocationMapManager.jsx | 2 ++ frontend/tests/location-map-manager.spec.ts | 6 ++++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/maps/LocationMapCanvas.jsx b/frontend/src/components/maps/LocationMapCanvas.jsx index c0208df..c7e5d39 100644 --- a/frontend/src/components/maps/LocationMapCanvas.jsx +++ b/frontend/src/components/maps/LocationMapCanvas.jsx @@ -22,7 +22,9 @@ export default function LocationMapCanvas({ svgRef, dragState, editingLocked = false, + hiddenAreaCount = 0, onShowZones, + onShowHiddenAreas, setDragState, setSelectedObjectKey, remember, @@ -35,6 +37,9 @@ export default function LocationMapCanvas({ ? objects.filter((object) => object.visible).length : 0; const hasNoVisibleObjects = objects.length > 0 && filters.showZones && visibleObjectCount === 0; + const canRecoverHiddenAreas = + mode === "edit" && hasNoVisibleObjects && hiddenAreaCount > 0 && typeof onShowHiddenAreas === "function"; + const hasEmptyCanvasAction = hiddenByZonesLayer || canRecoverHiddenAreas; const emptyCanvasMessage = objects.length === 0 ? "No map areas yet" : hiddenByZonesLayer @@ -155,6 +160,11 @@ export default function LocationMapCanvas({ onShowZones?.(); }; + const handleShowHiddenAreas = (event) => { + event.stopPropagation(); + onShowHiddenAreas?.(); + }; + const clearSelection = () => { if (suppressPanClickRef.current) { suppressPanClickRef.current = false; @@ -392,7 +402,7 @@ export default function LocationMapCanvas({
{emptyCanvasMessage} @@ -404,6 +414,14 @@ export default function LocationMapCanvas({ > Show Zones + ) : canRecoverHiddenAreas ? ( + ) : null}
) : null} diff --git a/frontend/src/pages/LocationMapManager.jsx b/frontend/src/pages/LocationMapManager.jsx index 1e4d435..95ac4bf 100644 --- a/frontend/src/pages/LocationMapManager.jsx +++ b/frontend/src/pages/LocationMapManager.jsx @@ -558,6 +558,7 @@ export default function LocationMapManager() { svgRef={svgRef} dragState={dragState} editingLocked={saving} + hiddenAreaCount={hiddenAreaCount} setDragState={setDragState} setSelectedObjectKey={setSelectedObjectKey} remember={remember} @@ -568,6 +569,7 @@ export default function LocationMapManager() { showZones: true, })) } + onShowHiddenAreas={handleShowHiddenAreas} />