@tanstack/table-core 8.0.0-alpha.9 → 8.0.0-beta.2
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 +120 -0
- package/build/cjs/aggregationFns.js.map +1 -0
- package/build/cjs/core/cell.js +40 -0
- package/build/cjs/core/cell.js.map +1 -0
- package/build/cjs/core/column.js +88 -0
- package/build/cjs/core/column.js.map +1 -0
- package/build/cjs/core/headers.js +403 -0
- package/build/cjs/core/headers.js.map +1 -0
- package/build/cjs/core/instance.js +255 -0
- package/build/cjs/core/instance.js.map +1 -0
- package/build/cjs/core/row.js +77 -0
- package/build/cjs/core/row.js.map +1 -0
- package/build/cjs/createTable.js +36 -29
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +157 -189
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Expanding.js +103 -155
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +155 -304
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +97 -157
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Ordering.js +30 -41
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +102 -105
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +131 -89
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +138 -267
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Sorting.js +82 -167
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +69 -115
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +107 -0
- package/build/cjs/filterFns.js.map +1 -0
- package/build/cjs/index.js +36 -23
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/sortingFns.js +124 -0
- package/build/cjs/sortingFns.js.map +1 -0
- package/build/cjs/utils/filterRowsUtils.js +117 -0
- package/build/cjs/utils/filterRowsUtils.js.map +1 -0
- package/build/cjs/utils/getCoreRowModel.js +79 -0
- package/build/cjs/utils/getCoreRowModel.js.map +1 -0
- package/build/cjs/utils/getExpandedRowModel.js +57 -0
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -0
- package/build/cjs/utils/getFacetedMinMaxValues.js +54 -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 +139 -0
- package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
- package/build/cjs/utils/getGroupedRowModel.js +161 -0
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -0
- package/build/cjs/utils/getPaginationRowModel.js +61 -0
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -0
- package/build/cjs/utils/getSortedRowModel.js +110 -0
- package/build/cjs/utils/getSortedRowModel.js.map +1 -0
- package/build/cjs/utils.js +38 -107
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +2976 -3853
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +586 -408
- package/build/types/aggregationFns.d.ts +13 -0
- package/build/types/core/cell.d.ts +9 -0
- package/build/types/core/column.d.ts +40 -0
- package/build/types/core/headers.d.ts +46 -0
- package/build/types/core/instance.d.ts +57 -0
- package/build/types/core/row.d.ts +15 -0
- package/build/types/createTable.d.ts +47 -26
- package/build/types/features/ColumnSizing.d.ts +32 -44
- package/build/types/features/Expanding.d.ts +15 -26
- package/build/types/features/Filters.d.ts +64 -63
- package/build/types/features/Grouping.d.ts +32 -46
- package/build/types/features/Ordering.d.ts +7 -10
- package/build/types/features/Pagination.d.ts +16 -15
- package/build/types/features/Pinning.d.ts +16 -17
- package/build/types/features/RowSelection.d.ts +13 -33
- package/build/types/features/Sorting.d.ts +25 -44
- package/build/types/features/Visibility.d.ts +16 -25
- package/build/types/filterFns.d.ts +13 -0
- package/build/types/index.d.ts +16 -10
- package/build/types/sortingFns.d.ts +11 -0
- package/build/types/types.d.ts +37 -122
- package/build/types/utils/filterRowsUtils.d.ts +4 -0
- package/build/types/utils/getCoreRowModel.d.ts +2 -0
- package/build/types/utils/getExpandedRowModel.d.ts +7 -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/getFilteredRowModel.d.ts +2 -0
- package/build/types/utils/getGroupedRowModel.d.ts +2 -0
- package/build/types/utils/getPaginationRowModel.d.ts +4 -0
- package/build/types/utils/getSortedRowModel.d.ts +2 -0
- package/build/types/utils.d.ts +7 -11
- package/build/umd/index.development.js +3024 -3893
- 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 +9 -10
- package/src/aggregationFns.ts +123 -0
- package/src/core/cell.ts +48 -0
- package/src/core/column.ts +147 -0
- package/src/core/headers.ts +575 -0
- package/src/core/instance.ts +359 -0
- package/src/core/row.ts +85 -0
- package/src/createTable.ts +188 -0
- package/src/features/ColumnSizing.ts +170 -185
- package/src/features/Expanding.ts +120 -194
- package/src/features/Filters.ts +299 -381
- package/src/features/Grouping.ts +158 -220
- package/src/features/Ordering.ts +24 -25
- package/src/features/Pagination.ts +88 -73
- package/src/features/Pinning.ts +186 -63
- package/src/features/RowSelection.ts +107 -245
- package/src/features/Sorting.ts +125 -225
- package/src/features/Visibility.ts +116 -132
- package/src/filterFns.ts +135 -0
- package/src/index.ts +29 -0
- package/src/{sortTypes.ts → sortingFns.ts} +63 -85
- package/src/types.ts +62 -168
- package/src/utils/filterRowsUtils.ts +112 -0
- package/src/utils/getCoreRowModel.ts +84 -0
- package/src/utils/getExpandedRowModel.ts +54 -0
- package/src/utils/getFacetedMinMaxValues.ts +40 -0
- package/src/utils/getFacetedRowModel.ts +50 -0
- package/src/utils/getFacetedUniqueValues.ts +37 -0
- package/src/utils/getFilteredRowModel.ts +159 -0
- package/src/utils/getGroupedRowModel.ts +175 -0
- package/src/utils/getPaginationRowModel.ts +48 -0
- package/src/utils/getSortedRowModel.ts +116 -0
- package/src/utils.ts +126 -0
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
- package/build/cjs/aggregationTypes.js +0 -130
- package/build/cjs/aggregationTypes.js.map +0 -1
- package/build/cjs/core.js +0 -545
- package/build/cjs/core.js.map +0 -1
- package/build/cjs/features/Headers.js +0 -630
- package/build/cjs/features/Headers.js.map +0 -1
- package/build/cjs/filterTypes.js +0 -172
- package/build/cjs/filterTypes.js.map +0 -1
- package/build/cjs/sortTypes.js +0 -122
- package/build/cjs/sortTypes.js.map +0 -1
- package/build/cjs/types.js +0 -22
- package/build/cjs/types.js.map +0 -1
- package/build/cjs/utils/columnFilterRowsFn.js +0 -131
- package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
- package/build/cjs/utils/expandRowsFn.js +0 -38
- package/build/cjs/utils/expandRowsFn.js.map +0 -1
- package/build/cjs/utils/globalFilterRowsFn.js +0 -101
- package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
- package/build/cjs/utils/groupRowsFn.js +0 -155
- package/build/cjs/utils/groupRowsFn.js.map +0 -1
- package/build/cjs/utils/paginateRowsFn.js +0 -44
- package/build/cjs/utils/paginateRowsFn.js.map +0 -1
- package/build/cjs/utils/sortRowsFn.js +0 -94
- package/build/cjs/utils/sortRowsFn.js.map +0 -1
- package/build/types/aggregationTypes.d.ts +0 -22
- package/build/types/core.d.ts +0 -105
- package/build/types/features/Headers.d.ts +0 -43
- package/build/types/filterTypes.d.ts +0 -50
- package/build/types/sortTypes.d.ts +0 -18
- package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
- package/build/types/utils/expandRowsFn.d.ts +0 -2
- package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
- package/build/types/utils/groupRowsFn.d.ts +0 -2
- package/build/types/utils/paginateRowsFn.d.ts +0 -2
- package/build/types/utils/sortRowsFn.d.ts +0 -2
- package/src/.DS_Store +0 -0
- package/src/aggregationTypes.ts +0 -115
- package/src/core.tsx +0 -763
- package/src/createTable.tsx +0 -137
- package/src/features/Headers.ts +0 -747
- package/src/filterTypes.ts +0 -188
- package/src/index.tsx +0 -23
- package/src/utils/columnFilterRowsFn.ts +0 -113
- package/src/utils/expandRowsFn.ts +0 -30
- package/src/utils/globalFilterRowsFn.ts +0 -89
- package/src/utils/groupRowsFn.ts +0 -170
- package/src/utils/paginateRowsFn.ts +0 -28
- package/src/utils/sortRowsFn.ts +0 -95
- package/src/utils.tsx +0 -221
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { TableFeature } from '../core/instance'
|
|
2
2
|
import {
|
|
3
|
-
Getter,
|
|
4
3
|
OnChangeFn,
|
|
5
|
-
|
|
6
|
-
PropGetterValue,
|
|
4
|
+
TableGenerics,
|
|
7
5
|
TableInstance,
|
|
8
6
|
Row,
|
|
9
7
|
RowModel,
|
|
10
8
|
Updater,
|
|
11
9
|
} from '../types'
|
|
12
|
-
import {
|
|
10
|
+
import { makeStateUpdater, memo } from '../utils'
|
|
13
11
|
|
|
14
12
|
export type RowSelectionState = Record<string, boolean>
|
|
15
13
|
|
|
@@ -17,19 +15,18 @@ export type RowSelectionTableState = {
|
|
|
17
15
|
rowSelection: RowSelectionState
|
|
18
16
|
}
|
|
19
17
|
|
|
20
|
-
export type RowSelectionOptions<TGenerics extends
|
|
21
|
-
onRowSelectionChange?: OnChangeFn<RowSelectionState>
|
|
22
|
-
autoResetRowSelection?: boolean
|
|
18
|
+
export type RowSelectionOptions<TGenerics extends TableGenerics> = {
|
|
23
19
|
enableRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)
|
|
24
20
|
enableMultiRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)
|
|
25
21
|
enableSubRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)
|
|
22
|
+
onRowSelectionChange?: OnChangeFn<RowSelectionState>
|
|
26
23
|
// enableGroupingRowSelection?:
|
|
27
24
|
// | boolean
|
|
28
25
|
// | ((
|
|
29
26
|
// row: Row<TGenerics>
|
|
30
27
|
// ) => boolean)
|
|
31
|
-
// isAdditiveSelectEvent?: (e:
|
|
32
|
-
// isInclusiveSelectEvent?: (e:
|
|
28
|
+
// isAdditiveSelectEvent?: (e: unknown) => boolean
|
|
29
|
+
// isInclusiveSelectEvent?: (e: unknown) => boolean
|
|
33
30
|
// selectRowsFn?: (
|
|
34
31
|
// instance: TableInstance<
|
|
35
32
|
// TData,
|
|
@@ -42,49 +39,21 @@ export type RowSelectionOptions<TGenerics extends PartialGenerics> = {
|
|
|
42
39
|
// ) => RowModel<TGenerics>
|
|
43
40
|
}
|
|
44
41
|
|
|
45
|
-
type ToggleRowSelectedProps = {
|
|
46
|
-
onChange?: (e: MouseEvent | TouchEvent) => void
|
|
47
|
-
checked?: boolean
|
|
48
|
-
title?: string
|
|
49
|
-
indeterminate?: boolean
|
|
50
|
-
}
|
|
51
|
-
|
|
52
42
|
export type RowSelectionRow = {
|
|
53
43
|
getIsSelected: () => boolean
|
|
54
44
|
getIsSomeSelected: () => boolean
|
|
55
45
|
getCanSelect: () => boolean
|
|
56
46
|
getCanMultiSelect: () => boolean
|
|
47
|
+
getCanSelectSubRows: () => boolean
|
|
57
48
|
toggleSelected: (value?: boolean) => void
|
|
58
|
-
|
|
59
|
-
userProps?: TGetter
|
|
60
|
-
) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
|
|
49
|
+
getToggleSelectedHandler: () => (event: unknown) => void
|
|
61
50
|
}
|
|
62
51
|
|
|
63
|
-
export type RowSelectionInstance<TGenerics extends
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
rowId: string,
|
|
67
|
-
userProps?: TGetter
|
|
68
|
-
) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
|
|
69
|
-
getToggleAllRowsSelectedProps: <
|
|
70
|
-
TGetter extends Getter<ToggleRowSelectedProps>
|
|
71
|
-
>(
|
|
72
|
-
userProps?: TGetter
|
|
73
|
-
) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
|
|
74
|
-
getToggleAllPageRowsSelectedProps: <
|
|
75
|
-
TGetter extends Getter<ToggleRowSelectedProps>
|
|
76
|
-
>(
|
|
77
|
-
userProps?: TGetter
|
|
78
|
-
) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
|
|
52
|
+
export type RowSelectionInstance<TGenerics extends TableGenerics> = {
|
|
53
|
+
getToggleAllRowsSelectedHandler: () => (event: unknown) => void
|
|
54
|
+
getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void
|
|
79
55
|
setRowSelection: (updater: Updater<RowSelectionState>) => void
|
|
80
|
-
resetRowSelection: () => void
|
|
81
|
-
toggleRowSelected: (rowId: string, value?: boolean) => void
|
|
82
|
-
getRowCanSelect: (rowId: string) => boolean
|
|
83
|
-
getRowCanSelectSubRows: (rowId: string) => boolean
|
|
84
|
-
getRowCanMultiSelect: (rowId: string) => boolean
|
|
85
|
-
// getGroupingRowCanSelect: (rowId: string) => boolean
|
|
86
|
-
getRowIsSelected: (rowId: string) => boolean
|
|
87
|
-
getRowIsSomeSelected: (rowId: string) => boolean
|
|
56
|
+
resetRowSelection: (defaultState?: boolean) => void
|
|
88
57
|
getIsAllRowsSelected: () => boolean
|
|
89
58
|
getIsAllPageRowsSelected: () => boolean
|
|
90
59
|
getIsSomeRowsSelected: () => boolean
|
|
@@ -99,60 +68,38 @@ export type RowSelectionInstance<TGenerics extends PartialGenerics> = {
|
|
|
99
68
|
|
|
100
69
|
//
|
|
101
70
|
|
|
102
|
-
export const RowSelection = {
|
|
103
|
-
getInitialState: (): RowSelectionTableState => {
|
|
71
|
+
export const RowSelection: TableFeature = {
|
|
72
|
+
getInitialState: (state): RowSelectionTableState => {
|
|
104
73
|
return {
|
|
105
74
|
rowSelection: {},
|
|
75
|
+
...state,
|
|
106
76
|
}
|
|
107
77
|
},
|
|
108
78
|
|
|
109
|
-
getDefaultOptions: <TGenerics extends
|
|
79
|
+
getDefaultOptions: <TGenerics extends TableGenerics>(
|
|
110
80
|
instance: TableInstance<TGenerics>
|
|
111
81
|
): RowSelectionOptions<TGenerics> => {
|
|
112
82
|
return {
|
|
113
83
|
onRowSelectionChange: makeStateUpdater('rowSelection', instance),
|
|
114
|
-
autoResetRowSelection: true,
|
|
115
84
|
enableRowSelection: true,
|
|
116
85
|
enableMultiRowSelection: true,
|
|
117
86
|
enableSubRowSelection: true,
|
|
118
87
|
// enableGroupingRowSelection: false,
|
|
119
|
-
// isAdditiveSelectEvent: (e:
|
|
120
|
-
// isInclusiveSelectEvent: (e:
|
|
88
|
+
// isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,
|
|
89
|
+
// isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,
|
|
121
90
|
}
|
|
122
91
|
},
|
|
123
92
|
|
|
124
|
-
|
|
93
|
+
createInstance: <TGenerics extends TableGenerics>(
|
|
125
94
|
instance: TableInstance<TGenerics>
|
|
126
95
|
): RowSelectionInstance<TGenerics> => {
|
|
127
|
-
let registered = false
|
|
128
|
-
|
|
129
|
-
// const pageRows = instance.getPageRows()
|
|
130
|
-
|
|
131
96
|
return {
|
|
132
|
-
_notifyRowSelectionReset: () => {
|
|
133
|
-
if (!registered) {
|
|
134
|
-
registered = true
|
|
135
|
-
return
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
if (instance.options.autoResetAll === false) {
|
|
139
|
-
return
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
if (
|
|
143
|
-
instance.options.autoResetAll === true ||
|
|
144
|
-
instance.options.autoResetRowSelection
|
|
145
|
-
) {
|
|
146
|
-
instance.resetRowSelection()
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
97
|
setRowSelection: updater =>
|
|
150
|
-
instance.options.onRowSelectionChange?.(
|
|
151
|
-
|
|
152
|
-
|
|
98
|
+
instance.options.onRowSelectionChange?.(updater),
|
|
99
|
+
resetRowSelection: defaultState =>
|
|
100
|
+
instance.setRowSelection(
|
|
101
|
+
defaultState ? {} : instance.initialState.rowSelection ?? {}
|
|
153
102
|
),
|
|
154
|
-
resetRowSelection: () =>
|
|
155
|
-
instance.setRowSelection(instance.initialState.rowSelection ?? {}),
|
|
156
103
|
toggleAllRowsSelected: value => {
|
|
157
104
|
instance.setRowSelection(old => {
|
|
158
105
|
value =
|
|
@@ -160,9 +107,7 @@ export const RowSelection = {
|
|
|
160
107
|
? value
|
|
161
108
|
: !instance.getIsAllRowsSelected()
|
|
162
109
|
|
|
163
|
-
|
|
164
|
-
// Leave all the other rows that are selected alone.
|
|
165
|
-
const rowSelection = Object.assign({}, old)
|
|
110
|
+
const rowSelection = { ...old }
|
|
166
111
|
|
|
167
112
|
const preGroupedFlatRows = instance.getPreGroupedRowModel().flatRows
|
|
168
113
|
|
|
@@ -196,24 +141,7 @@ export const RowSelection = {
|
|
|
196
141
|
|
|
197
142
|
return rowSelection
|
|
198
143
|
}),
|
|
199
|
-
toggleRowSelected: (rowId, value) => {
|
|
200
|
-
const row = instance.getRow(rowId)
|
|
201
|
-
const isSelected = row.getIsSelected()
|
|
202
144
|
|
|
203
|
-
instance.setRowSelection(old => {
|
|
204
|
-
value = typeof value !== 'undefined' ? value : !isSelected
|
|
205
|
-
|
|
206
|
-
if (isSelected === value) {
|
|
207
|
-
return old
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
const selectedRowIds = { ...old }
|
|
211
|
-
|
|
212
|
-
mutateRowIsSelected(selectedRowIds, rowId, value, instance)
|
|
213
|
-
|
|
214
|
-
return selectedRowIds
|
|
215
|
-
})
|
|
216
|
-
},
|
|
217
145
|
// addRowSelectionRange: rowId => {
|
|
218
146
|
// const {
|
|
219
147
|
// rows,
|
|
@@ -287,16 +215,15 @@ export const RowSelection = {
|
|
|
287
215
|
return selectRowsFn(instance, rowModel)
|
|
288
216
|
},
|
|
289
217
|
{
|
|
290
|
-
key: 'getSelectedRowModel',
|
|
218
|
+
key: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',
|
|
291
219
|
debug: () => instance.options.debugAll ?? instance.options.debugTable,
|
|
292
|
-
onChange: () => instance._notifyExpandedReset(),
|
|
293
220
|
}
|
|
294
221
|
),
|
|
295
222
|
|
|
296
223
|
getFilteredSelectedRowModel: memo(
|
|
297
224
|
() => [
|
|
298
225
|
instance.getState().rowSelection,
|
|
299
|
-
instance.
|
|
226
|
+
instance.getFilteredRowModel(),
|
|
300
227
|
],
|
|
301
228
|
(rowSelection, rowModel) => {
|
|
302
229
|
if (!Object.keys(rowSelection).length) {
|
|
@@ -310,9 +237,10 @@ export const RowSelection = {
|
|
|
310
237
|
return selectRowsFn(instance, rowModel)
|
|
311
238
|
},
|
|
312
239
|
{
|
|
313
|
-
key:
|
|
240
|
+
key:
|
|
241
|
+
process.env.NODE_ENV === 'production' &&
|
|
242
|
+
'getFilteredSelectedRowModel',
|
|
314
243
|
debug: () => instance.options.debugAll ?? instance.options.debugTable,
|
|
315
|
-
onChange: () => instance._notifyExpandedReset(),
|
|
316
244
|
}
|
|
317
245
|
),
|
|
318
246
|
|
|
@@ -330,78 +258,15 @@ export const RowSelection = {
|
|
|
330
258
|
return selectRowsFn(instance, rowModel)
|
|
331
259
|
},
|
|
332
260
|
{
|
|
333
|
-
key:
|
|
261
|
+
key:
|
|
262
|
+
process.env.NODE_ENV === 'production' &&
|
|
263
|
+
'getGroupedSelectedRowModel',
|
|
334
264
|
debug: () => instance.options.debugAll ?? instance.options.debugTable,
|
|
335
|
-
onChange: () => instance._notifyExpandedReset(),
|
|
336
265
|
}
|
|
337
266
|
),
|
|
338
267
|
|
|
339
268
|
///
|
|
340
269
|
|
|
341
|
-
getRowIsSelected: rowId => {
|
|
342
|
-
const { rowSelection } = instance.getState()
|
|
343
|
-
const row = instance.getRow(rowId)
|
|
344
|
-
|
|
345
|
-
if (!row) {
|
|
346
|
-
throw new Error()
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
return isRowSelected(row, rowSelection, instance) === true
|
|
350
|
-
},
|
|
351
|
-
|
|
352
|
-
getRowIsSomeSelected: rowId => {
|
|
353
|
-
const { rowSelection } = instance.getState()
|
|
354
|
-
const row = instance.getRow(rowId)
|
|
355
|
-
|
|
356
|
-
if (!row) {
|
|
357
|
-
throw new Error()
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
return isRowSelected(row, rowSelection, instance) === 'some'
|
|
361
|
-
},
|
|
362
|
-
|
|
363
|
-
getRowCanSelect: rowId => {
|
|
364
|
-
const row = instance.getRow(rowId)
|
|
365
|
-
|
|
366
|
-
if (!row) {
|
|
367
|
-
throw new Error()
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
if (typeof instance.options.enableRowSelection === 'function') {
|
|
371
|
-
return instance.options.enableRowSelection(row)
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
return instance.options.enableRowSelection ?? true
|
|
375
|
-
},
|
|
376
|
-
|
|
377
|
-
getRowCanSelectSubRows: rowId => {
|
|
378
|
-
const row = instance.getRow(rowId)
|
|
379
|
-
|
|
380
|
-
if (!row) {
|
|
381
|
-
throw new Error()
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
if (typeof instance.options.enableSubRowSelection === 'function') {
|
|
385
|
-
return instance.options.enableSubRowSelection(row)
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
return instance.options.enableSubRowSelection ?? true
|
|
389
|
-
},
|
|
390
|
-
|
|
391
|
-
getRowCanMultiSelect: rowId => {
|
|
392
|
-
const row = instance.getRow(rowId)
|
|
393
|
-
|
|
394
|
-
if (!row) {
|
|
395
|
-
throw new Error()
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
if (typeof instance.options.enableMultiRowSelection === 'function') {
|
|
399
|
-
return instance.options.enableMultiRowSelection(row)
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
return instance.options.enableMultiRowSelection ?? true
|
|
403
|
-
},
|
|
404
|
-
|
|
405
270
|
// getGroupingRowCanSelect: rowId => {
|
|
406
271
|
// const row = instance.getRow(rowId)
|
|
407
272
|
|
|
@@ -417,8 +282,7 @@ export const RowSelection = {
|
|
|
417
282
|
// },
|
|
418
283
|
|
|
419
284
|
getIsAllRowsSelected: () => {
|
|
420
|
-
const preFilteredFlatRows =
|
|
421
|
-
instance.getPreGlobalFilteredRowModel().flatRows
|
|
285
|
+
const preFilteredFlatRows = instance.getPreFilteredRowModel().flatRows
|
|
422
286
|
const { rowSelection } = instance.getState()
|
|
423
287
|
|
|
424
288
|
let isAllRowsSelected = Boolean(
|
|
@@ -464,96 +328,94 @@ export const RowSelection = {
|
|
|
464
328
|
: !!paginationFlatRows?.length
|
|
465
329
|
},
|
|
466
330
|
|
|
467
|
-
|
|
468
|
-
|
|
331
|
+
getToggleAllRowsSelectedHandler: () => {
|
|
332
|
+
return (e: unknown) => {
|
|
333
|
+
instance.toggleAllRowsSelected(
|
|
334
|
+
((e as MouseEvent).target as HTMLInputElement).checked
|
|
335
|
+
)
|
|
336
|
+
}
|
|
337
|
+
},
|
|
469
338
|
|
|
339
|
+
getToggleAllPageRowsSelectedHandler: () => {
|
|
340
|
+
return (e: unknown) => {
|
|
341
|
+
instance.toggleAllPageRowsSelected(
|
|
342
|
+
((e as MouseEvent).target as HTMLInputElement).checked
|
|
343
|
+
)
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
}
|
|
347
|
+
},
|
|
348
|
+
|
|
349
|
+
createRow: <TGenerics extends TableGenerics>(
|
|
350
|
+
row: Row<TGenerics>,
|
|
351
|
+
instance: TableInstance<TGenerics>
|
|
352
|
+
): RowSelectionRow => {
|
|
353
|
+
return {
|
|
354
|
+
toggleSelected: value => {
|
|
470
355
|
const isSelected = row.getIsSelected()
|
|
471
|
-
const isSomeSelected = row.getIsSomeSelected()
|
|
472
|
-
const canSelect = row.getCanSelect()
|
|
473
356
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
357
|
+
instance.setRowSelection(old => {
|
|
358
|
+
value = typeof value !== 'undefined' ? value : !isSelected
|
|
359
|
+
|
|
360
|
+
if (isSelected === value) {
|
|
361
|
+
return old
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
const selectedRowIds = { ...old }
|
|
365
|
+
|
|
366
|
+
mutateRowIsSelected(selectedRowIds, row.id, value, instance)
|
|
367
|
+
|
|
368
|
+
return selectedRowIds
|
|
369
|
+
})
|
|
370
|
+
},
|
|
371
|
+
getIsSelected: () => {
|
|
372
|
+
const { rowSelection } = instance.getState()
|
|
373
|
+
return isRowSelected(row, rowSelection, instance) === true
|
|
374
|
+
},
|
|
375
|
+
|
|
376
|
+
getIsSomeSelected: () => {
|
|
377
|
+
const { rowSelection } = instance.getState()
|
|
378
|
+
return isRowSelected(row, rowSelection, instance) === 'some'
|
|
379
|
+
},
|
|
380
|
+
|
|
381
|
+
getCanSelect: () => {
|
|
382
|
+
if (typeof instance.options.enableRowSelection === 'function') {
|
|
383
|
+
return instance.options.enableRowSelection(row)
|
|
497
384
|
}
|
|
498
385
|
|
|
499
|
-
return
|
|
386
|
+
return instance.options.enableRowSelection ?? true
|
|
500
387
|
},
|
|
501
388
|
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
const initialProps: ToggleRowSelectedProps = {
|
|
507
|
-
onChange: (e: MouseEvent | TouchEvent) => {
|
|
508
|
-
instance.toggleAllRowsSelected(
|
|
509
|
-
(e.target as HTMLInputElement).checked
|
|
510
|
-
)
|
|
511
|
-
},
|
|
512
|
-
checked: isAllRowsSelected,
|
|
513
|
-
title: 'Toggle All Rows Selected',
|
|
514
|
-
indeterminate: isSomeRowsSelected,
|
|
389
|
+
getCanSelectSubRows: () => {
|
|
390
|
+
if (typeof instance.options.enableSubRowSelection === 'function') {
|
|
391
|
+
return instance.options.enableSubRowSelection(row)
|
|
515
392
|
}
|
|
516
393
|
|
|
517
|
-
return
|
|
394
|
+
return instance.options.enableSubRowSelection ?? true
|
|
518
395
|
},
|
|
519
396
|
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
const initialProps: ToggleRowSelectedProps = {
|
|
525
|
-
onChange: (e: MouseEvent | TouchEvent) => {
|
|
526
|
-
instance.toggleAllPageRowsSelected(
|
|
527
|
-
(e.target as HTMLInputElement).checked
|
|
528
|
-
)
|
|
529
|
-
},
|
|
530
|
-
checked: isAllPageRowsSelected,
|
|
531
|
-
title: 'Toggle All Current Page Rows Selected',
|
|
532
|
-
indeterminate: isSomePageRowsSelected,
|
|
397
|
+
getCanMultiSelect: () => {
|
|
398
|
+
if (typeof instance.options.enableMultiRowSelection === 'function') {
|
|
399
|
+
return instance.options.enableMultiRowSelection(row)
|
|
533
400
|
}
|
|
534
401
|
|
|
535
|
-
return
|
|
402
|
+
return instance.options.enableMultiRowSelection ?? true
|
|
536
403
|
},
|
|
537
|
-
|
|
538
|
-
|
|
404
|
+
getToggleSelectedHandler: () => {
|
|
405
|
+
const canSelect = row.getCanSelect()
|
|
539
406
|
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
toggleSelected: value => instance.toggleRowSelected(row.id, value),
|
|
548
|
-
getToggleSelectedProps: userProps =>
|
|
549
|
-
instance.getToggleRowSelectedProps(row.id, userProps),
|
|
550
|
-
getCanMultiSelect: () => instance.getRowCanMultiSelect(row.id),
|
|
551
|
-
getCanSelect: () => instance.getRowCanSelect(row.id),
|
|
407
|
+
return (e: unknown) => {
|
|
408
|
+
if (!canSelect) return
|
|
409
|
+
row.toggleSelected(
|
|
410
|
+
((e as MouseEvent).target as HTMLInputElement)?.checked
|
|
411
|
+
)
|
|
412
|
+
}
|
|
413
|
+
},
|
|
552
414
|
}
|
|
553
415
|
},
|
|
554
416
|
}
|
|
555
417
|
|
|
556
|
-
const mutateRowIsSelected = <TGenerics extends
|
|
418
|
+
const mutateRowIsSelected = <TGenerics extends TableGenerics>(
|
|
557
419
|
selectedRowIds: Record<string, boolean>,
|
|
558
420
|
id: string,
|
|
559
421
|
value: boolean,
|
|
@@ -574,14 +436,14 @@ const mutateRowIsSelected = <TGenerics extends PartialGenerics>(
|
|
|
574
436
|
}
|
|
575
437
|
// }
|
|
576
438
|
|
|
577
|
-
if (row.subRows?.length &&
|
|
439
|
+
if (row.subRows?.length && row.getCanSelectSubRows()) {
|
|
578
440
|
row.subRows.forEach(row =>
|
|
579
441
|
mutateRowIsSelected(selectedRowIds, row.id, value, instance)
|
|
580
442
|
)
|
|
581
443
|
}
|
|
582
444
|
}
|
|
583
445
|
|
|
584
|
-
export function selectRowsFn<TGenerics extends
|
|
446
|
+
export function selectRowsFn<TGenerics extends TableGenerics>(
|
|
585
447
|
instance: TableInstance<TGenerics>,
|
|
586
448
|
rowModel: RowModel<TGenerics>
|
|
587
449
|
): RowModel<TGenerics> {
|
|
@@ -591,7 +453,7 @@ export function selectRowsFn<TGenerics extends PartialGenerics>(
|
|
|
591
453
|
const newSelectedRowsById: Record<string, Row<TGenerics>> = {}
|
|
592
454
|
|
|
593
455
|
// Filters top level and nested rows
|
|
594
|
-
const recurseRows = (rows: Row<TGenerics>[], depth = 0) => {
|
|
456
|
+
const recurseRows = (rows: Row<TGenerics>[], depth = 0): Row<TGenerics>[] => {
|
|
595
457
|
return rows
|
|
596
458
|
.map(row => {
|
|
597
459
|
const isSelected = isRowSelected(row, rowSelection, instance) === true
|
|
@@ -622,7 +484,7 @@ export function selectRowsFn<TGenerics extends PartialGenerics>(
|
|
|
622
484
|
}
|
|
623
485
|
}
|
|
624
486
|
|
|
625
|
-
export function isRowSelected<TGenerics extends
|
|
487
|
+
export function isRowSelected<TGenerics extends TableGenerics>(
|
|
626
488
|
row: Row<TGenerics>,
|
|
627
489
|
selection: Record<string, boolean>,
|
|
628
490
|
instance: TableInstance<TGenerics>
|