From f1d60e2109af1d6040a3dde3ddcc500ec7e79cb8 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Wed, 18 Mar 2026 11:56:05 +0100 Subject: [PATCH] feat: Split issuer address into separate fields in invoice template MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace combined 'issuer-address' with 4 separate elements: - issuer-street (Straße) - issuer-house-number (Hausnummer) - issuer-postal-code (PLZ) - issuer-city (Ort) Update starter layout to use new separate fields with appropriate positioning. --- frontend/src/pages/InvoiceTemplatePage.tsx | 55 ++++++++++++++++++---- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/frontend/src/pages/InvoiceTemplatePage.tsx b/frontend/src/pages/InvoiceTemplatePage.tsx index 9b1eb7d..7c1c7c1 100644 --- a/frontend/src/pages/InvoiceTemplatePage.tsx +++ b/frontend/src/pages/InvoiceTemplatePage.tsx @@ -49,7 +49,10 @@ const INVOICE_LOCKED_TEXT_PALETTE_IDS = new Set([ "payment-terms", "bank-details", "issuer-name", - "issuer-address", + "issuer-street", + "issuer-house-number", + "issuer-postal-code", + "issuer-city", "issuer-contact", ]); @@ -305,17 +308,48 @@ const INVOICE_PALETTE_ITEMS: PaletteItem[] = [ defaultContent: (user) => user?.companyName ?? "Ihr Unternehmen", }, { - id: "issuer-address", + id: "issuer-street", category: "issuer-data", - label: "Aussteller-Adresse", - description: "Adresse des Rechnungsausstellers", - width: 280, + label: "Aussteller-Straße", + description: "Straße des Rechnungsausstellers", + width: 200, fontSize: 14, fontWeight: 400, textAlign: "left", - defaultContent: (user) => - user?.address ?? - `${user?.street ?? ""} ${user?.houseNumber ?? ""}\n${user?.postalCode ?? ""} ${user?.city ?? ""}`, + defaultContent: (user) => user?.street ?? "", + }, + { + id: "issuer-house-number", + category: "issuer-data", + label: "Aussteller-Hausnummer", + description: "Hausnummer des Rechnungsausstellers", + width: 80, + fontSize: 14, + fontWeight: 400, + textAlign: "left", + defaultContent: (user) => user?.houseNumber ?? "", + }, + { + id: "issuer-postal-code", + category: "issuer-data", + label: "Aussteller-PLZ", + description: "Postleitzahl des Rechnungsausstellers", + width: 80, + fontSize: 14, + fontWeight: 400, + textAlign: "left", + defaultContent: (user) => user?.postalCode ?? "", + }, + { + id: "issuer-city", + category: "issuer-data", + label: "Aussteller-Ort", + description: "Ort des Rechnungsausstellers", + width: 200, + fontSize: 14, + fontWeight: 400, + textAlign: "left", + defaultContent: (user) => user?.city ?? "", }, { id: "issuer-contact", @@ -950,7 +984,10 @@ function createInvoiceStarterLayout(user: UserOption | null, paletteItems: Palet return [ createElementFromPalette(requirePaletteItem(paletteItems, "issuer-name"), user, { x: 56, y: 56 }), - createElementFromPalette(requirePaletteItem(paletteItems, "issuer-address"), user, { x: 56, y: 86 }), + createElementFromPalette(requirePaletteItem(paletteItems, "issuer-street"), user, { x: 56, y: 86 }), + createElementFromPalette(requirePaletteItem(paletteItems, "issuer-house-number"), user, { x: 260, y: 86 }), + createElementFromPalette(requirePaletteItem(paletteItems, "issuer-postal-code"), user, { x: 56, y: 110 }), + createElementFromPalette(requirePaletteItem(paletteItems, "issuer-city"), user, { x: 140, y: 110 }), createElementFromPalette(requirePaletteItem(paletteItems, "issuer-contact"), user, { x: 56, y: 130 }), createElementFromPalette(requirePaletteItem(paletteItems, "invoice-title"), user, { x: 480, y: 56 }), createElementFromPalette(requirePaletteItem(paletteItems, "invoice-number"), user, { x: 480, y: 96 }),