Il s'agit d'une table shadcn avec tri, filtrage et pagination côté serveur. Il est bootstrapé avec create-t3-app .

AVERTISSEMENT Ce projet est toujours en développement et n'est pas prêt pour une utilisation en production.
Il utilise de nouvelles technologies (PPR, compilateur React) qui sont susceptibles de changer et peuvent briser votre application.
useDataTable ) dataTable et columns ) filterFields ) Data-Table-Toolbar avec recherche, filtres et actions Notion facultative comme le filtrage avancé ( enableAdvancedFilter Prop) Linear en option sur la sélection de lignes (Prop floatingBar ) Cloner le référentiel
git clone https://github.com/sadmann7/shadcn-tableInstallez les dépendances à l'aide de PNPM
pnpm install Copiez le .env.example sur .env et mettez à jour les variables.
cp .env.example .envDémarrer le serveur de développement
pnpm run devPousser le schéma de la base de données
pnpm run db:pushCopiez les dossiers et fichiers suivants dans votre projet (configuré avec) aux emplacements spécifiques exacts
src/components/data-tablesrc/db/index.tssrc/hookssrc/libsrc/typesInstallez également les composants ShadCN requis et les autres packages requis avec les commandes suivantes:
pnpm dlx shadcn@latest init
pnpm dlx shadcn@latest add badge button calendar checkbox command dialog dropdown-menu form input label popover select separator skeleton sonner table toggle-group tooltip drawer
pnpm add drizzle-orm postgres @tanstack/react-table zod @t3-oss/env-nextjs
pnpm add -D drizzle-kit dotenv-cli pg tsxConfigurez vos variables d'environnement puis configurez l'URL de la base de données, pour cet exemple, nous utilisons la base de données PlanetScale MySQL2. Nos schémas seront également fabriqués en utilisant cela.
Actions de la base de données: Pour cela, vous pouvez utiliser n'importe quel ORM de votre choix, mais pour cet exemple particulier, nous utilisons Drizzle Orm et Neon.
Par exemple, utilisons la table tasks .
@/db/schema.ts@/lib/validations/tasks.tsConfiguration de la table
page.tsx et, si nécessaire, layout.tsx dans votre répertoire d'applications../_components et ./_lib répertoires dans votre projet../_lib/queries.ts , et ./_lib/actions.ts pour correspondre à vos opérations de base de données../_components/tasks-table-floating-bar.tsx pour correspondre aux actions de votre table (facultative)../_components/tasks-table-columns.tsx pour définir des en-têtes de colonne, des actions, des colonnes consultables et filtrables../page.tsx , définissez getTasksPromise , getTaskCountByStatus et getTaskCountByPriority ../_components/tasks-table.tsx , consommez la promesse getTasksPromise à l'aide du crochet React.use . La promesse est adoptée pour déclencher la frontière suspense ../_components/tasks-table.tsx , les colonnes Memoize définies dans ./_components/tasks-table-columns.tsx à l'aide du crochet React.useMemo pour éviter les redimensions inutiles../_components/tasks-table.tsx , appelez ./hooks/useTasksTable.tsx crochet pour gérer la pagination, le tri et le filtrage côté serveur../components/tasks-table-provider.tsx . Le fournisseur est utilisé pour présenter certaines fonctionnalités supplémentaires comme la barre flottante et les filtres avancés. Regardez la vidéo Présentation de la base de code sur YouTube.
Pensez à vous abonner à la chaîne YouTube de Kavin Desi Valli pour plus de vidéos.
Suivez les guides de déploiement de Vercel, Netlify et Docker pour plus d'informations.