/* Widerrufsseite: Vertragsart „Projektauftrag“ mit freiwilliger Nummer der Auftragsbestätigung (Feld abNummer). Rechtsfunktion: dieses Modul darf die anderen Vertragsarten nie stören. Fällt es aus, funktioniert der Widerruf wie bisher. Das Feld ist nur bei „Projektauftrag“ sichtbar; eine eingegebene, aber unpassende Nummer wird gemeldet und stoppt das Absenden, ein leeres Feld lässt den Widerruf durch (der Widerruf bleibt formfrei). Die Meldung steht in auftrag-ansicht.js. */ import { ANREDE_DU, abNummerNormalisiert, texte } from './auftrag-ansicht.js' export function initProjektWiderruf(form) { const wrap = form?.querySelector('#ab-nummer-wrap') const feld = form?.querySelector('#abNummer') const fehler = form?.querySelector('#form-error') if (!form || !wrap || !feld || !fehler) return const gewaehlt = () => form.querySelector('[name="order"]:checked')?.value let eigeneMeldung = false const meldungWeg = () => { if (!eigeneMeldung) return eigeneMeldung = false fehler.textContent = '' fehler.classList.add('hidden') } const zeige = () => { const projekt = gewaehlt() === 'projekt' wrap.classList.toggle('hidden', !projekt) if (!projekt) { feld.value = '' meldungWeg() } } form.addEventListener('change', zeige) form.addEventListener('click', (ev) => { if (!ev.target?.closest?.('button[type="submit"], input[type="submit"]') || gewaehlt() !== 'projekt') return const eingabe = feld.value.trim() if (!eingabe) { feld.value = '' meldungWeg() return } const nummer = abNummerNormalisiert(eingabe) if (!nummer) { ev.preventDefault() // Neue Seite (data-anrede="du"): die Meldung in du; ohne das Attribut bleibt der Satz aus auftrag-ansicht.js fehler.textContent = form.getAttribute('data-anrede') === ANREDE_DU ? 'Die Nummer sieht anders aus als AB-2026-0001. Bitte prüfe die Nummer oder lass das Feld leer.' : texte().abNummerUngueltig fehler.classList.remove('hidden') eigeneMeldung = true feld.focus() return } feld.value = nummer meldungWeg() }) zeige() } if (typeof document !== 'undefined' && document.getElementById('decl-form') && document.getElementById('ab-nummer-wrap')) { initProjektWiderruf(document.getElementById('decl-form')) }