@tanstack/react-table 8.0.0-alpha.2 → 8.0.0-alpha.3
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 +84 -51
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +11 -6
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +2 -16
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Expanding.js +23 -2
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +54 -5
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +23 -2
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +87 -24
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +4 -1
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +194 -0
- package/build/cjs/features/Pagination.js.map +1 -0
- package/build/cjs/features/Pinning.js +0 -14
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +541 -0
- package/build/cjs/features/RowSelection.js.map +1 -0
- package/build/cjs/features/Sorting.js +76 -18
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +8 -2
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/sortTypes.js +1 -0
- package/build/cjs/sortTypes.js.map +1 -1
- package/build/cjs/utils/columnFilterRowsFn.js +3 -2
- package/build/cjs/utils/columnFilterRowsFn.js.map +1 -1
- package/build/cjs/utils/expandRowsFn.js +2 -2
- package/build/cjs/utils/expandRowsFn.js.map +1 -1
- package/build/cjs/utils/globalFilterRowsFn.js +3 -2
- package/build/cjs/utils/globalFilterRowsFn.js.map +1 -1
- package/build/cjs/utils/groupRowsFn.js +4 -3
- package/build/cjs/utils/groupRowsFn.js.map +1 -1
- package/build/cjs/utils/sortRowsFn.js +3 -2
- package/build/cjs/utils/sortRowsFn.js.map +1 -1
- package/build/cjs/utils.js +6 -3
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +2608 -1583
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +318 -248
- package/build/types/core.d.ts +10 -25
- package/build/types/createTable.d.ts +20 -2
- package/build/types/features/ColumnSizing.d.ts +4 -10
- package/build/types/features/Expanding.d.ts +2 -1
- package/build/types/features/Filters.d.ts +7 -2
- package/build/types/features/Grouping.d.ts +2 -2
- package/build/types/features/Ordering.d.ts +1 -1
- package/build/types/features/Pagination.d.ts +43 -0
- package/build/types/features/Pinning.d.ts +3 -3
- package/build/types/features/RowSelection.d.ts +66 -0
- package/build/types/features/Sorting.d.ts +5 -2
- package/build/types/sortTypes.d.ts +1 -0
- package/build/types/types.d.ts +9 -6
- package/build/types/utils/columnFilterRowsFn.d.ts +2 -2
- package/build/types/utils/expandRowsFn.d.ts +2 -2
- package/build/types/utils/globalFilterRowsFn.d.ts +2 -2
- package/build/types/utils/groupRowsFn.d.ts +2 -2
- package/build/types/utils/paginateRowsFn.d.ts +2 -0
- package/build/types/utils/sortRowsFn.d.ts +2 -2
- package/build/types/utils.d.ts +5 -1
- package/build/umd/index.development.js +2608 -1583
- 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.tsx +222 -272
- package/src/createTable.tsx +68 -8
- package/src/features/ColumnSizing.ts +8 -37
- package/src/features/Expanding.ts +27 -11
- package/src/features/Filters.ts +74 -19
- package/src/features/Grouping.ts +27 -12
- package/src/features/Headers.ts +26 -58
- package/src/features/Ordering.ts +2 -3
- package/src/features/Pagination.ts +314 -0
- package/src/features/Pinning.ts +3 -16
- package/src/features/RowSelection.ts +831 -0
- package/src/features/Sorting.ts +82 -22
- package/src/features/Visibility.ts +2 -4
- package/src/sortTypes.ts +1 -1
- package/src/types.ts +25 -8
- package/src/utils/columnFilterRowsFn.ts +5 -12
- package/src/utils/expandRowsFn.ts +2 -5
- package/src/utils/globalFilterRowsFn.ts +3 -10
- package/src/utils/groupRowsFn.ts +3 -5
- package/src/utils/paginateRowsFn.ts +34 -0
- package/src/utils/sortRowsFn.ts +5 -5
- package/src/utils.tsx +12 -4
- package/src/features/withPagination.oldts +0 -208
- package/src/features/withRowSelection.oldts +0 -467
package/src/createTable.tsx
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import * as React from 'react'
|
|
2
2
|
import { Cell, Column, Row } from '.'
|
|
3
3
|
import { createTableInstance } from './core'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
ReactTable,
|
|
6
|
+
ColumnDef,
|
|
7
|
+
AccessorFn,
|
|
8
|
+
Options,
|
|
9
|
+
Renderable,
|
|
10
|
+
Header,
|
|
11
|
+
} from './types'
|
|
5
12
|
import { Overwrite } from './utils'
|
|
6
13
|
|
|
7
14
|
type TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> = {
|
|
@@ -36,13 +43,57 @@ type TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> = {
|
|
|
36
43
|
) => ColumnDef<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
|
|
37
44
|
|
|
38
45
|
createGroup: (
|
|
46
|
+
column: Overwrite<
|
|
47
|
+
ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>,
|
|
48
|
+
| {
|
|
49
|
+
__generated?: never
|
|
50
|
+
accessorFn?: never
|
|
51
|
+
accessorKey?: never
|
|
52
|
+
header: string
|
|
53
|
+
id?: string
|
|
54
|
+
}
|
|
55
|
+
| {
|
|
56
|
+
__generated?: never
|
|
57
|
+
accessorFn?: never
|
|
58
|
+
accessorKey?: never
|
|
59
|
+
id: string
|
|
60
|
+
header?:
|
|
61
|
+
| string
|
|
62
|
+
| Renderable<{
|
|
63
|
+
instance: ReactTable<
|
|
64
|
+
TData,
|
|
65
|
+
TValue,
|
|
66
|
+
TFilterFns,
|
|
67
|
+
TSortingFns,
|
|
68
|
+
TAggregationFns
|
|
69
|
+
>
|
|
70
|
+
header: Header<
|
|
71
|
+
TData,
|
|
72
|
+
TValue,
|
|
73
|
+
TFilterFns,
|
|
74
|
+
TSortingFns,
|
|
75
|
+
TAggregationFns
|
|
76
|
+
>
|
|
77
|
+
column: Column<
|
|
78
|
+
TData,
|
|
79
|
+
TValue,
|
|
80
|
+
TFilterFns,
|
|
81
|
+
TSortingFns,
|
|
82
|
+
TAggregationFns
|
|
83
|
+
>
|
|
84
|
+
}>
|
|
85
|
+
}
|
|
86
|
+
>
|
|
87
|
+
) => ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>
|
|
88
|
+
|
|
89
|
+
createDisplayColumn: (
|
|
39
90
|
column: Overwrite<
|
|
40
91
|
ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>,
|
|
41
92
|
{ __generated?: never; accessorFn?: never; accessorKey?: never }
|
|
42
93
|
>
|
|
43
94
|
) => ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>
|
|
44
95
|
|
|
45
|
-
|
|
96
|
+
createDataColumn: <TAccessor extends AccessorFn<TData> | keyof TData>(
|
|
46
97
|
accessor: TAccessor,
|
|
47
98
|
column: TAccessor extends (...args: any[]) => any
|
|
48
99
|
? // Accessor Fn
|
|
@@ -71,7 +122,12 @@ type TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> = {
|
|
|
71
122
|
TSortingFns,
|
|
72
123
|
TAggregationFns
|
|
73
124
|
>,
|
|
74
|
-
{
|
|
125
|
+
{
|
|
126
|
+
__generated?: never
|
|
127
|
+
accessorFn?: never
|
|
128
|
+
accessorKey?: never
|
|
129
|
+
id?: string
|
|
130
|
+
}
|
|
75
131
|
>
|
|
76
132
|
: never
|
|
77
133
|
) => ColumnDef<
|
|
@@ -124,7 +180,15 @@ export function createTable<
|
|
|
124
180
|
SortingFns: () => createTable(),
|
|
125
181
|
AggregationFns: () => createTable(),
|
|
126
182
|
createColumns: columns => columns,
|
|
127
|
-
|
|
183
|
+
createDisplayColumn: column => ({
|
|
184
|
+
...column,
|
|
185
|
+
__generated: true,
|
|
186
|
+
}),
|
|
187
|
+
createGroup: column => ({
|
|
188
|
+
...column,
|
|
189
|
+
__generated: true,
|
|
190
|
+
}),
|
|
191
|
+
createDataColumn: (accessor, column) => {
|
|
128
192
|
column = {
|
|
129
193
|
...column,
|
|
130
194
|
id: column.id,
|
|
@@ -149,10 +213,6 @@ export function createTable<
|
|
|
149
213
|
|
|
150
214
|
throw new Error('Invalid accessor')
|
|
151
215
|
},
|
|
152
|
-
createGroup: column => ({
|
|
153
|
-
...column,
|
|
154
|
-
__generated: true,
|
|
155
|
-
}),
|
|
156
216
|
useTable: <TData, TValue, TFilterFns, TSortingFns, TAggregationFns>(
|
|
157
217
|
options: Options<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
158
218
|
): ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> => {
|
|
@@ -49,7 +49,7 @@ export type ColumnSizingDefaultOptions = {
|
|
|
49
49
|
onColumnSizingInfoChange: OnChangeFn<ColumnSizingInfoState>
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
export type
|
|
52
|
+
export type ColumnResizerProps = {
|
|
53
53
|
title?: string
|
|
54
54
|
onMouseDown?: (e: ReactMouseEvent) => void
|
|
55
55
|
onTouchStart?: (e: ReactTouchEvent) => void
|
|
@@ -72,10 +72,10 @@ export type ColumnSizingInstance<
|
|
|
72
72
|
resetHeaderSizeInfo: () => void
|
|
73
73
|
getColumnCanResize: (columnId: string) => boolean
|
|
74
74
|
getHeaderCanResize: (headerId: string) => boolean
|
|
75
|
-
|
|
75
|
+
getColumnResizerProps: <TGetter extends Getter<ColumnResizerProps>>(
|
|
76
76
|
columnId: string,
|
|
77
77
|
userProps?: TGetter
|
|
78
|
-
) => undefined | PropGetterValue<
|
|
78
|
+
) => undefined | PropGetterValue<ColumnResizerProps, TGetter>
|
|
79
79
|
getColumnIsResizing: (columnId: string) => boolean
|
|
80
80
|
getHeaderIsResizing: (headerId: string) => boolean
|
|
81
81
|
}
|
|
@@ -94,21 +94,9 @@ export type ColumnSizingColumn<
|
|
|
94
94
|
> = {
|
|
95
95
|
getCanResize: () => boolean
|
|
96
96
|
getIsResizing: () => boolean
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export type ColumnSizingHeader<
|
|
101
|
-
TData,
|
|
102
|
-
TValue,
|
|
103
|
-
TFilterFns,
|
|
104
|
-
TSortingFns,
|
|
105
|
-
TAggregationFns
|
|
106
|
-
> = {
|
|
107
|
-
getCanResize: () => boolean
|
|
108
|
-
getIsResizing: () => boolean
|
|
109
|
-
getResizerProps: <TGetter extends Getter<HeaderResizerProps>>(
|
|
97
|
+
getResizerProps: <TGetter extends Getter<ColumnResizerProps>>(
|
|
110
98
|
userProps?: TGetter
|
|
111
|
-
) => undefined | PropGetterValue<
|
|
99
|
+
) => undefined | PropGetterValue<ColumnResizerProps, TGetter>
|
|
112
100
|
resetSize: () => void
|
|
113
101
|
}
|
|
114
102
|
|
|
@@ -237,7 +225,7 @@ export function getInstance<
|
|
|
237
225
|
|
|
238
226
|
return instance.getColumnIsResizing(header.column.id)
|
|
239
227
|
},
|
|
240
|
-
|
|
228
|
+
getColumnResizerProps: (headerId, userProps) => {
|
|
241
229
|
const header = instance.getHeader(headerId)
|
|
242
230
|
|
|
243
231
|
if (!header) {
|
|
@@ -394,7 +382,7 @@ export function getInstance<
|
|
|
394
382
|
}))
|
|
395
383
|
}
|
|
396
384
|
|
|
397
|
-
const initialProps:
|
|
385
|
+
const initialProps: ColumnResizerProps = canResize
|
|
398
386
|
? {
|
|
399
387
|
title: 'Toggle Grouping',
|
|
400
388
|
draggable: false,
|
|
@@ -429,25 +417,8 @@ export function createColumn<
|
|
|
429
417
|
getIsResizing: () => instance.getColumnIsResizing(column.id),
|
|
430
418
|
getCanResize: () => instance.getColumnCanResize(column.id),
|
|
431
419
|
resetSize: () => instance.resetColumnSize(column.id),
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
export function createHeader<
|
|
436
|
-
TData,
|
|
437
|
-
TValue,
|
|
438
|
-
TFilterFns,
|
|
439
|
-
TSortingFns,
|
|
440
|
-
TAggregationFns
|
|
441
|
-
>(
|
|
442
|
-
header: Header<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
|
|
443
|
-
instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
444
|
-
): ColumnSizingHeader<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
|
|
445
|
-
return {
|
|
446
|
-
getIsResizing: () => instance.getHeaderIsResizing(header.id),
|
|
447
|
-
getCanResize: () => instance.getHeaderCanResize(header.id),
|
|
448
420
|
getResizerProps: userProps =>
|
|
449
|
-
instance.
|
|
450
|
-
resetSize: () => instance.resetHeaderSize(header.id),
|
|
421
|
+
instance.getColumnResizerProps(column.id, userProps),
|
|
451
422
|
}
|
|
452
423
|
}
|
|
453
424
|
|
|
@@ -43,14 +43,7 @@ export type ExpandedOptions<
|
|
|
43
43
|
TSortingFns,
|
|
44
44
|
TAggregationFns
|
|
45
45
|
>,
|
|
46
|
-
|
|
47
|
-
groupedRowModel: RowModel<
|
|
48
|
-
TData,
|
|
49
|
-
TValue,
|
|
50
|
-
TFilterFns,
|
|
51
|
-
TSortingFns,
|
|
52
|
-
TAggregationFns
|
|
53
|
-
>
|
|
46
|
+
rowModel: RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
54
47
|
) => RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
55
48
|
expandSubRows?: boolean
|
|
56
49
|
defaultCanExpand?: boolean
|
|
@@ -75,6 +68,7 @@ export type ExpandedInstance<
|
|
|
75
68
|
TSortingFns,
|
|
76
69
|
TAggregationFns
|
|
77
70
|
> = {
|
|
71
|
+
_notifyExpandedReset: () => void
|
|
78
72
|
setExpanded: (updater: Updater<ExpandedState>) => void
|
|
79
73
|
toggleRowExpanded: (rowId: string, expanded?: boolean) => void
|
|
80
74
|
toggleAllRowsExpanded: (expanded?: boolean) => void
|
|
@@ -170,7 +164,26 @@ export function getInstance<
|
|
|
170
164
|
>(
|
|
171
165
|
instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
172
166
|
): ExpandedInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
|
|
167
|
+
let registered = false
|
|
168
|
+
|
|
173
169
|
return {
|
|
170
|
+
_notifyExpandedReset: () => {
|
|
171
|
+
if (!registered) {
|
|
172
|
+
registered = true
|
|
173
|
+
return
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (instance.options.autoResetAll === false) {
|
|
177
|
+
return
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (
|
|
181
|
+
instance.options.autoResetAll === true ||
|
|
182
|
+
instance.options.autoResetExpanded
|
|
183
|
+
) {
|
|
184
|
+
instance.resetExpanded()
|
|
185
|
+
}
|
|
186
|
+
},
|
|
174
187
|
setExpanded: updater =>
|
|
175
188
|
instance.options.onExpandedChange?.(
|
|
176
189
|
updater,
|
|
@@ -344,10 +357,13 @@ export function getInstance<
|
|
|
344
357
|
if (process.env.NODE_ENV !== 'production' && instance.options.debug)
|
|
345
358
|
console.info('Expanding...')
|
|
346
359
|
|
|
347
|
-
return expandRowsFn(instance,
|
|
360
|
+
return expandRowsFn(instance, rowModel)
|
|
348
361
|
},
|
|
349
|
-
|
|
350
|
-
|
|
362
|
+
{
|
|
363
|
+
key: 'getExpandedRowModel',
|
|
364
|
+
debug: instance.options.debug,
|
|
365
|
+
onChange: () => instance._notifyPageIndexReset(),
|
|
366
|
+
}
|
|
351
367
|
),
|
|
352
368
|
|
|
353
369
|
getPreExpandedRows: () => instance.getGroupedRowModel().rows,
|
package/src/features/Filters.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { RowModel } from '..'
|
|
2
2
|
import { BuiltInFilterType, filterTypes } from '../filterTypes'
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
Column,
|
|
5
|
+
Listener,
|
|
6
|
+
OnChangeFn,
|
|
7
|
+
ReactTable,
|
|
8
|
+
Row,
|
|
9
|
+
Updater,
|
|
10
|
+
} from '../types'
|
|
4
11
|
import { functionalUpdate, isFunction, makeStateUpdater, memo } from '../utils'
|
|
5
12
|
|
|
6
13
|
export type ColumnFilter = {
|
|
@@ -106,7 +113,6 @@ export type FiltersOptions<
|
|
|
106
113
|
enableColumnFilters?: boolean
|
|
107
114
|
columnFilterRowsFn?: (
|
|
108
115
|
instance: ReactTable<any, any, any, any, any>,
|
|
109
|
-
columnFilters: ColumnFiltersState,
|
|
110
116
|
coreRowModel: RowModel<any, any, any, any, any>
|
|
111
117
|
) => RowModel<any, any, any, any, any>
|
|
112
118
|
// Global
|
|
@@ -117,14 +123,7 @@ export type FiltersOptions<
|
|
|
117
123
|
enableGlobalFilter?: boolean
|
|
118
124
|
globalFilterRowsFn?: (
|
|
119
125
|
instance: ReactTable<any, any, any, any, any>,
|
|
120
|
-
|
|
121
|
-
columnFilteredRowModel: RowModel<
|
|
122
|
-
TData,
|
|
123
|
-
TValue,
|
|
124
|
-
TFilterFns,
|
|
125
|
-
TSortingFns,
|
|
126
|
-
TAggregationFns
|
|
127
|
-
>
|
|
126
|
+
rowModel: RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
128
127
|
) => RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
129
128
|
getColumnCanGlobalFilterFn?: (
|
|
130
129
|
column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
@@ -138,6 +137,7 @@ export type FiltersInstance<
|
|
|
138
137
|
TSortingFns,
|
|
139
138
|
TAggregationFns
|
|
140
139
|
> = {
|
|
140
|
+
_notifyFiltersReset: () => void
|
|
141
141
|
getColumnAutoFilterFn: (
|
|
142
142
|
columnId: string
|
|
143
143
|
) => FilterFn<any, any, any, any, any> | undefined
|
|
@@ -164,6 +164,31 @@ export type FiltersInstance<
|
|
|
164
164
|
TSortingFns,
|
|
165
165
|
TAggregationFns
|
|
166
166
|
>
|
|
167
|
+
getPreFilteredRowModel: () => RowModel<
|
|
168
|
+
TData,
|
|
169
|
+
TValue,
|
|
170
|
+
TFilterFns,
|
|
171
|
+
TSortingFns,
|
|
172
|
+
TAggregationFns
|
|
173
|
+
>
|
|
174
|
+
getPreFilteredRows: () => Row<
|
|
175
|
+
TData,
|
|
176
|
+
TValue,
|
|
177
|
+
TFilterFns,
|
|
178
|
+
TSortingFns,
|
|
179
|
+
TAggregationFns
|
|
180
|
+
>[]
|
|
181
|
+
getPreFilteredFlatRows: () => Row<
|
|
182
|
+
TData,
|
|
183
|
+
TValue,
|
|
184
|
+
TFilterFns,
|
|
185
|
+
TSortingFns,
|
|
186
|
+
TAggregationFns
|
|
187
|
+
>[]
|
|
188
|
+
getPreFilteredRowsById: () => Record<
|
|
189
|
+
string,
|
|
190
|
+
Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
191
|
+
>
|
|
167
192
|
getPreColumnFilteredRows: () => Row<
|
|
168
193
|
TData,
|
|
169
194
|
TValue,
|
|
@@ -337,8 +362,7 @@ export function createColumn<
|
|
|
337
362
|
preFilteredMinMaxValues,
|
|
338
363
|
}
|
|
339
364
|
},
|
|
340
|
-
'column.getFacetInfo',
|
|
341
|
-
instance.options.debug
|
|
365
|
+
{ key: 'column.getFacetInfo', debug: instance.options.debug }
|
|
342
366
|
)
|
|
343
367
|
|
|
344
368
|
return {
|
|
@@ -364,7 +388,30 @@ export function getInstance<
|
|
|
364
388
|
>(
|
|
365
389
|
instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
366
390
|
): FiltersInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
|
|
391
|
+
let registered = false
|
|
392
|
+
|
|
367
393
|
return {
|
|
394
|
+
_notifyFiltersReset: () => {
|
|
395
|
+
if (!registered) {
|
|
396
|
+
registered = true
|
|
397
|
+
return
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
if (instance.options.autoResetAll === false) {
|
|
401
|
+
return
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
if (instance.options.autoResetAll === true) {
|
|
405
|
+
instance.resetSorting()
|
|
406
|
+
} else {
|
|
407
|
+
if (instance.options.autoResetColumnFilters) {
|
|
408
|
+
instance.resetColumnFilters()
|
|
409
|
+
}
|
|
410
|
+
if (instance.options.autoResetGlobalFilter) {
|
|
411
|
+
instance.resetGlobalFilter()
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
},
|
|
368
415
|
getColumnAutoFilterFn: columnId => {
|
|
369
416
|
const firstRow = instance.getCoreFlatRows()[0]
|
|
370
417
|
|
|
@@ -601,7 +648,7 @@ export function getInstance<
|
|
|
601
648
|
if (process.env.NODE_ENV !== 'production' && instance.options.debug)
|
|
602
649
|
console.info('Column Filtering...')
|
|
603
650
|
|
|
604
|
-
return columnFiltersFn(instance as any,
|
|
651
|
+
return columnFiltersFn(instance as any, rowModel)
|
|
605
652
|
})()
|
|
606
653
|
|
|
607
654
|
// Now that each filtered column has it's partially filtered rows,
|
|
@@ -622,19 +669,25 @@ export function getInstance<
|
|
|
622
669
|
|
|
623
670
|
return columnFilteredRowModel
|
|
624
671
|
},
|
|
625
|
-
'getColumnFilteredRowModel',
|
|
626
|
-
instance.options.debug
|
|
672
|
+
{ key: 'getColumnFilteredRowModel', debug: instance.options.debug }
|
|
627
673
|
),
|
|
628
674
|
|
|
675
|
+
// These might be easier to remember than "column" filtered rows
|
|
676
|
+
getPreFilteredRowModel: () => instance.getCoreRowModel(),
|
|
677
|
+
getPreFilteredRows: () => instance.getCoreRowModel().rows,
|
|
678
|
+
getPreFilteredFlatRows: () => instance.getCoreRowModel().flatRows,
|
|
679
|
+
getPreFilteredRowsById: () => instance.getCoreRowModel().rowsById,
|
|
680
|
+
|
|
681
|
+
// Pre Column Filter
|
|
629
682
|
getPreColumnFilteredRows: () => instance.getCoreRowModel().rows,
|
|
630
683
|
getPreColumnFilteredFlatRows: () => instance.getCoreRowModel().flatRows,
|
|
631
684
|
getPreColumnFilteredRowsById: () => instance.getCoreRowModel().rowsById,
|
|
632
685
|
getColumnFilteredRows: () => instance.getColumnFilteredRowModel().rows,
|
|
686
|
+
|
|
633
687
|
getColumnFilteredFlatRows: () =>
|
|
634
688
|
instance.getColumnFilteredRowModel().flatRows,
|
|
635
689
|
getColumnFilteredRowsById: () =>
|
|
636
690
|
instance.getColumnFilteredRowModel().rowsById,
|
|
637
|
-
|
|
638
691
|
getGlobalFilteredRowModel: memo(
|
|
639
692
|
() => [
|
|
640
693
|
instance.getState().globalFilter,
|
|
@@ -652,7 +705,6 @@ export function getInstance<
|
|
|
652
705
|
|
|
653
706
|
return globalFiltersFn(
|
|
654
707
|
instance as ReactTable<any, any, any, any, any>,
|
|
655
|
-
globalFilterValue,
|
|
656
708
|
columnFilteredRowModel
|
|
657
709
|
)
|
|
658
710
|
})()
|
|
@@ -675,8 +727,11 @@ export function getInstance<
|
|
|
675
727
|
|
|
676
728
|
return globalFilteredRowModel
|
|
677
729
|
},
|
|
678
|
-
|
|
679
|
-
|
|
730
|
+
{
|
|
731
|
+
key: 'getGlobalFilteredRowModel',
|
|
732
|
+
debug: instance.options.debug,
|
|
733
|
+
onChange: () => instance._notifySortingReset(),
|
|
734
|
+
}
|
|
680
735
|
),
|
|
681
736
|
|
|
682
737
|
getPreGlobalFilteredRows: () => instance.getColumnFilteredRowModel().rows,
|
package/src/features/Grouping.ts
CHANGED
|
@@ -39,7 +39,6 @@ export type GroupingColumnDef<TAggregationFns> = {
|
|
|
39
39
|
renderAggregatedCell?: () => React.ReactNode
|
|
40
40
|
enableGrouping?: boolean
|
|
41
41
|
defaultCanGroup?: boolean
|
|
42
|
-
getCanGroup?: unknown
|
|
43
42
|
}
|
|
44
43
|
|
|
45
44
|
export type GroupingColumn<
|
|
@@ -98,14 +97,7 @@ export type GroupingOptions<
|
|
|
98
97
|
TSortingFns,
|
|
99
98
|
TAggregationFns
|
|
100
99
|
>,
|
|
101
|
-
|
|
102
|
-
sortedRowsModel: RowModel<
|
|
103
|
-
TData,
|
|
104
|
-
TValue,
|
|
105
|
-
TFilterFns,
|
|
106
|
-
TSortingFns,
|
|
107
|
-
TAggregationFns
|
|
108
|
-
>
|
|
100
|
+
rowModel: RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
109
101
|
) => RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
110
102
|
|
|
111
103
|
groupedColumnMode?: false | 'reorder' | 'remove'
|
|
@@ -125,6 +117,7 @@ export type GroupingInstance<
|
|
|
125
117
|
TSortingFns,
|
|
126
118
|
TAggregationFns
|
|
127
119
|
> = {
|
|
120
|
+
_notifyGroupingReset: () => void
|
|
128
121
|
getColumnAutoAggregationFn: (columnId: string) => AggregationFn | undefined
|
|
129
122
|
getColumnAggregationFn: (columnId: string) => AggregationFn | undefined
|
|
130
123
|
setGrouping: (updater: Updater<GroupingState>) => void
|
|
@@ -243,7 +236,26 @@ export function getInstance<
|
|
|
243
236
|
>(
|
|
244
237
|
instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
245
238
|
): GroupingInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
|
|
239
|
+
let registered = false
|
|
240
|
+
|
|
246
241
|
return {
|
|
242
|
+
_notifyGroupingReset: () => {
|
|
243
|
+
if (!registered) {
|
|
244
|
+
registered = true
|
|
245
|
+
return
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
if (instance.options.autoResetAll === false) {
|
|
249
|
+
return
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
if (
|
|
253
|
+
instance.options.autoResetAll === true ||
|
|
254
|
+
instance.options.autoResetGrouping
|
|
255
|
+
) {
|
|
256
|
+
instance.resetGrouping()
|
|
257
|
+
}
|
|
258
|
+
},
|
|
247
259
|
getColumnAutoAggregationFn: columnId => {
|
|
248
260
|
const firstRow = instance.getCoreFlatRows()[0]
|
|
249
261
|
|
|
@@ -360,10 +372,13 @@ export function getInstance<
|
|
|
360
372
|
if (process.env.NODE_ENV !== 'production' && instance.options.debug)
|
|
361
373
|
console.info('Grouping...')
|
|
362
374
|
|
|
363
|
-
return groupRowsFn(instance,
|
|
375
|
+
return groupRowsFn(instance, rowModel)
|
|
364
376
|
},
|
|
365
|
-
|
|
366
|
-
|
|
377
|
+
{
|
|
378
|
+
key: 'getGroupedRowModel',
|
|
379
|
+
debug: instance.options.debug,
|
|
380
|
+
onChange: () => instance._notifyExpandedReset(),
|
|
381
|
+
}
|
|
367
382
|
),
|
|
368
383
|
|
|
369
384
|
getPreGroupedRows: () => instance.getSortedRowModel().rows,
|