Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ETQ usager, je veux que les erreurs et les descriptions soient reliées aux champs concernés #10991

Merged
merged 18 commits into from
Dec 19, 2024

Conversation

inseo
Copy link
Contributor

@inseo inseo commented Oct 28, 2024

Déplace les descriptions contribuées à l'extérieur des étiquettes

Capture d’écran 2024-10-28 à 15 25 55

Après
Capture d’écran 2024-10-28 à 15 23 13

Avant
Capture d’écran 2024-10-28 à 15 25 46

Précise le contexte du bouton de suppression d'une pièce jointe

Capture d’écran 2024-10-28 à 15 28 45

Après
Capture d’écran 2024-10-28 à 15 29 47

Avant
Capture d’écran 2024-10-28 à 15 28 53

Uniformise le rendu des descriptions utilisant des balises HTML

Après
Capture d’écran 2024-10-28 à 15 44 11
Capture d’écran 2024-10-28 à 15 44 28

Avant
Capture d’écran 2024-10-28 à 15 43 49
Capture d’écran 2024-10-28 à 15 43 20

Applique les recommandations du DSFR concernant la liaison des messages d'erreur aux champs et aux regroupements

En cas de regroupement (balise fieldset)

  • L'étiquette (le label), la description (si elle existe) et l'erreur (si elle est présente) sont liés au fieldset via l'attribut aria-labelledby.
  • Les champs en erreur compris dans le regroupement ne sont pas liés à l'erreur ou à la description.
  • Référence : Recommandation DSFR pour les regroupements.
    Capture d’écran 2024-11-28 à 17 00 43

En cas de champ simple (input, select, textarea)

@inseo inseo self-assigned this Oct 28, 2024
@inseo inseo changed the title Mise à jour des descriptions de champs Sort les descriptions contribuées des étiquettes de champ et unifomise leur rendu Oct 28, 2024
Copy link

codecov bot commented Oct 28, 2024

Codecov Report

Attention: Patch coverage is 97.50000% with 1 line in your changes missing coverage. Please review.

Project coverage is 84.47%. Comparing base (6e1a3b7) to head (f329833).
Report is 50 commits behind head on main.

Files with missing lines Patch % Lines
app/components/dsfr/input_errorable.rb 90.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #10991      +/-   ##
==========================================
- Coverage   84.48%   84.47%   -0.02%     
==========================================
  Files        1187     1187              
  Lines       26265    26267       +2     
  Branches     4948     4953       +5     
==========================================
- Hits        22189    22188       -1     
- Misses       4076     4079       +3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@inseo inseo force-pushed the a11y-form-fields branch 5 times, most recently from 89d2369 to 1ac6d95 Compare October 29, 2024 14:28
@inseo inseo changed the title Sort les descriptions contribuées des étiquettes de champ et unifomise leur rendu [WIP] Sort les descriptions contribuées des étiquettes de champ et unifomise leur rendu Oct 30, 2024
@inseo inseo force-pushed the a11y-form-fields branch 3 times, most recently from 0f6cd63 to 6f21ffc Compare November 5, 2024 15:46
@tchak
Copy link
Member

tchak commented Nov 21, 2024

je propose d'ajouter une méthode dans EditableChamp::EditableChampBaseComponent

def describedby
  "#{@champ.describedby_id} #{@champ.error_id}"
end

@LeSim LeSim force-pushed the a11y-form-fields branch 5 times, most recently from fc5bfa8 to 8090ef3 Compare November 29, 2024 15:16
@inseo inseo changed the title [WIP] Sort les descriptions contribuées des étiquettes de champ et unifomise leur rendu ETQ usager, je veux que les erreurs et les descriptions soient reliées aux champs concernés Nov 29, 2024
Copy link
Member

@colinux colinux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

déjà, super cette grosse avancée pour le form usager !

quelques petites remarques, je ne sais pas lesquelles sont vraiment adressables

Aussi on avait fait un markup du champ "case à cocher", qui affichait correctement le cas champ obligatoire + texte sur plusieurs lignes car c'est un cas fréquent. Ici l'astérisque passe à la ligne :

Capture d’écran 2024-12-17 à 15 28 44

@@ -1,6 +1,6 @@
.fr-checkbox-group
= @form.check_box :value,
{ required: @champ.required?, id: @champ.input_id, checked: @champ.true?, aria: { describedby: @champ.describedby_id }, class: class_names('required' => @champ.required?)},
{ required: @champ.required?, id: @champ.input_id, checked: @champ.true?, aria: { describedby: "#{@champ.describedby_id} #{@champ.error_id}" }, class: class_names('required' => @champ.required?)},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

c'est pas génant d'avoir des éléments référencés dans aria-describedby qui ne sont pas dans le DOM ? Je veux dire que s'il n'y a pas d'erreur, il n'y a pas cet élément, mais on le liste ici.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alors je crois que c'est bon, tu confirmes @inseo ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alors, le problème s'applique surtout aux champs qui n'ont pas de description, car sauf erreur de ma part, le bloc d'erreur est présent mais simplement vide lorsqu'il n'y a pas d'erreur.

Les tests que j'avais fait semblait dire que ça ne pose pas de problème.
Je vais encore juste faire une repasse de vérification avec TalkBack et NVDA pour être sûre.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je confirme. 👍
J'ai vérifié avec les différentes technologies d'assistance et ça passe bien :

Quand il y a une description (blabla), mais pas d'erreur

nvda_description-sans-erreur.mp4

Quand il y a une erreur (RNF doit être rempli), mais pas de description

nvda_erreur-sans-description.mp4

app/assets/stylesheets/forms.scss Outdated Show resolved Hide resolved
@inseo
Copy link
Contributor Author

inseo commented Dec 19, 2024

@colinux : Merci pour la remarque sur le passage à la ligne de l'astérisque en cas de texte multiligne. J'étais passée à côté...
J'ai poussé un fix qui utilise une classe existante et ai supprimé le morceau de code custom ajouté à form.scss.

Copy link
Member

@colinux colinux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

super et merci pour les précieux tests !

@inseo inseo added this pull request to the merge queue Dec 19, 2024
Merged via the queue into main with commit 151c050 Dec 19, 2024
18 checks passed
@inseo inseo deleted the a11y-form-fields branch December 19, 2024 14:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: En cours
Development

Successfully merging this pull request may close these issues.

4 participants