@tanstack/table-core 8.0.0-alpha.64 → 8.0.0-alpha.65
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/core.js +1 -0
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/features/Cells.js +1 -1
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/Columns.js +7 -7
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Filters.js +153 -77
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Headers.js +16 -16
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +1 -1
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +1 -1
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +6 -6
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +5 -5
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Sorting.js +3 -3
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +2 -2
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +51 -108
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/index.js +4 -4
- package/build/cjs/utils/filterRowsUtils.js +21 -0
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelAsync.js +1 -1
- package/build/cjs/utils/getCoreRowModelAsync.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelSync.js +1 -1
- package/build/cjs/utils/getCoreRowModelSync.js.map +1 -1
- package/build/cjs/utils/getExpandedRowModel.js +1 -1
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFilteredRowModelSync.js +130 -0
- package/build/cjs/utils/getFilteredRowModelSync.js.map +1 -0
- package/build/cjs/utils/getGroupedRowModel.js +1 -1
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +1 -1
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModelSync.js +1 -1
- package/build/cjs/utils/getSortedRowModelSync.js.map +1 -1
- package/build/cjs/utils.js +2 -6
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +422 -446
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +363 -395
- package/build/types/features/Filters.d.ts +24 -15
- package/build/types/filterFns.d.ts +10 -52
- package/build/types/index.d.ts +1 -2
- package/build/types/types.d.ts +2 -2
- package/build/types/utils/filterRowsUtils.d.ts +1 -0
- package/build/types/utils/{getColumnFilteredRowModelAsync.d.ts → getFilteredRowModelAsync.d.ts} +1 -1
- package/build/types/utils/getFilteredRowModelSync.d.ts +2 -0
- package/build/types/utils.d.ts +2 -2
- package/build/umd/index.development.js +424 -447
- 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 +2 -1
- package/src/core.ts +1 -0
- package/src/features/Cells.ts +3 -1
- package/src/features/Columns.ts +11 -7
- package/src/features/Filters.ts +202 -94
- package/src/features/Headers.ts +16 -16
- package/src/features/Ordering.ts +1 -1
- package/src/features/Pagination.ts +1 -1
- package/src/features/Pinning.ts +10 -6
- package/src/features/RowSelection.ts +9 -6
- package/src/features/Sorting.ts +3 -5
- package/src/features/Visibility.ts +3 -2
- package/src/filterFns.ts +74 -147
- package/src/index.ts +1 -2
- package/src/types.ts +2 -0
- package/src/utils/filterRowsUtils.ts +24 -0
- package/src/utils/getCoreRowModelAsync.ts +1 -1
- package/src/utils/getCoreRowModelSync.ts +1 -1
- package/src/utils/getExpandedRowModel.ts +1 -1
- package/src/utils/getFilteredRowModelAsync.ts +49 -0
- package/src/utils/getFilteredRowModelSync.ts +150 -0
- package/src/utils/getGroupedRowModel.ts +1 -1
- package/src/utils/getPaginationRowModel.ts +1 -1
- package/src/utils/getSortedRowModelAsync.ts +1 -1
- package/src/utils/getSortedRowModelSync.ts +1 -1
- package/src/utils.ts +2 -4
- package/build/cjs/utils/getColumnFilteredRowModelSync.js +0 -115
- package/build/cjs/utils/getColumnFilteredRowModelSync.js.map +0 -1
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js +0 -91
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js.map +0 -1
- package/build/types/utils/getColumnFilteredRowModelSync.d.ts +0 -2
- package/build/types/utils/getGlobalFilteredRowModelAsync.d.ts +0 -4
- package/build/types/utils/getGlobalFilteredRowModelSync.d.ts +0 -2
- package/src/utils/getColumnFilteredRowModelAsync.ts +0 -118
- package/src/utils/getColumnFilteredRowModelSync.ts +0 -102
- package/src/utils/getGlobalFilteredRowModelAsync.ts +0 -96
- package/src/utils/getGlobalFilteredRowModelSync.ts +0 -79
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/table-core",
|
|
3
3
|
"author": "Tanner Linsley",
|
|
4
|
-
"version": "8.0.0-alpha.
|
|
4
|
+
"version": "8.0.0-alpha.65",
|
|
5
5
|
"description": "Hooks for building lightweight, fast and extendable datagrids for React",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/tanstack/react-table#readme",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"main": "build/cjs/index.js",
|
|
29
29
|
"browser": "build/umd/index.production.min.js",
|
|
30
30
|
"types": "build/types/index.d.ts",
|
|
31
|
+
"sideEffects": false,
|
|
31
32
|
"engines": {
|
|
32
33
|
"node": ">=12"
|
|
33
34
|
},
|
package/src/core.ts
CHANGED
package/src/features/Cells.ts
CHANGED
|
@@ -56,7 +56,9 @@ export const Cells = {
|
|
|
56
56
|
}, {} as Record<string, Cell<TGenerics>>)
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
|
-
key:
|
|
59
|
+
key:
|
|
60
|
+
process.env.NODE_ENV === 'production' &&
|
|
61
|
+
'row.getAllCellsByColumnId',
|
|
60
62
|
debug: () => instance.options.debugAll ?? instance.options.debugRows,
|
|
61
63
|
}
|
|
62
64
|
),
|
package/src/features/Columns.ts
CHANGED
|
@@ -108,7 +108,7 @@ export const Columns = {
|
|
|
108
108
|
{
|
|
109
109
|
debug: () =>
|
|
110
110
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
111
|
-
key: 'getDefaultColumn',
|
|
111
|
+
key: process.env.NODE_ENV === 'production' && 'getDefaultColumn',
|
|
112
112
|
}
|
|
113
113
|
),
|
|
114
114
|
|
|
@@ -165,7 +165,9 @@ export const Columns = {
|
|
|
165
165
|
]
|
|
166
166
|
},
|
|
167
167
|
{
|
|
168
|
-
key:
|
|
168
|
+
key:
|
|
169
|
+
process.env.NODE_ENV === 'production' &&
|
|
170
|
+
'column.getFlatColumns',
|
|
169
171
|
debug: () =>
|
|
170
172
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
171
173
|
}
|
|
@@ -184,7 +186,9 @@ export const Columns = {
|
|
|
184
186
|
return [column as Column<TGenerics>]
|
|
185
187
|
},
|
|
186
188
|
{
|
|
187
|
-
key:
|
|
189
|
+
key:
|
|
190
|
+
process.env.NODE_ENV === 'production' &&
|
|
191
|
+
'column.getLeafColumns',
|
|
188
192
|
debug: () =>
|
|
189
193
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
190
194
|
}
|
|
@@ -221,7 +225,7 @@ export const Columns = {
|
|
|
221
225
|
return recurseColumns(columnDefs)
|
|
222
226
|
},
|
|
223
227
|
{
|
|
224
|
-
key: 'getAllColumns',
|
|
228
|
+
key: process.env.NODE_ENV === 'production' && 'getAllColumns',
|
|
225
229
|
debug: () =>
|
|
226
230
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
227
231
|
}
|
|
@@ -235,7 +239,7 @@ export const Columns = {
|
|
|
235
239
|
})
|
|
236
240
|
},
|
|
237
241
|
{
|
|
238
|
-
key: 'getAllFlatColumns',
|
|
242
|
+
key: process.env.NODE_ENV === 'production' && 'getAllFlatColumns',
|
|
239
243
|
debug: () =>
|
|
240
244
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
241
245
|
}
|
|
@@ -250,7 +254,7 @@ export const Columns = {
|
|
|
250
254
|
}, {} as Record<string, Column<TGenerics>>)
|
|
251
255
|
},
|
|
252
256
|
{
|
|
253
|
-
key: 'getAllFlatColumnsById',
|
|
257
|
+
key: process.env.NODE_ENV === 'production' && 'getAllFlatColumnsById',
|
|
254
258
|
debug: () =>
|
|
255
259
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
256
260
|
}
|
|
@@ -265,7 +269,7 @@ export const Columns = {
|
|
|
265
269
|
return orderColumns(leafColumns)
|
|
266
270
|
},
|
|
267
271
|
{
|
|
268
|
-
key: 'getAllLeafColumns',
|
|
272
|
+
key: process.env.NODE_ENV === 'production' && 'getAllLeafColumns',
|
|
269
273
|
debug: () =>
|
|
270
274
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
271
275
|
}
|
package/src/features/Filters.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
memo,
|
|
17
17
|
Overwrite,
|
|
18
18
|
} from '../utils'
|
|
19
|
+
import { filterRows } from '../utils/filterRowsUtils'
|
|
19
20
|
|
|
20
21
|
export type FiltersTableState = {
|
|
21
22
|
columnFilters: ColumnFiltersState
|
|
@@ -31,17 +32,19 @@ export type ColumnFilter = {
|
|
|
31
32
|
value: unknown
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
/*
|
|
35
|
-
A filter function is any function that takes an array of rows and returns an array of rows. Because filter functions can be used for both column and global filters, they are passed an array of columnIds to filter on.
|
|
36
|
-
*/
|
|
37
|
-
|
|
38
35
|
export type FilterFn<TGenerics extends TableGenerics> = {
|
|
39
|
-
(
|
|
36
|
+
(row: Row<TGenerics>, columnId: string, filterValue: any): boolean
|
|
37
|
+
resolveFilterValue?: TransformFilterValueFn<TGenerics>
|
|
40
38
|
autoRemove?: ColumnFilterAutoRemoveTestFn<TGenerics>
|
|
41
39
|
}
|
|
42
40
|
|
|
41
|
+
export type TransformFilterValueFn<TGenerics extends TableGenerics> = (
|
|
42
|
+
value: any,
|
|
43
|
+
column?: Column<TGenerics>
|
|
44
|
+
) => unknown
|
|
45
|
+
|
|
43
46
|
export type ColumnFilterAutoRemoveTestFn<TGenerics extends TableGenerics> = (
|
|
44
|
-
value:
|
|
47
|
+
value: any,
|
|
45
48
|
column?: Column<TGenerics>
|
|
46
49
|
) => boolean
|
|
47
50
|
|
|
@@ -60,6 +63,7 @@ export type FiltersColumnDef<TGenerics extends TableGenerics> = {
|
|
|
60
63
|
filterFn?: FilterFnOption<Overwrite<TGenerics, { Value: any }>>
|
|
61
64
|
enableColumnFilter?: boolean
|
|
62
65
|
enableGlobalFilter?: boolean
|
|
66
|
+
enableFaceting?: boolean
|
|
63
67
|
}
|
|
64
68
|
|
|
65
69
|
export type FiltersColumn<TGenerics extends TableGenerics> = {
|
|
@@ -70,31 +74,33 @@ export type FiltersColumn<TGenerics extends TableGenerics> = {
|
|
|
70
74
|
getColumnIsFiltered: () => boolean
|
|
71
75
|
getColumnFilterValue: () => unknown
|
|
72
76
|
setColumnFilterValue: (updater: Updater<any>) => void
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
getFacetedRowModel: () => RowModel<TGenerics>
|
|
78
|
+
getFacetedUniqueValues: () => Map<any, number>
|
|
79
|
+
getFacetedMinMaxValues: () => [any, any]
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export type FiltersRow<TGenerics extends TableGenerics> = {
|
|
83
|
+
columnFilterMap: Record<string, boolean>
|
|
84
|
+
subRowsByFacetId: Record<string, Row<TGenerics>[]>
|
|
76
85
|
}
|
|
77
86
|
|
|
78
87
|
export type FiltersOptions<TGenerics extends TableGenerics> = {
|
|
88
|
+
enableFilters?: boolean
|
|
89
|
+
manualFiltering?: boolean
|
|
79
90
|
filterFromLeafRows?: boolean
|
|
80
91
|
filterFns?: TGenerics['FilterFns']
|
|
81
92
|
|
|
82
93
|
// Column
|
|
83
|
-
manualColumnFiltering?: boolean
|
|
84
94
|
onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>
|
|
85
95
|
enableColumnFilters?: boolean
|
|
86
|
-
|
|
96
|
+
getFilteredRowModel?: (
|
|
87
97
|
instance: TableInstance<TGenerics>
|
|
88
98
|
) => () => RowModel<TGenerics>
|
|
89
99
|
|
|
90
100
|
// Global
|
|
91
|
-
manualGlobalFiltering?: boolean
|
|
92
101
|
globalFilterFn?: FilterFnOption<TGenerics>
|
|
93
102
|
onGlobalFilterChange?: OnChangeFn<any>
|
|
94
103
|
enableGlobalFilter?: boolean
|
|
95
|
-
getGlobalFilteredRowModel?: (
|
|
96
|
-
instance: TableInstance<TGenerics>
|
|
97
|
-
) => () => RowModel<TGenerics>
|
|
98
104
|
getColumnCanGlobalFilter?: (column: Column<TGenerics>) => boolean
|
|
99
105
|
}
|
|
100
106
|
|
|
@@ -107,15 +113,16 @@ export type FiltersInstance<TGenerics extends TableGenerics> = {
|
|
|
107
113
|
setColumnFilterValue: (columnId: string, updater: Updater<any>) => void
|
|
108
114
|
resetColumnFilters: () => void
|
|
109
115
|
getColumnCanColumnFilter: (columnId: string) => boolean
|
|
116
|
+
getColumnFacetedRowModel: (columnId: string) => RowModel<TGenerics>
|
|
110
117
|
|
|
111
118
|
getColumnIsFiltered: (columnId: string) => boolean
|
|
112
119
|
getColumnFilterValue: (columnId: string) => unknown
|
|
113
120
|
getColumnFilterIndex: (columnId: string) => number
|
|
114
121
|
|
|
115
122
|
// Column Filters
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
123
|
+
getPreFilteredRowModel: () => RowModel<TGenerics>
|
|
124
|
+
getFilteredRowModel: () => RowModel<TGenerics>
|
|
125
|
+
_getFilteredRowModel?: () => RowModel<TGenerics>
|
|
119
126
|
|
|
120
127
|
// Global Filters
|
|
121
128
|
setGlobalFilter: (updater: Updater<any>) => void
|
|
@@ -123,9 +130,9 @@ export type FiltersInstance<TGenerics extends TableGenerics> = {
|
|
|
123
130
|
getGlobalAutoFilterFn: () => FilterFn<TGenerics> | undefined
|
|
124
131
|
getGlobalFilterFn: () => FilterFn<TGenerics> | undefined
|
|
125
132
|
getColumnCanGlobalFilter: (columnId: string) => boolean
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
133
|
+
getGlobalFacetedRowModel: () => RowModel<TGenerics>
|
|
134
|
+
getGlobalFacetedUniqueValues: () => Map<any, number>
|
|
135
|
+
getGlobalFacetedMinMaxValues: () => [number, number]
|
|
129
136
|
}
|
|
130
137
|
|
|
131
138
|
//
|
|
@@ -171,46 +178,6 @@ export const Filters: TableFeature = {
|
|
|
171
178
|
column: Column<TGenerics>,
|
|
172
179
|
instance: TableInstance<TGenerics>
|
|
173
180
|
): FiltersColumn<TGenerics> => {
|
|
174
|
-
const getFacetInfo = memo(
|
|
175
|
-
() => [column.getPreFilteredRows()],
|
|
176
|
-
(rows = []) => {
|
|
177
|
-
let preFilteredUniqueValues = new Map<any, number>()
|
|
178
|
-
|
|
179
|
-
let preFilteredMinMaxValues: [any, any] = [
|
|
180
|
-
rows[0]?.values[column.id] ?? null,
|
|
181
|
-
rows[0]?.values[column.id] ?? null,
|
|
182
|
-
]
|
|
183
|
-
|
|
184
|
-
for (let i = 0; i < rows.length; i++) {
|
|
185
|
-
const value = rows[i]?.values[column.id]
|
|
186
|
-
|
|
187
|
-
if (preFilteredUniqueValues.has(value)) {
|
|
188
|
-
preFilteredUniqueValues.set(
|
|
189
|
-
value,
|
|
190
|
-
(preFilteredUniqueValues.get(value) ?? 0) + 1
|
|
191
|
-
)
|
|
192
|
-
} else {
|
|
193
|
-
preFilteredUniqueValues.set(value, 1)
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
if (value < preFilteredMinMaxValues[0]) {
|
|
197
|
-
preFilteredMinMaxValues[0] = value
|
|
198
|
-
} else if (value > preFilteredMinMaxValues[1]) {
|
|
199
|
-
preFilteredMinMaxValues[1] = value
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
return {
|
|
204
|
-
preFilteredUniqueValues,
|
|
205
|
-
preFilteredMinMaxValues,
|
|
206
|
-
}
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
key: 'column.getFacetInfo',
|
|
210
|
-
debug: () => instance.options.debugAll ?? instance.options.debugColumns,
|
|
211
|
-
}
|
|
212
|
-
)
|
|
213
|
-
|
|
214
181
|
return {
|
|
215
182
|
filterFn: column.filterFn,
|
|
216
183
|
getCanColumnFilter: () => instance.getColumnCanColumnFilter(column.id),
|
|
@@ -220,9 +187,68 @@ export const Filters: TableFeature = {
|
|
|
220
187
|
getColumnFilterValue: () => instance.getColumnFilterValue(column.id),
|
|
221
188
|
setColumnFilterValue: val =>
|
|
222
189
|
instance.setColumnFilterValue(column.id, val),
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
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: {},
|
|
226
252
|
}
|
|
227
253
|
},
|
|
228
254
|
|
|
@@ -240,7 +266,7 @@ export const Filters: TableFeature = {
|
|
|
240
266
|
}
|
|
241
267
|
|
|
242
268
|
if (typeof value === 'number') {
|
|
243
|
-
return filterFns.
|
|
269
|
+
return filterFns.inNumberRange
|
|
244
270
|
}
|
|
245
271
|
|
|
246
272
|
if (value !== null && typeof value === 'object') {
|
|
@@ -253,6 +279,15 @@ export const Filters: TableFeature = {
|
|
|
253
279
|
|
|
254
280
|
return filterFns.weakEquals
|
|
255
281
|
},
|
|
282
|
+
getColumnFacetedRowModel: columnId => {
|
|
283
|
+
const column = instance.getColumn(columnId)
|
|
284
|
+
|
|
285
|
+
if (!column) {
|
|
286
|
+
throw new Error()
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
return column.getFacetedRowModel()
|
|
290
|
+
},
|
|
256
291
|
getGlobalAutoFilterFn: () => {
|
|
257
292
|
return filterFns.includesString
|
|
258
293
|
},
|
|
@@ -280,8 +315,6 @@ export const Filters: TableFeature = {
|
|
|
280
315
|
const { filterFns: userFilterFns, globalFilterFn: globalFilterFn } =
|
|
281
316
|
instance.options
|
|
282
317
|
|
|
283
|
-
debugger
|
|
284
|
-
|
|
285
318
|
return isFunction(globalFilterFn)
|
|
286
319
|
? globalFilterFn
|
|
287
320
|
: globalFilterFn === 'auto'
|
|
@@ -334,6 +367,7 @@ export const Filters: TableFeature = {
|
|
|
334
367
|
return (
|
|
335
368
|
(column.enableColumnFilter ?? true) &&
|
|
336
369
|
(instance.options.enableColumnFilters ?? true) &&
|
|
370
|
+
(instance.options.enableFilters ?? true) &&
|
|
337
371
|
!!column.accessorFn
|
|
338
372
|
)
|
|
339
373
|
},
|
|
@@ -348,6 +382,7 @@ export const Filters: TableFeature = {
|
|
|
348
382
|
return (
|
|
349
383
|
(column.enableGlobalFilter ?? true) &&
|
|
350
384
|
(instance.options.enableGlobalFilter ?? true) &&
|
|
385
|
+
(instance.options.enableFilters ?? true) &&
|
|
351
386
|
(instance.options.getColumnCanGlobalFilter?.(column) ?? true) &&
|
|
352
387
|
!!column.accessorFn
|
|
353
388
|
)
|
|
@@ -422,44 +457,76 @@ export const Filters: TableFeature = {
|
|
|
422
457
|
instance.setColumnFilters(instance.initialState?.columnFilters ?? [])
|
|
423
458
|
},
|
|
424
459
|
|
|
425
|
-
|
|
426
|
-
|
|
460
|
+
getPreFilteredRowModel: () => instance.getCoreRowModel(),
|
|
461
|
+
getFilteredRowModel: () => {
|
|
427
462
|
if (
|
|
428
|
-
!instance.
|
|
429
|
-
instance.options.
|
|
463
|
+
!instance._getFilteredRowModel &&
|
|
464
|
+
instance.options.getFilteredRowModel
|
|
430
465
|
) {
|
|
431
|
-
instance.
|
|
432
|
-
instance.options.
|
|
466
|
+
instance._getFilteredRowModel =
|
|
467
|
+
instance.options.getFilteredRowModel(instance)
|
|
433
468
|
}
|
|
434
469
|
|
|
435
470
|
if (
|
|
436
|
-
instance.options.
|
|
437
|
-
!instance.
|
|
471
|
+
instance.options.manualFiltering ||
|
|
472
|
+
!instance._getFilteredRowModel
|
|
438
473
|
) {
|
|
439
|
-
return instance.
|
|
474
|
+
return instance.getPreFilteredRowModel()
|
|
440
475
|
}
|
|
441
476
|
|
|
442
|
-
return instance.
|
|
477
|
+
return instance._getFilteredRowModel()
|
|
443
478
|
},
|
|
444
|
-
getPreGlobalFilteredRowModel: () => instance.getColumnFilteredRowModel(),
|
|
445
|
-
getGlobalFilteredRowModel: () => {
|
|
446
|
-
if (
|
|
447
|
-
!instance._getGlobalFilteredRowModel &&
|
|
448
|
-
instance.options.getGlobalFilteredRowModel
|
|
449
|
-
) {
|
|
450
|
-
instance._getGlobalFilteredRowModel =
|
|
451
|
-
instance.options.getGlobalFilteredRowModel(instance)
|
|
452
|
-
}
|
|
453
479
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
480
|
+
getGlobalFacetedRowModel: memo(
|
|
481
|
+
() => [
|
|
482
|
+
instance.getPreFilteredRowModel(),
|
|
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
|
+
}
|
|
460
492
|
|
|
461
|
-
|
|
462
|
-
|
|
493
|
+
return filterRows(
|
|
494
|
+
rowModel.rows,
|
|
495
|
+
columnFilters.map(d => d.id),
|
|
496
|
+
instance
|
|
497
|
+
)
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
key:
|
|
501
|
+
process.env.NODE_ENV === 'production' && 'getGlobalFacetedRowModel',
|
|
502
|
+
debug: () =>
|
|
503
|
+
instance.options.debugAll ?? instance.options.debugColumns,
|
|
504
|
+
}
|
|
505
|
+
),
|
|
506
|
+
getGlobalFacetedUniqueValues: memo(
|
|
507
|
+
() => [instance.getGlobalFacetedRowModel()],
|
|
508
|
+
facetedRowModel =>
|
|
509
|
+
getRowModelUniqueValues(facetedRowModel, '__global__'),
|
|
510
|
+
{
|
|
511
|
+
key:
|
|
512
|
+
process.env.NODE_ENV === 'production' &&
|
|
513
|
+
'getGlobalFacetedUniqueValues',
|
|
514
|
+
debug: () =>
|
|
515
|
+
instance.options.debugAll ?? instance.options.debugColumns,
|
|
516
|
+
}
|
|
517
|
+
),
|
|
518
|
+
getGlobalFacetedMinMaxValues: memo(
|
|
519
|
+
() => [instance.getGlobalFacetedRowModel()],
|
|
520
|
+
facetedRowModel =>
|
|
521
|
+
getRowModelMinMaxValues(facetedRowModel, '__global__'),
|
|
522
|
+
{
|
|
523
|
+
key:
|
|
524
|
+
process.env.NODE_ENV === 'production' &&
|
|
525
|
+
'getGlobalFacetedMinMaxValues',
|
|
526
|
+
debug: () =>
|
|
527
|
+
instance.options.debugAll ?? instance.options.debugColumns,
|
|
528
|
+
}
|
|
529
|
+
),
|
|
463
530
|
}
|
|
464
531
|
},
|
|
465
532
|
}
|
|
@@ -477,3 +544,44 @@ export function shouldAutoRemoveFilter<TGenerics extends TableGenerics>(
|
|
|
477
544
|
(typeof value === 'string' && !value)
|
|
478
545
|
)
|
|
479
546
|
}
|
|
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
|
+
}
|
package/src/features/Headers.ts
CHANGED
|
@@ -163,7 +163,7 @@ export const Headers = {
|
|
|
163
163
|
return headerGroups
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
|
-
key: 'getHeaderGroups',
|
|
166
|
+
key: process.env.NODE_ENV === 'production' && 'getHeaderGroups',
|
|
167
167
|
debug: () =>
|
|
168
168
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
169
169
|
}
|
|
@@ -183,7 +183,7 @@ export const Headers = {
|
|
|
183
183
|
return buildHeaderGroups(allColumns, leafColumns, instance, 'center')
|
|
184
184
|
},
|
|
185
185
|
{
|
|
186
|
-
key: 'getCenterHeaderGroups',
|
|
186
|
+
key: process.env.NODE_ENV === 'production' && 'getCenterHeaderGroups',
|
|
187
187
|
debug: () =>
|
|
188
188
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
189
189
|
}
|
|
@@ -200,7 +200,7 @@ export const Headers = {
|
|
|
200
200
|
return buildHeaderGroups(allColumns, leafColumns, instance, 'left')
|
|
201
201
|
},
|
|
202
202
|
{
|
|
203
|
-
key: 'getLeftHeaderGroups',
|
|
203
|
+
key: process.env.NODE_ENV === 'production' && 'getLeftHeaderGroups',
|
|
204
204
|
debug: () =>
|
|
205
205
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
206
206
|
}
|
|
@@ -217,7 +217,7 @@ export const Headers = {
|
|
|
217
217
|
return buildHeaderGroups(allColumns, leafColumns, instance, 'right')
|
|
218
218
|
},
|
|
219
219
|
{
|
|
220
|
-
key: 'getRightHeaderGroups',
|
|
220
|
+
key: process.env.NODE_ENV === 'production' && 'getRightHeaderGroups',
|
|
221
221
|
debug: () =>
|
|
222
222
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
223
223
|
}
|
|
@@ -231,7 +231,7 @@ export const Headers = {
|
|
|
231
231
|
return [...headerGroups].reverse()
|
|
232
232
|
},
|
|
233
233
|
{
|
|
234
|
-
key: 'getFooterGroups',
|
|
234
|
+
key: process.env.NODE_ENV === 'production' && 'getFooterGroups',
|
|
235
235
|
debug: () =>
|
|
236
236
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
237
237
|
}
|
|
@@ -243,7 +243,7 @@ export const Headers = {
|
|
|
243
243
|
return [...headerGroups].reverse()
|
|
244
244
|
},
|
|
245
245
|
{
|
|
246
|
-
key: 'getLeftFooterGroups',
|
|
246
|
+
key: process.env.NODE_ENV === 'production' && 'getLeftFooterGroups',
|
|
247
247
|
debug: () =>
|
|
248
248
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
249
249
|
}
|
|
@@ -255,7 +255,7 @@ export const Headers = {
|
|
|
255
255
|
return [...headerGroups].reverse()
|
|
256
256
|
},
|
|
257
257
|
{
|
|
258
|
-
key: 'getCenterFooterGroups',
|
|
258
|
+
key: process.env.NODE_ENV === 'production' && 'getCenterFooterGroups',
|
|
259
259
|
debug: () =>
|
|
260
260
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
261
261
|
}
|
|
@@ -267,7 +267,7 @@ export const Headers = {
|
|
|
267
267
|
return [...headerGroups].reverse()
|
|
268
268
|
},
|
|
269
269
|
{
|
|
270
|
-
key: 'getRightFooterGroups',
|
|
270
|
+
key: process.env.NODE_ENV === 'production' && 'getRightFooterGroups',
|
|
271
271
|
debug: () =>
|
|
272
272
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
273
273
|
}
|
|
@@ -285,7 +285,7 @@ export const Headers = {
|
|
|
285
285
|
.flat()
|
|
286
286
|
},
|
|
287
287
|
{
|
|
288
|
-
key: 'getFlatHeaders',
|
|
288
|
+
key: process.env.NODE_ENV === 'production' && 'getFlatHeaders',
|
|
289
289
|
debug: () =>
|
|
290
290
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
291
291
|
}
|
|
@@ -301,7 +301,7 @@ export const Headers = {
|
|
|
301
301
|
.flat()
|
|
302
302
|
},
|
|
303
303
|
{
|
|
304
|
-
key: 'getLeftFlatHeaders',
|
|
304
|
+
key: process.env.NODE_ENV === 'production' && 'getLeftFlatHeaders',
|
|
305
305
|
debug: () =>
|
|
306
306
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
307
307
|
}
|
|
@@ -317,7 +317,7 @@ export const Headers = {
|
|
|
317
317
|
.flat()
|
|
318
318
|
},
|
|
319
319
|
{
|
|
320
|
-
key: 'getCenterFlatHeaders',
|
|
320
|
+
key: process.env.NODE_ENV === 'production' && 'getCenterFlatHeaders',
|
|
321
321
|
debug: () =>
|
|
322
322
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
323
323
|
}
|
|
@@ -333,7 +333,7 @@ export const Headers = {
|
|
|
333
333
|
.flat()
|
|
334
334
|
},
|
|
335
335
|
{
|
|
336
|
-
key: 'getRightFlatHeaders',
|
|
336
|
+
key: process.env.NODE_ENV === 'production' && 'getRightFlatHeaders',
|
|
337
337
|
debug: () =>
|
|
338
338
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
339
339
|
}
|
|
@@ -347,7 +347,7 @@ export const Headers = {
|
|
|
347
347
|
return flatHeaders.filter(header => !header.subHeaders?.length)
|
|
348
348
|
},
|
|
349
349
|
{
|
|
350
|
-
key: 'getCenterLeafHeaders',
|
|
350
|
+
key: process.env.NODE_ENV === 'production' && 'getCenterLeafHeaders',
|
|
351
351
|
debug: () =>
|
|
352
352
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
353
353
|
}
|
|
@@ -359,7 +359,7 @@ export const Headers = {
|
|
|
359
359
|
return flatHeaders.filter(header => !header.subHeaders?.length)
|
|
360
360
|
},
|
|
361
361
|
{
|
|
362
|
-
key: 'getLeftLeafHeaders',
|
|
362
|
+
key: process.env.NODE_ENV === 'production' && 'getLeftLeafHeaders',
|
|
363
363
|
debug: () =>
|
|
364
364
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
365
365
|
}
|
|
@@ -371,7 +371,7 @@ export const Headers = {
|
|
|
371
371
|
return flatHeaders.filter(header => !header.subHeaders?.length)
|
|
372
372
|
},
|
|
373
373
|
{
|
|
374
|
-
key: 'getRightLeafHeaders',
|
|
374
|
+
key: process.env.NODE_ENV === 'production' && 'getRightLeafHeaders',
|
|
375
375
|
debug: () =>
|
|
376
376
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
377
377
|
}
|
|
@@ -395,7 +395,7 @@ export const Headers = {
|
|
|
395
395
|
.flat()
|
|
396
396
|
},
|
|
397
397
|
{
|
|
398
|
-
key: 'getLeafHeaders',
|
|
398
|
+
key: process.env.NODE_ENV === 'production' && 'getLeafHeaders',
|
|
399
399
|
debug: () =>
|
|
400
400
|
instance.options.debugAll ?? instance.options.debugHeaders,
|
|
401
401
|
}
|
package/src/features/Ordering.ts
CHANGED
|
@@ -100,7 +100,7 @@ export const Ordering: TableFeature = {
|
|
|
100
100
|
return orderColumns(orderedColumns, grouping, groupedColumnMode)
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
|
-
key: 'getOrderColumnsFn',
|
|
103
|
+
key: process.env.NODE_ENV === 'production' && 'getOrderColumnsFn',
|
|
104
104
|
// debug: () => instance.options.debugAll ?? instance.options.debugTable,
|
|
105
105
|
}
|
|
106
106
|
),
|