Coder Social home page Coder Social logo

ktisakib / shadcn-table Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sadmann7/shadcn-table

0.0 0.0 0.0 1.29 MB

A shadcn table component with server-side sorting, filtering, and pagination.

Home Page: https://table.sadmn.com

License: MIT License

JavaScript 2.02% TypeScript 97.20% CSS 0.78%

shadcn-table's Introduction

This is a shadcn table component with server-side sorting, filtering, and pagination. It is bootstrapped with create-t3-app.

Shadcn Table

Warning This project is still in development and is not ready for production use.

It uses new technologies (ppr, and drizzle ORM) which are subject to change and may break your application.

Tech Stack

Features

  • Server-side pagination, sorting, and filtering (via useDataTable hook)
  • Customizable columns (dataTable and columns props)
  • Dynamic debounced search filters, and faceted filters (filterFields prop)
  • Dynamic Data-Table-Toolbar with search, filters, and actions
  • Optional Notion like advanced filtering (enableAdvancedFilter prop)
  • Optional Linear like floating bar on row selection (floatingBar prop)

Running Locally

  1. Clone the repository

    git clone https://github.com/sadmann7/shadcn-table
  2. Install dependencies using pnpm

    pnpm install
  3. Copy the .env.example to .env and update the variables.

    cp .env.example .env
  4. Start the development server

    pnpm run dev
  5. Push the database schema

    pnpm run db:push

Build your own Table

  1. Copy the following folders and files into your project (configured with ) at the exact specific locations

    • src/components/data-table
    • src/db/index.ts
    • src/hooks
    • src/lib
    • src/types

    Also install the required shadcn components and other required packages with the following commands:

    pnpm dlx shadcn-ui@latest init
    
    pnpm dlx shadcn-ui@latest add badge button calendar checkbox command dialog dropdown-menu form input label popover select separator skeleton sonner table toggle-group tooltip
    
    pnpm add drizzle-orm postgres @tanstack/react-table zod @t3-oss/env-nextjs
    pnpm add -D drizzle-kit dotenv-cli pg tsx
  2. Configure your Environment Variables Then set up the Database URL, for this example, we're using PlanetScale MySQL2 Database. Our schemas will also be made using this.

  3. Database Actions: For this you can use any ORM of your choice, but for the sake of this particular example, we're using Drizzle ORM and Neon.

    As an example, lets use the tasks table.

    • Create the Table Schema at @/db/schema.ts
    • Create the associated zod validations @/lib/validations/tasks.ts file
  4. Setting up the Table

    • Create Files: Create page.tsx and, if needed, layout.tsx in your app directory.
    • Copy Directories: Copy ./_components and ./_lib directories into your project.
    • Update Queries/Mutations: Modify ./_lib/queries.ts, ./_lib/actions.ts, and ./_lib/client-actions.ts to match your database operations.
    • Update Floating Bar: Update ./_components/tasks-table-floating-bar.tsx to match your table's actions (optional).
    • Define Table Columns: Update ./_components/tasks-table-columns.tsx to define column headers, actions, searchable and filterable columns.
    • Setup Data Fetching: In ./page.tsx, define getTasksPromise, getTaskCountByStatus, and getTaskCountByPriority.
    • Fetch Data: In ./_components/tasks-table.tsx, consume the getTasksPromise promise using the React.use hook. The promise is passed to trigger the suspense boundary.
    • Memoize Table Columns: In ./_components/tasks-table.tsx, memoize columns defined in ./_components/tasks-table-columns.tsx using React.useMemo hook to prevent unnecessary re-renders.
    • Use Data Table Hook: In ./_components/tasks-table.tsx, call ./hooks/useTasksTable.tsx hook to handle server-side pagination, sorting, and filtering.
    • Remove Tasks Table Provider: Make sure to remove the provider from ./components/tasks-table-provider.tsx. The provider is used to showcase some additional features like floating bar and advanced filters.

Codebase Overview

Watch the codebase overview video on YouTube.

Consider subscribing to Kavin Desi Valli's YouTube channel for more videos.

How do I deploy this?

Follow the deployment guides for Vercel, Netlify and Docker for more information.

shadcn-table's People

Contributors

renovate[bot] avatar sadmann7 avatar kavinvalli avatar mohitkumawat310 avatar yuvarajmadineni avatar aqib-rime avatar cesarscfilho avatar dewodt avatar fellipeutaka avatar eltociear avatar noxify avatar balance8 avatar victormicco avatar zbeyens avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.