Aller au contenu principal

Tableau (Table)

Utilisez un tableau pour afficher des données comparables en lignes et colonnes.

attention

Ce composant nécessite une licence Pro valide en production.

InformationValeur
NiveauPro
Composants Twigdsfr:table, dsfr:table:head, dsfr:table:body, dsfr:table:row, dsfr:table:cell, dsfr:table:head:cell

Usage

  • Passez les tableaux avec : ou composez les lignes avec les sous-composants.
  • Les lignes doivent avoir le même nombre de cellules que les en-têtes.

Modes d'utilisation

Tableau · exemple principal
<twig:dsfr:table>
<twig:dsfr:table:head>
<twig:dsfr:table:row>
<twig:dsfr:table:head:cell>Nom</twig:dsfr:table:head:cell>
<twig:dsfr:table:head:cell>Statut</twig:dsfr:table:head:cell>
</twig:dsfr:table:row>
</twig:dsfr:table:head>
<twig:dsfr:table:body>
<twig:dsfr:table:row>
<twig:dsfr:table:cell>Alice Martin</twig:dsfr:table:cell>
<twig:dsfr:table:cell>Actif</twig:dsfr:table:cell>
</twig:dsfr:table:row>
</twig:dsfr:table:body>
</twig:dsfr:table>

<twig:dsfr:table
id="users-table"
caption="Utilisateurs"
:headers="['Nom', 'Statut']"
:rows="[
['Alice Martin', 'Actif'],
['Karim Benali', 'En attente']
]"
/>

API publique

ComposantRôle
dsfr:tableComposant principal de cette page.
dsfr:table:headSous-composant public utilisable en composition Twig.
dsfr:table:bodySous-composant public utilisable en composition Twig.
dsfr:table:rowSous-composant public utilisable en composition Twig.
dsfr:table:cellSous-composant public utilisable en composition Twig.
dsfr:table:head:cellSous-composant public utilisable en composition Twig.

Configuration

OptionTypeDéfaut / requisValeurs et usage
idstringSelon composantIdentifiant HTML, normalisé et utilisé par aria-controls quand nécessaire.
captionstringRequisLégende du tableau.
headers / rowsarray|string[]Données tabulaires, JSON accepté.
captionVisiblebooltrueAffiche ou masque la légende.
bordered / fixedLayout / noScrollboolfalseVariantes DSFR du tableau.
sizeenum|nullnullsm, lg

Guide d'intégration

QuestionRéponse
Famille DSFRContenu
Quand l'utiliserQuand vous présentez, organisez ou approfondissez un contenu éditorial ou métier.
Quand éviterPour les contrôles de formulaire ou la navigation principale, sauf si le composant expose explicitement cette interaction.
API publiqueUtilisez uniquement les composants Twig listés sur cette page : dsfr:table, dsfr:table:head, dsfr:table:body, dsfr:table:row, dsfr:table:cell, dsfr:table:head:cell.
Documentation DSFRConsultez aussi la bibliothèque officielle : Système de Design de l'État.
Tableau : composition Twig et données headers

Variantes de tableau

  • tailles disponibles via size quand le DSFR expose une variante compacte ou large.

Points de contrôle propres à ce composant

  • Passez les tableaux avec : ou composez les lignes avec les sous-composants.
  • Les lignes doivent avoir le même nombre de cellules que les en-têtes.
  • Vérifiez un cas vide, un cas avec plusieurs entrées et un cas avec données dynamiques pour headers.
  • Testez la composition avec dsfr:table:head, dsfr:table:body, dsfr:table:row, dsfr:table:cell, dsfr:table:head:cell sans copier les templates internes.
  • Gardez une légende explicite et cohérente avec les colonnes affichées.

Accessibilité contenu

  • Respectez la hiérarchie de titres de la page.
  • Les images informatives ont un alt utile ; les images décoratives ont un alt vide.
  • Les contenus masqués ou ouverts doivent rester pilotables au clavier.

Intégration Symfony/Twig pour dsfr:table

  • Passez headers avec la syntaxe : pour conserver le type tableau : :headers="headers".
  • Composez avec les sous-composants publics dsfr:table:head, dsfr:table:body, dsfr:table:row, dsfr:table:cell, dsfr:table:head:cell quand le rendu doit être plus précis que les props.
  • Ajoutez vos attributs applicatifs (data-controller, data-action, aria-*, class) sur dsfr:table quand ils concernent son nœud racine.
  • Gardez des id prévisibles pour dsfr:table, 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ômeCorrection
Les données headers ne sont pas prises en compteAjoutez : devant la prop Twig : :headers.
Les classes DSFR semblent incomplètesUtilisez les props du composant plutôt que des classes ajoutées à la main.
Un panneau, menu ou état actif ne fonctionne pasVérifiez que le JavaScript DSFR est chargé et que les identifiants HTML sont uniques.
Le composant rend en local mais pas en productionVérifiez la licence avec php bin/console dsfr:license:validate.