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 ? (