diff --git a/frontend/src/routes/documents/[id]/edit/+page.svelte b/frontend/src/routes/documents/[id]/edit/+page.svelte index d57b7904..18ae019e 100644 --- a/frontend/src/routes/documents/[id]/edit/+page.svelte +++ b/frontend/src/routes/documents/[id]/edit/+page.svelte @@ -11,6 +11,38 @@ let tags = doc.tags ? doc.tags.map((t: any) => t.name) : []; let senderId = doc.sender?.id ?? ''; let selectedReceivers = doc.receivers ?? []; + + function isoToGerman(iso: string): string { + if (!iso || !/^\d{4}-\d{2}-\d{2}$/.test(iso)) return ''; + const [y, m, d] = iso.split('-'); + return `${d}.${m}.${y}`; + } + + function germanToIso(german: string): string { + const match = german.match(/^(\d{2})\.(\d{2})\.(\d{4})$/); + if (!match) return ''; + const [, d, m, y] = match; + return `${y}-${m}-${d}`; + } + + let dateDisplay = isoToGerman(doc.documentDate ?? ''); + let dateIso = doc.documentDate ?? ''; + + function handleDateInput(e: Event) { + const input = e.target as HTMLInputElement; + const digits = input.value.replace(/\D/g, '').slice(0, 8); + let formatted: string; + if (digits.length <= 2) { + formatted = digits; + } else if (digits.length <= 4) { + formatted = `${digits.slice(0, 2)}.${digits.slice(2)}`; + } else { + formatted = `${digits.slice(0, 2)}.${digits.slice(2, 4)}.${digits.slice(4)}`; + } + input.value = formatted; + dateDisplay = formatted; + dateIso = germanToIso(formatted); + }