Contenu

Tableau

جدولTable

Stablesrc/dsm/components/table.tsx
Le tableau présente des données structurées en lignes et colonnes — indicateurs, listes de démarches, résultats de recherche. Il défile horizontalement sur petit écran et prend en charge le tri, le zébrage, l'affichage compact et l'en-tête figé.

Import

import { Table } from "@/dsm/components/table";

Exemples

Par défaut

Un tableau simple avec légende et colonne numérique.

LTR
Démarches les plus consultées cette semaine
DémarcheMinistèreDélai moyen
Renouvellement de la CNIEIntérieur5 jours
Extrait d'acte de naissanceIntérieur48 heures
Carte griseÉquipement et Eau3 jours
Attestation fiscaleÉconomie et Finances24 heures

Variantes

Comparaison des styles zébré et bordé + compact.

LTR

Zébrée

Population des principales villes (RGPH 2024)
VilleRégionPopulation
CasablancaCasablanca-Settat3 359 818
RabatRabat-Salé-Kénitra577 827
FèsFès-Meknès1 112 072
MarrakechMarrakech-Safi928 850
TangerTanger-Tétouan-Al Hoceïma947 952

Bordée et compacte

Population des principales villes (RGPH 2024)
VilleRégionPopulation
CasablancaCasablanca-Settat3 359 818
RabatRabat-Salé-Kénitra577 827
FèsFès-Meknès1 112 072
MarrakechMarrakech-Safi928 850
TangerTanger-Tétouan-Al Hoceïma947 952

Démarches les plus demandées

Cas réel : tri interactif, en-tête figé et zébrage.

LTR
Démarches les plus demandées, par volume mensuel
DémarcheMinistère
Renouvellement de la CNIEIntérieur412 0005 j
Extrait d'acte de naissanceIntérieur356 0002 j
Casier judiciaire (extrait B3)Justice187 3004 j
Carte grise (changement de propriétaire)Équipement et Eau128 5003 j
Attestation fiscaleÉconomie et Finances94 2001 j
Duplicata du permis de conduireÉquipement et Eau41 8007 j

Usage

Quand l'utiliser

  • Utilisez un tableau pour comparer plusieurs valeurs numériques ou catégorielles ligne par ligne.
  • Ajoutez `caption` pour décrire le contenu du tableau, y compris quand `captionHidden` la réserve aux lecteurs d'écran.
  • Utilisez `TableSortButton` lorsque l'utilisateur bénéficie réellement de trier une colonne (volumes, dates, montants).

Quand ne pas l'utiliser

  • N'utilisez pas un tableau pour une simple liste à une colonne : une liste HTML classique suffit et se lit plus facilement au clavier.
  • Évitez plus de 6 à 7 colonnes visibles simultanément : regroupez ou renvoyez le détail vers une page dédiée.

Accessibilité & langues

Accessibilité

  • `TableHeader` pose `scope="col"` automatiquement ; associez toujours vos données à un en-tête explicite.
  • `TableSortButton` place `aria-sort` sur la cellule d'en-tête parente (`ascending`/`descending`) et porte un libellé caché annonçant l'action de tri suivante.
  • Le défilement horizontal reste accessible au clavier via la tabulation naturelle du conteneur `overflow-x-auto`.

RTL & multilingue

  • Les bordures de colonnes (`bordered`) et l'alignement des cellules numériques (`text-end`) s'inversent automatiquement grâce aux propriétés logiques.
  • Le sens du défilement horizontal suit `dir` sans configuration additionnelle.

Propriétés

Table
PropriétéTypeDéfautDescription
captionReactNode—Légende du tableau.
captionHiddenbooleanfalseMasque visuellement la légende (reste accessible).
zebrabooleanfalseAlterne le fond des lignes du corps.
densebooleanfalseRéduit le padding vertical des cellules.
borderedbooleanfalseAjoute un cadre et des séparateurs de colonnes.
stickyHeaderbooleanfalseFige l'en-tête pendant le défilement vertical du conteneur.
containerClassNamestring—Classes appliquées au conteneur de défilement.
TableHeader / TableCell
PropriétéTypeDéfautDescription
numericbooleanfalseAligne le contenu à la fin, en chiffres tabulaires.
TableSortButton
PropriétéTypeDéfautDescription
direction"none" | "asc" | "desc"noneÉtat de tri courant de la colonne.
onSort() => void—Appelé au clic, à vous de faire évoluer `direction` et les données.
numericbooleanfalseAligne le bouton contre la fin de l'en-tête `numeric`.

Composants liés