feat(ui) : saisie clavier MalioDate + bouton « + » InputEmail + séparateurs InputAmount (#MUI-42) #68

Merged
tristan merged 38 commits from feature/MUI-42-fix-composants-apres-retour-erp into develop 2026-06-09 15:39:38 +00:00

38 Commits

Author SHA1 Message Date
tristan df5ecbb3e5 docs(MUI-42) : CHANGELOG + COMPONENTS pour l'anneau de focus clavier
- CHANGELOG : anneau de focus clavier standardisé, anneau combo, navigation
  APG (Select/SelectCheckbox/Autocomplete), clearable Upload, ouverture
  clavier Date, uniformisation Button/ButtonIcon, focus conservé Select
- COMPONENTS : note générale focus clavier + notes "Clavier" par composant,
  prop clearable et event clear d'InputUpload

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 17:36:20 +02:00
tristan ef1d7a5d94 feat(date) : anneau focus clavier et ouverture clavier sur CalendarField
Couvre toute la famille date (Date, DateRange, DateTime, DateWeek) :
- Anneau de focus clavier (clavier-only) ; ouvert, l'anneau entoure
  champ + calendrier d'un seul tenant (combo)
- Entrée / Espace ouvrent/ferment le calendrier (mode non éditable),
  Échap ferme ; mode éditable inchangé
- Anneau sur la croix d'effacement

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 17:22:26 +02:00
tristan 16514d7f96 fix(playground) : displayTag passé en booléen sur SelectCheckbox
`displayTag="true"` (string) déclenchait un warning de type Vue
(Expected Boolean, got String). Passage en `:display-tag="true"`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 17:12:28 +02:00
tristan b840280a7e feat(button) : anneau de focus clavier standard (.m-focus-ring) sur Button et ButtonIcon
Remplace le halo focus-visible:ring-2 ring-m-primary/50 par l'anneau outline
standard (m-primary plein, offset 2px), cohérent avec les autres composants.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 17:11:57 +02:00
tristan 3432054a58 feat(select-checkbox) : anneau focus clavier, navigation APG et clic pleine ligne
- Anneau de focus clavier (clavier-only), combo bouton + liste selon le sens
- Navigation clavier WAI-ARIA APG : ouverture, flèches + scroll auto,
  Home/End, Entrée/Espace togglent (liste reste ouverte), Échap/Tab ferment
- Ligne "Tout sélectionner" intégrée à la navigation clavier (index -1)
- aria-activedescendant ; focus conservé sur le bouton
- Clic sur toute la ligne (li) coche/décoche, plus seulement sur le label

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 17:07:44 +02:00
tristan 5b25e7c692 feat(select) : anneau focus clavier, navigation APG et focus conservé après sélection
- Anneau de focus clavier (clavier-only) ; ouvert, l'anneau entoure
  bouton + liste d'un seul tenant, adapté au sens d'ouverture (haut/bas)
- Navigation clavier WAI-ARIA APG (manquait) : ouverture, flèches avec
  scroll auto de l'option active, Home/End, Entrée/Espace, Échap, Tab
- aria-activedescendant pour les lecteurs d'écran
- Le focus reste sur le bouton après sélection (plus de blur vers le body)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 16:59:25 +02:00
tristan 379f4a2d6f feat(autocomplete) : anneau focus clavier + navigation clavier APG
- Anneau de focus clavier (clavier-only) ; quand la liste est ouverte,
  l'anneau entoure tout le bloc input + liste d'un seul tenant
  (utilitaires CSS .m-combo-ring-top / .m-combo-ring-bottom)
- Navigation clavier aux normes WAI-ARIA APG : scroll auto de l'option
  active dans la vue, ArrowUp ouvre sur la dernière option, Home/End,
  Tab ferme la liste

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 16:51:42 +02:00
tristan 88c2a00d89 feat(input) : anneau de focus clavier sur InputTextArea
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 16:38:32 +02:00
tristan 74ee815d82 feat(upload) : anneau focus clavier, activation Entrée/Espace et prop clearable
- Anneau de focus clavier sur le champ (via useKbdFocusRing)
- Ouverture du sélecteur de fichier au clavier (Entrée / Espace)
- Nouveau prop `clearable` (défaut false) : croix `mdi:close` focusable
  (Entrée/Espace, anneau clavier) qui vide le champ et émet l'event `clear`
- Playground : carte de démonstration "Clearable"

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 16:36:57 +02:00
tristan c427f5a7c5 feat(input) : anneau de focus clavier sur InputNumber (champ + boutons +/-)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 16:27:13 +02:00
tristan 74cb90fe1d feat(input) : anneau de focus clavier sur InputAmount
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 16:22:16 +02:00
tristan 2724476f1c feat(input) : anneau de focus clavier sur InputPhone
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 16:19:22 +02:00
tristan 01f29c2f0f feat(input) : anneau de focus clavier sur InputPassword
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 16:17:50 +02:00
tristan 4802f23b72 feat(input) : anneau de focus clavier sur InputText et InputEmail
Anneau outline m-primary affiché uniquement à la navigation clavier (Tab),
pas au clic souris. Composable partagé useKbdFocusRing (détection de modalité
clavier/souris) + utilitaire CSS .m-focus-ring-kbd. Le visuel existant
(grossissement, label flottant, bordure bleue) reste inchangé.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 16:16:31 +02:00
tristan 092b50afee fix : focus clavier visible sur radio et checkbox (outline m-primary)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 15:37:11 +02:00
tristan ae5654577c fix(datatable) : libellés pagination en français (Préc. / Suiv.) 2026-06-09 14:17:36 +02:00
tristan 9f1009cae3 docs(amount) : exemple grand montant groupé (story + playground) 2026-06-09 14:01:42 +02:00
tristan 610c9c42cb docs(amount) : documente l'affichage groupé des milliers 2026-06-09 13:58:50 +02:00
tristan e05f83c98f test(amount) : affichage groupé + maxLength sur le modèle 2026-06-09 13:56:49 +02:00
tristan 2ae7c4e580 fix(amount) : borne le curseur restauré lors d'un rejet maxLength 2026-06-09 13:55:23 +02:00
tristan 1290fe38cc feat(amount) : affichage groupé temps réel (séparateurs de milliers) 2026-06-09 13:51:17 +02:00
tristan 8f9b7857fa feat(amount) : helpers amountFormat (normalize, group, curseur) 2026-06-09 13:47:17 +02:00
tristan 1a82e27346 docs(amount) : plan implémentation séparateurs de milliers 2026-06-09 13:45:41 +02:00
tristan b9e4f496a4 docs(amount) : spec séparateurs de milliers MalioInputAmount 2026-06-09 13:42:20 +02:00
tristan 8685e83de9 docs(email) : exemples bouton + d'ajout (story + playground) 2026-06-09 13:20:56 +02:00
tristan ac21aaf558 docs(email) : documente le bouton + d'ajout de MalioInputEmail 2026-06-09 13:20:56 +02:00
tristan 66c9f5d934 test(email) : couvre le bouton + d'ajout de MalioInputEmail 2026-06-09 13:19:13 +02:00
tristan a5a47a42d4 feat(email) : bouton + d'ajout (event add) sur MalioInputEmail 2026-06-09 13:19:13 +02:00
tristan 1296f62ccf docs(email) : plan implémentation bouton + d'ajout 2026-06-09 13:19:13 +02:00
tristan f926ae830c docs(email) : spec bouton + d'ajout sur MalioInputEmail 2026-06-09 13:19:13 +02:00
tristan 36e0d933c0 docs(date) : exemples saisie manuelle (playground + story) 2026-06-09 12:06:17 +02:00
tristan 520aaf2216 docs(date) : documente la saisie manuelle de MalioDate 2026-06-09 12:04:30 +02:00
tristan 77c0edb0ae test(date) : couvre la saisie manuelle de MalioDate 2026-06-09 12:00:41 +02:00
tristan 9e0c32e9f7 fix(date) : efface l'erreur de saisie manuelle quand modelValue change 2026-06-09 11:58:41 +02:00
tristan 58f7744326 feat(date) : saisie manuelle MalioDate (parse, validation, erreur) 2026-06-09 11:54:52 +02:00
tristan d01875750c feat(date) : mode editable dans CalendarField (saisie clavier) 2026-06-09 11:50:50 +02:00
tristan 36940139b9 docs(date) : plan implémentation saisie manuelle MalioDate 2026-06-09 11:46:25 +02:00
tristan 06c90f7fb2 docs(date) : spec saisie manuelle MalioDate 2026-06-09 11:36:00 +02:00