Composants de données
Les composants de données rendent les enregistrements de vos tables. Chacun se lie à une table via le module partagé dataSource (table, filter, sort, pagination, mode) et rend les enregistrements correspondants sous forme de table, liste, galerie, tableau kanban, calendrier, graphique, KPI ou chronologie. Les champs d'enregistrement sont référencés avec $record.<field> dans les modèles. Voir Présentation des pages → Liaison de données pour le contrat dataSource complet.
components:
- type: data-table
dataSource: { table: tasks, sort: [{ field: due_date, direction: asc }] }
columns:
- { field: title, sortable: true }
- { field: status, format: badge }
- { field: due_date, format: relative-date }
data-table
Une table riche en fonctionnalités avec tri, filtrage, regroupement, sélection, actions groupées, résumés et édition en ligne.
| Propriété |
Description |
dataSource |
Liaison de table (filtre/tri appliqués côté serveur avec logique AND). |
view |
Nom d'une vue de table enregistrée pour hériter des filtres, tris et champs visibles. |
columns |
Définitions de colonnes (voir ci-dessous). Générées automatiquement à partir des champs de table si omises. |
filter |
Conditions de filtre supplémentaires empilées par-dessus les filtres de vue. |
sort |
Règles de tri par défaut (état initial, ou appliquées quand aucun tri de vue n'existe). |
rowHeight |
Préréglage de hauteur de ligne (défaut : medium). |
striped |
Couleurs de lignes alternées (défaut : false). |
bordered |
Afficher les bordures de cellules (défaut : false). |
rowNumbers |
Afficher une colonne de numéros de ligne (défaut : false). |
emptyMessage |
Message affiché lorsqu'aucun enregistrement ne correspond. |
toolbar |
Contrôles de barre d'outils — p. ex. { columnVisibility: true } pour afficher une bascule de visibilité de colonnes. |
selection |
Configuration de sélection de lignes (voir ci-dessous). |
bulkActions |
Actions disponibles lorsque des lignes sont sélectionnées (voir ci-dessous). |
groupBy |
Configuration de regroupement de lignes (voir ci-dessous). |
summary |
Ligne de résumé avec calculs d'agrégats (voir ci-dessous). |
autoSave |
Comportement de sauvegarde de l'édition en ligne — voir Interactivité et scripts → Sauvegarde automatique. |
columns
Chaque entrée définit une colonne.
| Propriété |
Description |
field |
Nom du champ de la table source de données. |
label |
Remplacement du libellé d'en-tête (par défaut le nom d'affichage du champ). |
width |
Largeur de colonne en pixels. |
minWidth |
Largeur minimale de colonne en pixels. |
align |
Alignement du texte : left (défaut), center, right. |
format |
Remplacement du format d'affichage pour le rendu de cellule (p. ex. badge, currency, relative-date). |
pinned |
Épingler la colonne au côté gauche de la table. |
sortable |
Autoriser le tri sur cette colonne (défaut : true). |
filterable |
Autoriser le filtrage sur cette colonne (défaut : true). |
editable |
Autoriser l'édition en ligne (par défaut les permissions de la table). |
hidden |
Visibilité de la colonne (défaut : true = visible). |
conditionalStyles |
Règles { when: { operator: value }, className } appliquant des classes Tailwind quand une condition de cellule est remplie. |
actions |
Boutons d'action (p. ex. modifier/supprimer) avec label, icon et un message de confirmation (prend en charge {count}). |
selection
| Propriété |
Description |
mode |
none (défaut), single, ou multiple. |
showCheckbox |
Afficher une colonne de cases à cocher (défaut : true quand le mode est multiple). |
bulkActions
| Propriété |
Description |
label |
Libellé du bouton d'action groupée. |
icon |
Nom d'icône Lucide (p. ex. truck, trash). |
confirm |
Message du dialogue de confirmation ; prend en charge {count} pour le nombre de lignes sélectionnées. |
action |
L'action invoquée sur les lignes sélectionnées. |
groupBy
| Propriété |
Description |
field |
Champ par lequel regrouper les lignes. |
direction |
Direction de tri des groupes (défaut : asc). |
collapsed |
Démarrer les groupes repliés (défaut : false). |
hideEmpty |
Masquer les groupes vides (défaut : false). |
summary
| Propriété |
Description |
field |
Champ sur lequel calculer le résumé. |
aggregate |
Fonction d'agrégat (sum, avg, count, min, max). |
list
Une liste verticale d'enregistrements, chacun rendu à partir d'un modèle utilisant des références $record.*.
| Propriété |
Description |
dataSource |
Liaison de table. |
template.title |
Texte principal (référence $record.*). |
template.subtitle |
Texte secondaire. |
template.image |
URL d'image (référence $record.*). |
template.badge |
Texte de badge. |
template.meta |
Champs de métadonnées affichés dans le pied de l'élément (field + format). |
pagination |
button (Charger plus) ou infinite (chargement au défilement). |
highlightSearch |
Surligner les termes de recherche correspondants (défaut : false). |
divided |
Afficher des séparateurs entre les éléments (défaut : false). |
maxItems |
Nombre maximal d'éléments à afficher. |
emptyMessage |
Message lorsqu'aucun résultat de recherche ne correspond. |
gallery
Une grille de cartes responsive d'enregistrements.
| Propriété |
Description |
dataSource |
Liaison de table. |
gridColumns |
Nombre de colonnes responsive par point de rupture (mobile, sm, md, lg, xl). |
card.image |
URL d'image de couverture ou référence $record.*. |
card.aspectRatio |
Ratio d'aspect de la couverture (p. ex. 4:3, 16:9, 1:1). |
card.children |
Composants enfants pour le corps de la carte. |
card.overlay |
Composants rendus dans une superposition au survol de la carte. |
kanban
Un tableau glisser-déposer regroupant les enregistrements en colonnes par valeur de champ.
| Propriété |
Description |
dataSource |
Liaison de table. |
groupBy |
Champ dont les valeurs deviennent les colonnes kanban. |
card.children |
Composants enfants pour le corps de la carte. |
card.image |
URL d'image ou référence $record.* pour la couverture de la carte. |
card.colorField |
Champ dont les valeurs définissent la couleur d'arrière-plan de la carte. |
card.footer |
Champs de métadonnées affichés dans le pied de la carte (field + format). |
dragDrop.enabled |
Activer le glisser-déposer entre les colonnes (défaut : true). |
calendar
Un calendrier mois/semaine/jour d'enregistrements porteurs de dates.
| Propriété |
Description |
dataSource |
Liaison de table. |
mode |
Mode d'affichage : month, week, ou day. |
event |
Comment les enregistrements se mappent aux événements de calendrier (champs début/fin, titre, couleur). |
interaction.slotMinutes |
Intervalle de créneau horaire en minutes pour les vues semaine/jour (défaut : 60). |
interaction.nowIndicator |
Afficher une ligne à l'heure actuelle dans les vues semaine/jour. |
chart
Une visualisation de données (barres, lignes, aires) calculée à partir d'enregistrements agrégés.
| Propriété |
Description |
dataSource |
Liaison de table. |
series |
Une ou plusieurs séries { field, color, stackGroup, fillOpacity }. La couleur est un jeton de thème ou un hex. |
xAxis / yAxis |
Config d'axe — { field, scale, format, gridLines }. |
aggregate |
{ function, field, groupBy, interval } pour les données résumées (omettre field pour le comptage). |
legend |
Affichage de la légende { position, show }. |
tooltip |
Modèle de texte d'info-bulle (prend en charge {label} et {value}). |
kpi
Une métrique de résumé unique (une « carte de statistique ») avec tendance et sparkline optionnelles.
| Propriété |
Description |
dataSource |
Liaison de table. |
aggregate |
Agrégat { function, field } (omettre field pour le comptage). |
format |
Formatage de valeur { type, options } (p. ex. { type: currency, options: { currency: USD } }). |
trend |
Comparaison { period, direction, color, change } par rapport à une période précédente. |
sparkline |
Mini-courbe de tendance { field, groupBy, interval, days }. |
data-timeline
Un fil chronologique d'enregistrements ordonnés par un champ date/heure. Rend chaque enregistrement comme une entrée de chronologie.
| Propriété |
Description |
dataSource |
Liaison de table. |
template |
Modèle d'entrée par enregistrement (références $record.* pour titre, corps, horodatage). |
props |
Attributs HTML supplémentaires (p. ex. className). |
Un formulaire adossé à des enregistrements pour les opérations de création/mise à jour sur une table. L'action (crud) détermine s'il crée ou édite, et les champs du formulaire sont générés à partir du schéma de table (remplaçables par champ). Pour la référence complète des champs et la gestion de la soumission, voir Formulaires et Contrôles de formulaire.
| Propriété | Description |
| ------------ | -------------------------------------------------------------------------------------------------------------------- | ------ | ----------------------------------------------------------- |
| dataSource | Liaison de table (mode unique pour l'édition, fournissant les valeurs courantes). |
| fields | Config par champ — { field, label, placeholder, readonly, disabled, default, hidden, accept, dropZone, maxFiles }. |
| layout | Mode de disposition des champs (défaut : single-column). |
| groups | Regrouper les champs sous un séparateur de section étiqueté ({ label, fields }). |
| action | Action crud avec operation: create | update | delete, confirm, et gestionnaires onSuccess/onError. |
- type: data-form
dataSource: { table: contacts, mode: single, param: id }
action:
type: crud
operation: update
onSuccess: { type: navigate, url: /contacts }
fields:
- { field: email, label: 'Email Address' }
- { field: notes, placeholder: 'Internal notes…' }
Pages connexes