fix(web): Doppelausloesung des Loeschknopfs sperren, Fahrzeugtabelle uebersetzt

VehicleTable.confirmDelete liess das Beschaeftigt-Kennzeichen zwar setzen,
aber nie lesen (const [, setIsDeleting]); Dialogschaltflaechen blieben
waehrend der laufenden Loeschanfrage bedienbar. Kennzeichen jetzt lesbar
gebunden, Dialog reicht den Zustand an Bestaetigen/Abbrechen weiter
(disabled + Sperr-Klassen), und confirmDelete bricht bei bereits laufender
Loeschung selbst ab.

Alle sieben fest verdrahteten Texte und sechs Vorlesehilfen der Tabelle
jetzt ueber next-intl (sieben neue Schluessel im Bereich dkvFleet, gleicher
Schluesselsatz in de.json und en.json).

Nebenbefund beim Testen: `load` haette mit `t` als Abhaengigkeit bei einem
instabilen Uebersetzer-Mock einen Abruf-bei-jedem-Render-Zyklus ausgeloest
— bewusst mit leerem Abhaengigkeitsfeld gelassen. Ausserdem
`vi.restoreAllMocks()` im Testabbau ersetzt: es leerte die Aufrufzaehlung
der reinen vi.fn()-Mocks nicht, wodurch der neue Doppelklick-Test falsche
Aufrufzahlen sah.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TPPB4ApQxzSU1rwV2Ffj9J
This commit is contained in:
2026-09-21 11:39:03 +02:00
parent f7c02b7fc9
commit e56cce4bf3
4 changed files with 135 additions and 24 deletions
+8 -1
View File
@@ -670,6 +670,8 @@
"vehicles": "Fahrzeuge"
},
"form": {
"saveRow": "Änderungen speichern",
"deleteConfirm": "Löschen",
"protocol": "Protokoll",
"host": "Host",
"hostExchange": "EWS-URL",
@@ -706,7 +708,12 @@
},
"errors": {
"pollFailed": "Posteingang konnte nicht geprüft werden. Überprüfe die Konfiguration unter 'Moduleinstellungen > Posteingang'.",
"smtpFailed": "Export wurde erstellt, konnte aber nicht gesendet werden. Die Datei ist weiterhin zum Download verfügbar."
"smtpFailed": "Export wurde erstellt, konnte aber nicht gesendet werden. Die Datei ist weiterhin zum Download verfügbar.",
"licensePlateRequired": "Kennzeichen ist erforderlich.",
"loadVehiclesFailed": "Fahrzeuge konnten nicht geladen werden.",
"saveVehicleFailed": "Speichern fehlgeschlagen.",
"createVehicleFailed": "Fahrzeug konnte nicht hinzugefügt werden.",
"deleteVehicleFailed": "Fahrzeug konnte nicht gelöscht werden."
}
},
"marketplace": {
+8 -1
View File
@@ -670,6 +670,8 @@
"vehicles": "Vehicles"
},
"form": {
"saveRow": "Save changes",
"deleteConfirm": "Delete",
"protocol": "Protocol",
"host": "Host",
"hostExchange": "EWS URL",
@@ -706,7 +708,12 @@
},
"errors": {
"pollFailed": "Could not check inbox. Review the configuration under 'Module Settings > Inbox'.",
"smtpFailed": "Export was created but could not be sent. The file is still available for manual download."
"smtpFailed": "Export was created but could not be sent. The file is still available for manual download.",
"licensePlateRequired": "License plate is required.",
"loadVehiclesFailed": "Vehicles could not be loaded.",
"saveVehicleFailed": "Saving failed.",
"createVehicleFailed": "Vehicle could not be added.",
"deleteVehicleFailed": "Vehicle could not be deleted."
}
},
"marketplace": {