scss: add option to display icons in forms buttons (#74954) #205

Merged
smihai merged 2 commits from wip/74954-option-for-buttons-with-icons into main 2023-04-06 10:18:38 +02:00
2 changed files with 53 additions and 0 deletions

View File

@ -665,6 +665,12 @@ paramètre, la deuxième sa description et la troisième la valeur par défaut.
</td>
<td><p><var>null</var></p></td>
</tr>
<tr>
<td><p><code>$buttons-with-icons</code></p></td>
<td><p>Ajoute des icônes aux boutons des formulaires des demandes.</p>
tjund marked this conversation as resolved Outdated
Outdated
Review

Je mettrais :
"Ajoute des icones aux boutons des formulaires des demandes"

Je mettrais : "Ajoute des icones aux boutons des formulaires des demandes"
Outdated
Review

Je remonte, n'ayant pas vu de réaction à ce commentaire.

Je remonte, n'ayant pas vu de réaction à ce commentaire.

Désolé, je n'avais pas poussé la branche avec cette modif.

Désolé, je n'avais pas poussé la branche avec cette modif.
Outdated
Review

C'est pour valider le ticket.

C'est pour valider le ticket.
</td>
<td><p><var>false</var></p></td>
</tr>
<tr>
<td><p><code>$timetable-cell-background</code></p></td>
<td><p>Couleur de fond des créneaux horaires.</p>

View File

@ -45,7 +45,11 @@ $form-style: classic !default;
// optionnal (grow) option to move next button to right (ex: cancel (grow), previous, submit);
$buttons-order: null !default;
$buttons-alignment: null !default; // any flexbox justify-content value;
$buttons-with-icons: false !default;
$submit-button-icon: '\f105' !default; /* angle right */
$previous-button-icon: '\f104' !default; /* angle left */
$cancel-button-icon: '\f00d' !default; /* remove icon */
%custom-radio-checkbox-widget {
label {
@ -652,6 +656,49 @@ div.select2-search {
}
}
// Button with FontAwesome icon
// $position: left || right
// $character : UTF value
@mixin button-with-icon($position: right, $character: '\f105') {
&::before, &::after {
font-family: FontAwesome;
}

Quel comportement de lecture sur ce contenu ? ajouter speak: never; ici ?

Quel comportement de lecture sur ce contenu ? ajouter speak: never; ici ?

Quel comportement de lecture sur ce contenu ? ajouter speak: never; ici ?

Cela semble en effet suffisant pour la non réproduction orale du contenu. Mais je laisse @tjund donner son avis.

> Quel comportement de lecture sur ce contenu ? ajouter speak: never; ici ? Cela semble en effet suffisant pour la non réproduction orale du contenu. Mais je laisse @tjund donner son avis.
Outdated
Review

La propriété CSS2 speak n'a (il me semble) jamais été supporté par les lecteurs d'écrans ou les navigateurs.

Le contenu d'un pseudo element est génralement être lu et il n'y a rien à faire pour l'empêcher, c'est pourquoi, pour l'ajout d'une icône "décorative" les préconisations vont vers l'utilisatiuon d'une balise dédiée avec un aria-hidden dessus

<span class="icon" aria-hidden="true"></span>

L'autre solution, plus simple pour nous dans ce cas, serait l'ajout d'un attr aria-label.

<button name="submit" value="Suivant" class="form-next" arai-label="Suivant">Suivant</button>

la valeur d'aria-label va remplacer son contenu pour les lecteurs d'écran et donc le problème de l'ajout d'un pseudo element ne se pose plus.

La propriété CSS2 `speak` n'a (il me semble) jamais été supporté par les lecteurs d'écrans ou les navigateurs. Le contenu d'un pseudo element est génralement être lu et il n'y a rien à faire pour l'empêcher, c'est pourquoi, pour l'ajout d'une icône "décorative" les préconisations vont vers l'utilisatiuon d'une balise dédiée avec un aria-hidden dessus `<span class="icon" aria-hidden="true"></span>` L'autre solution, plus simple pour nous dans ce cas, serait l'ajout d'un attr aria-label. ``` <button name="submit" value="Suivant" class="form-next" arai-label="Suivant">Suivant</button> ``` la valeur d'aria-label va remplacer son contenu pour les lecteurs d'écran et donc le problème de l'ajout d'un pseudo element ne se pose plus.

L'autre solution, plus simple pour nous dans ce cas, serait l'ajout d'un attr aria-label.

Je suis d'accord.
J'ai créé https://dev.entrouvert.org/issues/76293 côté wcs pour rajouter l'attribut.

> > L'autre solution, plus simple pour nous dans ce cas, serait l'ajout d'un attr aria-label. > > Je suis d'accord. J'ai créé https://dev.entrouvert.org/issues/76293 côté wcs pour rajouter l'attribut.

J'ai créé https://dev.entrouvert.org/issues/76293 côté wcs pour rajouter l'attribut.

Pour la forme : je ne trouve pas terrible d'envoyer dans le dépôt quelque chose qu'on sait être une régression en accessibilité.

> J'ai créé https://dev.entrouvert.org/issues/76293 côté wcs pour rajouter l'attribut. Pour la forme : je ne trouve pas terrible d'envoyer dans le dépôt quelque chose qu'on sait être une régression en accessibilité.

Je suis d'accord.

Mais nous avons déjà 8 thèmes au moins qui ajoutent les pictos aux boutons à coup de pseudo éléments dans _custom.scss et à chaque demande d'une intégration par une collectivité on en rajoutera encore.

Avec l'option introduite, même si elle ne règle le problème, on évitera les custom et pourra travailler à améliorer l'accessibilité.

Je suis d'accord. Mais nous avons déjà 8 thèmes au moins qui ajoutent les pictos aux boutons à coup de pseudo éléments dans `_custom.scss` et à chaque demande d'une intégration par une collectivité on en rajoutera encore. Avec l'option introduite, même si elle ne règle le problème, on évitera les custom et pourra travailler à améliorer l'accessibilité.
@if ($position == left) {
&::before {
content: $character;
margin-right: 0.5em;
}
}
@if ($position == right) {
&::after {
content: $character;
margin-left: 0.5em;
}
}
}
@if $buttons-with-icons {
.submit-button-with-icon {
@include button-with-icon(right, $submit-button-icon);
}
.previous-button-with-icon {
@include button-with-icon(left, $previous-button-icon);
}
.cancel-button-with-icon {
@include button-with-icon(left, $cancel-button-icon);
}
.quixote:not(#wf-actions) div.buttons {
@each $btn in (submit, previous, cancel) {
.#{$btn}-button button {
@extend .#{$btn}-button-with-icon;
}
}
}
}
// Buttons order & alignment configuration
@if $buttons-order or $buttons-alignment {
.quixote:not(#wf-actions) div.buttons {