From 3a5c7419f97b926ac2894b933faf0197456167ff Mon Sep 17 00:00:00 2001 From: Pepe Ziberi Date: Wed, 22 Jul 2026 21:41:20 +0200 Subject: [PATCH] =?UTF-8?q?fix(ux):=20Gefahrenzone-Werkzeug=20+=20Linienst?= =?UTF-8?q?=C3=A4rke=20+=20Text-Reset=20(v1.6.6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Aus interner UX-Review: - Gefahrenzone-Werkzeug (Shortcut D) fehlte komplett in der Werkzeugleiste → am Handy (ohne Tastatur) gar nicht auslösbar. Jetzt mit AlertTriangle-Icon drin. - Linienstärke-Regler ergänzt (Dünn/Mittel/Dick) — die Props selectedWidth/ onWidthChange waren vorhanden, aber nirgends bedienbar. - Text-Dialog setzt sich beim Öffnen zurück (kein alter Text nach Abbrechen mehr). - Einsatz-Beschreibung als mehrzeiliges Textfeld statt einzeiligem Input. Hinweis: Audit-Trail-Trigger bewusst NICHT wieder ergänzt — war auf ausdrücklichen Wunsch aus dem Menü entfernt worden. Co-Authored-By: Claude Opus 4.8 (1M context) --- package.json | 2 +- src/components/dialogs/project-dialog.tsx | 4 ++- src/components/dialogs/text-dialog.tsx | 7 ++++- src/components/layout/left-toolbar.tsx | 32 +++++++++++++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 508461a..46afcad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lageplan", - "version": "1.6.5", + "version": "1.6.6", "description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation", "private": true, "scripts": { diff --git a/src/components/dialogs/project-dialog.tsx b/src/components/dialogs/project-dialog.tsx index 0bed4bf..49bb7f7 100644 --- a/src/components/dialogs/project-dialog.tsx +++ b/src/components/dialogs/project-dialog.tsx @@ -419,12 +419,14 @@ export function ProjectDialog({
- setDescription(e.target.value)} placeholder="Optionale Notizen zum Einsatz" disabled={isCreating} + rows={3} + className="w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-60 resize-y" />
diff --git a/src/components/dialogs/text-dialog.tsx b/src/components/dialogs/text-dialog.tsx index 8c3cf00..d9c722b 100644 --- a/src/components/dialogs/text-dialog.tsx +++ b/src/components/dialogs/text-dialog.tsx @@ -1,6 +1,6 @@ 'use client' -import { useState } from 'react' +import { useState, useEffect } from 'react' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' @@ -23,6 +23,11 @@ export function TextDialog({ open, onOpenChange, onConfirm, selectedColor }: Tex const [text, setText] = useState('') const [fontSize, setFontSize] = useState(16) + // Beim Öffnen zurücksetzen — sonst erscheint beim nächsten Text der alte Inhalt + useEffect(() => { + if (open) { setText(''); setFontSize(16) } + }, [open]) + const handleConfirm = () => { if (text.trim()) { onConfirm(text.trim(), fontSize) diff --git a/src/components/layout/left-toolbar.tsx b/src/components/layout/left-toolbar.tsx index 69f61dc..08ad326 100644 --- a/src/components/layout/left-toolbar.tsx +++ b/src/components/layout/left-toolbar.tsx @@ -21,6 +21,7 @@ import { MoveRight, Ruler, Eraser, + AlertTriangle, } from 'lucide-react' import type { DrawMode } from '@/types' import { cn } from '@/lib/utils' @@ -58,10 +59,17 @@ const drawTools: { mode: DrawMode; icon: typeof MousePointer2; label: string; sh { mode: 'freehand', icon: Pencil, label: 'Freihand', shortcut: 'F' }, { mode: 'arrow', icon: MoveRight, label: 'Pfeil / Route', shortcut: 'A' }, { mode: 'text', icon: Type, label: 'Text', shortcut: 'T' }, + { mode: 'dangerzone', icon: AlertTriangle, label: 'Gefahrenzone', shortcut: 'D' }, { mode: 'eraser', icon: Eraser, label: 'Radiergummi', shortcut: 'E' }, { mode: 'measure', icon: Ruler, label: 'Messen', shortcut: 'M' }, ] +const widths = [ + { value: 2, label: 'Dünn' }, + { value: 4, label: 'Mittel' }, + { value: 7, label: 'Dick' }, +] + export function LeftToolbar({ drawMode, onDrawModeChange, @@ -158,6 +166,30 @@ export function LeftToolbar({ /> ))} + +
+ + {/* Linienstärke */} +
+ {widths.map((w) => ( + + ))} +
)