feat: Split issuer address into separate fields in invoice template

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.
This commit is contained in:
2026-03-18 11:56:05 +01:00
parent f7226604e2
commit f1d60e2109

View File

@@ -49,7 +49,10 @@ const INVOICE_LOCKED_TEXT_PALETTE_IDS = new Set([
"payment-terms", "payment-terms",
"bank-details", "bank-details",
"issuer-name", "issuer-name",
"issuer-address", "issuer-street",
"issuer-house-number",
"issuer-postal-code",
"issuer-city",
"issuer-contact", "issuer-contact",
]); ]);
@@ -305,17 +308,48 @@ const INVOICE_PALETTE_ITEMS: PaletteItem[] = [
defaultContent: (user) => user?.companyName ?? "Ihr Unternehmen", defaultContent: (user) => user?.companyName ?? "Ihr Unternehmen",
}, },
{ {
id: "issuer-address", id: "issuer-street",
category: "issuer-data", category: "issuer-data",
label: "Aussteller-Adresse", label: "Aussteller-Straße",
description: "Adresse des Rechnungsausstellers", description: "Straße des Rechnungsausstellers",
width: 280, width: 200,
fontSize: 14, fontSize: 14,
fontWeight: 400, fontWeight: 400,
textAlign: "left", textAlign: "left",
defaultContent: (user) => defaultContent: (user) => user?.street ?? "",
user?.address ?? },
`${user?.street ?? ""} ${user?.houseNumber ?? ""}\n${user?.postalCode ?? ""} ${user?.city ?? ""}`, {
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", id: "issuer-contact",
@@ -950,7 +984,10 @@ function createInvoiceStarterLayout(user: UserOption | null, paletteItems: Palet
return [ return [
createElementFromPalette(requirePaletteItem(paletteItems, "issuer-name"), user, { x: 56, y: 56 }), 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, "issuer-contact"), user, { x: 56, y: 130 }),
createElementFromPalette(requirePaletteItem(paletteItems, "invoice-title"), user, { x: 480, y: 56 }), createElementFromPalette(requirePaletteItem(paletteItems, "invoice-title"), user, { x: 480, y: 56 }),
createElementFromPalette(requirePaletteItem(paletteItems, "invoice-number"), user, { x: 480, y: 96 }), createElementFromPalette(requirePaletteItem(paletteItems, "invoice-number"), user, { x: 480, y: 96 }),