Table Tableau
Introduction
Le composant Table est un élément de mise en page robuste qui restitue clairement des structures de jeux de données tabulaires complexes sur les pages client. Avec un support complet pour les modèles responsives sans JS et les schémas de configuration CMS pilotés par données, il offre un enroulement de défilement vertical, un alignement dynamique des colonnes et des surbrillances au survol.
Usage
Vous pouvez facilement mapper les données et styliser les tableaux depuis le tableau de bord.
1. Tableau texte simple avec alignement personnalisé
Une liste texte standard avec la variante plain et des prix alignés à droite pour faciliter la lecture.
{
"type": "table",
"variant": "plain",
"columns": [
{ "header": "Name", "key": "name" },
{ "header": "Category", "key": "category" },
{ "header": "Price", "key": "price", "align": "end" }
],
"rows": "[{\"name\": \"Laptop\", \"category\": \"Electronics\", \"price\": \"$999.00\"}, {\"name\": \"Coffee Mug\", \"category\": \"Home & Kitchen\", \"price\": \"$15.00\"}]"
}
| Name | Category | Price |
|---|---|---|
| Laptop | Electronics | $999.00 |
| Coffee Mug | Home & Kitchen | $15.00 |
2. Tableau interactif à bandes zébrées (variante Surface)
Avec des lignes alternées ombrées (zèbre), surbrillance au survol et bordures structurelles.
{
"type": "table",
"variant": "surface",
"striped": true,
"interactive": true,
"columnBorder": true,
"columns": [
{ "header": "System Service", "key": "service" },
{ "header": "Server Node", "key": "node", "align": "center" },
{ "header": "Status", "key": "status", "align": "end" }
],
"rows": "[{\"service\": \"Auth Endpoint\", \"node\": \"EU-West\", \"status\": \"Online\"}, {\"service\": \"Payment API\", \"node\": \"US-East\", \"status\": \"Degraded\"}, {\"service\": \"File Storage\", \"node\": \"APAC-South\", \"status\": \"Online\"}]"
}
| System Service | Server Node | Status |
|---|---|---|
| Auth Endpoint | EU-West | Online |
| Payment API | US-East | Degraded |
| File Storage | APAC-South | Online |
Props
| Propriété | Type de champ CMS | Défaut | Description / options prises en charge |
|---|---|---|---|
Colonnes (columns) | list | - | Liste ordonnée de configurations de colonnes (détails ci-dessous). |
Données de lignes (rows) | text | - | Chaîne de tableau JSON sérialisée brute des lignes (ex. "[{\"item\": \"Laptop\"}]"), parsée automatiquement au rendu. |
Variante (variant) | select | "plain" | Style de mise en page général du conteneur. • Options : "plain", "surface". |
Bandes zébrées (striped) | boolean | false | Si true, ombre les lignes alternées. |
Surbrillance de lignes (interactive) | boolean | false | Active l'animation de fond au survol des cellules actives. |
Bordures de colonne (columnBorder) | boolean | false | Rend des séparateurs verticaux entre colonnes. |
En-tête fixe (stickyHeader) | boolean | false | Épingle la ligne d'en-tête en haut du viewport au défilement. |
Propriétés de la liste Column (columns)
Chaque entrée de la liste columns accepte les champs suivants :
| Sous-propriété | Type | Requis | Description / options prises en charge |
|---|---|---|---|
Texte d'en-tête (header) | string | Oui | Titre de colonne dans la ligne d'en-tête. |
Clé d'item (key) | string | Oui | Clé de propriété dans l'objet de ligne pour cette cellule. |
Alignement du texte (align) | select | "start" | Alignement des valeurs. • Options : "start", "center", "end". |
Architecture Notes
- Conversion optimisée de chaînes JSON : Comme les structures de lignes varient dynamiquement par bloc, Sveltia CMS livre les lignes comme chaîne de tableau JSON échappée dans le champ
rows. Elle est parsée sans risque au rendu, garantissant un bundle minimal. - Hygiène de mise en page CSS pure : En-têtes, contours et bandes zébrées s'appuient sur des variables utilitaires Panda CSS légères, éliminant les décalages et rendant instantanément sur mobile.
- Épinglage au défilement :
stickyHeaderutilise unposition: stickystandard sur les en-têtes dans un wrapper en débordement, évitant les écouteurs de scroll coûteux.