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",
"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 }),