Data Table with Filters
data-table-filters/data-tableFreeBlock
Data table with search, checkbox, slider, date range filters, sorting, infinite scroll, virtualization, and in-memory state management.
Install it
npx shadcn@latest add https://logs.run/r/data-table.jsonSource
1import { DataTableFilterField } from "@/components/data-table/types";2import { ControlsProvider } from "@/providers/controls";3import type {4 ColumnDef,5 ColumnFiltersState,6 PaginationState,7 RowSelectionState,8 SortingState,9 Table,10 VisibilityState,11} from "@tanstack/react-table";12import { createContext, useContext, useMemo } from "react";13import { DataTableStoreSync } from "./data-table-store-sync";1415// REMINDER: read about how to move controlled state out of the useReactTable hook16// https://github.com/TanStack/table/discussions/4005#discussioncomment-73035691718interface DataTableStateContextType {19 columnFilters: ColumnFiltersState;20 sorting: SortingState;21 rowSelection: RowSelectionState;22 columnOrder: string[];23 columnVisibility: VisibilityState;24 pagination: PaginationState;25 enableColumnOrdering: boolean;26}2728interface DataTableBaseContextType<TData = unknown, TValue = unknown> {29 table: Table<TData>;30 filterFields: DataTableFilterField<TData>[];31 columns: ColumnDef<TData, TValue>[];32 isLoading?: boolean;33 totalRows?: number;34 filterRows?: number;35 getFacetedUniqueValues?: (36 table: Table<TData>,37 columnId: string,38 ) => Map<string, number>;39 getFacetedMinMaxValues?: (40 table: Table<TData>,41 columnId: string,42 ) => undefined | [number, number];43}4445interface DataTableContextType<TData = unknown, TValue = unknown>46 extends DataTableStateContextType,47 DataTableBaseContextType<TData, TValue> {}4849export const DataTableContext = createContext<DataTableContextType<50 any,51 any52> | null>(null);5354export function DataTableProvider<TData, TValue>({55 children,56 ...props57}: Partial<DataTableStateContextType> &58 DataTableBaseContextType<TData, TValue> & {59 children: React.ReactNode;60 }) {61 const value = useMemo(62 // eslint-disable-next-line react-hooks/preserve-manual-memoization63 () => ({64 ...props,65 columnFilters: props.columnFilters ?? [],66 sorting: props.sorting ?? [],67 rowSelection: props.rowSelection ?? {},68 columnOrder: props.columnOrder ?? [],69 columnVisibility: props.columnVisibility ?? {},70 pagination: props.pagination ?? { pageIndex: 0, pageSize: 10 },71 enableColumnOrdering: props.enableColumnOrdering ?? false,72 }),73 [74 props.columnFilters,75 props.sorting,76 props.rowSelection,77 props.columnOrder,78 props.columnVisibility,79 props.pagination,80 props.table,81 props.filterFields,82 props.columns,83// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from data-table-filters
All 11 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Data Table Cell Renderersdata-table-cell | data-table-filters | Blocks | Free | 4 deps · 17 files | |
| Data Table Drizzle ORM Helpersdata-table-drizzle | data-table-filters | Blocks | Free | 2 deps · 7 files | |
| Data Table Filter Command Palettedata-table-filter-command | data-table-filters | Blocks | Free | 2 deps · 2 files | |
| Data Table AI Filter Command Palettedata-table-filter-command-ai | data-table-filters | Blocks | Free | 6 deps · 11 files | |
| Data Table MCP Serverdata-table-mcp | data-table-filters | Blocks | Free | 2 deps · 5 files | |
| Data Table nuqs Store Adapterdata-table-nuqs | data-table-filters | Blocks | Free | 1 dep · 4 files | |
| Data Table Query Layerdata-table-query | data-table-filters | Blocks | Free | 3 deps · 3 files | |
| Data Table Schema Systemdata-table-schema | data-table-filters | Blocks | Free | 1 dep · 13 files |
