YaYaw TableYaYaw Table

Table de donnees React open source pour Shadcn UI et TanStack Table avec etat URL, Server Actions, actions de masse et maitrise totale du code

Documentation YaYaw Table

YaYaw Table est une librairie de tableaux de données flexible pour React. Un seul composant, une API claire : vous passez getTableConfig et getTableActions, puis la table gère l'état URL (Nuqs), les données server-side et les actions CRUD/bulk.

🚀 Démarrage rapide

Installez via la registry Shadcn, puis branchez la configuration et les actions à DataTable :

import { DataTable } from "@/components/ui/yayaw-table";
import { getTableConfig, getTableActions } from "./table-config";

export const MyTable = () => (
  <DataTable
    tableType="products"
    getTableConfig={getTableConfig}
    getTableActions={getTableActions}
    title="Produits"
  />
);

Il vous faut au minimum getTableConfig (colonnes, options de table) et getTableActions (par exemple list pour les données). Pour Next.js avec état URL, ajoutez NuqsAdapter dans votre layout. Voir Provider & Setup pour la configuration complète.

✅ Bénéfices

  • Moins de code répétitif – API claire et focalisée
  • Setup minimalValeurs par défaut robustes
  • Stable – Pas de boucles d'hydratation avec Next.js
  • Propulsé par TanStack Table – Excellentes performances
  • Regroupement intégré – Support expand/collapse
  • Type-safe – Typage TypeScript de bout en bout
  • Compatible SSR – Fonctionne avec Next.js 15+

🔧 Fonctionnalités

Groupement

Le groupement, la pagination et le tri sont activés via la configuration de table et les types de colonnes. Pas de câblage lourd.

Pagination

Contrôles de pagination accessibles avec ARIA correct et navigation clavier.

Tri

Cliquez sur les en-têtes pour trier. Activation/désactivation par colonne.

Types de colonnes

const columns = [
  { id: "name", type: "text", header: "Nom" },
  { id: "brand", type: "tag", header: "Marque" },
  { id: "price", type: "number", header: "Prix" },
  { id: "active", type: "boolean", header: "Actif" },
  { id: "date", type: "date", header: "Créé le" },
];

Barre d'outils & menus

Tout est accessible depuis la barre d'outils :

  • Tri via les en-têtes de colonnes
  • Filtres de colonnes et panneau de filtres avancés
  • Bascules de regroupement quand le type de colonne le permet
  • Menu de visibilité des colonnes (afficher/masquer, réinitialiser l'ordre)
  • Recherche globale
  • Export CSV depuis la barre d'outils (toutes les lignes filtrées)
  • Mode barre d'outils compact (icône + tooltip) via table.actionsAsIcons
  • Menu d'actions de masse (Modifier, Copier, Exporter, Supprimer)
  • Formulaires d'édition auto-générés pour les lignes/éléments

📖 Documentation

🎨 Personnalisation

La table utilise Tailwind par défaut. Vous pouvez personnaliser les classes via les props className standards.

🔗 Exemple

Consultez /example dans ce repo pour un exemple complet d'intégration UI : état URL (Nuqs), filtres avancés, édition de masse et données de démonstration conservées en local (localStorage + réinitialisation du jeu de données).

Pour l'approche server-driven, voir Server-side & Server Actions.

🙏 Remerciements

YaYaw Table s'appuie sur d'excellents projets open-source. Merci à leurs mainteneurs et contributeurs :

  • TanStack Table - moteur de table et fondations de performance
  • TanStack Query - modèle de récupération de données et cache asynchrone
  • shadcn/ui - modèle d'intégration registry et primitives UI
  • Nuqs - modèles de gestion d'état URL
  • Jotai - état atomique léger pour l'UI/table
  • dnd-kit - drag-and-drop pour les interactions de colonnes
  • Floating UI et Base UI - primitives headless accessibles et positionnement robuste

On this page