User Story
Als staleigenaar wil ik bij het aanmaken (of bewerken) van een paard een duidelijke validatiemelding bij het betreffende veld zien wanneer een veld onjuist is ingevuld, zodat ik direct begrijp wat ik moet corrigeren in plaats van een onduidelijke rode foutbalk bovenin het scherm te krijgen.
Context
Bij het opslaan van een paard wordt invoer server-side gevalideerd (o.a. het chipnummer moet exact 15 cijfers bevatten, zie createHorse in src/features/paarden/actions.ts). Faalt de validatie, dan komt de melding nu terug als een generieke rode balk bovenin het formulier (form-feedback--error in src/features/paarden/PaardForm.tsx). De gebruiker ziet daardoor niet bij welk veld de fout zit en moet zelf zoeken. Dit is opgemerkt in de praktijk (de "gekke rode balk bovenin het scherm").
Het design system bevat hier al bouwstenen voor die nu niet gebruikt worden:
.input.is-error — rood omkaderd inputveld met lichtrode focus-glow.
.form-error — kleine rode helptekst onder een veld.
Beide staan in src/styles/globals.css (regel ~1551 en ~1559) en gebruiken de bestaande danger-tokens. Doel is de generieke foutbalk te vervangen door een nette, consistente foutweergave bij het veld zelf, herbruikbaar voor de verplichte/te-valideren velden van het paardformulier.
Scope
In scope:
- Het paard-aanmaken- en paard-bewerken-formulier (
src/features/paarden/PaardForm.tsx, gedeeld door paarden/nieuw en paarden/[id]/bewerken).
- Validatiefouten koppelen aan het juiste veld in plaats van (alleen) een algemene balk bovenin: het foutieve veld krijgt
.input.is-error en een .form-error-melding eronder.
- Bij opslaan automatisch naar het eerste foutieve veld scrollen en dit focussen.
- Een consistente, herbruikbare manier om deze veldfouten te tonen binnen dit formulier, zodat dezelfde aanpak op de andere te-valideren/verplichte velden toegepast kan worden (minimaal het verplichte veld
name en het te-valideren chipNumber).
- De bestaande server-side validatie in
src/features/paarden/actions.ts blijft de bron van waarheid; deze mag zo aangepast worden dat de fout per veld teruggegeven kan worden (bv. een veld-identifier meegeven) in plaats van alleen een vrije-tekstmelding.
Buiten scope:
- Geen nieuwe validatieregels of nieuwe verplichte velden toevoegen; alleen de bestaande regels netter tonen.
- Geen uitrol naar andere formulieren buiten het paardformulier (gezondheidsregistraties, contracten, lease, enz.). Wel zodanig opbouwen dat de aanpak later herbruikbaar is, maar die uitrol is geen onderdeel van deze story.
- Geen wijziging aan het design system anders dan eventueel hergebruik/lichte uitbreiding van de al bestaande
is-error/form-error-stijlen.
Acceptatiecriteria
User Story
Als staleigenaar wil ik bij het aanmaken (of bewerken) van een paard een duidelijke validatiemelding bij het betreffende veld zien wanneer een veld onjuist is ingevuld, zodat ik direct begrijp wat ik moet corrigeren in plaats van een onduidelijke rode foutbalk bovenin het scherm te krijgen.
Context
Bij het opslaan van een paard wordt invoer server-side gevalideerd (o.a. het chipnummer moet exact 15 cijfers bevatten, zie
createHorseinsrc/features/paarden/actions.ts). Faalt de validatie, dan komt de melding nu terug als een generieke rode balk bovenin het formulier (form-feedback--errorinsrc/features/paarden/PaardForm.tsx). De gebruiker ziet daardoor niet bij welk veld de fout zit en moet zelf zoeken. Dit is opgemerkt in de praktijk (de "gekke rode balk bovenin het scherm").Het design system bevat hier al bouwstenen voor die nu niet gebruikt worden:
.input.is-error— rood omkaderd inputveld met lichtrode focus-glow..form-error— kleine rode helptekst onder een veld.Beide staan in
src/styles/globals.css(regel ~1551 en ~1559) en gebruiken de bestaande danger-tokens. Doel is de generieke foutbalk te vervangen door een nette, consistente foutweergave bij het veld zelf, herbruikbaar voor de verplichte/te-valideren velden van het paardformulier.Scope
In scope:
src/features/paarden/PaardForm.tsx, gedeeld doorpaarden/nieuwenpaarden/[id]/bewerken)..input.is-erroren een.form-error-melding eronder.nameen het te-validerenchipNumber).src/features/paarden/actions.tsblijft de bron van waarheid; deze mag zo aangepast worden dat de fout per veld teruggegeven kan worden (bv. een veld-identifier meegeven) in plaats van alleen een vrije-tekstmelding.Buiten scope:
is-error/form-error-stijlen.Acceptatiecriteria
.input.is-error) en verschijnt de bestaande melding ("Chipnummer moet exact 15 cijfers bevatten ...") als.form-errordirect onder dat veld..input.is-error,.form-error, danger-tokens) en introduceert geen nieuwe ad-hoc kleuren of losse rode balk-styling buiten het design system.paarden/nieuw) als bewerken (paarden/[id]/bewerken), aangezien beide hetzelfdePaardFormgebruiken.