@tanstack/table-core 8.0.0-alpha.65 → 8.0.0-alpha.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/aggregationFns.js +25 -37
- package/build/cjs/aggregationFns.js.map +1 -1
- package/build/cjs/core.js +167 -48
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +24 -40
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/Cells.js +28 -34
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +136 -225
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js +57 -84
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +79 -126
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +137 -288
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +71 -117
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +125 -205
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +32 -44
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +79 -82
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +99 -178
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +133 -204
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Rows.js +32 -22
- package/build/cjs/features/Rows.js.map +1 -1
- package/build/cjs/features/Sorting.js +67 -136
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +56 -118
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +48 -72
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/index.js +13 -13
- package/build/cjs/sortingFns.js +21 -21
- package/build/cjs/sortingFns.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +49 -55
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getCoreRowModel.js +98 -0
- package/build/cjs/utils/getCoreRowModel.js.map +1 -0
- package/build/cjs/utils/getExpandedRowModel.js +18 -22
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedMinMaxValues.js +48 -0
- package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -0
- package/build/cjs/utils/getFacetedRowModel.js +50 -0
- package/build/cjs/utils/getFacetedRowModel.js.map +1 -0
- package/build/cjs/utils/getFacetedUniqueValues.js +48 -0
- package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -0
- package/build/cjs/utils/getFilteredRowModel.js +130 -0
- package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
- package/build/cjs/utils/getGroupedRowModel.js +126 -136
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +39 -39
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModel.js +112 -0
- package/build/cjs/utils/getSortedRowModel.js.map +1 -0
- package/build/cjs/utils.js +36 -207
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +2024 -2971
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +421 -481
- package/build/types/core.d.ts +3 -5
- package/build/types/features/Cells.d.ts +1 -1
- package/build/types/features/ColumnSizing.d.ts +4 -15
- package/build/types/features/Columns.d.ts +1 -1
- package/build/types/features/Expanding.d.ts +2 -7
- package/build/types/features/Filters.d.ts +24 -21
- package/build/types/features/Grouping.d.ts +5 -11
- package/build/types/features/Ordering.d.ts +1 -1
- package/build/types/features/Pagination.d.ts +3 -3
- package/build/types/features/Pinning.d.ts +1 -5
- package/build/types/features/RowSelection.d.ts +2 -8
- package/build/types/features/Rows.d.ts +4 -3
- package/build/types/features/Sorting.d.ts +5 -15
- package/build/types/features/Visibility.d.ts +1 -4
- package/build/types/index.d.ts +6 -4
- package/build/types/types.d.ts +3 -15
- package/build/types/utils/filterRowsUtils.d.ts +3 -3
- package/build/types/utils/getCoreRowModel.d.ts +2 -0
- package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
- package/build/types/utils/getFacetedRowModel.d.ts +2 -0
- package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
- package/build/types/utils/{getCoreRowModelSync.d.ts → getFilteredRowModel.d.ts} +1 -1
- package/build/types/utils/getGroupedRowModel.d.ts +1 -1
- package/build/types/utils/getSortedRowModel.d.ts +2 -0
- package/build/types/utils.d.ts +1 -17
- package/build/umd/index.development.js +2053 -3002
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/core.ts +197 -47
- package/src/features/Cells.ts +7 -11
- package/src/features/ColumnSizing.ts +89 -139
- package/src/features/Columns.ts +10 -13
- package/src/features/Expanding.ts +62 -107
- package/src/features/Filters.ts +201 -308
- package/src/features/Grouping.ts +55 -81
- package/src/features/Headers.ts +18 -40
- package/src/features/Ordering.ts +6 -4
- package/src/features/Pagination.ts +31 -17
- package/src/features/Pinning.ts +79 -96
- package/src/features/RowSelection.ts +68 -118
- package/src/features/Rows.ts +21 -6
- package/src/features/Sorting.ts +47 -103
- package/src/features/Visibility.ts +24 -47
- package/src/filterFns.ts +9 -9
- package/src/index.ts +12 -4
- package/src/sortingFns.ts +11 -11
- package/src/types.ts +3 -18
- package/src/utils/filterRowsUtils.ts +47 -68
- package/src/utils/{getCoreRowModelSync.ts → getCoreRowModel.ts} +3 -9
- package/src/utils/getExpandedRowModel.ts +2 -2
- package/src/utils/getFacetedMinMaxValues.ts +37 -0
- package/src/utils/getFacetedRowModel.ts +50 -0
- package/src/utils/getFacetedUniqueValues.ts +37 -0
- package/src/utils/getFilteredRowModel.ts +150 -0
- package/src/utils/getGroupedRowModel.ts +53 -62
- package/src/utils/getPaginationRowModel.ts +1 -1
- package/src/utils/{getSortedRowModelSync.ts → getSortedRowModel.ts} +7 -7
- package/src/utils.ts +28 -236
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
- package/build/cjs/utils/getCoreRowModelAsync.js +0 -125
- package/build/cjs/utils/getCoreRowModelAsync.js.map +0 -1
- package/build/cjs/utils/getCoreRowModelSync.js +0 -102
- package/build/cjs/utils/getCoreRowModelSync.js.map +0 -1
- package/build/cjs/utils/getFilteredRowModelSync.js +0 -130
- package/build/cjs/utils/getFilteredRowModelSync.js.map +0 -1
- package/build/cjs/utils/getSortedRowModelSync.js +0 -118
- package/build/cjs/utils/getSortedRowModelSync.js.map +0 -1
- package/build/types/utils/getCoreRowModelAsync.d.ts +0 -4
- package/build/types/utils/getFilteredRowModelAsync.d.ts +0 -4
- package/build/types/utils/getFilteredRowModelSync.d.ts +0 -2
- package/build/types/utils/getSortedRowModelAsync.d.ts +0 -13
- package/build/types/utils/getSortedRowModelSync.d.ts +0 -2
- package/src/utils/getCoreRowModelAsync.ts +0 -104
- package/src/utils/getFilteredRowModelAsync.ts +0 -49
- package/src/utils/getFilteredRowModelSync.ts +0 -150
- package/src/utils/getSortedRowModelAsync.ts +0 -200
package/src/features/Filters.ts
CHANGED
|
@@ -16,13 +16,12 @@ import {
|
|
|
16
16
|
memo,
|
|
17
17
|
Overwrite,
|
|
18
18
|
} from '../utils'
|
|
19
|
-
import { filterRows } from '../utils/filterRowsUtils'
|
|
20
19
|
|
|
21
20
|
export type FiltersTableState = {
|
|
22
21
|
columnFilters: ColumnFiltersState
|
|
23
22
|
globalFilter: any
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
// filtersProgress: number
|
|
24
|
+
// facetProgress: Record<string, number>
|
|
26
25
|
}
|
|
27
26
|
|
|
28
27
|
export type ColumnFiltersState = ColumnFilter[]
|
|
@@ -32,6 +31,12 @@ export type ColumnFilter = {
|
|
|
32
31
|
value: unknown
|
|
33
32
|
}
|
|
34
33
|
|
|
34
|
+
export type ResolvedColumnFilter<TGenerics extends TableGenerics> = {
|
|
35
|
+
id: string
|
|
36
|
+
resolvedValue: unknown
|
|
37
|
+
filterFn: FilterFn<TGenerics>
|
|
38
|
+
}
|
|
39
|
+
|
|
35
40
|
export type FilterFn<TGenerics extends TableGenerics> = {
|
|
36
41
|
(row: Row<TGenerics>, columnId: string, filterValue: any): boolean
|
|
37
42
|
resolveFilterValue?: TransformFilterValueFn<TGenerics>
|
|
@@ -68,15 +73,20 @@ export type FiltersColumnDef<TGenerics extends TableGenerics> = {
|
|
|
68
73
|
|
|
69
74
|
export type FiltersColumn<TGenerics extends TableGenerics> = {
|
|
70
75
|
filterFn: FilterFnOption<Overwrite<TGenerics, { Value: any }>>
|
|
71
|
-
|
|
76
|
+
getAutoFilterFn: () => FilterFn<TGenerics> | undefined
|
|
77
|
+
getFilterFn: () => FilterFn<TGenerics> | undefined
|
|
78
|
+
setFilterValue: (updater: Updater<any>) => void
|
|
79
|
+
getCanFilter: () => boolean
|
|
72
80
|
getCanGlobalFilter: () => boolean
|
|
73
|
-
getColumnFilterIndex: () => number
|
|
74
|
-
getColumnIsFiltered: () => boolean
|
|
75
|
-
getColumnFilterValue: () => unknown
|
|
76
|
-
setColumnFilterValue: (updater: Updater<any>) => void
|
|
77
81
|
getFacetedRowModel: () => RowModel<TGenerics>
|
|
82
|
+
_getFacetedRowModel?: () => RowModel<TGenerics>
|
|
83
|
+
getIsFiltered: () => boolean
|
|
84
|
+
getFilterValue: () => unknown
|
|
85
|
+
getFilterIndex: () => number
|
|
78
86
|
getFacetedUniqueValues: () => Map<any, number>
|
|
87
|
+
_getFacetedUniqueValues?: () => Map<any, number>
|
|
79
88
|
getFacetedMinMaxValues: () => [any, any]
|
|
89
|
+
_getFacetedMinMaxValues?: () => [any, any]
|
|
80
90
|
}
|
|
81
91
|
|
|
82
92
|
export type FiltersRow<TGenerics extends TableGenerics> = {
|
|
@@ -89,35 +99,39 @@ export type FiltersOptions<TGenerics extends TableGenerics> = {
|
|
|
89
99
|
manualFiltering?: boolean
|
|
90
100
|
filterFromLeafRows?: boolean
|
|
91
101
|
filterFns?: TGenerics['FilterFns']
|
|
102
|
+
getFilteredRowModel?: (
|
|
103
|
+
instance: TableInstance<TGenerics>
|
|
104
|
+
) => () => RowModel<TGenerics>
|
|
92
105
|
|
|
93
106
|
// Column
|
|
94
107
|
onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>
|
|
95
108
|
enableColumnFilters?: boolean
|
|
96
|
-
getFilteredRowModel?: (
|
|
97
|
-
instance: TableInstance<TGenerics>
|
|
98
|
-
) => () => RowModel<TGenerics>
|
|
99
109
|
|
|
100
110
|
// Global
|
|
101
111
|
globalFilterFn?: FilterFnOption<TGenerics>
|
|
102
112
|
onGlobalFilterChange?: OnChangeFn<any>
|
|
103
113
|
enableGlobalFilter?: boolean
|
|
104
114
|
getColumnCanGlobalFilter?: (column: Column<TGenerics>) => boolean
|
|
115
|
+
|
|
116
|
+
// Faceting
|
|
117
|
+
getFacetedRowModel?: (
|
|
118
|
+
instance: TableInstance<TGenerics>,
|
|
119
|
+
columnId: string
|
|
120
|
+
) => () => RowModel<TGenerics>
|
|
121
|
+
getFacetedUniqueValues?: (
|
|
122
|
+
instance: TableInstance<TGenerics>,
|
|
123
|
+
columnId: string
|
|
124
|
+
) => () => Map<any, number>
|
|
125
|
+
getFacetedMinMaxValues?: (
|
|
126
|
+
instance: TableInstance<TGenerics>,
|
|
127
|
+
columnId: string
|
|
128
|
+
) => () => [number, number]
|
|
105
129
|
}
|
|
106
130
|
|
|
107
131
|
export type FiltersInstance<TGenerics extends TableGenerics> = {
|
|
108
|
-
getColumnAutoFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined
|
|
109
|
-
|
|
110
|
-
getColumnFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined
|
|
111
|
-
|
|
112
132
|
setColumnFilters: (updater: Updater<ColumnFiltersState>) => void
|
|
113
|
-
setColumnFilterValue: (columnId: string, updater: Updater<any>) => void
|
|
114
|
-
resetColumnFilters: () => void
|
|
115
|
-
getColumnCanColumnFilter: (columnId: string) => boolean
|
|
116
|
-
getColumnFacetedRowModel: (columnId: string) => RowModel<TGenerics>
|
|
117
133
|
|
|
118
|
-
|
|
119
|
-
getColumnFilterValue: (columnId: string) => unknown
|
|
120
|
-
getColumnFilterIndex: (columnId: string) => number
|
|
134
|
+
resetColumnFilters: (defaultState?: boolean) => void
|
|
121
135
|
|
|
122
136
|
// Column Filters
|
|
123
137
|
getPreFilteredRowModel: () => RowModel<TGenerics>
|
|
@@ -126,13 +140,15 @@ export type FiltersInstance<TGenerics extends TableGenerics> = {
|
|
|
126
140
|
|
|
127
141
|
// Global Filters
|
|
128
142
|
setGlobalFilter: (updater: Updater<any>) => void
|
|
129
|
-
resetGlobalFilter: () => void
|
|
143
|
+
resetGlobalFilter: (defaultState?: boolean) => void
|
|
130
144
|
getGlobalAutoFilterFn: () => FilterFn<TGenerics> | undefined
|
|
131
145
|
getGlobalFilterFn: () => FilterFn<TGenerics> | undefined
|
|
132
|
-
getColumnCanGlobalFilter: (columnId: string) => boolean
|
|
133
146
|
getGlobalFacetedRowModel: () => RowModel<TGenerics>
|
|
147
|
+
_getGlobalFacetedRowModel?: () => RowModel<TGenerics>
|
|
134
148
|
getGlobalFacetedUniqueValues: () => Map<any, number>
|
|
149
|
+
_getGlobalFacetedUniqueValues?: () => Map<any, number>
|
|
135
150
|
getGlobalFacetedMinMaxValues: () => [number, number]
|
|
151
|
+
_getGlobalFacetedMinMaxValues?: () => [number, number]
|
|
136
152
|
}
|
|
137
153
|
|
|
138
154
|
//
|
|
@@ -150,8 +166,8 @@ export const Filters: TableFeature = {
|
|
|
150
166
|
return {
|
|
151
167
|
columnFilters: [],
|
|
152
168
|
globalFilter: undefined,
|
|
153
|
-
|
|
154
|
-
|
|
169
|
+
// filtersProgress: 1,
|
|
170
|
+
// facetProgress: {},
|
|
155
171
|
...state,
|
|
156
172
|
}
|
|
157
173
|
},
|
|
@@ -162,12 +178,13 @@ export const Filters: TableFeature = {
|
|
|
162
178
|
return {
|
|
163
179
|
onColumnFiltersChange: makeStateUpdater('columnFilters', instance),
|
|
164
180
|
onGlobalFilterChange: makeStateUpdater('globalFilter', instance),
|
|
165
|
-
filterFromLeafRows:
|
|
181
|
+
filterFromLeafRows: false,
|
|
166
182
|
globalFilterFn: 'auto',
|
|
167
183
|
getColumnCanGlobalFilter: column => {
|
|
168
184
|
const value = instance
|
|
169
185
|
.getCoreRowModel()
|
|
170
|
-
.flatRows[0]?.getAllCellsByColumnId()
|
|
186
|
+
.flatRows[0]?.getAllCellsByColumnId()
|
|
187
|
+
[column.id]?.getValue()
|
|
171
188
|
|
|
172
189
|
return typeof value === 'string'
|
|
173
190
|
},
|
|
@@ -180,86 +197,10 @@ export const Filters: TableFeature = {
|
|
|
180
197
|
): FiltersColumn<TGenerics> => {
|
|
181
198
|
return {
|
|
182
199
|
filterFn: column.filterFn,
|
|
183
|
-
|
|
184
|
-
getCanGlobalFilter: () => instance.getColumnCanGlobalFilter(column.id),
|
|
185
|
-
getColumnFilterIndex: () => instance.getColumnFilterIndex(column.id),
|
|
186
|
-
getColumnIsFiltered: () => instance.getColumnIsFiltered(column.id),
|
|
187
|
-
getColumnFilterValue: () => instance.getColumnFilterValue(column.id),
|
|
188
|
-
setColumnFilterValue: val =>
|
|
189
|
-
instance.setColumnFilterValue(column.id, val),
|
|
190
|
-
getFacetedRowModel: memo(
|
|
191
|
-
() => [
|
|
192
|
-
instance.getPreFilteredRowModel(),
|
|
193
|
-
instance.getState().columnFilters,
|
|
194
|
-
instance.getState().globalFilter,
|
|
195
|
-
// Include this to force the filtered facet info to be calculated
|
|
196
|
-
instance.getFilteredRowModel(),
|
|
197
|
-
],
|
|
198
|
-
(rowModel, columnFilters, globalFilter, _) => {
|
|
199
|
-
if (!columnFilters?.length && !globalFilter) {
|
|
200
|
-
return rowModel
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
return filterRows(
|
|
204
|
-
rowModel.rows,
|
|
205
|
-
[
|
|
206
|
-
...columnFilters.map(d => d.id).filter(d => d !== column.id),
|
|
207
|
-
globalFilter ? '__global__' : undefined,
|
|
208
|
-
].filter(Boolean) as string[],
|
|
209
|
-
instance
|
|
210
|
-
)
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
key:
|
|
214
|
-
process.env.NODE_ENV === 'production' &&
|
|
215
|
-
'getFacetedRowModel_' + column.id,
|
|
216
|
-
debug: () =>
|
|
217
|
-
instance.options.debugAll ?? instance.options.debugColumns,
|
|
218
|
-
}
|
|
219
|
-
),
|
|
220
|
-
getFacetedUniqueValues: memo(
|
|
221
|
-
() => [column.getFacetedRowModel()],
|
|
222
|
-
facetedRowModel => getRowModelUniqueValues(facetedRowModel, column.id),
|
|
223
|
-
{
|
|
224
|
-
key:
|
|
225
|
-
process.env.NODE_ENV === 'production' &&
|
|
226
|
-
'column.getFacetedUniqueValues',
|
|
227
|
-
debug: () =>
|
|
228
|
-
instance.options.debugAll ?? instance.options.debugColumns,
|
|
229
|
-
}
|
|
230
|
-
),
|
|
231
|
-
getFacetedMinMaxValues: memo(
|
|
232
|
-
() => [column.getFacetedRowModel()],
|
|
233
|
-
facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),
|
|
234
|
-
{
|
|
235
|
-
key:
|
|
236
|
-
process.env.NODE_ENV === 'production' &&
|
|
237
|
-
'column.getFacetedMinMaxValues',
|
|
238
|
-
debug: () =>
|
|
239
|
-
instance.options.debugAll ?? instance.options.debugColumns,
|
|
240
|
-
}
|
|
241
|
-
),
|
|
242
|
-
}
|
|
243
|
-
},
|
|
244
|
-
|
|
245
|
-
createRow: <TGenerics extends TableGenerics>(
|
|
246
|
-
row: Row<TGenerics>,
|
|
247
|
-
instance: TableInstance<TGenerics>
|
|
248
|
-
): FiltersRow<TGenerics> => {
|
|
249
|
-
return {
|
|
250
|
-
columnFilterMap: {},
|
|
251
|
-
subRowsByFacetId: {},
|
|
252
|
-
}
|
|
253
|
-
},
|
|
254
|
-
|
|
255
|
-
createInstance: <TGenerics extends TableGenerics>(
|
|
256
|
-
instance: TableInstance<TGenerics>
|
|
257
|
-
): FiltersInstance<TGenerics> => {
|
|
258
|
-
return {
|
|
259
|
-
getColumnAutoFilterFn: columnId => {
|
|
200
|
+
getAutoFilterFn: () => {
|
|
260
201
|
const firstRow = instance.getCoreRowModel().flatRows[0]
|
|
261
202
|
|
|
262
|
-
const value = firstRow?.
|
|
203
|
+
const value = firstRow?.getValue(column.id)
|
|
263
204
|
|
|
264
205
|
if (typeof value === 'string') {
|
|
265
206
|
return filterFns.includesString
|
|
@@ -279,30 +220,13 @@ export const Filters: TableFeature = {
|
|
|
279
220
|
|
|
280
221
|
return filterFns.weakEquals
|
|
281
222
|
},
|
|
282
|
-
|
|
283
|
-
const column = instance.getColumn(columnId)
|
|
284
|
-
|
|
285
|
-
if (!column) {
|
|
286
|
-
throw new Error()
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
return column.getFacetedRowModel()
|
|
290
|
-
},
|
|
291
|
-
getGlobalAutoFilterFn: () => {
|
|
292
|
-
return filterFns.includesString
|
|
293
|
-
},
|
|
294
|
-
getColumnFilterFn: columnId => {
|
|
295
|
-
const column = instance.getColumn(columnId)
|
|
223
|
+
getFilterFn: () => {
|
|
296
224
|
const userFilterFns = instance.options.filterFns
|
|
297
225
|
|
|
298
|
-
if (!column) {
|
|
299
|
-
throw new Error()
|
|
300
|
-
}
|
|
301
|
-
|
|
302
226
|
return isFunction(column.filterFn)
|
|
303
227
|
? column.filterFn
|
|
304
228
|
: column.filterFn === 'auto'
|
|
305
|
-
?
|
|
229
|
+
? column.getAutoFilterFn()
|
|
306
230
|
: (userFilterFns as Record<string, any>)?.[
|
|
307
231
|
column.filterFn as string
|
|
308
232
|
] ??
|
|
@@ -310,60 +234,7 @@ export const Filters: TableFeature = {
|
|
|
310
234
|
column.filterFn as BuiltInFilterFn
|
|
311
235
|
] as FilterFn<TGenerics>)
|
|
312
236
|
},
|
|
313
|
-
|
|
314
|
-
getGlobalFilterFn: () => {
|
|
315
|
-
const { filterFns: userFilterFns, globalFilterFn: globalFilterFn } =
|
|
316
|
-
instance.options
|
|
317
|
-
|
|
318
|
-
return isFunction(globalFilterFn)
|
|
319
|
-
? globalFilterFn
|
|
320
|
-
: globalFilterFn === 'auto'
|
|
321
|
-
? instance.getGlobalAutoFilterFn()
|
|
322
|
-
: (userFilterFns as Record<string, any>)?.[
|
|
323
|
-
globalFilterFn as string
|
|
324
|
-
] ??
|
|
325
|
-
(filterFns[
|
|
326
|
-
globalFilterFn as BuiltInFilterFn
|
|
327
|
-
] as FilterFn<TGenerics>)
|
|
328
|
-
},
|
|
329
|
-
|
|
330
|
-
setColumnFilters: (updater: Updater<ColumnFiltersState>) => {
|
|
331
|
-
const leafColumns = instance.getAllLeafColumns()
|
|
332
|
-
|
|
333
|
-
const updateFn = (old: ColumnFiltersState) => {
|
|
334
|
-
return functionalUpdate(updater, old)?.filter(filter => {
|
|
335
|
-
const column = leafColumns.find(d => d.id === filter.id)
|
|
336
|
-
|
|
337
|
-
if (column) {
|
|
338
|
-
const filterFn = instance.getColumnFilterFn(column.id)
|
|
339
|
-
|
|
340
|
-
if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
|
|
341
|
-
return false
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
return true
|
|
346
|
-
})
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
instance.options.onColumnFiltersChange?.(updateFn)
|
|
350
|
-
},
|
|
351
|
-
|
|
352
|
-
setGlobalFilter: updater => {
|
|
353
|
-
instance.options.onGlobalFilterChange?.(updater)
|
|
354
|
-
},
|
|
355
|
-
|
|
356
|
-
resetGlobalFilter: () => {
|
|
357
|
-
instance.setGlobalFilter(instance.initialState.globalFilter)
|
|
358
|
-
},
|
|
359
|
-
|
|
360
|
-
getColumnCanColumnFilter: columnId => {
|
|
361
|
-
const column = instance.getColumn(columnId)
|
|
362
|
-
|
|
363
|
-
if (!column) {
|
|
364
|
-
throw new Error()
|
|
365
|
-
}
|
|
366
|
-
|
|
237
|
+
getCanFilter: () => {
|
|
367
238
|
return (
|
|
368
239
|
(column.enableColumnFilter ?? true) &&
|
|
369
240
|
(instance.options.enableColumnFilters ?? true) &&
|
|
@@ -372,13 +243,7 @@ export const Filters: TableFeature = {
|
|
|
372
243
|
)
|
|
373
244
|
},
|
|
374
245
|
|
|
375
|
-
|
|
376
|
-
const column = instance.getColumn(columnId)
|
|
377
|
-
|
|
378
|
-
if (!column) {
|
|
379
|
-
throw new Error()
|
|
380
|
-
}
|
|
381
|
-
|
|
246
|
+
getCanGlobalFilter: () => {
|
|
382
247
|
return (
|
|
383
248
|
(column.enableGlobalFilter ?? true) &&
|
|
384
249
|
(instance.options.enableGlobalFilter ?? true) &&
|
|
@@ -388,33 +253,19 @@ export const Filters: TableFeature = {
|
|
|
388
253
|
)
|
|
389
254
|
},
|
|
390
255
|
|
|
391
|
-
|
|
392
|
-
instance.getColumnFilterIndex(columnId) > -1,
|
|
256
|
+
getIsFiltered: () => column.getFilterIndex() > -1,
|
|
393
257
|
|
|
394
|
-
|
|
395
|
-
instance.getState().columnFilters?.find(d => d.id ===
|
|
258
|
+
getFilterValue: () =>
|
|
259
|
+
instance.getState().columnFilters?.find(d => d.id === column.id)?.value,
|
|
396
260
|
|
|
397
|
-
|
|
398
|
-
instance.getState().columnFilters?.findIndex(d => d.id ===
|
|
261
|
+
getFilterIndex: () =>
|
|
262
|
+
instance.getState().columnFilters?.findIndex(d => d.id === column.id) ??
|
|
399
263
|
-1,
|
|
400
264
|
|
|
401
|
-
|
|
402
|
-
if (!columnId) return
|
|
403
|
-
|
|
265
|
+
setFilterValue: value => {
|
|
404
266
|
instance.setColumnFilters(old => {
|
|
405
|
-
const
|
|
406
|
-
|
|
407
|
-
if (!column) {
|
|
408
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
409
|
-
console.warn(
|
|
410
|
-
`Table: Could not find a column with id: ${columnId}`
|
|
411
|
-
)
|
|
412
|
-
}
|
|
413
|
-
throw new Error()
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
const filterFn = instance.getColumnFilterFn(column.id)
|
|
417
|
-
const previousfilter = old?.find(d => d.id === columnId)
|
|
267
|
+
const filterFn = column.getFilterFn()
|
|
268
|
+
const previousfilter = old?.find(d => d.id === column.id)
|
|
418
269
|
|
|
419
270
|
const newFilter = functionalUpdate(
|
|
420
271
|
value,
|
|
@@ -429,15 +280,15 @@ export const Filters: TableFeature = {
|
|
|
429
280
|
column
|
|
430
281
|
)
|
|
431
282
|
) {
|
|
432
|
-
return old?.filter(d => d.id !==
|
|
283
|
+
return old?.filter(d => d.id !== column.id) ?? []
|
|
433
284
|
}
|
|
434
285
|
|
|
435
|
-
const newFilterObj = { id:
|
|
286
|
+
const newFilterObj = { id: column.id, value: newFilter }
|
|
436
287
|
|
|
437
288
|
if (previousfilter) {
|
|
438
289
|
return (
|
|
439
290
|
old?.map(d => {
|
|
440
|
-
if (d.id ===
|
|
291
|
+
if (d.id === column.id) {
|
|
441
292
|
return newFilterObj
|
|
442
293
|
}
|
|
443
294
|
return d
|
|
@@ -452,21 +303,118 @@ export const Filters: TableFeature = {
|
|
|
452
303
|
return [newFilterObj]
|
|
453
304
|
})
|
|
454
305
|
},
|
|
306
|
+
_getFacetedRowModel:
|
|
307
|
+
instance.options.getFacetedRowModel &&
|
|
308
|
+
instance.options.getFacetedRowModel(instance, column.id),
|
|
309
|
+
getFacetedRowModel: () => {
|
|
310
|
+
if (!column._getFacetedRowModel) {
|
|
311
|
+
return instance.getPreFilteredRowModel()
|
|
312
|
+
}
|
|
455
313
|
|
|
456
|
-
|
|
457
|
-
instance.setColumnFilters(instance.initialState?.columnFilters ?? [])
|
|
314
|
+
return column._getFacetedRowModel()
|
|
458
315
|
},
|
|
316
|
+
_getFacetedUniqueValues:
|
|
317
|
+
instance.options.getFacetedUniqueValues &&
|
|
318
|
+
instance.options.getFacetedUniqueValues(instance, column.id),
|
|
319
|
+
getFacetedUniqueValues: () => {
|
|
320
|
+
if (!column._getFacetedUniqueValues) {
|
|
321
|
+
return new Map()
|
|
322
|
+
}
|
|
459
323
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
324
|
+
return column._getFacetedUniqueValues()
|
|
325
|
+
},
|
|
326
|
+
_getFacetedMinMaxValues:
|
|
327
|
+
instance.options.getFacetedMinMaxValues &&
|
|
328
|
+
instance.options.getFacetedMinMaxValues(instance, column.id),
|
|
329
|
+
getFacetedMinMaxValues: () => {
|
|
330
|
+
if (!column._getFacetedMinMaxValues) {
|
|
331
|
+
return [NaN, NaN]
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
return column._getFacetedMinMaxValues()
|
|
335
|
+
},
|
|
336
|
+
// () => [column.getFacetedRowModel()],
|
|
337
|
+
// facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
|
|
341
|
+
createRow: <TGenerics extends TableGenerics>(
|
|
342
|
+
row: Row<TGenerics>,
|
|
343
|
+
instance: TableInstance<TGenerics>
|
|
344
|
+
): FiltersRow<TGenerics> => {
|
|
345
|
+
return {
|
|
346
|
+
columnFilterMap: {},
|
|
347
|
+
subRowsByFacetId: {},
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
|
|
351
|
+
createInstance: <TGenerics extends TableGenerics>(
|
|
352
|
+
instance: TableInstance<TGenerics>
|
|
353
|
+
): FiltersInstance<TGenerics> => {
|
|
354
|
+
return {
|
|
355
|
+
getGlobalAutoFilterFn: () => {
|
|
356
|
+
return filterFns.includesString
|
|
357
|
+
},
|
|
358
|
+
|
|
359
|
+
getGlobalFilterFn: () => {
|
|
360
|
+
const { filterFns: userFilterFns, globalFilterFn: globalFilterFn } =
|
|
361
|
+
instance.options
|
|
362
|
+
|
|
363
|
+
return isFunction(globalFilterFn)
|
|
364
|
+
? globalFilterFn
|
|
365
|
+
: globalFilterFn === 'auto'
|
|
366
|
+
? instance.getGlobalAutoFilterFn()
|
|
367
|
+
: (userFilterFns as Record<string, any>)?.[
|
|
368
|
+
globalFilterFn as string
|
|
369
|
+
] ??
|
|
370
|
+
(filterFns[
|
|
371
|
+
globalFilterFn as BuiltInFilterFn
|
|
372
|
+
] as FilterFn<TGenerics>)
|
|
373
|
+
},
|
|
374
|
+
|
|
375
|
+
setColumnFilters: (updater: Updater<ColumnFiltersState>) => {
|
|
376
|
+
const leafColumns = instance.getAllLeafColumns()
|
|
377
|
+
|
|
378
|
+
const updateFn = (old: ColumnFiltersState) => {
|
|
379
|
+
return functionalUpdate(updater, old)?.filter(filter => {
|
|
380
|
+
const column = leafColumns.find(d => d.id === filter.id)
|
|
381
|
+
|
|
382
|
+
if (column) {
|
|
383
|
+
const filterFn = column.getFilterFn()
|
|
384
|
+
|
|
385
|
+
if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
|
|
386
|
+
return false
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
return true
|
|
391
|
+
})
|
|
468
392
|
}
|
|
469
393
|
|
|
394
|
+
instance.options.onColumnFiltersChange?.(updateFn)
|
|
395
|
+
},
|
|
396
|
+
|
|
397
|
+
setGlobalFilter: updater => {
|
|
398
|
+
instance.options.onGlobalFilterChange?.(updater)
|
|
399
|
+
},
|
|
400
|
+
|
|
401
|
+
resetGlobalFilter: defaultState => {
|
|
402
|
+
instance.setGlobalFilter(
|
|
403
|
+
defaultState ? undefined : instance.initialState.globalFilter
|
|
404
|
+
)
|
|
405
|
+
},
|
|
406
|
+
|
|
407
|
+
resetColumnFilters: defaultState => {
|
|
408
|
+
instance.setColumnFilters(
|
|
409
|
+
defaultState ? [] : instance.initialState?.columnFilters ?? []
|
|
410
|
+
)
|
|
411
|
+
},
|
|
412
|
+
|
|
413
|
+
getPreFilteredRowModel: () => instance.getCoreRowModel(),
|
|
414
|
+
_getFilteredRowModel:
|
|
415
|
+
instance.options.getFilteredRowModel &&
|
|
416
|
+
instance.options.getFilteredRowModel(instance),
|
|
417
|
+
getFilteredRowModel: () => {
|
|
470
418
|
if (
|
|
471
419
|
instance.options.manualFiltering ||
|
|
472
420
|
!instance._getFilteredRowModel
|
|
@@ -477,56 +425,42 @@ export const Filters: TableFeature = {
|
|
|
477
425
|
return instance._getFilteredRowModel()
|
|
478
426
|
},
|
|
479
427
|
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
instance.getState().columnFilters,
|
|
484
|
-
instance.getState().globalFilter,
|
|
485
|
-
// Include this to force the filtered facet info to be calculated
|
|
486
|
-
instance.getFilteredRowModel(),
|
|
487
|
-
],
|
|
488
|
-
(rowModel, columnFilters, globalFilter, _) => {
|
|
489
|
-
if (!columnFilters?.length && !globalFilter) {
|
|
490
|
-
return rowModel
|
|
491
|
-
}
|
|
428
|
+
_getGlobalFacetedRowModel:
|
|
429
|
+
instance.options.getFacetedRowModel &&
|
|
430
|
+
instance.options.getFacetedRowModel(instance, '__global__'),
|
|
492
431
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
{
|
|
500
|
-
key:
|
|
501
|
-
process.env.NODE_ENV === 'production' && 'getGlobalFacetedRowModel',
|
|
502
|
-
debug: () =>
|
|
503
|
-
instance.options.debugAll ?? instance.options.debugColumns,
|
|
432
|
+
getGlobalFacetedRowModel: () => {
|
|
433
|
+
if (
|
|
434
|
+
instance.options.manualFiltering ||
|
|
435
|
+
!instance._getGlobalFacetedRowModel
|
|
436
|
+
) {
|
|
437
|
+
return instance.getPreFilteredRowModel()
|
|
504
438
|
}
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
instance.options.debugAll ?? instance.options.debugColumns,
|
|
439
|
+
|
|
440
|
+
return instance._getGlobalFacetedRowModel()
|
|
441
|
+
},
|
|
442
|
+
|
|
443
|
+
_getGlobalFacetedUniqueValues:
|
|
444
|
+
instance.options.getFacetedUniqueValues &&
|
|
445
|
+
instance.options.getFacetedUniqueValues(instance, '__global__'),
|
|
446
|
+
getGlobalFacetedUniqueValues: () => {
|
|
447
|
+
if (!instance._getGlobalFacetedUniqueValues) {
|
|
448
|
+
return new Map()
|
|
516
449
|
}
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
instance.options.debugAll ?? instance.options.debugColumns,
|
|
450
|
+
|
|
451
|
+
return instance._getGlobalFacetedUniqueValues()
|
|
452
|
+
},
|
|
453
|
+
|
|
454
|
+
_getGlobalFacetedMinMaxValues:
|
|
455
|
+
instance.options.getFacetedMinMaxValues &&
|
|
456
|
+
instance.options.getFacetedMinMaxValues(instance, '__global__'),
|
|
457
|
+
getGlobalFacetedMinMaxValues: () => {
|
|
458
|
+
if (!instance._getGlobalFacetedMinMaxValues) {
|
|
459
|
+
return [NaN, NaN]
|
|
528
460
|
}
|
|
529
|
-
|
|
461
|
+
|
|
462
|
+
return instance._getGlobalFacetedMinMaxValues()
|
|
463
|
+
},
|
|
530
464
|
}
|
|
531
465
|
},
|
|
532
466
|
}
|
|
@@ -544,44 +478,3 @@ export function shouldAutoRemoveFilter<TGenerics extends TableGenerics>(
|
|
|
544
478
|
(typeof value === 'string' && !value)
|
|
545
479
|
)
|
|
546
480
|
}
|
|
547
|
-
|
|
548
|
-
export function getRowModelMinMaxValues<TGenerics extends TableGenerics>(
|
|
549
|
-
rowModel: RowModel<TGenerics>,
|
|
550
|
-
columnId: string
|
|
551
|
-
) {
|
|
552
|
-
let facetedMinMaxValues: [any, any] = [
|
|
553
|
-
rowModel.flatRows[0]?.values[columnId] ?? null,
|
|
554
|
-
rowModel.flatRows[0]?.values[columnId] ?? null,
|
|
555
|
-
]
|
|
556
|
-
|
|
557
|
-
for (let i = 0; i < rowModel.flatRows.length; i++) {
|
|
558
|
-
const value = rowModel.flatRows[i]?.values[columnId]
|
|
559
|
-
|
|
560
|
-
if (value < facetedMinMaxValues[0]) {
|
|
561
|
-
facetedMinMaxValues[0] = value
|
|
562
|
-
} else if (value > facetedMinMaxValues[1]) {
|
|
563
|
-
facetedMinMaxValues[1] = value
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
return facetedMinMaxValues
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
export function getRowModelUniqueValues<TGenerics extends TableGenerics>(
|
|
571
|
-
rowModel: RowModel<TGenerics>,
|
|
572
|
-
columnId: string
|
|
573
|
-
) {
|
|
574
|
-
let facetedUniqueValues = new Map<any, number>()
|
|
575
|
-
|
|
576
|
-
for (let i = 0; i < rowModel.flatRows.length; i++) {
|
|
577
|
-
const value = rowModel.flatRows[i]?.values[columnId]
|
|
578
|
-
|
|
579
|
-
if (facetedUniqueValues.has(value)) {
|
|
580
|
-
facetedUniqueValues.set(value, (facetedUniqueValues.get(value) ?? 0) + 1)
|
|
581
|
-
} else {
|
|
582
|
-
facetedUniqueValues.set(value, 1)
|
|
583
|
-
}
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
return facetedUniqueValues
|
|
587
|
-
}
|