@tanstack/table-core 8.0.0-alpha.57 → 8.0.0-alpha.60
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 -20
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +2 -2
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +7 -10
- 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 -47
- 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 +8 -11
- 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.js +0 -16
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +96 -272
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +348 -348
- 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 -8
- package/build/types/features/Filters.d.ts +2 -0
- package/build/types/features/Grouping.d.ts +5 -8
- package/build/types/features/Headers.d.ts +1 -5
- package/build/types/features/Pagination.d.ts +6 -6
- package/build/types/features/RowSelection.d.ts +5 -12
- package/build/types/features/Rows.d.ts +2 -4
- package/build/types/features/Sorting.d.ts +4 -7
- 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 +95 -272
- 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 +19 -41
- package/src/features/Filters.ts +10 -2
- package/src/features/Grouping.ts +12 -38
- package/src/features/Headers.ts +1 -95
- package/src/features/Pagination.ts +13 -3
- package/src/features/Pinning.ts +1 -1
- package/src/features/RowSelection.ts +25 -87
- package/src/features/Rows.ts +2 -30
- package/src/features/Sorting.ts +19 -42
- package/src/features/Visibility.ts +15 -43
- package/src/filterFns.ts +20 -0
- package/src/types.ts +36 -98
- package/src/utils/getColumnFilteredRowModelAsync.ts +1 -5
- package/src/utils/getGlobalFilteredRowModelAsync.ts +2 -6
- package/src/utils/getSortedRowModelAsync.ts +0 -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,7 +70,7 @@ 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 = {
|
|
@@ -93,6 +81,7 @@ export type ColumnDefaultOptions = {
|
|
|
93
81
|
}
|
|
94
82
|
|
|
95
83
|
export type GroupingOptions<TGenerics extends TableGenerics> = {
|
|
84
|
+
manualGrouping?: boolean
|
|
96
85
|
aggregationFns?: TGenerics['AggregationFns']
|
|
97
86
|
onGroupingChange?: OnChangeFn<GroupingState>
|
|
98
87
|
autoResetGrouping?: boolean
|
|
@@ -107,11 +96,6 @@ export type GroupingOptions<TGenerics extends TableGenerics> = {
|
|
|
107
96
|
|
|
108
97
|
export type GroupingColumnMode = false | 'reorder' | 'remove'
|
|
109
98
|
|
|
110
|
-
export type ToggleGroupingProps = {
|
|
111
|
-
title?: string
|
|
112
|
-
onClick?: (event: unknown) => void
|
|
113
|
-
}
|
|
114
|
-
|
|
115
99
|
export type GroupingInstance<TGenerics extends TableGenerics> = {
|
|
116
100
|
queueResetGrouping: () => void
|
|
117
101
|
getColumnAutoAggregationFn: (
|
|
@@ -126,10 +110,7 @@ export type GroupingInstance<TGenerics extends TableGenerics> = {
|
|
|
126
110
|
getColumnCanGroup: (columnId: string) => boolean
|
|
127
111
|
getColumnIsGrouped: (columnId: string) => boolean
|
|
128
112
|
getColumnGroupedIndex: (columnId: string) => number
|
|
129
|
-
|
|
130
|
-
columnId: string,
|
|
131
|
-
userProps?: TGetter
|
|
132
|
-
) => undefined | PropGetterValue<ToggleGroupingProps, TGetter>
|
|
113
|
+
getToggleGroupingHandler: (columnId: string) => undefined | (() => void)
|
|
133
114
|
getRowIsGrouped: (rowId: string) => boolean
|
|
134
115
|
getPreGroupedRowModel: () => RowModel<TGenerics>
|
|
135
116
|
getGroupedRowModel: () => RowModel<TGenerics>
|
|
@@ -173,8 +154,8 @@ export const Grouping = {
|
|
|
173
154
|
getGroupedIndex: () => instance.getColumnGroupedIndex(column.id),
|
|
174
155
|
getIsGrouped: () => instance.getColumnIsGrouped(column.id),
|
|
175
156
|
toggleGrouping: () => instance.toggleColumnGrouping(column.id),
|
|
176
|
-
|
|
177
|
-
instance.
|
|
157
|
+
getToggleGroupingHandler: () =>
|
|
158
|
+
instance.getToggleGroupingHandler(column.id)!,
|
|
178
159
|
}
|
|
179
160
|
},
|
|
180
161
|
|
|
@@ -277,21 +258,14 @@ export const Grouping = {
|
|
|
277
258
|
instance.setGrouping(instance.initialState?.grouping ?? [])
|
|
278
259
|
},
|
|
279
260
|
|
|
280
|
-
|
|
261
|
+
getToggleGroupingHandler: columnId => {
|
|
281
262
|
const column = instance.getColumn(columnId)
|
|
282
|
-
|
|
283
263
|
const canGroup = column.getCanGroup()
|
|
284
264
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
? (e: unknown) => {
|
|
289
|
-
column.toggleGrouping?.()
|
|
290
|
-
}
|
|
291
|
-
: undefined,
|
|
265
|
+
return () => {
|
|
266
|
+
if (!canGroup) return
|
|
267
|
+
column.toggleGrouping?.()
|
|
292
268
|
}
|
|
293
|
-
|
|
294
|
-
return propGetter(initialProps, userProps)
|
|
295
269
|
},
|
|
296
270
|
|
|
297
271
|
getRowIsGrouped: rowId => !!instance.getRow(rowId)?.groupingColumnId,
|
|
@@ -306,7 +280,7 @@ export const Grouping = {
|
|
|
306
280
|
instance.options.getGroupedRowModel(instance)
|
|
307
281
|
}
|
|
308
282
|
|
|
309
|
-
if (!instance._getGroupedRowModel) {
|
|
283
|
+
if (instance.options.manualGrouping || !instance._getGroupedRowModel) {
|
|
310
284
|
return instance.getPreGroupedRowModel()
|
|
311
285
|
}
|
|
312
286
|
|
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,7 +18,12 @@ 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> = {
|
|
26
|
+
manualPagination?: boolean
|
|
21
27
|
onPaginationChange?: OnChangeFn<PaginationState>
|
|
22
28
|
autoResetPageIndex?: boolean
|
|
23
29
|
getPaginationRowModel?: (
|
|
@@ -52,13 +58,14 @@ export type PaginationInstance<TGenerics extends TableGenerics> = {
|
|
|
52
58
|
|
|
53
59
|
//
|
|
54
60
|
|
|
55
|
-
export const Pagination = {
|
|
56
|
-
getInitialState: (): PaginationTableState => {
|
|
61
|
+
export const Pagination: TableFeature = {
|
|
62
|
+
getInitialState: (initialState): PaginationTableState => {
|
|
57
63
|
return {
|
|
58
64
|
pagination: {
|
|
59
65
|
pageCount: -1,
|
|
60
66
|
pageIndex: 0,
|
|
61
67
|
pageSize: 10,
|
|
68
|
+
...initialState?.pagination,
|
|
62
69
|
},
|
|
63
70
|
}
|
|
64
71
|
},
|
|
@@ -218,7 +225,10 @@ export const Pagination = {
|
|
|
218
225
|
instance.options.getPaginationRowModel(instance)
|
|
219
226
|
}
|
|
220
227
|
|
|
221
|
-
if (
|
|
228
|
+
if (
|
|
229
|
+
instance.options.manualPagination ||
|
|
230
|
+
!instance._getPaginationRowModel
|
|
231
|
+
) {
|
|
222
232
|
return instance.getPrePaginationRowModel()
|
|
223
233
|
}
|
|
224
234
|
|
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
|
|
|
@@ -41,40 +39,22 @@ export type RowSelectionOptions<TGenerics extends TableGenerics> = {
|
|
|
41
39
|
// ) => RowModel<TGenerics>
|
|
42
40
|
}
|
|
43
41
|
|
|
44
|
-
type ToggleRowSelectedProps = {
|
|
45
|
-
onChange?: (e: unknown) => void
|
|
46
|
-
checked?: boolean
|
|
47
|
-
title?: string
|
|
48
|
-
indeterminate?: boolean
|
|
49
|
-
}
|
|
50
|
-
|
|
51
42
|
export type RowSelectionRow = {
|
|
52
43
|
getIsSelected: () => boolean
|
|
53
44
|
getIsSomeSelected: () => boolean
|
|
54
45
|
getCanSelect: () => boolean
|
|
55
46
|
getCanMultiSelect: () => boolean
|
|
56
47
|
toggleSelected: (value?: boolean) => void
|
|
57
|
-
|
|
58
|
-
userProps?: TGetter
|
|
59
|
-
) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
|
|
48
|
+
getToggleSelectedHandler: () => (event: unknown) => void
|
|
60
49
|
}
|
|
61
50
|
|
|
62
51
|
export type RowSelectionInstance<TGenerics extends TableGenerics> = {
|
|
63
52
|
queueResetRowSelection: () => void
|
|
64
|
-
|
|
65
|
-
rowId: string
|
|
66
|
-
|
|
67
|
-
) =>
|
|
68
|
-
|
|
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>
|
|
53
|
+
getToggleRowSelectedHandler: (
|
|
54
|
+
rowId: string
|
|
55
|
+
) => undefined | ((e: unknown) => void)
|
|
56
|
+
getToggleAllRowsSelectedHandler: () => (event: unknown) => void
|
|
57
|
+
getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void
|
|
78
58
|
setRowSelection: (updater: Updater<RowSelectionState>) => void
|
|
79
59
|
resetRowSelection: () => void
|
|
80
60
|
toggleRowSelected: (rowId: string, value?: boolean) => void
|
|
@@ -460,77 +440,35 @@ export const RowSelection = {
|
|
|
460
440
|
: !!paginationFlatRows?.length
|
|
461
441
|
},
|
|
462
442
|
|
|
463
|
-
|
|
443
|
+
getToggleRowSelectedHandler: rowId => {
|
|
464
444
|
const row = instance.getRow(rowId)
|
|
465
445
|
|
|
466
446
|
const isSelected = row.getIsSelected()
|
|
467
447
|
const isSomeSelected = row.getIsSomeSelected()
|
|
468
448
|
const canSelect = row.getCanSelect()
|
|
469
449
|
|
|
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
|
-
// },
|
|
450
|
+
return (e: unknown) => {
|
|
451
|
+
if (!canSelect) return
|
|
452
|
+
row.toggleSelected(
|
|
453
|
+
((e as MouseEvent).target as HTMLInputElement)?.checked
|
|
454
|
+
)
|
|
495
455
|
}
|
|
496
|
-
|
|
497
|
-
return propGetter(initialProps, userProps)
|
|
498
456
|
},
|
|
499
457
|
|
|
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,
|
|
458
|
+
getToggleAllRowsSelectedHandler: () => {
|
|
459
|
+
return (e: unknown) => {
|
|
460
|
+
instance.toggleAllRowsSelected(
|
|
461
|
+
((e as MouseEvent).target as HTMLInputElement).checked
|
|
462
|
+
)
|
|
513
463
|
}
|
|
514
|
-
|
|
515
|
-
return propGetter(initialProps, userProps)
|
|
516
464
|
},
|
|
517
465
|
|
|
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,
|
|
466
|
+
getToggleAllPageRowsSelectedHandler: () => {
|
|
467
|
+
return (e: unknown) => {
|
|
468
|
+
instance.toggleAllPageRowsSelected(
|
|
469
|
+
((e as MouseEvent).target as HTMLInputElement).checked
|
|
470
|
+
)
|
|
531
471
|
}
|
|
532
|
-
|
|
533
|
-
return propGetter(initialProps, userProps)
|
|
534
472
|
},
|
|
535
473
|
}
|
|
536
474
|
},
|
|
@@ -543,8 +481,8 @@ export const RowSelection = {
|
|
|
543
481
|
getIsSelected: () => instance.getRowIsSelected(row.id),
|
|
544
482
|
getIsSomeSelected: () => instance.getRowIsSomeSelected(row.id),
|
|
545
483
|
toggleSelected: value => instance.toggleRowSelected(row.id, value),
|
|
546
|
-
|
|
547
|
-
instance.
|
|
484
|
+
getToggleSelectedHandler: () =>
|
|
485
|
+
instance.getToggleRowSelectedHandler(row.id)!,
|
|
548
486
|
getCanMultiSelect: () => instance.getRowCanMultiSelect(row.id),
|
|
549
487
|
getCanSelect: () => instance.getRowCanSelect(row.id),
|
|
550
488
|
}
|
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
|
}
|
package/src/features/Sorting.ts
CHANGED
|
@@ -7,24 +7,14 @@ import {
|
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
9
|
Column,
|
|
10
|
-
Getter,
|
|
11
|
-
Header,
|
|
12
10
|
OnChangeFn,
|
|
13
11
|
TableGenerics,
|
|
14
|
-
PropGetterValue,
|
|
15
12
|
TableInstance,
|
|
16
13
|
Row,
|
|
17
14
|
Updater,
|
|
18
15
|
} from '../types'
|
|
19
16
|
|
|
20
|
-
import {
|
|
21
|
-
functionalUpdate,
|
|
22
|
-
isFunction,
|
|
23
|
-
makeStateUpdater,
|
|
24
|
-
memo,
|
|
25
|
-
Overwrite,
|
|
26
|
-
propGetter,
|
|
27
|
-
} from '../utils'
|
|
17
|
+
import { isFunction, makeStateUpdater, Overwrite } from '../utils'
|
|
28
18
|
|
|
29
19
|
export type SortDirection = 'asc' | 'desc'
|
|
30
20
|
|
|
@@ -72,12 +62,11 @@ export type SortingColumn<TGenerics extends TableGenerics> = {
|
|
|
72
62
|
getIsSorted: () => false | SortDirection
|
|
73
63
|
resetSorting: () => void
|
|
74
64
|
toggleSorting: (desc?: boolean, isMulti?: boolean) => void
|
|
75
|
-
|
|
76
|
-
userProps?: TGetter
|
|
77
|
-
) => undefined | PropGetterValue<ToggleSortingProps, TGetter>
|
|
65
|
+
getToggleSortingHandler: () => undefined | ((event: unknown) => void)
|
|
78
66
|
}
|
|
79
67
|
|
|
80
68
|
export type SortingOptions<TGenerics extends TableGenerics> = {
|
|
69
|
+
manualSorting?: boolean
|
|
81
70
|
sortingFns?: TGenerics['SortingFns']
|
|
82
71
|
onSortingChange?: OnChangeFn<SortingState>
|
|
83
72
|
autoResetSorting?: boolean
|
|
@@ -93,11 +82,6 @@ export type SortingOptions<TGenerics extends TableGenerics> = {
|
|
|
93
82
|
isMultiSortEvent?: (e: unknown) => boolean
|
|
94
83
|
}
|
|
95
84
|
|
|
96
|
-
export type ToggleSortingProps = {
|
|
97
|
-
title?: string
|
|
98
|
-
onClick?: (event: unknown) => void
|
|
99
|
-
}
|
|
100
|
-
|
|
101
85
|
export type SortingInstance<TGenerics extends TableGenerics> = {
|
|
102
86
|
queueResetSorting: () => void
|
|
103
87
|
getColumnAutoSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined
|
|
@@ -116,10 +100,9 @@ export type SortingInstance<TGenerics extends TableGenerics> = {
|
|
|
116
100
|
getColumnCanMultiSort: (columnId: string) => boolean
|
|
117
101
|
getColumnIsSorted: (columnId: string) => false | 'asc' | 'desc'
|
|
118
102
|
getColumnSortIndex: (columnId: string) => number
|
|
119
|
-
|
|
120
|
-
columnId: string
|
|
121
|
-
|
|
122
|
-
) => undefined | PropGetterValue<ToggleSortingProps, TGetter>
|
|
103
|
+
getToggleSortingHandler: (
|
|
104
|
+
columnId: string
|
|
105
|
+
) => undefined | ((event: unknown) => void)
|
|
123
106
|
getPreSortedRowModel: () => RowModel<TGenerics>
|
|
124
107
|
getSortedRowModel: () => RowModel<TGenerics>
|
|
125
108
|
_getSortedRowModel?: () => RowModel<TGenerics>
|
|
@@ -167,8 +150,8 @@ export const Sorting = {
|
|
|
167
150
|
resetSorting: () => instance.resetSorting(column.id),
|
|
168
151
|
toggleSorting: (desc, isMulti) =>
|
|
169
152
|
instance.toggleColumnSorting(column.id, desc, isMulti),
|
|
170
|
-
|
|
171
|
-
instance.
|
|
153
|
+
getToggleSortingHandler: () =>
|
|
154
|
+
instance.getToggleSortingHandler(column.id)!,
|
|
172
155
|
}
|
|
173
156
|
},
|
|
174
157
|
|
|
@@ -415,7 +398,7 @@ export const Sorting = {
|
|
|
415
398
|
}
|
|
416
399
|
},
|
|
417
400
|
|
|
418
|
-
|
|
401
|
+
getToggleSortingHandler: columnId => {
|
|
419
402
|
const column = instance.getColumn(columnId)
|
|
420
403
|
|
|
421
404
|
if (!column) {
|
|
@@ -424,22 +407,16 @@ export const Sorting = {
|
|
|
424
407
|
|
|
425
408
|
const canSort = column.getCanSort()
|
|
426
409
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
: false
|
|
437
|
-
)
|
|
438
|
-
}
|
|
439
|
-
: undefined,
|
|
410
|
+
return (e: unknown) => {
|
|
411
|
+
if (!canSort) return
|
|
412
|
+
;(e as any).persist?.()
|
|
413
|
+
column.toggleSorting?.(
|
|
414
|
+
undefined,
|
|
415
|
+
column.getCanMultiSort()
|
|
416
|
+
? instance.options.isMultiSortEvent?.(e)
|
|
417
|
+
: false
|
|
418
|
+
)
|
|
440
419
|
}
|
|
441
|
-
|
|
442
|
-
return propGetter(initialProps, userProps)
|
|
443
420
|
},
|
|
444
421
|
|
|
445
422
|
getPreSortedRowModel: () => instance.getGlobalFilteredRowModel(),
|
|
@@ -452,7 +429,7 @@ export const Sorting = {
|
|
|
452
429
|
instance.options.getSortedRowModel(instance)
|
|
453
430
|
}
|
|
454
431
|
|
|
455
|
-
if (!instance._getSortedRowModel) {
|
|
432
|
+
if (instance.options.manualSorting || !instance._getSortedRowModel) {
|
|
456
433
|
return instance.getPreSortedRowModel()
|
|
457
434
|
}
|
|
458
435
|
|