import { Table } from "@tanstack/react-table"; //import { priorities, statuses } from './Data' import { DataTableFilterField } from "@/lib/types"; import { cn } from "@/lib/utils"; import { Button, Input } from "@/ui"; import { CrossIcon } from "lucide-react"; import { useMemo } from "react"; import { DataTableFacetedFilter } from "../DataTableFacetedFilter"; import { DataTableColumnOptions } from "./DataTableColumnOptions"; interface DataTableToolbarProps extends React.HTMLAttributes { table: Table; filterFields?: DataTableFilterField[]; } export function DataTableToolbar({ table, filterFields = [], children, className, ...props }: DataTableToolbarProps) { const isFiltered = table.getState().columnFilters.length > 0; // Memoize computation of searchableColumns and filterableColumns const { searchableColumns, filterableColumns } = useMemo(() => { return { searchableColumns: filterFields.filter((field) => !field.options), filterableColumns: filterFields.filter((field) => field.options), }; }, [filterFields]); return (
{searchableColumns.length > 0 && searchableColumns.map( (column) => table.getColumn(column.value ? String(column.value) : "") && ( table .getColumn(String(column.value)) ?.setFilterValue(event.target.value) } className="w-40 h-8 lg:w-64" /> ), )} {filterableColumns.length > 0 && filterableColumns.map( (column) => table.getColumn(column.value ? String(column.value) : "") && ( ), )} {isFiltered && ( )}
{children} {table.options.enableHiding && }
); /* return (
table.getColumn("customer")?.setFilterValue(event.target.value) } className="h-8 w-[150px] lg:w-[250px]" /> {table.getColumn("status") && ( )} {table.getColumn("priority") && ( )} {isFiltered && ( )}
) */ }