@tanstack/table-core 8.0.0-alpha.58 → 8.0.0-alpha.61
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 +10 -21
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +3 -3
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/Cells.js +0 -15
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +8 -19
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +12 -22
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +0 -23
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +6 -27
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +1 -67
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Pagination.js +4 -4
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +15 -79
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Rows.js +0 -15
- package/build/cjs/features/Rows.js.map +1 -1
- package/build/cjs/features/Sorting.js +7 -28
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +8 -21
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +16 -0
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/index.js +0 -1
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/utils/getColumnFilteredRowModelSync.js +1 -1
- package/build/cjs/utils/getColumnFilteredRowModelSync.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelAsync.js +1 -2
- package/build/cjs/utils/getCoreRowModelAsync.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelSync.js +1 -2
- package/build/cjs/utils/getCoreRowModelSync.js.map +1 -1
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js +1 -1
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js.map +1 -1
- package/build/cjs/utils/getGroupedRowModel.js +3 -1
- package/build/cjs/utils/getGroupedRowModel.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 +0 -16
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +100 -369
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +360 -360
- package/build/types/core.d.ts +8 -10
- package/build/types/createTable.d.ts +10 -11
- package/build/types/features/Cells.d.ts +1 -2
- package/build/types/features/ColumnSizing.d.ts +4 -18
- package/build/types/features/Expanding.d.ts +5 -9
- package/build/types/features/Filters.d.ts +0 -3
- package/build/types/features/Grouping.d.ts +4 -11
- package/build/types/features/Headers.d.ts +1 -5
- package/build/types/features/Pagination.d.ts +6 -7
- package/build/types/features/RowSelection.d.ts +5 -14
- package/build/types/features/Rows.d.ts +2 -4
- package/build/types/features/Sorting.d.ts +3 -9
- package/build/types/features/Visibility.d.ts +3 -6
- package/build/types/filterFns.d.ts +5 -0
- package/build/types/types.d.ts +10 -60
- package/build/types/utils.d.ts +1 -4
- package/build/umd/index.development.js +99 -369
- 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 +29 -53
- package/src/createTable.ts +13 -17
- package/src/features/Cells.ts +1 -27
- package/src/features/ColumnSizing.ts +14 -44
- package/src/features/Columns.ts +0 -2
- package/src/features/Expanding.ts +16 -44
- package/src/features/Filters.ts +0 -33
- package/src/features/Grouping.ts +10 -62
- package/src/features/Headers.ts +1 -95
- package/src/features/Pagination.ts +11 -4
- package/src/features/Pinning.ts +1 -1
- package/src/features/RowSelection.ts +25 -116
- package/src/features/Rows.ts +2 -30
- package/src/features/Sorting.ts +17 -63
- package/src/features/Visibility.ts +15 -43
- package/src/filterFns.ts +20 -0
- package/src/types.ts +36 -98
- package/src/utils/getColumnFilteredRowModelAsync.ts +2 -6
- package/src/utils/getColumnFilteredRowModelSync.ts +1 -1
- package/src/utils/getCoreRowModelAsync.ts +1 -2
- package/src/utils/getCoreRowModelSync.ts +1 -2
- package/src/utils/getGlobalFilteredRowModelAsync.ts +3 -7
- package/src/utils/getGlobalFilteredRowModelSync.ts +1 -1
- package/src/utils/getGroupedRowModel.ts +2 -1
- package/src/utils/getSortedRowModelAsync.ts +1 -2
- package/src/utils/getSortedRowModelSync.ts +1 -1
- package/src/utils.ts +1 -28
package/src/features/Grouping.ts
CHANGED
|
@@ -3,24 +3,14 @@ import { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'
|
|
|
3
3
|
import {
|
|
4
4
|
Cell,
|
|
5
5
|
Column,
|
|
6
|
-
Getter,
|
|
7
6
|
OnChangeFn,
|
|
8
|
-
PropGetterValue,
|
|
9
7
|
TableInstance,
|
|
10
8
|
Row,
|
|
11
9
|
Updater,
|
|
12
10
|
Renderable,
|
|
13
|
-
UseRenderer,
|
|
14
11
|
TableGenerics,
|
|
15
12
|
} from '../types'
|
|
16
|
-
import {
|
|
17
|
-
functionalUpdate,
|
|
18
|
-
isFunction,
|
|
19
|
-
makeStateUpdater,
|
|
20
|
-
memo,
|
|
21
|
-
Overwrite,
|
|
22
|
-
propGetter,
|
|
23
|
-
} from '../utils'
|
|
13
|
+
import { isFunction, makeStateUpdater, Overwrite } from '../utils'
|
|
24
14
|
|
|
25
15
|
export type GroupingState = string[]
|
|
26
16
|
|
|
@@ -67,9 +57,7 @@ export type GroupingColumn<TGenerics extends TableGenerics> = {
|
|
|
67
57
|
getIsGrouped: () => boolean
|
|
68
58
|
getGroupedIndex: () => number
|
|
69
59
|
toggleGrouping: () => void
|
|
70
|
-
|
|
71
|
-
userProps?: TGetter
|
|
72
|
-
) => undefined | PropGetterValue<ToggleGroupingProps, TGetter>
|
|
60
|
+
getToggleGroupingHandler: () => () => void
|
|
73
61
|
}
|
|
74
62
|
|
|
75
63
|
export type GroupingRow = {
|
|
@@ -82,13 +70,12 @@ export type GroupingCell<TGenerics extends TableGenerics> = {
|
|
|
82
70
|
getIsGrouped: () => boolean
|
|
83
71
|
getIsPlaceholder: () => boolean
|
|
84
72
|
getIsAggregated: () => boolean
|
|
85
|
-
renderAggregatedCell: () => string | null |
|
|
73
|
+
renderAggregatedCell: () => string | null | TGenerics['Rendered']
|
|
86
74
|
}
|
|
87
75
|
|
|
88
76
|
export type ColumnDefaultOptions = {
|
|
89
77
|
// Column
|
|
90
78
|
onGroupingChange: OnChangeFn<GroupingState>
|
|
91
|
-
autoResetGrouping: boolean
|
|
92
79
|
enableGrouping: boolean
|
|
93
80
|
}
|
|
94
81
|
|
|
@@ -96,7 +83,6 @@ export type GroupingOptions<TGenerics extends TableGenerics> = {
|
|
|
96
83
|
manualGrouping?: boolean
|
|
97
84
|
aggregationFns?: TGenerics['AggregationFns']
|
|
98
85
|
onGroupingChange?: OnChangeFn<GroupingState>
|
|
99
|
-
autoResetGrouping?: boolean
|
|
100
86
|
enableGrouping?: boolean
|
|
101
87
|
enableGroupingRemoval?: boolean
|
|
102
88
|
getGroupedRowModel?: (
|
|
@@ -108,13 +94,7 @@ export type GroupingOptions<TGenerics extends TableGenerics> = {
|
|
|
108
94
|
|
|
109
95
|
export type GroupingColumnMode = false | 'reorder' | 'remove'
|
|
110
96
|
|
|
111
|
-
export type ToggleGroupingProps = {
|
|
112
|
-
title?: string
|
|
113
|
-
onClick?: (event: unknown) => void
|
|
114
|
-
}
|
|
115
|
-
|
|
116
97
|
export type GroupingInstance<TGenerics extends TableGenerics> = {
|
|
117
|
-
queueResetGrouping: () => void
|
|
118
98
|
getColumnAutoAggregationFn: (
|
|
119
99
|
columnId: string
|
|
120
100
|
) => AggregationFn<TGenerics> | undefined
|
|
@@ -127,10 +107,7 @@ export type GroupingInstance<TGenerics extends TableGenerics> = {
|
|
|
127
107
|
getColumnCanGroup: (columnId: string) => boolean
|
|
128
108
|
getColumnIsGrouped: (columnId: string) => boolean
|
|
129
109
|
getColumnGroupedIndex: (columnId: string) => number
|
|
130
|
-
|
|
131
|
-
columnId: string,
|
|
132
|
-
userProps?: TGetter
|
|
133
|
-
) => undefined | PropGetterValue<ToggleGroupingProps, TGetter>
|
|
110
|
+
getToggleGroupingHandler: (columnId: string) => undefined | (() => void)
|
|
134
111
|
getRowIsGrouped: (rowId: string) => boolean
|
|
135
112
|
getPreGroupedRowModel: () => RowModel<TGenerics>
|
|
136
113
|
getGroupedRowModel: () => RowModel<TGenerics>
|
|
@@ -159,7 +136,6 @@ export const Grouping = {
|
|
|
159
136
|
): GroupingOptions<TGenerics> => {
|
|
160
137
|
return {
|
|
161
138
|
onGroupingChange: makeStateUpdater('grouping', instance),
|
|
162
|
-
autoResetGrouping: true,
|
|
163
139
|
groupedColumnMode: 'reorder',
|
|
164
140
|
}
|
|
165
141
|
},
|
|
@@ -174,36 +150,15 @@ export const Grouping = {
|
|
|
174
150
|
getGroupedIndex: () => instance.getColumnGroupedIndex(column.id),
|
|
175
151
|
getIsGrouped: () => instance.getColumnIsGrouped(column.id),
|
|
176
152
|
toggleGrouping: () => instance.toggleColumnGrouping(column.id),
|
|
177
|
-
|
|
178
|
-
instance.
|
|
153
|
+
getToggleGroupingHandler: () =>
|
|
154
|
+
instance.getToggleGroupingHandler(column.id)!,
|
|
179
155
|
}
|
|
180
156
|
},
|
|
181
157
|
|
|
182
158
|
createInstance: <TGenerics extends TableGenerics>(
|
|
183
159
|
instance: TableInstance<TGenerics>
|
|
184
160
|
): GroupingInstance<TGenerics> => {
|
|
185
|
-
let registered = false
|
|
186
|
-
|
|
187
161
|
return {
|
|
188
|
-
queueResetGrouping: () => {
|
|
189
|
-
instance.queueResetExpanded()
|
|
190
|
-
|
|
191
|
-
if (!registered) {
|
|
192
|
-
registered = true
|
|
193
|
-
return
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
if (instance.options.autoResetAll === false) {
|
|
197
|
-
return
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
if (
|
|
201
|
-
instance.options.autoResetAll === true ||
|
|
202
|
-
instance.options.autoResetGrouping
|
|
203
|
-
) {
|
|
204
|
-
instance.resetGrouping()
|
|
205
|
-
}
|
|
206
|
-
},
|
|
207
162
|
getColumnAutoAggregationFn: columnId => {
|
|
208
163
|
const firstRow = instance.getCoreRowModel().flatRows[0]
|
|
209
164
|
|
|
@@ -278,21 +233,14 @@ export const Grouping = {
|
|
|
278
233
|
instance.setGrouping(instance.initialState?.grouping ?? [])
|
|
279
234
|
},
|
|
280
235
|
|
|
281
|
-
|
|
236
|
+
getToggleGroupingHandler: columnId => {
|
|
282
237
|
const column = instance.getColumn(columnId)
|
|
283
|
-
|
|
284
238
|
const canGroup = column.getCanGroup()
|
|
285
239
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
? (e: unknown) => {
|
|
290
|
-
column.toggleGrouping?.()
|
|
291
|
-
}
|
|
292
|
-
: undefined,
|
|
240
|
+
return () => {
|
|
241
|
+
if (!canGroup) return
|
|
242
|
+
column.toggleGrouping?.()
|
|
293
243
|
}
|
|
294
|
-
|
|
295
|
-
return propGetter(initialProps, userProps)
|
|
296
244
|
},
|
|
297
245
|
|
|
298
246
|
getRowIsGrouped: rowId => !!instance.getRow(rowId)?.groupingColumnId,
|
package/src/features/Headers.ts
CHANGED
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Cell,
|
|
3
2
|
Column,
|
|
4
3
|
CoreHeader,
|
|
5
|
-
FooterGroupProps,
|
|
6
|
-
FooterProps,
|
|
7
|
-
Getter,
|
|
8
4
|
Header,
|
|
9
5
|
HeaderGroup,
|
|
10
|
-
HeaderGroupProps,
|
|
11
|
-
HeaderProps,
|
|
12
6
|
TableGenerics,
|
|
13
|
-
PropGetterValue,
|
|
14
7
|
TableInstance,
|
|
15
|
-
Row,
|
|
16
8
|
} from '../types'
|
|
17
|
-
import {
|
|
9
|
+
import { memo } from '../utils'
|
|
18
10
|
|
|
19
11
|
export type HeadersInstance<TGenerics extends TableGenerics> = {
|
|
20
12
|
createHeader: (
|
|
@@ -48,23 +40,6 @@ export type HeadersInstance<TGenerics extends TableGenerics> = {
|
|
|
48
40
|
getRightLeafHeaders: () => Header<TGenerics>[]
|
|
49
41
|
|
|
50
42
|
getHeader: (id: string) => Header<TGenerics>
|
|
51
|
-
|
|
52
|
-
getHeaderGroupProps: <TGetter extends Getter<HeaderGroupProps>>(
|
|
53
|
-
id: string,
|
|
54
|
-
userProps?: TGetter
|
|
55
|
-
) => undefined | PropGetterValue<HeaderGroupProps, TGetter>
|
|
56
|
-
getFooterGroupProps: <TGetter extends Getter<FooterGroupProps>>(
|
|
57
|
-
id: string,
|
|
58
|
-
userProps?: TGetter
|
|
59
|
-
) => undefined | PropGetterValue<FooterGroupProps, TGetter>
|
|
60
|
-
getHeaderProps: <TGetter extends Getter<HeaderProps>>(
|
|
61
|
-
headerId: string,
|
|
62
|
-
userProps?: TGetter
|
|
63
|
-
) => undefined | PropGetterValue<HeaderProps, TGetter>
|
|
64
|
-
getFooterProps: <TGetter extends Getter<FooterProps>>(
|
|
65
|
-
headerId: string,
|
|
66
|
-
userProps?: TGetter
|
|
67
|
-
) => undefined | PropGetterValue<FooterProps, TGetter>
|
|
68
43
|
}
|
|
69
44
|
|
|
70
45
|
//
|
|
@@ -135,10 +110,6 @@ export const Headers = {
|
|
|
135
110
|
|
|
136
111
|
return leafHeaders as Header<TGenerics>[]
|
|
137
112
|
},
|
|
138
|
-
getHeaderProps: userProps =>
|
|
139
|
-
instance.getHeaderProps(header.id, userProps)!,
|
|
140
|
-
getFooterProps: userProps =>
|
|
141
|
-
instance.getFooterProps(header.id, userProps)!,
|
|
142
113
|
renderHeader: () =>
|
|
143
114
|
column.header
|
|
144
115
|
? instance.render(column.header, {
|
|
@@ -447,67 +418,6 @@ export const Headers = {
|
|
|
447
418
|
|
|
448
419
|
return header
|
|
449
420
|
},
|
|
450
|
-
|
|
451
|
-
getHeaderGroupProps: (id, userProps) => {
|
|
452
|
-
const headerGroup = instance.getHeaderGroups().find(d => d.id === id)
|
|
453
|
-
|
|
454
|
-
if (!headerGroup) {
|
|
455
|
-
return
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
return propGetter(
|
|
459
|
-
{
|
|
460
|
-
key: headerGroup.id,
|
|
461
|
-
role: 'row',
|
|
462
|
-
},
|
|
463
|
-
userProps
|
|
464
|
-
)
|
|
465
|
-
},
|
|
466
|
-
|
|
467
|
-
getFooterGroupProps: (id, userProps) => {
|
|
468
|
-
const headerGroup = instance.getFooterGroups().find(d => d.id === id)
|
|
469
|
-
|
|
470
|
-
if (!headerGroup) {
|
|
471
|
-
return
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
const initialProps = {
|
|
475
|
-
key: headerGroup.id,
|
|
476
|
-
role: 'row',
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
return propGetter(initialProps, userProps)
|
|
480
|
-
},
|
|
481
|
-
|
|
482
|
-
getHeaderProps: (id, userProps) => {
|
|
483
|
-
const header = instance.getHeader(id)
|
|
484
|
-
|
|
485
|
-
if (!header) {
|
|
486
|
-
throw new Error()
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
const initialProps: HeaderProps = {
|
|
490
|
-
key: header.id,
|
|
491
|
-
role: 'columnheader',
|
|
492
|
-
colSpan: header.colSpan,
|
|
493
|
-
rowSpan: header.rowSpan,
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
return propGetter(initialProps, userProps)
|
|
497
|
-
},
|
|
498
|
-
|
|
499
|
-
getFooterProps: (id, userProps) => {
|
|
500
|
-
const header = instance.getHeader(id)
|
|
501
|
-
|
|
502
|
-
const initialProps: FooterProps = {
|
|
503
|
-
key: header.id,
|
|
504
|
-
role: 'columnfooter',
|
|
505
|
-
colSpan: header.colSpan,
|
|
506
|
-
rowSpan: header.rowSpan,
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
return propGetter(initialProps, userProps)
|
|
510
|
-
},
|
|
511
421
|
}
|
|
512
422
|
},
|
|
513
423
|
}
|
|
@@ -551,10 +461,6 @@ export function buildHeaderGroups<TGenerics extends TableGenerics>(
|
|
|
551
461
|
depth,
|
|
552
462
|
id: [headerFamily, `${depth}`].filter(Boolean).join('_'),
|
|
553
463
|
headers: [],
|
|
554
|
-
getHeaderGroupProps: getterValue =>
|
|
555
|
-
instance.getHeaderGroupProps(`${depth}`, getterValue)!,
|
|
556
|
-
getFooterGroupProps: getterValue =>
|
|
557
|
-
instance.getFooterGroupProps(`${depth}`, getterValue)!,
|
|
558
464
|
}
|
|
559
465
|
|
|
560
466
|
// The parent columns we're going to scan next
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
TableInstance,
|
|
5
5
|
RowModel,
|
|
6
6
|
Updater,
|
|
7
|
+
TableFeature,
|
|
7
8
|
} from '../types'
|
|
8
9
|
import { functionalUpdate, makeStateUpdater, memo } from '../utils'
|
|
9
10
|
|
|
@@ -17,6 +18,10 @@ export type PaginationTableState = {
|
|
|
17
18
|
pagination: PaginationState
|
|
18
19
|
}
|
|
19
20
|
|
|
21
|
+
export type PaginationInitialTableState = {
|
|
22
|
+
pagination?: Partial<PaginationState>
|
|
23
|
+
}
|
|
24
|
+
|
|
20
25
|
export type PaginationOptions<TGenerics extends TableGenerics> = {
|
|
21
26
|
manualPagination?: boolean
|
|
22
27
|
onPaginationChange?: OnChangeFn<PaginationState>
|
|
@@ -32,7 +37,7 @@ export type PaginationDefaultOptions = {
|
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
export type PaginationInstance<TGenerics extends TableGenerics> = {
|
|
35
|
-
|
|
40
|
+
_autoResetPageIndex: () => void
|
|
36
41
|
setPagination: (updater: Updater<PaginationState>) => void
|
|
37
42
|
resetPagination: () => void
|
|
38
43
|
setPageIndex: (updater: Updater<number>) => void
|
|
@@ -53,13 +58,14 @@ export type PaginationInstance<TGenerics extends TableGenerics> = {
|
|
|
53
58
|
|
|
54
59
|
//
|
|
55
60
|
|
|
56
|
-
export const Pagination = {
|
|
57
|
-
getInitialState: (): PaginationTableState => {
|
|
61
|
+
export const Pagination: TableFeature = {
|
|
62
|
+
getInitialState: (initialState): PaginationTableState => {
|
|
58
63
|
return {
|
|
59
64
|
pagination: {
|
|
60
65
|
pageCount: -1,
|
|
61
66
|
pageIndex: 0,
|
|
62
67
|
pageSize: 10,
|
|
68
|
+
...initialState?.pagination,
|
|
63
69
|
},
|
|
64
70
|
}
|
|
65
71
|
},
|
|
@@ -77,8 +83,9 @@ export const Pagination = {
|
|
|
77
83
|
instance: TableInstance<TGenerics>
|
|
78
84
|
): PaginationInstance<TGenerics> => {
|
|
79
85
|
let registered = false
|
|
86
|
+
|
|
80
87
|
return {
|
|
81
|
-
|
|
88
|
+
_autoResetPageIndex: () => {
|
|
82
89
|
if (!registered) {
|
|
83
90
|
registered = true
|
|
84
91
|
return
|
package/src/features/Pinning.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Getter,
|
|
3
2
|
OnChangeFn,
|
|
4
3
|
TableGenerics,
|
|
5
|
-
PropGetterValue,
|
|
6
4
|
TableInstance,
|
|
7
5
|
Row,
|
|
8
6
|
RowModel,
|
|
9
7
|
Updater,
|
|
10
8
|
} from '../types'
|
|
11
|
-
import {
|
|
9
|
+
import { makeStateUpdater, memo } from '../utils'
|
|
12
10
|
|
|
13
11
|
export type RowSelectionState = Record<string, boolean>
|
|
14
12
|
|
|
@@ -18,7 +16,6 @@ export type RowSelectionTableState = {
|
|
|
18
16
|
|
|
19
17
|
export type RowSelectionOptions<TGenerics extends TableGenerics> = {
|
|
20
18
|
onRowSelectionChange?: OnChangeFn<RowSelectionState>
|
|
21
|
-
autoResetRowSelection?: boolean
|
|
22
19
|
enableRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)
|
|
23
20
|
enableMultiRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)
|
|
24
21
|
enableSubRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)
|
|
@@ -41,40 +38,21 @@ export type RowSelectionOptions<TGenerics extends TableGenerics> = {
|
|
|
41
38
|
// ) => RowModel<TGenerics>
|
|
42
39
|
}
|
|
43
40
|
|
|
44
|
-
type ToggleRowSelectedProps = {
|
|
45
|
-
onChange?: (e: unknown) => void
|
|
46
|
-
checked?: boolean
|
|
47
|
-
title?: string
|
|
48
|
-
indeterminate?: boolean
|
|
49
|
-
}
|
|
50
|
-
|
|
51
41
|
export type RowSelectionRow = {
|
|
52
42
|
getIsSelected: () => boolean
|
|
53
43
|
getIsSomeSelected: () => boolean
|
|
54
44
|
getCanSelect: () => boolean
|
|
55
45
|
getCanMultiSelect: () => boolean
|
|
56
46
|
toggleSelected: (value?: boolean) => void
|
|
57
|
-
|
|
58
|
-
userProps?: TGetter
|
|
59
|
-
) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
|
|
47
|
+
getToggleSelectedHandler: () => (event: unknown) => void
|
|
60
48
|
}
|
|
61
49
|
|
|
62
50
|
export type RowSelectionInstance<TGenerics extends TableGenerics> = {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
) =>
|
|
68
|
-
getToggleAllRowsSelectedProps: <
|
|
69
|
-
TGetter extends Getter<ToggleRowSelectedProps>
|
|
70
|
-
>(
|
|
71
|
-
userProps?: TGetter
|
|
72
|
-
) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
|
|
73
|
-
getToggleAllPageRowsSelectedProps: <
|
|
74
|
-
TGetter extends Getter<ToggleRowSelectedProps>
|
|
75
|
-
>(
|
|
76
|
-
userProps?: TGetter
|
|
77
|
-
) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
|
|
51
|
+
getToggleRowSelectedHandler: (
|
|
52
|
+
rowId: string
|
|
53
|
+
) => undefined | ((e: unknown) => void)
|
|
54
|
+
getToggleAllRowsSelectedHandler: () => (event: unknown) => void
|
|
55
|
+
getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void
|
|
78
56
|
setRowSelection: (updater: Updater<RowSelectionState>) => void
|
|
79
57
|
resetRowSelection: () => void
|
|
80
58
|
toggleRowSelected: (rowId: string, value?: boolean) => void
|
|
@@ -110,7 +88,6 @@ export const RowSelection = {
|
|
|
110
88
|
): RowSelectionOptions<TGenerics> => {
|
|
111
89
|
return {
|
|
112
90
|
onRowSelectionChange: makeStateUpdater('rowSelection', instance),
|
|
113
|
-
autoResetRowSelection: true,
|
|
114
91
|
enableRowSelection: true,
|
|
115
92
|
enableMultiRowSelection: true,
|
|
116
93
|
enableSubRowSelection: true,
|
|
@@ -123,28 +100,7 @@ export const RowSelection = {
|
|
|
123
100
|
createInstance: <TGenerics extends TableGenerics>(
|
|
124
101
|
instance: TableInstance<TGenerics>
|
|
125
102
|
): RowSelectionInstance<TGenerics> => {
|
|
126
|
-
let registered = false
|
|
127
|
-
|
|
128
|
-
// const pageRows = instance.getPageRows()
|
|
129
|
-
|
|
130
103
|
return {
|
|
131
|
-
queueResetRowSelection: () => {
|
|
132
|
-
if (!registered) {
|
|
133
|
-
registered = true
|
|
134
|
-
return
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
if (instance.options.autoResetAll === false) {
|
|
138
|
-
return
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
if (
|
|
142
|
-
instance.options.autoResetAll === true ||
|
|
143
|
-
instance.options.autoResetRowSelection
|
|
144
|
-
) {
|
|
145
|
-
instance.resetRowSelection()
|
|
146
|
-
}
|
|
147
|
-
},
|
|
148
104
|
setRowSelection: updater =>
|
|
149
105
|
instance.options.onRowSelectionChange?.(updater),
|
|
150
106
|
resetRowSelection: () =>
|
|
@@ -283,9 +239,6 @@ export const RowSelection = {
|
|
|
283
239
|
{
|
|
284
240
|
key: 'getSelectedRowModel',
|
|
285
241
|
debug: () => instance.options.debugAll ?? instance.options.debugTable,
|
|
286
|
-
onChange: () => {
|
|
287
|
-
instance.queue(() => instance.queueResetExpanded())
|
|
288
|
-
},
|
|
289
242
|
}
|
|
290
243
|
),
|
|
291
244
|
|
|
@@ -308,7 +261,6 @@ export const RowSelection = {
|
|
|
308
261
|
{
|
|
309
262
|
key: 'getFilteredSelectedRowModel',
|
|
310
263
|
debug: () => instance.options.debugAll ?? instance.options.debugTable,
|
|
311
|
-
onChange: () => instance.queue(() => instance.queueResetExpanded()),
|
|
312
264
|
}
|
|
313
265
|
),
|
|
314
266
|
|
|
@@ -328,7 +280,6 @@ export const RowSelection = {
|
|
|
328
280
|
{
|
|
329
281
|
key: 'getGroupedSelectedRowModel',
|
|
330
282
|
debug: () => instance.options.debugAll ?? instance.options.debugTable,
|
|
331
|
-
onChange: () => instance.queue(() => instance.queueResetExpanded()),
|
|
332
283
|
}
|
|
333
284
|
),
|
|
334
285
|
|
|
@@ -460,77 +411,35 @@ export const RowSelection = {
|
|
|
460
411
|
: !!paginationFlatRows?.length
|
|
461
412
|
},
|
|
462
413
|
|
|
463
|
-
|
|
414
|
+
getToggleRowSelectedHandler: rowId => {
|
|
464
415
|
const row = instance.getRow(rowId)
|
|
465
416
|
|
|
466
417
|
const isSelected = row.getIsSelected()
|
|
467
418
|
const isSomeSelected = row.getIsSomeSelected()
|
|
468
419
|
const canSelect = row.getCanSelect()
|
|
469
420
|
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
)
|
|
476
|
-
}
|
|
477
|
-
: undefined,
|
|
478
|
-
checked: isSelected,
|
|
479
|
-
title: 'Toggle Row Selected',
|
|
480
|
-
indeterminate: isSomeSelected,
|
|
481
|
-
// onChange: forInput
|
|
482
|
-
// ? (e: Event) => e.stopPropagation()
|
|
483
|
-
// : (e: Event) => {
|
|
484
|
-
// if (instance.options.isAdditiveSelectEvent(e)) {
|
|
485
|
-
// row.toggleSelected()
|
|
486
|
-
// } else if (instance.options.isInclusiveSelectEvent(e)) {
|
|
487
|
-
// instance.addRowSelectionRange(row.id)
|
|
488
|
-
// } else {
|
|
489
|
-
// instance.setRowSelection({})
|
|
490
|
-
// row.toggleSelected()
|
|
491
|
-
// }
|
|
492
|
-
|
|
493
|
-
// if (props.onClick) props.onClick(e)
|
|
494
|
-
// },
|
|
421
|
+
return (e: unknown) => {
|
|
422
|
+
if (!canSelect) return
|
|
423
|
+
row.toggleSelected(
|
|
424
|
+
((e as MouseEvent).target as HTMLInputElement)?.checked
|
|
425
|
+
)
|
|
495
426
|
}
|
|
496
|
-
|
|
497
|
-
return propGetter(initialProps, userProps)
|
|
498
427
|
},
|
|
499
428
|
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
onChange: (e: unknown) => {
|
|
506
|
-
instance.toggleAllRowsSelected(
|
|
507
|
-
((e as MouseEvent).target as HTMLInputElement).checked
|
|
508
|
-
)
|
|
509
|
-
},
|
|
510
|
-
checked: isAllRowsSelected,
|
|
511
|
-
title: 'Toggle All Rows Selected',
|
|
512
|
-
indeterminate: isSomeRowsSelected,
|
|
429
|
+
getToggleAllRowsSelectedHandler: () => {
|
|
430
|
+
return (e: unknown) => {
|
|
431
|
+
instance.toggleAllRowsSelected(
|
|
432
|
+
((e as MouseEvent).target as HTMLInputElement).checked
|
|
433
|
+
)
|
|
513
434
|
}
|
|
514
|
-
|
|
515
|
-
return propGetter(initialProps, userProps)
|
|
516
435
|
},
|
|
517
436
|
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
onChange: (e: unknown) => {
|
|
524
|
-
instance.toggleAllPageRowsSelected(
|
|
525
|
-
((e as MouseEvent).target as HTMLInputElement).checked
|
|
526
|
-
)
|
|
527
|
-
},
|
|
528
|
-
checked: isAllPageRowsSelected,
|
|
529
|
-
title: 'Toggle All Current Page Rows Selected',
|
|
530
|
-
indeterminate: isSomePageRowsSelected,
|
|
437
|
+
getToggleAllPageRowsSelectedHandler: () => {
|
|
438
|
+
return (e: unknown) => {
|
|
439
|
+
instance.toggleAllPageRowsSelected(
|
|
440
|
+
((e as MouseEvent).target as HTMLInputElement).checked
|
|
441
|
+
)
|
|
531
442
|
}
|
|
532
|
-
|
|
533
|
-
return propGetter(initialProps, userProps)
|
|
534
443
|
},
|
|
535
444
|
}
|
|
536
445
|
},
|
|
@@ -543,8 +452,8 @@ export const RowSelection = {
|
|
|
543
452
|
getIsSelected: () => instance.getRowIsSelected(row.id),
|
|
544
453
|
getIsSomeSelected: () => instance.getRowIsSomeSelected(row.id),
|
|
545
454
|
toggleSelected: value => instance.toggleRowSelected(row.id, value),
|
|
546
|
-
|
|
547
|
-
instance.
|
|
455
|
+
getToggleSelectedHandler: () =>
|
|
456
|
+
instance.getToggleRowSelectedHandler(row.id)!,
|
|
548
457
|
getCanMultiSelect: () => instance.getRowCanMultiSelect(row.id),
|
|
549
458
|
getCanSelect: () => instance.getRowCanSelect(row.id),
|
|
550
459
|
}
|
package/src/features/Rows.ts
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Cell,
|
|
3
2
|
TableGenerics,
|
|
4
3
|
TableInstance,
|
|
5
4
|
Row,
|
|
6
|
-
Column,
|
|
7
|
-
CoreCell,
|
|
8
|
-
Getter,
|
|
9
|
-
CellProps,
|
|
10
|
-
PropGetterValue,
|
|
11
|
-
RowProps,
|
|
12
5
|
RowModel,
|
|
13
6
|
RowValues,
|
|
14
|
-
PropGetter,
|
|
15
7
|
} from '../types'
|
|
16
|
-
import { flattenBy
|
|
8
|
+
import { flattenBy } from '../utils'
|
|
17
9
|
|
|
18
10
|
export type CoreRow<TGenerics extends TableGenerics> = {
|
|
19
11
|
id: string
|
|
@@ -23,7 +15,6 @@ export type CoreRow<TGenerics extends TableGenerics> = {
|
|
|
23
15
|
values: RowValues
|
|
24
16
|
subRows: Row<TGenerics>[]
|
|
25
17
|
getLeafRows: () => Row<TGenerics>[]
|
|
26
|
-
getRowProps: PropGetter<RowProps>
|
|
27
18
|
originalSubRows?: TGenerics['Row'][]
|
|
28
19
|
}
|
|
29
20
|
|
|
@@ -34,7 +25,7 @@ export type RowsOptions<TGenerics extends TableGenerics> = {
|
|
|
34
25
|
getSubRows?: (
|
|
35
26
|
originalRow: TGenerics['Row'],
|
|
36
27
|
index: number
|
|
37
|
-
) => TGenerics['Row'][]
|
|
28
|
+
) => undefined | TGenerics['Row'][]
|
|
38
29
|
getRowId?: (
|
|
39
30
|
originalRow: TGenerics['Row'],
|
|
40
31
|
index: number,
|
|
@@ -59,10 +50,6 @@ export type RowsInstance<TGenerics extends TableGenerics> = {
|
|
|
59
50
|
_getCoreRowModel?: () => RowModel<TGenerics>
|
|
60
51
|
getRowModel: () => RowModel<TGenerics>
|
|
61
52
|
getRow: (id: string) => Row<TGenerics>
|
|
62
|
-
getRowProps: <TGetter extends Getter<RowProps>>(
|
|
63
|
-
rowId: string,
|
|
64
|
-
userProps?: TGetter
|
|
65
|
-
) => undefined | PropGetterValue<RowProps, TGetter>
|
|
66
53
|
}
|
|
67
54
|
|
|
68
55
|
//
|
|
@@ -95,7 +82,6 @@ export const Rows = {
|
|
|
95
82
|
values,
|
|
96
83
|
subRows: [],
|
|
97
84
|
getLeafRows: () => flattenBy(row.subRows, d => d.subRows),
|
|
98
|
-
getRowProps: userProps => instance.getRowProps(row.id, userProps)!,
|
|
99
85
|
}
|
|
100
86
|
|
|
101
87
|
for (let i = 0; i < instance._features.length; i++) {
|
|
@@ -132,20 +118,6 @@ export const Rows = {
|
|
|
132
118
|
|
|
133
119
|
return row
|
|
134
120
|
},
|
|
135
|
-
getRowProps: (rowId, userProps) => {
|
|
136
|
-
const row = instance.getRow(rowId)
|
|
137
|
-
if (!row) {
|
|
138
|
-
return
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
return propGetter(
|
|
142
|
-
{
|
|
143
|
-
key: row.id,
|
|
144
|
-
role: 'row',
|
|
145
|
-
},
|
|
146
|
-
userProps
|
|
147
|
-
)
|
|
148
|
-
},
|
|
149
121
|
}
|
|
150
122
|
},
|
|
151
123
|
}
|