Accordéon (Accordion)
Utilisez un accordéon pour masquer ou afficher une section de contenu secondaire sans quitter la page.
attention
Ce composant nécessite une licence Pro valide en production.
| Information | Valeur |
|---|---|
| Niveau | Pro |
| Composants Twig | dsfr:accordion, dsfr:accordion:group |
Usage
- Le bouton porte
aria-expandedet cible le panneau avecaria-controls. - Groupez plusieurs accordéons avec
dsfr:accordion:group.
Modes d'utilisation
- Exemple principal
- Composition
- Attributs HTML
Accordéon · exemple principal
<twig:dsfr:accordion:group>
<twig:dsfr:accordion id="identity" title="Identité du dossier">
<p>Nom, référence administrative et statut du dossier.</p>
</twig:dsfr:accordion>
<twig:dsfr:accordion id="history" title="Historique">
<p>Dernières actions réalisées sur le dossier.</p>
</twig:dsfr:accordion>
</twig:dsfr:accordion:group>
Cette page expose aussi les sous-composants publics suivants : dsfr:accordion:group. Utilisez-les quand vous devez contrôler précisément la structure Twig au lieu de passer un tableau de données.
astuce
Préférez les sous-composants publics aux include, macros ou copies de templates internes. Cela garde votre code aligné avec les évolutions du bundle.
Ajoutez vos attributs applicatifs directement sur le composant quand ils concernent le nœud racine rendu par le template.
Attributs pass-through
<twig:dsfr:accordion
id="accordeon-example"
class="fr-mt-2w"
data-controller="accordeon"
/>
API publique
| Composant | Rôle |
|---|---|
dsfr:accordion | Composant principal de cette page. |
dsfr:accordion:group | Sous-composant public utilisable en composition Twig. |
Configuration
| Option | Type | Défaut / requis | Valeurs et usage |
|---|---|---|---|
id | string | Selon composant | Identifiant HTML, normalisé et utilisé par aria-controls quand nécessaire. |
title | string | Requis ou défaut selon composant | Titre visible du composant. |
expanded | bool | false | Ouvre le panneau au rendu initial. |
icon | string|null | null | Classe d’icône DSFR, par exemple fr-icon-save-line. |
dsfr:accordion:group | slot | Optionnel | Regroupe plusieurs accordéons dans fr-accordions-group. |
Guide d'intégration
| Question | Réponse |
|---|---|
| Famille DSFR | Contenu |
| Quand l'utiliser | Quand vous présentez, organisez ou approfondissez un contenu éditorial ou métier. |
| Quand éviter | Pour les contrôles de formulaire ou la navigation principale, sauf si le composant expose explicitement cette interaction. |
| API publique | Utilisez uniquement les composants Twig listés sur cette page : dsfr:accordion, dsfr:accordion:group. |
| Documentation DSFR | Consultez aussi la bibliothèque officielle : Système de Design de l'État. |
Accordéon : composition avec 1 sous-composant
Variantes de accordéon
- icône DSFR avec
iconet placement contrôlé par la prop dédiée.
Points de contrôle propres à ce composant
- Le bouton porte
aria-expandedet cible le panneau avecaria-controls. - Groupez plusieurs accordéons avec
dsfr:accordion:group. - Testez la composition avec
dsfr:accordion:groupsans copier les templates internes. - Contrôlez l’icône, son placement et le libellé accessible quand l’icône porte seule l’action.
- Validez l’état ouvert, actif ou sélectionné au chargement et après interaction DSFR.
Accessibilité contenu
- Respectez la hiérarchie de titres de la page.
- Les images informatives ont un
altutile ; les images décoratives ont unaltvide. - Les contenus masqués ou ouverts doivent rester pilotables au clavier.
Intégration Symfony/Twig pour dsfr:accordion
- Composez avec les sous-composants publics
dsfr:accordion:groupquand le rendu doit être plus précis que les props. - Ajoutez vos attributs applicatifs (
data-controller,data-action,aria-*,class) surdsfr:accordionquand ils concernent son nœud racine. - Gardez des
idprévisibles pourdsfr:accordion, surtout dans les listes ou formulaires répétés.
Checklist de recette
- ordre de lecture cohérent
- titres dans le bon niveau
- contenu disponible sans souris
- rendu vérifié en thème clair et sombre ;
- rendu vérifié sur mobile, tablette et desktop ;
- aucune erreur dans le profiler DSFR ni dans l'inspecteur d'accessibilité du navigateur.
Erreurs fréquentes
| Symptôme | Correction |
|---|---|
| Les classes DSFR semblent incomplètes | Utilisez les props du composant plutôt que des classes ajoutées à la main. |
| Un panneau, menu ou état actif ne fonctionne pas | Vérifiez que le JavaScript DSFR est chargé et que les identifiants HTML sont uniques. |
| Le composant rend en local mais pas en production | Vérifiez la licence avec php bin/console dsfr:license:validate. |