From ad0ecace6c415944ec8525c6deeb6320a0b6a4fc Mon Sep 17 00:00:00 2001 From: Patrick Naughton <80646+naughton@users.noreply.github.com> Date: Wed, 12 Aug 2026 17:13:36 -0700 Subject: [PATCH] fix(mantine-react-table): map multi-select filterVariant to arrHas MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit filterVariant: 'multi-select' resolved to the arrIncludesSome filter fn. In v8 that fn happened to work on scalar cell values because it leaned on String.prototype.includes, but the v9 implementation hard-requires an array data value (`if (!Array.isArray(dataValue)) return false`), so a multi-select filter applied to a plain string/number column filters out every row and blanks the table. v9 added arrHas ('keeps rows whose scalar column value equals at least one filter value'), which is exactly the multi-select semantic — a cell holding one value matched against the array of selected options. --- .../src/mantine-react-table/utils/column.utils.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/react/mantine-react-table/src/mantine-react-table/utils/column.utils.ts b/examples/react/mantine-react-table/src/mantine-react-table/utils/column.utils.ts index 40cd10964d..1662e3e468 100644 --- a/examples/react/mantine-react-table/src/mantine-react-table/utils/column.utils.ts +++ b/examples/react/mantine-react-table/src/mantine-react-table/utils/column.utils.ts @@ -99,7 +99,10 @@ export const getDefaultColumnFilterFn = ( columnDef: MRT_ColumnDef, ): MRT_FilterOption => { const { filterVariant } = columnDef - if (filterVariant === 'multi-select') return 'arrIncludesSome' + // v9's arrIncludesSome requires an ARRAY cell value (v8 also matched strings via + // String#includes), so it filters out every row on scalar columns. arrHas + // ("scalar value equals at least one filter value") is the multi-select semantic. + if (filterVariant === 'multi-select') return 'arrHas' if (filterVariant?.includes('range')) return 'betweenInclusive' if (['checkbox', 'date', 'select'].includes(filterVariant || '')) return 'equals'