fix : focus clavier visible sur radio et checkbox (outline m-primary)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -65,3 +65,5 @@ Liste des évolutions de la librairie Malio layer UI
|
|||||||
* InputAutocomplete : suppression de 4 sources de saut visuel au focus / ouverture (extra translate label, padding `grow-height:focus`, `focus:pl-[11px]`, `!border-b-0` remplacé par `!border-b-transparent`)
|
* InputAutocomplete : suppression de 4 sources de saut visuel au focus / ouverture (extra translate label, padding `grow-height:focus`, `focus:pl-[11px]`, `!border-b-0` remplacé par `!border-b-transparent`)
|
||||||
* Select / SelectCheckbox : mêmes correctifs anti-saut (suppression du padding `grow-height:focus` et remplacement de `!border-b-0` / `!border-t-0` par leurs variantes `transparent`)
|
* Select / SelectCheckbox : mêmes correctifs anti-saut (suppression du padding `grow-height:focus` et remplacement de `!border-b-0` / `!border-t-0` par leurs variantes `transparent`)
|
||||||
* MalioButton : largeur par défaut alignée sur `w-[200px]` (au lieu de `w-[240px]`) pour correspondre au sizing des formulaires de l'app
|
* MalioButton : largeur par défaut alignée sur `w-[200px]` (au lieu de `w-[240px]`) pour correspondre au sizing des formulaires de l'app
|
||||||
|
* [#MUI-42] RadioButton : ajout d'un focus visible au clavier (`outline` 2px `m-primary`, offset 2px) — l'input en `appearance-none` n'avait aucun indicateur de focus, seul l'`outline: auto 1px` du navigateur restait, quasi invisible. La navigation native (Tab entre groupes, flèches dans le groupe) reste inchangée
|
||||||
|
* [#MUI-42] Checkbox : ajout d'un focus visible au clavier sur la case (`outline` 2px `m-primary`, offset 2px) — l'input réel est masqué (`clip-path`), aucun indicateur n'apparaissait à la tabulation
|
||||||
|
|||||||
@@ -455,6 +455,8 @@ Case à cocher.
|
|||||||
|
|
||||||
**Events :** `update:modelValue(value: boolean)`
|
**Events :** `update:modelValue(value: boolean)`
|
||||||
|
|
||||||
|
**Clavier :** `Espace` coche/décoche. Focus clavier visible sur la case (`outline` 2px `m-primary`).
|
||||||
|
|
||||||
```vue
|
```vue
|
||||||
<MalioCheckbox v-model="accepte" label="J'accepte les conditions" />
|
<MalioCheckbox v-model="accepte" label="J'accepte les conditions" />
|
||||||
<MalioCheckbox v-model="newsletter" label="Newsletter" disabled />
|
<MalioCheckbox v-model="newsletter" label="Newsletter" disabled />
|
||||||
@@ -478,6 +480,8 @@ Bouton radio (à utiliser en groupe avec le même `name`).
|
|||||||
|
|
||||||
**Events :** `update:modelValue(value: string | number | boolean | null)`
|
**Events :** `update:modelValue(value: string | number | boolean | null)`
|
||||||
|
|
||||||
|
**Clavier :** comportement natif d'un groupe radio (options partageant le même `name`) — `Tab` / `Maj+Tab` entre/sort du groupe (1 seul arrêt par groupe), `↑↓←→` déplacent la sélection entre les options d'un même groupe. Focus clavier visible (`outline` 2px `m-primary`).
|
||||||
|
|
||||||
```vue
|
```vue
|
||||||
<MalioRadioButton v-model="civilite" name="civilite" value="M" label="Monsieur" />
|
<MalioRadioButton v-model="civilite" name="civilite" value="M" label="Monsieur" />
|
||||||
<MalioRadioButton v-model="civilite" name="civilite" value="Mme" label="Madame" />
|
<MalioRadioButton v-model="civilite" name="civilite" value="Mme" label="Madame" />
|
||||||
|
|||||||
@@ -180,6 +180,11 @@ const onChange = (event: Event) => {
|
|||||||
border-color: rgb(0, 0, 0);
|
border-color: rgb(0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.inp-cbx:focus-visible + .cbx span:first-child {
|
||||||
|
outline: 2px solid rgb(var(--m-primary) / 1);
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
.cbx span:first-child svg {
|
.cbx span:first-child svg {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 2px;
|
top: 2px;
|
||||||
|
|||||||
@@ -179,6 +179,11 @@ const onChange = (event: Event) => {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.radio-control input[type='radio']:focus-visible {
|
||||||
|
outline: 2px solid rgb(var(--m-primary) / 1);
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
.radio-control.is-error input[type='radio'] {
|
.radio-control.is-error input[type='radio'] {
|
||||||
border-color: rgb(var(--m-danger) / 1);
|
border-color: rgb(var(--m-danger) / 1);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user