TanStackT
TanStack3y ago
2 replies
endless-jade

How can I filter by comma separated values?

Hi team. I need to be able to search for item 1, item 2, item 3 instead of just item 1. I created a new filter for this but it's not working.

Here's what I have tried so far:

declare module '@tanstack/table-core' {
  interface FilterFns {
    fuzzy: FilterFn<unknown>;
    csv: FilterFn<unknown>
  }
  interface FilterMeta {
    itemRank: RankingInfo;
  }
}

export const csvFilter: FilterFn<any> = (row, columnId, filterValue) => {
  const filters = filterValue.split(',').map(value => value.trim().toLowerCase());
  
  return filters.includes(String(row.getValue(columnId)).toLowerCase());
};

const table = useReactTable({
  data,
  columns,
  filterFns: {
    fuzzy: fuzzyFilter,
    csv: csvFilter,
  },
  state: {
    columnFilters,
    pagination,
    rowSelection,
  },
  onColumnFiltersChange: setColumnFilters,
  globalFilterFn: csvFilter,
  getCoreRowModel: getCoreRowModel(),
  getFilteredRowModel: getFilteredRowModel(),
  getSortedRowModel: getSortedRowModel(),
  getPaginationRowModel: showPagination ? getPaginationRowModel() : null,
  getFacetedRowModel: getFacetedRowModel(),
  getFacetedUniqueValues: getFacetedUniqueValues(),
  getFacetedMinMaxValues: getFacetedMinMaxValues(),
  enableRowSelection: enableRowSelection,
  onPaginationChange: setPagination,
  onRowSelectionChange: setRowSelection,
});


Any help is appreciated. Thanks!
Was this page helpful?