feat(ui) : saisie clavier MalioDate + bouton « + » InputEmail + séparateurs InputAmount (#MUI-42) #68
Reference in New Issue
Block a user
Delete Branch "feature/MUI-42-fix-composants-apres-retour-erp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Cette PR regroupe trois évolutions de la librairie (retours ERP).
1. MalioDate — saisie manuelle au clavier
Ajoute la saisie manuelle au clavier
JJ/MM/AAAAsurMalioDate(opt-in via la propeditable), en plus de la sélection au calendrier.CalendarField(interne) gagne un modeeditable: input nonreadonly, masque maska##/##/####, buffer local synchronisé sur la valeur, eventcommitau blur / à Entrée.MalioDateparse le texte (parseDisplayToIso), valide les bornes (isDateInRange) et gère un état d'erreur interne fusionné avec la properrordu consommateur.invalidMessage, défautDate invalide) ; la sélection au calendrier ou un changement externe demodelValueefface l'erreur.editabledéfautfalse; le reste de la famille Date (DateRange/DateTime/DateWeek) est inchangé.Nouvelles props
MalioDate:editable(boolean, défaut false),invalidMessage(string, défaut Date invalide).2. MalioInputEmail — bouton « + » d'ajout
Ajoute à
MalioInputEmaille même bouton « + » queMalioInputPhone: un bouton optionnel qui émet un eventadd(ex. pour ajouter dynamiquement un autre champ email).addable(défautfalse),addIconName(défautmdi:plus),addButtonLabel(défautAjouter une adresse email) ; nouvel eventadd().effectiveIconPositionla déplace automatiquement à gauche quandaddableest actif, libérant la droite pour le bouton.disabled/readonly(pas d'émission).addabledéfautfalse; la logique de sanitisation email (espaces,lowercase, caret) est intacte.3. MalioInputAmount — séparateurs de milliers
Affiche les montants groupés à la française (
1 234 567,89: espace pour les milliers, virgule décimale), en temps réel pendant la saisie, tout en gardant une valeur émise propre.modelValue) reste une chaîne numérique propre : point décimal, sans espaces ('1234567.89'). Contrat consommateur inchangé.composables/amountFormat.ts(normalizeAmount,formatGroupedAmount, helpers curseur) — testées en isolation.maxLengthborne désormais la longueur du modèle (lemaxlengthnatif, qui compterait les espaces, est retiré).MalioInputAmount; format FR figé.Spec et plan des trois features :
docs/superpowers/specs/etdocs/superpowers/plans/.Plan de test
npm run test -- Date.test.ts→ 40 tests OKnpm run test -- InputEmail.test.ts→ 52 tests OKnpm run test -- amountFormat.test.ts InputAmount.test.ts→ 50 tests OKnpm run lint→ 0 erreurcomposant/date: saisie valide → ISO ;32/13/2026→ texte conservé + rouge ; sélection calendrier efface l'erreurcomposant/input/inputEmail: carte « Ajout dynamique » → le « + » ajoute un champ ; icône à gauche + bouton à droitecomposant/input/inputAmount: carte « Grand montant » →1234567s'affiche1 234 567en live,modelValueémis1234567; curseur cohérent🤖 Generated with Claude Code
feat(date) : saisie manuelle au clavier sur MalioDate (#MUI-42)to feat(ui) : saisie manuelle MalioDate + bouton « + » d'ajout MalioInputEmail (#MUI-42)feat(ui) : saisie manuelle MalioDate + bouton « + » d'ajout MalioInputEmail (#MUI-42)to feat(ui) : saisie clavier MalioDate + bouton « + » InputEmail + séparateurs InputAmount (#MUI-42)