Files
Webklar-Kundenbereich/public/auftrag-widerruf.js
T

60 lines
2.3 KiB
JavaScript

/* 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'))
}