"use client"; import { ColumnDef, ColumnFiltersState, flexRender, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, useReactTable, } from "@tanstack/react-table"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { DataTableViewOptions } from "@/components/DT/DataTableViewOptions"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; import { LucideScanSearch, Trash2 } from "lucide-react"; import { useState } from "react"; interface DataTableProps { columns: ColumnDef[]; data: TData[]; setData: React.Dispatch>; } export function DataTable({ columns, data, setData, }: DataTableProps) { const [columnFilters, setColumnFilters] = useState([]); const [searchColumn, setSearchColumn] = useState("label"); const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), getPaginationRowModel: getPaginationRowModel(), onColumnFiltersChange: setColumnFilters, getFilteredRowModel: getFilteredRowModel(), state: { columnFilters, }, }); return (
column.id === searchColumn )[0].header }'...`} value={ table .getColumn(searchColumn) ?.getFilterValue() as string } onChange={(event) => table .getColumn(searchColumn) ?.setFilterValue(event.target.value) } className="max-w-sm" /> Choose a column to search Search Column {columns .filter( (column) => column.id && column.header ) .map((column, index) => ( {column.header!.toString()} ))} Clear table
{table.getHeaderGroups().map((headerGroup: any) => ( {headerGroup.headers.map((header: any) => { return ( {header.isPlaceholder ? null : flexRender( header.column.columnDef .header, header.getContext() )} ); })} ))} {table.getRowModel().rows?.length ? ( table.getRowModel().rows.map((row: any) => ( {row.getVisibleCells().map((cell: any) => ( {flexRender( cell.column.columnDef.cell, cell.getContext() )} ))} )) ) : ( No results. )}
); }