TanStack / table

🤖 Headless UI for building powerful tables & datagrids for TS/JS - React-Table, Vue-Table, Solid-Table, Svelte-Table
https://tanstack.com/table
MIT License
24.55k stars 3.03k forks source link

column.enableGlobalFilter is not considered in the default implemenation of table.getColumnCanGlobalFilter #5138

Open bugii opened 9 months ago

bugii commented 9 months ago

Describe the bug

When the first value of a column is neither a string nor a number, this column is considered to be not filterable according to the docs.

However, I would have expected that either:

  1. The default implementation of table.getColumnCanGlobalFilter checks whether enableGlobalFilter is manually set to true inside the columnDefs.
  2. The "more specific" property (in that case on the columnDefs) takes precedence over the global table setting.

Your minimal, reproducible example

https://codesandbox.io/s/cocky-shape-3fct22?file=/src/App.js

Steps to reproduce

Type "hello" into the input box.

Expected behavior

Table is filtered correctly.

How often does this bug happen?

None

Screenshots or Videos

No response

Platform

react-table version

8.10.7

TypeScript version

No response

Additional context

No response

Terms & Code of Conduct

mvarendorff commented 3 weeks ago

I am currently using

    getColumnCanGlobalFilter: (c) =>
      c.columnDef.enableGlobalFilter ??
      Filters.getDefaultOptions!(table).getColumnCanGlobalFilter(c),

as a workaround. This uses the default implementation as a fallback in case no explicit value is set for enableGlobalFilter.

Filters is import { Filters } from "@tanstack/react-table";