Lieferanten-/IT-Service-Cockpit direkt auf der Asset-Seite öffnen

Statt beim Klick auf ein Lieferanten-/IT-Service-Asset zur Lieferanten-Seite zu
wechseln, wird das Fach-Cockpit jetzt als Popup auf /assets gerendert; Schließen,
Bearbeiten, Speichern und Löschen bleiben auf der Asset-Seite.

- backHref-Prop an SupplierDetail/Edit- und ServiceDetail/Edit-Modal: alle
  Schließen-/Bearbeiten-/Abbrechen-Links leiten sich davon ab (Default /suppliers)
- withQuery-Helper (lib/supplier) für korrekte ?/&-Verkettung
- updateSupplier/updateService lesen returnTo (verstecktes Feld) und leiten dorthin
  zurück; deleteSupplier/deleteService bekommen returnTo-Parameter
- Kind-Actions revalidieren zusätzlich /assets, damit das Popup dort aktuell bleibt
- SUPPLIER_INCLUDE/SERVICE_INCLUDE in lib/supplier-include ausgelagert und von
  beiden Seiten genutzt
- assets/page.tsx bestimmt die Popup-Art vorab (supplier/service/asset) und rendert
  das passende Cockpit mit backHref="/assets"; profillose Alt-Assets bleiben Assets

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-06 13:55:46 +02:00
co-authored by Claude Opus 4.8
parent db710c43cf
commit 2706424c08
8 changed files with 172 additions and 98 deletions
+9
View File
@@ -11,6 +11,15 @@ export function serviceRef(refNo: number): string {
return `S-${String(refNo).padStart(3, "0")}`;
}
/**
* Hängt einen Query-Parameter an einen Basis-Pfad an und wählt automatisch
* das richtige Trennzeichen (`?` oder `&`). Erlaubt, Detail-/Bearbeiten-Popups
* sowohl auf /suppliers als auch auf /assets zu öffnen (backHref-Muster).
*/
export function withQuery(base: string, key: string, val: string): string {
return `${base}${base.includes("?") ? "&" : "?"}${key}=${val}`;
}
export const SUPPLIER_LIFECYCLE_TONE = {
ACTIVE: "ok",
ONBOARDING: "info",