feat(ui) : MalioDate/DateTime — validité, saisie clavier & gabarit (#MUI-43) #71

Merged
tristan merged 2 commits from feature/MUI-43-date-validity into develop 2026-06-11 15:16:11 +00:00
Owner

Ticket MUI-43 : exposer l'état de validité de MalioDate (saisie invalide avalée silencieusement) + portage de la saisie clavier sur MalioDateTime.

Contenu

MalioDate

  • Nouvel event update:valid(boolean) : false sur saisie malformée ou hors min/max (qui n'émet pas modelValue), true sinon ; émis dès le montage. La validité ne couvre pas required (champ vide = valide).

MalioDateTime

  • Prop editable : saisie clavier JJ/MM/AAAA HH:MM (masque maska, validation au blur/Entrée, invalidMessage) + même update:valid.
  • Nouveau parseur parseDisplayToIsoDateTime.

Famille Date editable (Date + DateTime)

  • Gabarit fantôme progressif : le format s'affiche en gris et se remplit au fil de la saisie (overlay ghost mirror, texte de l'input transparent).
  • Séparateurs (/, espace, :) posés automatiquement (maska eager), espace insécable pour éviter le collage 12/12/1999HH:MM.
  • CalendarField : prop placeholderTemplate (le masque maska en est dérivé).

Corrections

  • La croix d'effacement réinitialise la saisie clavier même après une date invalide (le v-model restant null, le champ ne se vidait pas).
  • Fix d'un test Date.test.ts cassé sur develop (trigger('keydown.enter') envoie key='enter' ≠ handler e.key === 'Enter').

Portée

MalioDate seul pour la validité (les cousins DateRange/DateWeek n'ont pas de saisie clavier donc pas le bug). Sémantique valid = malformé only.

Tests

app/components/malio/date/ : 187/187, ESLint propre. Vérifié visuellement dans le playground (page Date & heure).

Doc

COMPONENTS.md + CHANGELOG.md à jour.

🤖 Generated with Claude Code

Ticket MUI-43 : exposer l'état de validité de MalioDate (saisie invalide avalée silencieusement) + portage de la saisie clavier sur MalioDateTime. ## Contenu **MalioDate** - Nouvel event `update:valid(boolean)` : `false` sur saisie malformée ou hors min/max (qui n'émet pas `modelValue`), `true` sinon ; émis dès le montage. La validité ne couvre pas `required` (champ vide = valide). **MalioDateTime** - Prop `editable` : saisie clavier `JJ/MM/AAAA HH:MM` (masque maska, validation au blur/Entrée, `invalidMessage`) + même `update:valid`. - Nouveau parseur `parseDisplayToIsoDateTime`. **Famille Date editable (Date + DateTime)** - Gabarit fantôme progressif : le format s'affiche en gris et se remplit au fil de la saisie (overlay ghost mirror, texte de l'input transparent). - Séparateurs (/, espace, :) posés automatiquement (maska `eager`), espace insécable pour éviter le collage `12/12/1999HH:MM`. - `CalendarField` : prop `placeholderTemplate` (le masque maska en est dérivé). **Corrections** - La croix d'effacement réinitialise la saisie clavier même après une date invalide (le v-model restant null, le champ ne se vidait pas). - Fix d'un test `Date.test.ts` cassé sur develop (`trigger('keydown.enter')` envoie key='enter' ≠ handler `e.key === 'Enter'`). ## Portée MalioDate seul pour la validité (les cousins DateRange/DateWeek n'ont pas de saisie clavier donc pas le bug). Sémantique `valid` = malformé only. ## Tests `app/components/malio/date/` : 187/187, ESLint propre. Vérifié visuellement dans le playground (page Date & heure). ## Doc COMPONENTS.md + CHANGELOG.md à jour. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
tristan added 2 commits 2026-06-11 15:12:08 +00:00
- MalioDate : event update:valid (malforme/hors-plage => false), emis au montage
- MalioDateTime : prop editable (saisie JJ/MM/AAAA HH:MM) + meme update:valid
- CalendarField : masque maska configurable via prop mask
- datetimeFormat : nouveau parseur parseDisplayToIsoDateTime
- fix test Date « Entree » (key 'Enter' reel vs trigger keydown.enter)
- doc COMPONENTS.md + CHANGELOG.md + champ editable dans le playground

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- gabarit fantome progressif sur la famille Date editable (Date, DateTime) :
  le format s'affiche en gris et se remplit au fil de la saisie (overlay ghost)
- separateurs (/, espace, :) poses automatiquement (maska eager)
- espace insecable pour eviter le collage « 12/12/1999HH:MM »
- CalendarField : prop placeholderTemplate (masque maska derive), remplace mask
- fix : la croix reinitialise la saisie clavier meme apres une date invalide
- tests + COMPONENTS.md + CHANGELOG.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
tristan merged commit 9f9723d01c into develop 2026-06-11 15:16:11 +00:00
tristan deleted branch feature/MUI-43-date-validity 2026-06-11 15:16:11 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MALIO-DEV/malio-layer-ui#71