DataTable Column Faceted Filter
niko-table/data-table-column-faceted-filterFreeComponent
Column header faceted filter with multi-select options in a dropdown.
Install it
npx shadcn@latest add https://niko-table.com/r/data-table-column-faceted-filter.jsonSource
1"use client"23/**4 * niko-table — created by Semir N. (Semkoo, https://github.com/Semkoo) with AI assistance.5 *6 * Before reporting anything: please check the changelog first.7 * - In-repo: ./CHANGELOG.md8 * - Docs site: https://niko-table.com/changelog9 *10 * Found a bug or have a fix? Open an issue or PR on GitHub so other11 * users (and future LLMs reading this code) benefit:12 * https://github.com/Semkoo/niko-table-registry13 */14import React from "react"15import type { Column } from "@tanstack/react-table"1617import {18 TableColumnFacetedFilterOptions,19 TableColumnFacetedFilterMenu,20} from "../filters/table-column-faceted-filter"21import { useDataTable } from "../core/data-table-context"22import { useColumnHeaderContext } from "./data-table-column-header"2324/**25 * Faceted filter options for composing inside DataTableColumnActions using context.26 */27export function DataTableColumnFacetedFilterOptions<TData, TValue>(28 props: Omit<29 React.ComponentProps<typeof TableColumnFacetedFilterOptions>,30 "column"31 > & {32 column?: Column<TData, TValue>33 },34) {35 const context = useColumnHeaderContext<TData, TValue>(false)36 const column = props.column || context?.column3738 if (!column) {39 console.warn(40 "DataTableColumnFacetedFilterOptions must be used within DataTableColumnHeaderRoot or provided with a column prop",41 )42 return null43 }4445 return <TableColumnFacetedFilterOptions column={column} {...props} />46}4748DataTableColumnFacetedFilterOptions.displayName =49 "DataTableColumnFacetedFilterOptions"5051/**52 * Standalone faceted filter menu for column header using context.53 */54export function DataTableColumnFacetedFilterMenu<TData, TValue>(55 props: Omit<56 React.ComponentProps<typeof TableColumnFacetedFilterMenu>,57 "column" | "table"58 > & {59 column?: Column<TData, TValue>60 },61) {62 const context = useColumnHeaderContext<TData, TValue>(false)63 const column = props.column || context?.column64 const { table, generatedOptionsMap } = useDataTable<TData>()6566 if (!column) {67 console.warn(68 "DataTableColumnFacetedFilterMenu must be used within DataTableColumnHeaderRoot or provided with a column prop",69 )70 return null71 }7273 return (74 <TableColumnFacetedFilterMenu75 column={column}76 table={table}77 precomputedOptions={78 // Skip batch cache when caller supplies custom per-column config79 // (dynamicCounts / limitToFilteredRows) so those props are honoured.80// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from niko-table
All 31 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| DataTable Asidedata-table-aside | niko-table | Components | Free | 1 dep | |
| DataTable Clear Filterdata-table-clear-filter | niko-table | Components | Free | 1 dep · 2 files | |
| DataTable Column Auto-fitdata-table-column-auto-fit | niko-table | Components | Free | no deps · 2 files | |
| DataTable Column Date Filterdata-table-column-date-filter | niko-table | Components | Free | 2 deps · 2 files | |
| DataTable Column DnDdata-table-column-dnd | niko-table | Components | Free | 4 deps · 3 files | |
| DataTable Column Hidedata-table-column-hide | niko-table | Components | Free | 1 dep · 2 files | |
| DataTable Column Pindata-table-column-pin | niko-table | Components | Free | 1 dep · 2 files | |
| DataTable Column Resizedata-table-column-resize | niko-table | Components | Free | no deps |
