Nouveau Components

Bouton radio

Les boutons radio permettent à l’utilisateur de choisir une seule option parmi un ensemble de choix mutuellement exclusifs. Ils sont adaptés aux formulaires nécessitant une sélection unique et sont facilement utilisables à la souris ou au clavier. Lorsqu’ils sont correctement étiquetés, ils sont totalement compatibles avec les lecteurs d’écran.

Quand l’utiliser

  • Choix binaires : Utiliser des boutons radio pour permettre la sélection d’une option parmi un ensemble de choix mutuellement exclusifs. Par exemple : genre, questions de type Oui/Non, etc.
  • Options regroupées : Utiliser des boutons radio lorsque l’utilisateur doit visualiser toutes les options côte à côte pour comparer facilement les choix disponibles.

Quand ne pas l’utiliser

  1. Options indépendantes : Éviter d’utiliser des boutons radio pour des choix indépendants qui ne font pas partie d’un même groupe. Dans ce cas, les cases à cocher sont plus adaptées.
  2. Listes d’options étendues : Ne pas utiliser de boutons radio lorsque vous présentez une longue liste d’options ; un menu déroulant est alors préférable pour économiser de l’espace.
  3. Sélections multiples : Éviter les boutons radio lorsqu’une sélection multiple est nécessaire ou possible. Les cases à cocher sont plus appropriées dans ce scénario.

Modes d'action

  • Interaction à la souris : Les boutons radio doivent réagir visuellement aux interactions de la souris, par exemple en affichant un rond rempli ou un changement de couleur lorsqu’une option est sélectionnée.
  • Navigation au clavier : Les boutons radio doivent pouvoir être parcourus et sélectionnés via le clavier. L’utilisateur doit pouvoir se déplacer entre les options à l’aide des flèches directionnelles, de la touche Tab et sélectionner une option avec la touche Entrée.
  • Accessibilité lecteur d’écran : Chaque bouton radio doit avoir un libellé textuel clair pour être compris individuellement. Lorsqu’ils font partie d’un groupe de choix, encadrez-les avec <fieldset> et <legend> pour annoncer correctement le groupe et sa fonction. Pour les composants personnalisés, utilisez les attributs ARIA (role="radio" pour identifier chaque bouton comme radio, aria-checked pour indiquer l’état sélectionné ou non).

Contenu

  • Libellé clair : Chaque bouton radio doit comporter un libellé concis décrivant clairement l’option qu’il représente.
  • Regroupement logique : Organiser les boutons radio en ensembles cohérents à l’aide de <fieldset> et <legend>, afin d’indiquer la relation entre les options.
  • Distinction visuelle : Mettre visuellement en évidence le bouton radio sélectionné, à l’aide d’une couleur contrastée ou d’une icône, pour permettre à l’utilisateur d’identifier facilement son choix.
  • Éviter toute ambiguïté : S’assurer que la fonction de chaque bouton radio est explicite et que les conséquences de la sélection sont clairement comprises, afin d’éviter toute confusion sur l’option choisie.

Fichiers et ressources Figma

Nom du composant

Mots-clés

  • Bouton radio : Un élément d’interface permettant de sélectionner une seule option parmi un ensemble de choix mutuellement exclusifs.
  • Formulaire : Une section d'une page web destinée à la saisie et à la sélection d’informations par l’utilisateur.
  • ARIA : Des attributs destinés à améliorer l’accessibilité des contenus web.
  • Fieldset : Permet de regrouper des éléments liés au sein d’un formulaire.
  • Label : Décrit la fonction d’un élément de formulaire, comme un bouton radio.

Détail des composants

Étiquetage et association

  • Élément bouton radio : Élément essentiel pour la sélection utilisateur, chaque bouton radio partage un même attribut name tout en conservant un identifiant (id) distinct permettant son étiquetage individuel.

Regroupement et fieldset

  • Fieldset et Legend : Utilisés pour regrouper logiquement des boutons radio, avec le fieldset qui englobe l’ensemble, et le legend qui fournit un titre ou une description générale du groupe.

Indication d’état – Boutons radio personnalisés

  • Attributs ARIA : Essentiels pour les utilisateurs de lecteurs d’écran. Des attributs comme aria-checked indiquent l’état de sélection, tandis que role="radio" décrit correctement la fonction de l’élément.
  • Navigation clavier : Assure la navigabilité au clavier des boutons radio, en permettant le contrôle du focus grâce à tabindex="0" et l’interaction via des événements clavier gérés en JavaScript.

Gestion des erreurs et retours utilisateur

  • Mettre en place des mécanismes de retour clairs et immédiats pour la gestion des erreurs, afin de guider les utilisateurs dans la correction de leurs choix grâce à des indices visuels ou des messages d’erreur explicites.

Directives de test

  • Pour réaliser efficacement des tests de conformité accessibilité, il est essentiel de prioriser la navigation au clavier et d’utiliser un lecteur d’écran afin de vérifier le respect des normes d’accessibilité.

Aperçu du code

Bouton radio natif

  1. Chaque bouton radio est associé à un élément <label> grâce à l’attribut for du label, relié à un id identique sur l’élément <input>. Cela garantit que les lecteurs d’écran annoncent correctement le libellé correspondant.
  2. Les boutons radio doivent être placés dans un élément <fieldset>, qui contient un libellé descriptif fourni par l’élément <legend>. Ce regroupement et ce libellé permettent d’organiser les options et de clarifier leur objectif.
  3. Les boutons radio input type="radio" sont intrinsèquement accessibles au clavier. Ils affichent l’indication de focus par défaut du navigateur ou peuvent être personnalisés via CSS pour offrir une indication de focus visible.

Bouton radio personnalisé

Lors de la création de boutons radio personnalisés, toutes les fonctionnalités d’accessibilité héritées de input type="radio" et du fieldset doivent être ajoutées manuellement, soit via des attributs ARIA, soit via du JavaScript.

Regroupement et légende

  • Entourer chaque bouton radio personnalisé dans des éléments de liste (<li>) organisés au sein d’une liste non ordonnée (<ul>).
  • Ajouter role="radiogroup" à l’élément <ul> afin que la liste soit reconnue comme un groupe de boutons radio.
  • Ajouter un identifiant unique (id) au <legend> du groupe de boutons radio, puis ajouter un attribut aria-labelledby sur l’élément <ul> contenant l’ID du <legend>. Cela garantit qu’un lecteur d’écran annoncera la légende lorsque le focus arrive sur le premier bouton radio.
  • Inclure l’attribut aria-activedescendant sur l’élément <ul> et lui attribuer l’ID du bouton radio visuellement sélectionné. Cet attribut indique aux technologies d’assistance quel bouton radio est actuellement actif (sélectionné) dans le groupe.

Boutons radio

  • Transformer chaque <li> en bouton radio en ajoutant role="radio" à l’élément. Cela garantit une sémantique claire et une accessibilité correcte pour les lecteurs d’écran.
  • Veiller à ce que chaque <li> contienne l’attribut aria-checked.
    Définir sa valeur à true pour le bouton radio sélectionné et à false pour tous les autres. Il est crucial qu’un unique bouton radio au sein du groupe ait aria-checked="true". Cet attribut informe les technologies d’assistance de l’état de sélection de chaque bouton radio.
  • Inclure tabindex="0" sur tous les boutons radio (éléments <li>).
    Cela leur permet d’être inclus dans l’ordre de tabulation et d’être accessibles à la navigation au clavier. Cet attribut garantit que l’utilisateur peut interagir au clavier avec les boutons radio personnalisés.

Interactions clavier

  • Toutes les interactions clavier pour un bouton radio personnalisé doivent être gérées en JavaScript. Consultez l’onglet “Navigation au clavier” pour voir l’ensemble des interactions prises en charge.

Accessibilité pour les lecteurs d’écran

  • Étiquetage clair : Chaque bouton radio doit être étiqueté pour les lecteurs d’écran à l’aide de l’attribut for.
  • Contexte de groupe : Les balises <fieldset> et <legend> fournissent un contexte pour un ensemble de boutons radio, ce qui facilite la compréhension pour les utilisateurs de lecteurs d’écran.
  • Navigation au clavier : Les boutons radio doivent pouvoir être parcourus et sélectionnés via le clavier.
  • Communication de l’état : Les lecteurs d’écran annoncent l’état sélectionné lorsqu’un bouton radio reçoit le focus.
  • HTML sémantique : L’utilisation des balises HTML standard (input, label, fieldset, legend) garantit un support d’accessibilité natif.
Accordion keyboard navigation function table
Touche Fonction
Tab
  • Le focus se place sur le bouton radio actuellement sélectionné.
  • S’il n’y a pas de bouton sélectionné, le focus va sur le premier bouton du groupe.
Flèche bas / droite
  • Déplace le focus vers le bouton suivant et le sélectionne, tout en désélectionnant le précédent.
  • Si le dernier bouton est actif, le focus revient sur le premier, qui est sélectionné.
Flèche haut / gauche
  • Déplace le focus vers le bouton précédent et le sélectionne, tout en désélectionnant le précédent.
  • Si le premier bouton est actif, le focus passe au dernier, qui est sélectionné.
Entrée / Espace
  • Sélectionne le bouton radio sur lequel le focus est placé.
  • Si le bouton est déjà sélectionné, aucune action n’est effectuée.