Yayaw
Documentation
Vues

Kanban

Transformer une colonne de statut typée en tableau Kanban.

Le Kanban utilise les mêmes lignes, requêtes et actions de modification que le tableau. Groupez par un statut à valeurs finies et n’affichez que les propriétés utiles sur les cartes.

Réglages des cartes

Ouvrez Vue → Réglages des cartes pour sélectionner le titre et les propriétés visibles. Les propriétés et les libellés utilisent des cases à cocher qui restent ouvertes pour plusieurs modifications. Le champ de regroupement reste dans Vue → Grouper. Sur mobile, les choix restent dans le tiroir de la vue et Retour rétablit le contrôle d’origine. Les menus courts n’imposent pas de barre de défilement ; les longues listes restent accessibles par défilement.

Exemple de configuration

Partez du démarrage React ou du démarrage Vue. Le fichier suivant complète leur catalogue de produits. Passez cette configuration via getTableConfig en React ou config en Vue.

pipeline-config.ts
import { defineTableConfig } from "@/components/ui/yayaw-table/config/helpers";
import { productConfig } from "./product-config";

export const pipelineConfig = defineTableConfig({
  ...productConfig,
  table: {
    ...productConfig.table,
    displayModes: ["table", "kanban"],
    defaultDisplayMode: "kanban",
    allowEdit: true,
    enableColumnFilters: true,
    enableAdvancedFilters: true,
    enableViews: true,
    allowViewSave: true,
    allowInlineEdit: true,
    enableGrouping: true,
    kanban: {
      groupBy: "status",
      titleColumn: "name",
      cardColumnIds: ["price", "stock"],
      showCardLabels: true,
    },
  },
});
pipeline-config.ts
import { defineTableConfig } from "@/components/ui/yayaw-table-vue/config";
import { productConfig } from "./product-config";

export const pipelineConfig = defineTableConfig({
  ...productConfig,
  table: {
    ...productConfig.table,
    displayModes: ["table", "kanban"],
    defaultDisplayMode: "kanban",
    allowEdit: true,
    enableColumnFilters: true,
    enableAdvancedFilters: true,
    enableViews: true,
    allowViewSave: true,
    allowInlineEdit: true,
    enableGrouping: true,
    kanban: {
      groupBy: "status",
      titleColumn: "name",
      cardColumnIds: ["price", "stock"],
      showCardLabels: true,
    },
  },
});

Enregistrer le déplacement d’une carte

Déplacer une carte entre des colonnes modifiables met à jour le champ de groupement via update(id, patch). Fournissez cette action et les autorisations d’édition. Le serveur doit valider les transitions et renvoyer un échec lorsqu’il en refuse une. Utilisez des valeurs stables comme draft, active et archived ; leurs libellés peuvent être traduits.

Garder un tableau lisible

titleColumn fournit le titre et cardColumnIds les propriétés ; sans lui, toutes les propriétés de données sauf le titre et la colonne regroupée sont affichées. Recherche, filtres et vues enregistrées restent applicables. Des données serveur paginées ne représentent que les lignes récupérées ; ne présentez pas un compteur de colonne comme un total global sans contrat serveur adapté. Consultez la recette pipeline.

Créer un tableau par statut

Utilisez les trois statuts comme colonnes et affichez seulement le titre et le stock. Branchez editableActions pour que déplacer une carte enregistre son statut.

Copiez cette configuration complète à côté de product-config.ts. Utilisez () => exampleConfig pour getTableConfig en React, ou :config="exampleConfig" en Vue.

Agrandir ↗

Données de démonstration. Les modifications restent dans cet aperçu.

Agrandir ↗

Données de démonstration. Les modifications restent dans cet aperçu.

Afficher les libellés sur des cartes détaillées

Exposez le prix et le stock avec leurs libellés pour la revue des produits. La densité et les calculs de pied de tableau sont masqués en Kanban.

Copiez cette configuration complète à côté de product-config.ts. Utilisez () => exampleConfig pour getTableConfig en React, ou :config="exampleConfig" en Vue.

Agrandir ↗

Données de démonstration. Les modifications restent dans cet aperçu.

Agrandir ↗

Données de démonstration. Les modifications restent dans cet aperçu.

Colonnes chargées sur le serveur

Pour un tableau de suivi complet en consultation, configurez table.kanban.server. groups(signal) renvoie { value, label, totalCount }[] avec des compteurs sur toute la requête autorisée. rows(group, cursor, signal) renvoie { rows, nextCursor } ; null termine la colonne. Le premier curseur vaut null. Chaque colonne se charge séparément et conserve ses lignes et son curseur après un échec.

queryKey représente les filtres, la recherche, le tri, le compte et la révision d’actualisation. Capturez cette requête dans les callbacks et respectez AbortSignal. Changer la clé remplace le tableau précédent. Le serveur contrôle les droits sur les compteurs comme sur les pages ; les compteurs ne sont jamais déduits des seules lignes chargées.

getRowId(row) utilise par défaut String(row.id). onActivate(row) gère la navigation. labels traduit loading, retry, loadMore et empty. Dans React et Vue, ce mode sert à la consultation : déplacement, sélection, commandes groupées et pagination de la grille ne s’appliquent pas aux colonnes incomplètes. Utilisez la grille pour les opérations groupées. Le Kanban local conserve son fonctionnement existant.