diff --git a/frontend/src/components/maps/LocationMapCanvas.jsx b/frontend/src/components/maps/LocationMapCanvas.jsx index c7e5d39..d42a8a8 100644 --- a/frontend/src/components/maps/LocationMapCanvas.jsx +++ b/frontend/src/components/maps/LocationMapCanvas.jsx @@ -23,6 +23,7 @@ export default function LocationMapCanvas({ dragState, editingLocked = false, hiddenAreaCount = 0, + onAddObject, onShowZones, onShowHiddenAreas, setDragState, @@ -37,9 +38,11 @@ export default function LocationMapCanvas({ ? objects.filter((object) => object.visible).length : 0; const hasNoVisibleObjects = objects.length > 0 && filters.showZones && visibleObjectCount === 0; + const canAddFirstArea = + !editingLocked && mode === "edit" && objects.length === 0 && typeof onAddObject === "function"; const canRecoverHiddenAreas = mode === "edit" && hasNoVisibleObjects && hiddenAreaCount > 0 && typeof onShowHiddenAreas === "function"; - const hasEmptyCanvasAction = hiddenByZonesLayer || canRecoverHiddenAreas; + const hasEmptyCanvasAction = canAddFirstArea || hiddenByZonesLayer || canRecoverHiddenAreas; const emptyCanvasMessage = objects.length === 0 ? "No map areas yet" : hiddenByZonesLayer @@ -160,6 +163,11 @@ export default function LocationMapCanvas({ onShowZones?.(); }; + const handleAddObject = (event) => { + event.stopPropagation(); + onAddObject?.(); + }; + const handleShowHiddenAreas = (event) => { event.stopPropagation(); onShowHiddenAreas?.(); @@ -406,7 +414,15 @@ export default function LocationMapCanvas({ ].filter(Boolean).join(" ")} > {emptyCanvasMessage} - {hiddenByZonesLayer ? ( + {canAddFirstArea ? ( + + ) : hiddenByZonesLayer ? (