@tanstack/table-core 8.0.0-alpha.67 → 8.0.0-alpha.70
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 -46
- 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 +102 -116
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js +52 -79
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +49 -58
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +98 -193
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +53 -71
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +109 -165
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +31 -43
- 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 +71 -125
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +93 -112
- 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 +54 -73
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +47 -86
- 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 +17 -21
- 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 +1778 -2347
- 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 +2 -2
- package/build/types/features/Columns.d.ts +1 -1
- package/build/types/features/Expanding.d.ts +1 -1
- package/build/types/features/Filters.d.ts +12 -7
- package/build/types/features/Grouping.d.ts +5 -4
- package/build/types/features/Ordering.d.ts +1 -1
- package/build/types/features/Pagination.d.ts +4 -4
- package/build/types/features/Pinning.d.ts +1 -1
- package/build/types/features/RowSelection.d.ts +1 -1
- package/build/types/features/Rows.d.ts +4 -3
- package/build/types/features/Sorting.d.ts +2 -1
- package/build/types/features/Visibility.d.ts +1 -0
- package/build/types/index.d.ts +6 -4
- package/build/types/types.d.ts +3 -13
- 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 +1779 -2350
- 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 -45
- package/src/features/Cells.ts +7 -11
- package/src/features/ColumnSizing.ts +27 -19
- package/src/features/Columns.ts +4 -8
- package/src/features/Expanding.ts +5 -3
- package/src/features/Filters.ts +105 -162
- package/src/features/Grouping.ts +21 -23
- package/src/features/Ordering.ts +5 -3
- package/src/features/Pagination.ts +32 -19
- package/src/features/Pinning.ts +13 -7
- package/src/features/RowSelection.ts +5 -3
- package/src/features/Rows.ts +21 -6
- package/src/features/Sorting.ts +14 -12
- package/src/features/Visibility.ts +7 -0
- package/src/filterFns.ts +9 -9
- package/src/index.ts +12 -4
- package/src/sortingFns.ts +11 -11
- package/src/types.ts +3 -16
- package/src/utils/filterRowsUtils.ts +47 -68
- package/src/utils/{getCoreRowModelSync.ts → getCoreRowModel.ts} +2 -8
- package/src/utils/getFacetedMinMaxValues.ts +37 -0
- package/src/utils/getFacetedRowModel.ts +50 -0
- package/src/utils/getFacetedUniqueValues.ts +37 -0
- package/src/utils/{getFilteredRowModelSync.ts → getFilteredRowModel.ts} +29 -20
- package/src/utils/getGroupedRowModel.ts +52 -61
- package/src/utils/{getSortedRowModelSync.ts → getSortedRowModel.ts} +3 -3
- 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 -125
- 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 -157
- 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[]
|
|
@@ -80,11 +79,14 @@ export type FiltersColumn<TGenerics extends TableGenerics> = {
|
|
|
80
79
|
getCanFilter: () => boolean
|
|
81
80
|
getCanGlobalFilter: () => boolean
|
|
82
81
|
getFacetedRowModel: () => RowModel<TGenerics>
|
|
82
|
+
_getFacetedRowModel?: () => RowModel<TGenerics>
|
|
83
83
|
getIsFiltered: () => boolean
|
|
84
84
|
getFilterValue: () => unknown
|
|
85
85
|
getFilterIndex: () => number
|
|
86
86
|
getFacetedUniqueValues: () => Map<any, number>
|
|
87
|
+
_getFacetedUniqueValues?: () => Map<any, number>
|
|
87
88
|
getFacetedMinMaxValues: () => [any, any]
|
|
89
|
+
_getFacetedMinMaxValues?: () => [any, any]
|
|
88
90
|
}
|
|
89
91
|
|
|
90
92
|
export type FiltersRow<TGenerics extends TableGenerics> = {
|
|
@@ -97,25 +99,39 @@ export type FiltersOptions<TGenerics extends TableGenerics> = {
|
|
|
97
99
|
manualFiltering?: boolean
|
|
98
100
|
filterFromLeafRows?: boolean
|
|
99
101
|
filterFns?: TGenerics['FilterFns']
|
|
102
|
+
getFilteredRowModel?: (
|
|
103
|
+
instance: TableInstance<TGenerics>
|
|
104
|
+
) => () => RowModel<TGenerics>
|
|
100
105
|
|
|
101
106
|
// Column
|
|
102
107
|
onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>
|
|
103
108
|
enableColumnFilters?: boolean
|
|
104
|
-
getFilteredRowModel?: (
|
|
105
|
-
instance: TableInstance<TGenerics>
|
|
106
|
-
) => () => RowModel<TGenerics>
|
|
107
109
|
|
|
108
110
|
// Global
|
|
109
111
|
globalFilterFn?: FilterFnOption<TGenerics>
|
|
110
112
|
onGlobalFilterChange?: OnChangeFn<any>
|
|
111
113
|
enableGlobalFilter?: boolean
|
|
112
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]
|
|
113
129
|
}
|
|
114
130
|
|
|
115
131
|
export type FiltersInstance<TGenerics extends TableGenerics> = {
|
|
116
132
|
setColumnFilters: (updater: Updater<ColumnFiltersState>) => void
|
|
117
133
|
|
|
118
|
-
resetColumnFilters: () => void
|
|
134
|
+
resetColumnFilters: (defaultState?: boolean) => void
|
|
119
135
|
|
|
120
136
|
// Column Filters
|
|
121
137
|
getPreFilteredRowModel: () => RowModel<TGenerics>
|
|
@@ -124,13 +140,15 @@ export type FiltersInstance<TGenerics extends TableGenerics> = {
|
|
|
124
140
|
|
|
125
141
|
// Global Filters
|
|
126
142
|
setGlobalFilter: (updater: Updater<any>) => void
|
|
127
|
-
resetGlobalFilter: () => void
|
|
143
|
+
resetGlobalFilter: (defaultState?: boolean) => void
|
|
128
144
|
getGlobalAutoFilterFn: () => FilterFn<TGenerics> | undefined
|
|
129
145
|
getGlobalFilterFn: () => FilterFn<TGenerics> | undefined
|
|
130
|
-
|
|
131
146
|
getGlobalFacetedRowModel: () => RowModel<TGenerics>
|
|
147
|
+
_getGlobalFacetedRowModel?: () => RowModel<TGenerics>
|
|
132
148
|
getGlobalFacetedUniqueValues: () => Map<any, number>
|
|
149
|
+
_getGlobalFacetedUniqueValues?: () => Map<any, number>
|
|
133
150
|
getGlobalFacetedMinMaxValues: () => [number, number]
|
|
151
|
+
_getGlobalFacetedMinMaxValues?: () => [number, number]
|
|
134
152
|
}
|
|
135
153
|
|
|
136
154
|
//
|
|
@@ -148,8 +166,8 @@ export const Filters: TableFeature = {
|
|
|
148
166
|
return {
|
|
149
167
|
columnFilters: [],
|
|
150
168
|
globalFilter: undefined,
|
|
151
|
-
|
|
152
|
-
|
|
169
|
+
// filtersProgress: 1,
|
|
170
|
+
// facetProgress: {},
|
|
153
171
|
...state,
|
|
154
172
|
}
|
|
155
173
|
},
|
|
@@ -160,12 +178,13 @@ export const Filters: TableFeature = {
|
|
|
160
178
|
return {
|
|
161
179
|
onColumnFiltersChange: makeStateUpdater('columnFilters', instance),
|
|
162
180
|
onGlobalFilterChange: makeStateUpdater('globalFilter', instance),
|
|
163
|
-
filterFromLeafRows:
|
|
181
|
+
filterFromLeafRows: false,
|
|
164
182
|
globalFilterFn: 'auto',
|
|
165
183
|
getColumnCanGlobalFilter: column => {
|
|
166
184
|
const value = instance
|
|
167
185
|
.getCoreRowModel()
|
|
168
|
-
.flatRows[0]?.getAllCellsByColumnId()
|
|
186
|
+
.flatRows[0]?.getAllCellsByColumnId()
|
|
187
|
+
[column.id]?.getValue()
|
|
169
188
|
|
|
170
189
|
return typeof value === 'string'
|
|
171
190
|
},
|
|
@@ -181,7 +200,7 @@ export const Filters: TableFeature = {
|
|
|
181
200
|
getAutoFilterFn: () => {
|
|
182
201
|
const firstRow = instance.getCoreRowModel().flatRows[0]
|
|
183
202
|
|
|
184
|
-
const value = firstRow?.
|
|
203
|
+
const value = firstRow?.getValue(column.id)
|
|
185
204
|
|
|
186
205
|
if (typeof value === 'string') {
|
|
187
206
|
return filterFns.includesString
|
|
@@ -284,58 +303,38 @@ export const Filters: TableFeature = {
|
|
|
284
303
|
return [newFilterObj]
|
|
285
304
|
})
|
|
286
305
|
},
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
instance.getFilteredRowModel(),
|
|
294
|
-
],
|
|
295
|
-
(rowModel, columnFilters, globalFilter, _) => {
|
|
296
|
-
if (!columnFilters?.length && !globalFilter) {
|
|
297
|
-
return rowModel
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
return filterRows(
|
|
301
|
-
rowModel.rows,
|
|
302
|
-
[
|
|
303
|
-
...columnFilters.map(d => d.id).filter(d => d !== column.id),
|
|
304
|
-
globalFilter ? '__global__' : undefined,
|
|
305
|
-
].filter(Boolean) as string[],
|
|
306
|
-
instance
|
|
307
|
-
)
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
key:
|
|
311
|
-
process.env.NODE_ENV === 'production' &&
|
|
312
|
-
'getFacetedRowModel_' + column.id,
|
|
313
|
-
debug: () =>
|
|
314
|
-
instance.options.debugAll ?? instance.options.debugColumns,
|
|
306
|
+
_getFacetedRowModel:
|
|
307
|
+
instance.options.getFacetedRowModel &&
|
|
308
|
+
instance.options.getFacetedRowModel(instance, column.id),
|
|
309
|
+
getFacetedRowModel: () => {
|
|
310
|
+
if (!column._getFacetedRowModel) {
|
|
311
|
+
return instance.getPreFilteredRowModel()
|
|
315
312
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
instance.options.debugAll ?? instance.options.debugColumns,
|
|
313
|
+
|
|
314
|
+
return column._getFacetedRowModel()
|
|
315
|
+
},
|
|
316
|
+
_getFacetedUniqueValues:
|
|
317
|
+
instance.options.getFacetedUniqueValues &&
|
|
318
|
+
instance.options.getFacetedUniqueValues(instance, column.id),
|
|
319
|
+
getFacetedUniqueValues: () => {
|
|
320
|
+
if (!column._getFacetedUniqueValues) {
|
|
321
|
+
return new Map()
|
|
326
322
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
instance.options.debugAll ?? instance.options.debugColumns,
|
|
323
|
+
|
|
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]
|
|
337
332
|
}
|
|
338
|
-
|
|
333
|
+
|
|
334
|
+
return column._getFacetedMinMaxValues()
|
|
335
|
+
},
|
|
336
|
+
// () => [column.getFacetedRowModel()],
|
|
337
|
+
// facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),
|
|
339
338
|
}
|
|
340
339
|
},
|
|
341
340
|
|
|
@@ -399,24 +398,23 @@ export const Filters: TableFeature = {
|
|
|
399
398
|
instance.options.onGlobalFilterChange?.(updater)
|
|
400
399
|
},
|
|
401
400
|
|
|
402
|
-
resetGlobalFilter:
|
|
403
|
-
instance.setGlobalFilter(
|
|
401
|
+
resetGlobalFilter: defaultState => {
|
|
402
|
+
instance.setGlobalFilter(
|
|
403
|
+
defaultState ? undefined : instance.initialState.globalFilter
|
|
404
|
+
)
|
|
404
405
|
},
|
|
405
406
|
|
|
406
|
-
resetColumnFilters:
|
|
407
|
-
instance.setColumnFilters(
|
|
407
|
+
resetColumnFilters: defaultState => {
|
|
408
|
+
instance.setColumnFilters(
|
|
409
|
+
defaultState ? [] : instance.initialState?.columnFilters ?? []
|
|
410
|
+
)
|
|
408
411
|
},
|
|
409
412
|
|
|
410
413
|
getPreFilteredRowModel: () => instance.getCoreRowModel(),
|
|
414
|
+
_getFilteredRowModel:
|
|
415
|
+
instance.options.getFilteredRowModel &&
|
|
416
|
+
instance.options.getFilteredRowModel(instance),
|
|
411
417
|
getFilteredRowModel: () => {
|
|
412
|
-
if (
|
|
413
|
-
!instance._getFilteredRowModel &&
|
|
414
|
-
instance.options.getFilteredRowModel
|
|
415
|
-
) {
|
|
416
|
-
instance._getFilteredRowModel =
|
|
417
|
-
instance.options.getFilteredRowModel(instance)
|
|
418
|
-
}
|
|
419
|
-
|
|
420
418
|
if (
|
|
421
419
|
instance.options.manualFiltering ||
|
|
422
420
|
!instance._getFilteredRowModel
|
|
@@ -427,56 +425,42 @@ export const Filters: TableFeature = {
|
|
|
427
425
|
return instance._getFilteredRowModel()
|
|
428
426
|
},
|
|
429
427
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
instance.getState().columnFilters,
|
|
434
|
-
instance.getState().globalFilter,
|
|
435
|
-
// Include this to force the filtered facet info to be calculated
|
|
436
|
-
instance.getFilteredRowModel(),
|
|
437
|
-
],
|
|
438
|
-
(rowModel, columnFilters, globalFilter, _) => {
|
|
439
|
-
if (!columnFilters?.length && !globalFilter) {
|
|
440
|
-
return rowModel
|
|
441
|
-
}
|
|
428
|
+
_getGlobalFacetedRowModel:
|
|
429
|
+
instance.options.getFacetedRowModel &&
|
|
430
|
+
instance.options.getFacetedRowModel(instance, '__global__'),
|
|
442
431
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
{
|
|
450
|
-
key:
|
|
451
|
-
process.env.NODE_ENV === 'production' && 'getGlobalFacetedRowModel',
|
|
452
|
-
debug: () =>
|
|
453
|
-
instance.options.debugAll ?? instance.options.debugColumns,
|
|
432
|
+
getGlobalFacetedRowModel: () => {
|
|
433
|
+
if (
|
|
434
|
+
instance.options.manualFiltering ||
|
|
435
|
+
!instance._getGlobalFacetedRowModel
|
|
436
|
+
) {
|
|
437
|
+
return instance.getPreFilteredRowModel()
|
|
454
438
|
}
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
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()
|
|
466
449
|
}
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
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]
|
|
478
460
|
}
|
|
479
|
-
|
|
461
|
+
|
|
462
|
+
return instance._getGlobalFacetedMinMaxValues()
|
|
463
|
+
},
|
|
480
464
|
}
|
|
481
465
|
},
|
|
482
466
|
}
|
|
@@ -494,44 +478,3 @@ export function shouldAutoRemoveFilter<TGenerics extends TableGenerics>(
|
|
|
494
478
|
(typeof value === 'string' && !value)
|
|
495
479
|
)
|
|
496
480
|
}
|
|
497
|
-
|
|
498
|
-
export function getRowModelMinMaxValues<TGenerics extends TableGenerics>(
|
|
499
|
-
rowModel: RowModel<TGenerics>,
|
|
500
|
-
columnId: string
|
|
501
|
-
) {
|
|
502
|
-
let facetedMinMaxValues: [any, any] = [
|
|
503
|
-
rowModel.flatRows[0]?.values[columnId] ?? null,
|
|
504
|
-
rowModel.flatRows[0]?.values[columnId] ?? null,
|
|
505
|
-
]
|
|
506
|
-
|
|
507
|
-
for (let i = 0; i < rowModel.flatRows.length; i++) {
|
|
508
|
-
const value = rowModel.flatRows[i]?.values[columnId]
|
|
509
|
-
|
|
510
|
-
if (value < facetedMinMaxValues[0]) {
|
|
511
|
-
facetedMinMaxValues[0] = value
|
|
512
|
-
} else if (value > facetedMinMaxValues[1]) {
|
|
513
|
-
facetedMinMaxValues[1] = value
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
return facetedMinMaxValues
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
export function getRowModelUniqueValues<TGenerics extends TableGenerics>(
|
|
521
|
-
rowModel: RowModel<TGenerics>,
|
|
522
|
-
columnId: string
|
|
523
|
-
) {
|
|
524
|
-
let facetedUniqueValues = new Map<any, number>()
|
|
525
|
-
|
|
526
|
-
for (let i = 0; i < rowModel.flatRows.length; i++) {
|
|
527
|
-
const value = rowModel.flatRows[i]?.values[columnId]
|
|
528
|
-
|
|
529
|
-
if (facetedUniqueValues.has(value)) {
|
|
530
|
-
facetedUniqueValues.set(value, (facetedUniqueValues.get(value) ?? 0) + 1)
|
|
531
|
-
} else {
|
|
532
|
-
facetedUniqueValues.set(value, 1)
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
return facetedUniqueValues
|
|
537
|
-
}
|
package/src/features/Grouping.ts
CHANGED
|
@@ -45,7 +45,7 @@ export type GroupingColumnDef<TGenerics extends TableGenerics> = {
|
|
|
45
45
|
row: Row<TGenerics>
|
|
46
46
|
column: Column<TGenerics>
|
|
47
47
|
cell: Cell<TGenerics>
|
|
48
|
-
|
|
48
|
+
getValue: () => TGenerics['Value']
|
|
49
49
|
}
|
|
50
50
|
>
|
|
51
51
|
enableGrouping?: boolean
|
|
@@ -58,12 +58,15 @@ export type GroupingColumn<TGenerics extends TableGenerics> = {
|
|
|
58
58
|
getGroupedIndex: () => number
|
|
59
59
|
toggleGrouping: () => void
|
|
60
60
|
getToggleGroupingHandler: () => () => void
|
|
61
|
+
getColumnAutoAggregationFn: () => AggregationFn<TGenerics> | undefined
|
|
62
|
+
getColumnAggregationFn: () => AggregationFn<TGenerics> | undefined
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
export type GroupingRow = {
|
|
64
66
|
groupingColumnId?: string
|
|
65
67
|
groupingValue?: any
|
|
66
68
|
getIsGrouped: () => boolean
|
|
69
|
+
groupingValuesCache: Record<string, any>
|
|
67
70
|
}
|
|
68
71
|
|
|
69
72
|
export type GroupingCell<TGenerics extends TableGenerics> = {
|
|
@@ -95,14 +98,8 @@ export type GroupingOptions<TGenerics extends TableGenerics> = {
|
|
|
95
98
|
export type GroupingColumnMode = false | 'reorder' | 'remove'
|
|
96
99
|
|
|
97
100
|
export type GroupingInstance<TGenerics extends TableGenerics> = {
|
|
98
|
-
getColumnAutoAggregationFn: (
|
|
99
|
-
columnId: string
|
|
100
|
-
) => AggregationFn<TGenerics> | undefined
|
|
101
|
-
getColumnAggregationFn: (
|
|
102
|
-
columnId: string
|
|
103
|
-
) => AggregationFn<TGenerics> | undefined
|
|
104
101
|
setGrouping: (updater: Updater<GroupingState>) => void
|
|
105
|
-
resetGrouping: () => void
|
|
102
|
+
resetGrouping: (defaultState?: boolean) => void
|
|
106
103
|
getPreGroupedRowModel: () => RowModel<TGenerics>
|
|
107
104
|
getGroupedRowModel: () => RowModel<TGenerics>
|
|
108
105
|
_getGroupedRowModel?: () => RowModel<TGenerics>
|
|
@@ -175,17 +172,10 @@ export const Grouping: TableFeature = {
|
|
|
175
172
|
column.toggleGrouping()
|
|
176
173
|
}
|
|
177
174
|
},
|
|
178
|
-
|
|
179
|
-
},
|
|
180
|
-
|
|
181
|
-
createInstance: <TGenerics extends TableGenerics>(
|
|
182
|
-
instance: TableInstance<TGenerics>
|
|
183
|
-
): GroupingInstance<TGenerics> => {
|
|
184
|
-
return {
|
|
185
|
-
getColumnAutoAggregationFn: columnId => {
|
|
175
|
+
getColumnAutoAggregationFn: () => {
|
|
186
176
|
const firstRow = instance.getCoreRowModel().flatRows[0]
|
|
187
177
|
|
|
188
|
-
const value = firstRow?.
|
|
178
|
+
const value = firstRow?.getValue(column.id)
|
|
189
179
|
|
|
190
180
|
if (typeof value === 'number') {
|
|
191
181
|
return aggregationFns.sum
|
|
@@ -197,8 +187,7 @@ export const Grouping: TableFeature = {
|
|
|
197
187
|
|
|
198
188
|
return aggregationFns.count
|
|
199
189
|
},
|
|
200
|
-
getColumnAggregationFn:
|
|
201
|
-
const column = instance.getColumn(columnId)
|
|
190
|
+
getColumnAggregationFn: () => {
|
|
202
191
|
const userAggregationFns = instance.options.aggregationFns
|
|
203
192
|
|
|
204
193
|
if (!column) {
|
|
@@ -208,7 +197,7 @@ export const Grouping: TableFeature = {
|
|
|
208
197
|
return isFunction(column.aggregationFn)
|
|
209
198
|
? column.aggregationFn
|
|
210
199
|
: column.aggregationFn === 'auto'
|
|
211
|
-
?
|
|
200
|
+
? column.getColumnAutoAggregationFn()
|
|
212
201
|
: (userAggregationFns as Record<string, any>)?.[
|
|
213
202
|
column.aggregationFn as string
|
|
214
203
|
] ??
|
|
@@ -216,11 +205,19 @@ export const Grouping: TableFeature = {
|
|
|
216
205
|
column.aggregationFn as BuiltInAggregationFn
|
|
217
206
|
] as AggregationFn<TGenerics>)
|
|
218
207
|
},
|
|
208
|
+
}
|
|
209
|
+
},
|
|
219
210
|
|
|
211
|
+
createInstance: <TGenerics extends TableGenerics>(
|
|
212
|
+
instance: TableInstance<TGenerics>
|
|
213
|
+
): GroupingInstance<TGenerics> => {
|
|
214
|
+
return {
|
|
220
215
|
setGrouping: updater => instance.options.onGroupingChange?.(updater),
|
|
221
216
|
|
|
222
|
-
resetGrouping:
|
|
223
|
-
instance.setGrouping(
|
|
217
|
+
resetGrouping: defaultState => {
|
|
218
|
+
instance.setGrouping(
|
|
219
|
+
defaultState ? [] : instance.initialState?.grouping ?? []
|
|
220
|
+
)
|
|
224
221
|
},
|
|
225
222
|
|
|
226
223
|
getPreGroupedRowModel: () => instance.getSortedRowModel(),
|
|
@@ -248,6 +245,7 @@ export const Grouping: TableFeature = {
|
|
|
248
245
|
): GroupingRow => {
|
|
249
246
|
return {
|
|
250
247
|
getIsGrouped: () => !!row.groupingColumnId,
|
|
248
|
+
groupingValuesCache: {},
|
|
251
249
|
}
|
|
252
250
|
},
|
|
253
251
|
|
|
@@ -274,7 +272,7 @@ export const Grouping: TableFeature = {
|
|
|
274
272
|
column,
|
|
275
273
|
row,
|
|
276
274
|
cell,
|
|
277
|
-
|
|
275
|
+
getValue: cell.getValue,
|
|
278
276
|
})
|
|
279
277
|
: null
|
|
280
278
|
},
|
package/src/features/Ordering.ts
CHANGED
|
@@ -27,7 +27,7 @@ export type ColumnOrderDefaultOptions = {
|
|
|
27
27
|
|
|
28
28
|
export type ColumnOrderInstance<TGenerics extends TableGenerics> = {
|
|
29
29
|
setColumnOrder: (updater: Updater<ColumnOrderState>) => void
|
|
30
|
-
resetColumnOrder: () => void
|
|
30
|
+
resetColumnOrder: (defaultState?: boolean) => void
|
|
31
31
|
_getOrderColumnsFn: () => (
|
|
32
32
|
columns: Column<TGenerics>[]
|
|
33
33
|
) => Column<TGenerics>[]
|
|
@@ -57,8 +57,10 @@ export const Ordering: TableFeature = {
|
|
|
57
57
|
return {
|
|
58
58
|
setColumnOrder: updater =>
|
|
59
59
|
instance.options.onColumnOrderChange?.(updater),
|
|
60
|
-
resetColumnOrder:
|
|
61
|
-
instance.setColumnOrder(
|
|
60
|
+
resetColumnOrder: defaultState => {
|
|
61
|
+
instance.setColumnOrder(
|
|
62
|
+
defaultState ? [] : instance.initialState.columnOrder ?? []
|
|
63
|
+
)
|
|
62
64
|
},
|
|
63
65
|
_getOrderColumnsFn: memo(
|
|
64
66
|
() => [
|
|
@@ -11,7 +11,7 @@ import { functionalUpdate, makeStateUpdater, memo } from '../utils'
|
|
|
11
11
|
export type PaginationState = {
|
|
12
12
|
pageIndex: number
|
|
13
13
|
pageSize: number
|
|
14
|
-
pageCount
|
|
14
|
+
pageCount?: number
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export type PaginationTableState = {
|
|
@@ -39,11 +39,11 @@ export type PaginationDefaultOptions = {
|
|
|
39
39
|
export type PaginationInstance<TGenerics extends TableGenerics> = {
|
|
40
40
|
_autoResetPageIndex: () => void
|
|
41
41
|
setPagination: (updater: Updater<PaginationState>) => void
|
|
42
|
-
resetPagination: () => void
|
|
42
|
+
resetPagination: (defaultState?: boolean) => void
|
|
43
43
|
setPageIndex: (updater: Updater<number>) => void
|
|
44
|
-
resetPageIndex: () => void
|
|
44
|
+
resetPageIndex: (defaultState?: boolean) => void
|
|
45
45
|
setPageSize: (updater: Updater<number>) => void
|
|
46
|
-
resetPageSize: () => void
|
|
46
|
+
resetPageSize: (defaultState?: boolean) => void
|
|
47
47
|
setPageCount: (updater: Updater<number>) => void
|
|
48
48
|
getPageOptions: () => number[]
|
|
49
49
|
getCanPreviousPage: () => boolean
|
|
@@ -58,14 +58,20 @@ export type PaginationInstance<TGenerics extends TableGenerics> = {
|
|
|
58
58
|
|
|
59
59
|
//
|
|
60
60
|
|
|
61
|
+
const defaultPageIndex = 0
|
|
62
|
+
const defaultPageSize = 10
|
|
63
|
+
|
|
64
|
+
const getDefaultPaginationState = (): PaginationState => ({
|
|
65
|
+
pageIndex: defaultPageIndex,
|
|
66
|
+
pageSize: defaultPageSize,
|
|
67
|
+
})
|
|
68
|
+
|
|
61
69
|
export const Pagination: TableFeature = {
|
|
62
70
|
getInitialState: (state): PaginationTableState => {
|
|
63
71
|
return {
|
|
64
72
|
...state,
|
|
65
73
|
pagination: {
|
|
66
|
-
|
|
67
|
-
pageIndex: 0,
|
|
68
|
-
pageSize: 10,
|
|
74
|
+
...getDefaultPaginationState(),
|
|
69
75
|
...state?.pagination,
|
|
70
76
|
},
|
|
71
77
|
}
|
|
@@ -112,13 +118,11 @@ export const Pagination: TableFeature = {
|
|
|
112
118
|
|
|
113
119
|
return instance.options.onPaginationChange?.(safeUpdater)
|
|
114
120
|
},
|
|
115
|
-
resetPagination:
|
|
121
|
+
resetPagination: defaultState => {
|
|
116
122
|
instance.setPagination(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
pageCount: -1,
|
|
121
|
-
}
|
|
123
|
+
defaultState
|
|
124
|
+
? getDefaultPaginationState()
|
|
125
|
+
: instance.initialState.pagination ?? getDefaultPaginationState()
|
|
122
126
|
)
|
|
123
127
|
},
|
|
124
128
|
setPageIndex: updater => {
|
|
@@ -138,11 +142,19 @@ export const Pagination: TableFeature = {
|
|
|
138
142
|
}
|
|
139
143
|
})
|
|
140
144
|
},
|
|
141
|
-
resetPageIndex:
|
|
142
|
-
instance.setPageIndex(
|
|
145
|
+
resetPageIndex: defaultState => {
|
|
146
|
+
instance.setPageIndex(
|
|
147
|
+
defaultState
|
|
148
|
+
? defaultPageIndex
|
|
149
|
+
: instance.initialState?.pagination?.pageIndex ?? defaultPageIndex
|
|
150
|
+
)
|
|
143
151
|
},
|
|
144
|
-
resetPageSize:
|
|
145
|
-
instance.setPageSize(
|
|
152
|
+
resetPageSize: defaultState => {
|
|
153
|
+
instance.setPageSize(
|
|
154
|
+
defaultState
|
|
155
|
+
? defaultPageSize
|
|
156
|
+
: instance.initialState?.pagination?.pageSize ?? defaultPageSize
|
|
157
|
+
)
|
|
146
158
|
},
|
|
147
159
|
setPageSize: updater => {
|
|
148
160
|
instance.setPagination(old => {
|
|
@@ -159,7 +171,7 @@ export const Pagination: TableFeature = {
|
|
|
159
171
|
},
|
|
160
172
|
setPageCount: updater =>
|
|
161
173
|
instance.setPagination(old => {
|
|
162
|
-
let newPageCount = functionalUpdate(updater, old.pageCount)
|
|
174
|
+
let newPageCount = functionalUpdate(updater, old.pageCount ?? -1)
|
|
163
175
|
|
|
164
176
|
if (typeof newPageCount === 'number') {
|
|
165
177
|
newPageCount = Math.max(-1, newPageCount)
|
|
@@ -239,7 +251,8 @@ export const Pagination: TableFeature = {
|
|
|
239
251
|
|
|
240
252
|
getPageCount: () => {
|
|
241
253
|
const { pageCount } = instance.getState().pagination
|
|
242
|
-
|
|
254
|
+
|
|
255
|
+
if (typeof pageCount !== 'undefined') {
|
|
243
256
|
return pageCount
|
|
244
257
|
}
|
|
245
258
|
|
package/src/features/Pinning.ts
CHANGED
|
@@ -49,7 +49,7 @@ export type ColumnPinningRow<TGenerics extends TableGenerics> = {
|
|
|
49
49
|
|
|
50
50
|
export type ColumnPinningInstance<TGenerics extends TableGenerics> = {
|
|
51
51
|
setColumnPinning: (updater: Updater<ColumnPinningState>) => void
|
|
52
|
-
resetColumnPinning: () => void
|
|
52
|
+
resetColumnPinning: (defaultState?: boolean) => void
|
|
53
53
|
getIsSomeColumnsPinned: () => boolean
|
|
54
54
|
getLeftLeafColumns: () => Column<TGenerics>[]
|
|
55
55
|
getRightLeafColumns: () => Column<TGenerics>[]
|
|
@@ -58,13 +58,15 @@ export type ColumnPinningInstance<TGenerics extends TableGenerics> = {
|
|
|
58
58
|
|
|
59
59
|
//
|
|
60
60
|
|
|
61
|
+
const getDefaultPinningState = (): ColumnPinningState => ({
|
|
62
|
+
left: [],
|
|
63
|
+
right: [],
|
|
64
|
+
})
|
|
65
|
+
|
|
61
66
|
export const Pinning: TableFeature = {
|
|
62
67
|
getInitialState: (state): ColumnPinningTableState => {
|
|
63
68
|
return {
|
|
64
|
-
columnPinning:
|
|
65
|
-
left: [],
|
|
66
|
-
right: [],
|
|
67
|
-
},
|
|
69
|
+
columnPinning: getDefaultPinningState(),
|
|
68
70
|
...state,
|
|
69
71
|
}
|
|
70
72
|
},
|
|
@@ -220,8 +222,12 @@ export const Pinning: TableFeature = {
|
|
|
220
222
|
setColumnPinning: updater =>
|
|
221
223
|
instance.options.onColumnPinningChange?.(updater),
|
|
222
224
|
|
|
223
|
-
resetColumnPinning:
|
|
224
|
-
instance.setColumnPinning(
|
|
225
|
+
resetColumnPinning: defaultState =>
|
|
226
|
+
instance.setColumnPinning(
|
|
227
|
+
defaultState
|
|
228
|
+
? getDefaultPinningState()
|
|
229
|
+
: instance.initialState?.columnPinning ?? getDefaultPinningState()
|
|
230
|
+
),
|
|
225
231
|
|
|
226
232
|
getIsSomeColumnsPinned: () => {
|
|
227
233
|
const { left, right } = instance.getState().columnPinning
|