@tanstack/table-core 8.0.0-alpha.65 → 8.0.0-alpha.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/aggregationFns.js +25 -37
- package/build/cjs/aggregationFns.js.map +1 -1
- package/build/cjs/core.js +167 -48
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +24 -40
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/Cells.js +28 -34
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +136 -225
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js +57 -84
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +79 -126
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +137 -288
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +71 -117
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +125 -205
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +32 -44
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +79 -82
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +99 -178
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +133 -204
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Rows.js +32 -22
- package/build/cjs/features/Rows.js.map +1 -1
- package/build/cjs/features/Sorting.js +67 -136
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +56 -118
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +48 -72
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/index.js +13 -13
- package/build/cjs/sortingFns.js +21 -21
- package/build/cjs/sortingFns.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +49 -55
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getCoreRowModel.js +98 -0
- package/build/cjs/utils/getCoreRowModel.js.map +1 -0
- package/build/cjs/utils/getExpandedRowModel.js +18 -22
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedMinMaxValues.js +48 -0
- package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -0
- package/build/cjs/utils/getFacetedRowModel.js +50 -0
- package/build/cjs/utils/getFacetedRowModel.js.map +1 -0
- package/build/cjs/utils/getFacetedUniqueValues.js +48 -0
- package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -0
- package/build/cjs/utils/getFilteredRowModel.js +130 -0
- package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
- package/build/cjs/utils/getGroupedRowModel.js +126 -136
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +39 -39
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModel.js +112 -0
- package/build/cjs/utils/getSortedRowModel.js.map +1 -0
- package/build/cjs/utils.js +36 -207
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +2024 -2971
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +421 -481
- package/build/types/core.d.ts +3 -5
- package/build/types/features/Cells.d.ts +1 -1
- package/build/types/features/ColumnSizing.d.ts +4 -15
- package/build/types/features/Columns.d.ts +1 -1
- package/build/types/features/Expanding.d.ts +2 -7
- package/build/types/features/Filters.d.ts +24 -21
- package/build/types/features/Grouping.d.ts +5 -11
- package/build/types/features/Ordering.d.ts +1 -1
- package/build/types/features/Pagination.d.ts +3 -3
- package/build/types/features/Pinning.d.ts +1 -5
- package/build/types/features/RowSelection.d.ts +2 -8
- package/build/types/features/Rows.d.ts +4 -3
- package/build/types/features/Sorting.d.ts +5 -15
- package/build/types/features/Visibility.d.ts +1 -4
- package/build/types/index.d.ts +6 -4
- package/build/types/types.d.ts +3 -15
- package/build/types/utils/filterRowsUtils.d.ts +3 -3
- package/build/types/utils/getCoreRowModel.d.ts +2 -0
- package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
- package/build/types/utils/getFacetedRowModel.d.ts +2 -0
- package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
- package/build/types/utils/{getCoreRowModelSync.d.ts → getFilteredRowModel.d.ts} +1 -1
- package/build/types/utils/getGroupedRowModel.d.ts +1 -1
- package/build/types/utils/getSortedRowModel.d.ts +2 -0
- package/build/types/utils.d.ts +1 -17
- package/build/umd/index.development.js +2053 -3002
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/core.ts +197 -47
- package/src/features/Cells.ts +7 -11
- package/src/features/ColumnSizing.ts +89 -139
- package/src/features/Columns.ts +10 -13
- package/src/features/Expanding.ts +62 -107
- package/src/features/Filters.ts +201 -308
- package/src/features/Grouping.ts +55 -81
- package/src/features/Headers.ts +18 -40
- package/src/features/Ordering.ts +6 -4
- package/src/features/Pagination.ts +31 -17
- package/src/features/Pinning.ts +79 -96
- package/src/features/RowSelection.ts +68 -118
- package/src/features/Rows.ts +21 -6
- package/src/features/Sorting.ts +47 -103
- package/src/features/Visibility.ts +24 -47
- package/src/filterFns.ts +9 -9
- package/src/index.ts +12 -4
- package/src/sortingFns.ts +11 -11
- package/src/types.ts +3 -18
- package/src/utils/filterRowsUtils.ts +47 -68
- package/src/utils/{getCoreRowModelSync.ts → getCoreRowModel.ts} +3 -9
- package/src/utils/getExpandedRowModel.ts +2 -2
- package/src/utils/getFacetedMinMaxValues.ts +37 -0
- package/src/utils/getFacetedRowModel.ts +50 -0
- package/src/utils/getFacetedUniqueValues.ts +37 -0
- package/src/utils/getFilteredRowModel.ts +150 -0
- package/src/utils/getGroupedRowModel.ts +53 -62
- package/src/utils/getPaginationRowModel.ts +1 -1
- package/src/utils/{getSortedRowModelSync.ts → getSortedRowModel.ts} +7 -7
- package/src/utils.ts +28 -236
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
- package/build/cjs/utils/getCoreRowModelAsync.js +0 -125
- package/build/cjs/utils/getCoreRowModelAsync.js.map +0 -1
- package/build/cjs/utils/getCoreRowModelSync.js +0 -102
- package/build/cjs/utils/getCoreRowModelSync.js.map +0 -1
- package/build/cjs/utils/getFilteredRowModelSync.js +0 -130
- package/build/cjs/utils/getFilteredRowModelSync.js.map +0 -1
- package/build/cjs/utils/getSortedRowModelSync.js +0 -118
- package/build/cjs/utils/getSortedRowModelSync.js.map +0 -1
- package/build/types/utils/getCoreRowModelAsync.d.ts +0 -4
- package/build/types/utils/getFilteredRowModelAsync.d.ts +0 -4
- package/build/types/utils/getFilteredRowModelSync.d.ts +0 -2
- package/build/types/utils/getSortedRowModelAsync.d.ts +0 -13
- package/build/types/utils/getSortedRowModelSync.d.ts +0 -2
- package/src/utils/getCoreRowModelAsync.ts +0 -104
- package/src/utils/getFilteredRowModelAsync.ts +0 -49
- package/src/utils/getFilteredRowModelSync.ts +0 -150
- package/src/utils/getSortedRowModelAsync.ts +0 -200
package/src/features/Pinning.ts
CHANGED
|
@@ -49,11 +49,7 @@ export type ColumnPinningRow<TGenerics extends TableGenerics> = {
|
|
|
49
49
|
|
|
50
50
|
export type ColumnPinningInstance<TGenerics extends TableGenerics> = {
|
|
51
51
|
setColumnPinning: (updater: Updater<ColumnPinningState>) => void
|
|
52
|
-
resetColumnPinning: () => void
|
|
53
|
-
pinColumn: (columnId: string, position: ColumnPinningPosition) => void
|
|
54
|
-
getColumnCanPin: (columnId: string) => boolean
|
|
55
|
-
getColumnIsPinned: (columnId: string) => ColumnPinningPosition
|
|
56
|
-
getColumnPinnedIndex: (columnId: string) => number
|
|
52
|
+
resetColumnPinning: (defaultState?: boolean) => void
|
|
57
53
|
getIsSomeColumnsPinned: () => boolean
|
|
58
54
|
getLeftLeafColumns: () => Column<TGenerics>[]
|
|
59
55
|
getRightLeafColumns: () => Column<TGenerics>[]
|
|
@@ -62,13 +58,15 @@ export type ColumnPinningInstance<TGenerics extends TableGenerics> = {
|
|
|
62
58
|
|
|
63
59
|
//
|
|
64
60
|
|
|
61
|
+
const getDefaultPinningState = (): ColumnPinningState => ({
|
|
62
|
+
left: [],
|
|
63
|
+
right: [],
|
|
64
|
+
})
|
|
65
|
+
|
|
65
66
|
export const Pinning: TableFeature = {
|
|
66
67
|
getInitialState: (state): ColumnPinningTableState => {
|
|
67
68
|
return {
|
|
68
|
-
columnPinning:
|
|
69
|
-
left: [],
|
|
70
|
-
right: [],
|
|
71
|
-
},
|
|
69
|
+
columnPinning: getDefaultPinningState(),
|
|
72
70
|
...state,
|
|
73
71
|
}
|
|
74
72
|
},
|
|
@@ -86,10 +84,69 @@ export const Pinning: TableFeature = {
|
|
|
86
84
|
instance: TableInstance<TGenerics>
|
|
87
85
|
): ColumnPinningColumn => {
|
|
88
86
|
return {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
87
|
+
pin: position => {
|
|
88
|
+
const columnIds = column
|
|
89
|
+
.getLeafColumns()
|
|
90
|
+
.map(d => d.id)
|
|
91
|
+
.filter(Boolean) as string[]
|
|
92
|
+
|
|
93
|
+
instance.setColumnPinning(old => {
|
|
94
|
+
if (position === 'right') {
|
|
95
|
+
return {
|
|
96
|
+
left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),
|
|
97
|
+
right: [
|
|
98
|
+
...(old?.right ?? []).filter(d => !columnIds?.includes(d)),
|
|
99
|
+
...columnIds,
|
|
100
|
+
],
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (position === 'left') {
|
|
105
|
+
return {
|
|
106
|
+
left: [
|
|
107
|
+
...(old?.left ?? []).filter(d => !columnIds?.includes(d)),
|
|
108
|
+
...columnIds,
|
|
109
|
+
],
|
|
110
|
+
right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),
|
|
116
|
+
right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),
|
|
117
|
+
}
|
|
118
|
+
})
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
getCanPin: () => {
|
|
122
|
+
const leafColumns = column.getLeafColumns()
|
|
123
|
+
|
|
124
|
+
return leafColumns.some(
|
|
125
|
+
d =>
|
|
126
|
+
(d.enablePinning ?? true) &&
|
|
127
|
+
(instance.options.enablePinning ?? true)
|
|
128
|
+
)
|
|
129
|
+
},
|
|
130
|
+
|
|
131
|
+
getIsPinned: () => {
|
|
132
|
+
const leafColumnIds = column.getLeafColumns().map(d => d.id)
|
|
133
|
+
|
|
134
|
+
const { left, right } = instance.getState().columnPinning
|
|
135
|
+
|
|
136
|
+
const isLeft = leafColumnIds.some(d => left?.includes(d))
|
|
137
|
+
const isRight = leafColumnIds.some(d => right?.includes(d))
|
|
138
|
+
|
|
139
|
+
return isLeft ? 'left' : isRight ? 'right' : false
|
|
140
|
+
},
|
|
141
|
+
|
|
142
|
+
getPinnedIndex: () => {
|
|
143
|
+
const position = column.getIsPinned()
|
|
144
|
+
|
|
145
|
+
return position
|
|
146
|
+
? instance.getState().columnPinning?.[position]?.indexOf(column.id) ??
|
|
147
|
+
-1
|
|
148
|
+
: 0
|
|
149
|
+
},
|
|
93
150
|
}
|
|
94
151
|
},
|
|
95
152
|
|
|
@@ -165,86 +222,12 @@ export const Pinning: TableFeature = {
|
|
|
165
222
|
setColumnPinning: updater =>
|
|
166
223
|
instance.options.onColumnPinningChange?.(updater),
|
|
167
224
|
|
|
168
|
-
resetColumnPinning:
|
|
169
|
-
instance.setColumnPinning(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
const columnIds = column
|
|
175
|
-
?.getLeafColumns()
|
|
176
|
-
.map(d => d.id)
|
|
177
|
-
.filter(Boolean) as string[]
|
|
178
|
-
|
|
179
|
-
instance.setColumnPinning(old => {
|
|
180
|
-
if (position === 'right') {
|
|
181
|
-
return {
|
|
182
|
-
left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),
|
|
183
|
-
right: [
|
|
184
|
-
...(old?.right ?? []).filter(d => !columnIds?.includes(d)),
|
|
185
|
-
...columnIds,
|
|
186
|
-
],
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (position === 'left') {
|
|
191
|
-
return {
|
|
192
|
-
left: [
|
|
193
|
-
...(old?.left ?? []).filter(d => !columnIds?.includes(d)),
|
|
194
|
-
...columnIds,
|
|
195
|
-
],
|
|
196
|
-
right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
return {
|
|
201
|
-
left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),
|
|
202
|
-
right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),
|
|
203
|
-
}
|
|
204
|
-
})
|
|
205
|
-
},
|
|
206
|
-
|
|
207
|
-
getColumnCanPin: columnId => {
|
|
208
|
-
const column = instance.getColumn(columnId)
|
|
209
|
-
|
|
210
|
-
if (!column) {
|
|
211
|
-
throw new Error()
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
const leafColumns = column.getLeafColumns()
|
|
215
|
-
|
|
216
|
-
return leafColumns.some(
|
|
217
|
-
d =>
|
|
218
|
-
(d.enablePinning ?? true) &&
|
|
219
|
-
(instance.options.enablePinning ?? true)
|
|
220
|
-
)
|
|
221
|
-
},
|
|
222
|
-
|
|
223
|
-
getColumnIsPinned: columnId => {
|
|
224
|
-
const column = instance.getColumn(columnId)
|
|
225
|
-
|
|
226
|
-
if (!column) {
|
|
227
|
-
throw new Error()
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
const leafColumnIds = column.getLeafColumns().map(d => d.id)
|
|
231
|
-
|
|
232
|
-
const { left, right } = instance.getState().columnPinning
|
|
233
|
-
|
|
234
|
-
const isLeft = leafColumnIds.some(d => left?.includes(d))
|
|
235
|
-
const isRight = leafColumnIds.some(d => right?.includes(d))
|
|
236
|
-
|
|
237
|
-
return isLeft ? 'left' : isRight ? 'right' : false
|
|
238
|
-
},
|
|
239
|
-
|
|
240
|
-
getColumnPinnedIndex: columnId => {
|
|
241
|
-
const position = instance.getColumnIsPinned(columnId)
|
|
242
|
-
|
|
243
|
-
return position
|
|
244
|
-
? instance.getState().columnPinning?.[position]?.indexOf(columnId) ??
|
|
245
|
-
-1
|
|
246
|
-
: 0
|
|
247
|
-
},
|
|
225
|
+
resetColumnPinning: defaultState =>
|
|
226
|
+
instance.setColumnPinning(
|
|
227
|
+
defaultState
|
|
228
|
+
? getDefaultPinningState()
|
|
229
|
+
: instance.initialState?.columnPinning ?? getDefaultPinningState()
|
|
230
|
+
),
|
|
248
231
|
|
|
249
232
|
getIsSomeColumnsPinned: () => {
|
|
250
233
|
const { left, right } = instance.getState().columnPinning
|
|
@@ -263,7 +246,7 @@ export const Pinning: TableFeature = {
|
|
|
263
246
|
.filter(Boolean)
|
|
264
247
|
},
|
|
265
248
|
{
|
|
266
|
-
key: process.env.NODE_ENV === '
|
|
249
|
+
key: process.env.NODE_ENV === 'development' && 'getLeftLeafColumns',
|
|
267
250
|
debug: () =>
|
|
268
251
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
269
252
|
}
|
|
@@ -280,7 +263,7 @@ export const Pinning: TableFeature = {
|
|
|
280
263
|
.filter(Boolean)
|
|
281
264
|
},
|
|
282
265
|
{
|
|
283
|
-
key: process.env.NODE_ENV === '
|
|
266
|
+
key: process.env.NODE_ENV === 'development' && 'getRightLeafColumns',
|
|
284
267
|
debug: () =>
|
|
285
268
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
286
269
|
}
|
|
@@ -298,7 +281,7 @@ export const Pinning: TableFeature = {
|
|
|
298
281
|
return allColumns.filter(d => !leftAndRight.includes(d.id))
|
|
299
282
|
},
|
|
300
283
|
{
|
|
301
|
-
key: process.env.NODE_ENV === '
|
|
284
|
+
key: process.env.NODE_ENV === 'development' && 'getCenterLeafColumns',
|
|
302
285
|
debug: () =>
|
|
303
286
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
304
287
|
}
|
|
@@ -44,25 +44,16 @@ export type RowSelectionRow = {
|
|
|
44
44
|
getIsSomeSelected: () => boolean
|
|
45
45
|
getCanSelect: () => boolean
|
|
46
46
|
getCanMultiSelect: () => boolean
|
|
47
|
+
getCanSelectSubRows: () => boolean
|
|
47
48
|
toggleSelected: (value?: boolean) => void
|
|
48
49
|
getToggleSelectedHandler: () => (event: unknown) => void
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
export type RowSelectionInstance<TGenerics extends TableGenerics> = {
|
|
52
|
-
getToggleRowSelectedHandler: (
|
|
53
|
-
rowId: string
|
|
54
|
-
) => undefined | ((e: unknown) => void)
|
|
55
53
|
getToggleAllRowsSelectedHandler: () => (event: unknown) => void
|
|
56
54
|
getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void
|
|
57
55
|
setRowSelection: (updater: Updater<RowSelectionState>) => void
|
|
58
|
-
resetRowSelection: () => void
|
|
59
|
-
toggleRowSelected: (rowId: string, value?: boolean) => void
|
|
60
|
-
getRowCanSelect: (rowId: string) => boolean
|
|
61
|
-
getRowCanSelectSubRows: (rowId: string) => boolean
|
|
62
|
-
getRowCanMultiSelect: (rowId: string) => boolean
|
|
63
|
-
// getGroupingRowCanSelect: (rowId: string) => boolean
|
|
64
|
-
getRowIsSelected: (rowId: string) => boolean
|
|
65
|
-
getRowIsSomeSelected: (rowId: string) => boolean
|
|
56
|
+
resetRowSelection: (defaultState?: boolean) => void
|
|
66
57
|
getIsAllRowsSelected: () => boolean
|
|
67
58
|
getIsAllPageRowsSelected: () => boolean
|
|
68
59
|
getIsSomeRowsSelected: () => boolean
|
|
@@ -105,8 +96,10 @@ export const RowSelection: TableFeature = {
|
|
|
105
96
|
return {
|
|
106
97
|
setRowSelection: updater =>
|
|
107
98
|
instance.options.onRowSelectionChange?.(updater),
|
|
108
|
-
resetRowSelection:
|
|
109
|
-
instance.setRowSelection(
|
|
99
|
+
resetRowSelection: defaultState =>
|
|
100
|
+
instance.setRowSelection(
|
|
101
|
+
defaultState ? {} : instance.initialState.rowSelection ?? {}
|
|
102
|
+
),
|
|
110
103
|
toggleAllRowsSelected: value => {
|
|
111
104
|
instance.setRowSelection(old => {
|
|
112
105
|
value =
|
|
@@ -148,24 +141,7 @@ export const RowSelection: TableFeature = {
|
|
|
148
141
|
|
|
149
142
|
return rowSelection
|
|
150
143
|
}),
|
|
151
|
-
toggleRowSelected: (rowId, value) => {
|
|
152
|
-
const row = instance.getRow(rowId)
|
|
153
|
-
const isSelected = row.getIsSelected()
|
|
154
|
-
|
|
155
|
-
instance.setRowSelection(old => {
|
|
156
|
-
value = typeof value !== 'undefined' ? value : !isSelected
|
|
157
|
-
|
|
158
|
-
if (isSelected === value) {
|
|
159
|
-
return old
|
|
160
|
-
}
|
|
161
144
|
|
|
162
|
-
const selectedRowIds = { ...old }
|
|
163
|
-
|
|
164
|
-
mutateRowIsSelected(selectedRowIds, rowId, value, instance)
|
|
165
|
-
|
|
166
|
-
return selectedRowIds
|
|
167
|
-
})
|
|
168
|
-
},
|
|
169
145
|
// addRowSelectionRange: rowId => {
|
|
170
146
|
// const {
|
|
171
147
|
// rows,
|
|
@@ -239,7 +215,7 @@ export const RowSelection: TableFeature = {
|
|
|
239
215
|
return selectRowsFn(instance, rowModel)
|
|
240
216
|
},
|
|
241
217
|
{
|
|
242
|
-
key: process.env.NODE_ENV === '
|
|
218
|
+
key: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',
|
|
243
219
|
debug: () => instance.options.debugAll ?? instance.options.debugTable,
|
|
244
220
|
}
|
|
245
221
|
),
|
|
@@ -291,70 +267,6 @@ export const RowSelection: TableFeature = {
|
|
|
291
267
|
|
|
292
268
|
///
|
|
293
269
|
|
|
294
|
-
getRowIsSelected: rowId => {
|
|
295
|
-
const { rowSelection } = instance.getState()
|
|
296
|
-
const row = instance.getRow(rowId)
|
|
297
|
-
|
|
298
|
-
if (!row) {
|
|
299
|
-
throw new Error()
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
return isRowSelected(row, rowSelection, instance) === true
|
|
303
|
-
},
|
|
304
|
-
|
|
305
|
-
getRowIsSomeSelected: rowId => {
|
|
306
|
-
const { rowSelection } = instance.getState()
|
|
307
|
-
const row = instance.getRow(rowId)
|
|
308
|
-
|
|
309
|
-
if (!row) {
|
|
310
|
-
throw new Error()
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
return isRowSelected(row, rowSelection, instance) === 'some'
|
|
314
|
-
},
|
|
315
|
-
|
|
316
|
-
getRowCanSelect: rowId => {
|
|
317
|
-
const row = instance.getRow(rowId)
|
|
318
|
-
|
|
319
|
-
if (!row) {
|
|
320
|
-
throw new Error()
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
if (typeof instance.options.enableRowSelection === 'function') {
|
|
324
|
-
return instance.options.enableRowSelection(row)
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
return instance.options.enableRowSelection ?? true
|
|
328
|
-
},
|
|
329
|
-
|
|
330
|
-
getRowCanSelectSubRows: rowId => {
|
|
331
|
-
const row = instance.getRow(rowId)
|
|
332
|
-
|
|
333
|
-
if (!row) {
|
|
334
|
-
throw new Error()
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
if (typeof instance.options.enableSubRowSelection === 'function') {
|
|
338
|
-
return instance.options.enableSubRowSelection(row)
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
return instance.options.enableSubRowSelection ?? true
|
|
342
|
-
},
|
|
343
|
-
|
|
344
|
-
getRowCanMultiSelect: rowId => {
|
|
345
|
-
const row = instance.getRow(rowId)
|
|
346
|
-
|
|
347
|
-
if (!row) {
|
|
348
|
-
throw new Error()
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
if (typeof instance.options.enableMultiRowSelection === 'function') {
|
|
352
|
-
return instance.options.enableMultiRowSelection(row)
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
return instance.options.enableMultiRowSelection ?? true
|
|
356
|
-
},
|
|
357
|
-
|
|
358
270
|
// getGroupingRowCanSelect: rowId => {
|
|
359
271
|
// const row = instance.getRow(rowId)
|
|
360
272
|
|
|
@@ -416,21 +328,6 @@ export const RowSelection: TableFeature = {
|
|
|
416
328
|
: !!paginationFlatRows?.length
|
|
417
329
|
},
|
|
418
330
|
|
|
419
|
-
getToggleRowSelectedHandler: rowId => {
|
|
420
|
-
const row = instance.getRow(rowId)
|
|
421
|
-
|
|
422
|
-
const isSelected = row.getIsSelected()
|
|
423
|
-
const isSomeSelected = row.getIsSomeSelected()
|
|
424
|
-
const canSelect = row.getCanSelect()
|
|
425
|
-
|
|
426
|
-
return (e: unknown) => {
|
|
427
|
-
if (!canSelect) return
|
|
428
|
-
row.toggleSelected(
|
|
429
|
-
((e as MouseEvent).target as HTMLInputElement)?.checked
|
|
430
|
-
)
|
|
431
|
-
}
|
|
432
|
-
},
|
|
433
|
-
|
|
434
331
|
getToggleAllRowsSelectedHandler: () => {
|
|
435
332
|
return (e: unknown) => {
|
|
436
333
|
instance.toggleAllRowsSelected(
|
|
@@ -454,13 +351,66 @@ export const RowSelection: TableFeature = {
|
|
|
454
351
|
instance: TableInstance<TGenerics>
|
|
455
352
|
): RowSelectionRow => {
|
|
456
353
|
return {
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
354
|
+
toggleSelected: value => {
|
|
355
|
+
const isSelected = row.getIsSelected()
|
|
356
|
+
|
|
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)
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
return instance.options.enableRowSelection ?? true
|
|
387
|
+
},
|
|
388
|
+
|
|
389
|
+
getCanSelectSubRows: () => {
|
|
390
|
+
if (typeof instance.options.enableSubRowSelection === 'function') {
|
|
391
|
+
return instance.options.enableSubRowSelection(row)
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
return instance.options.enableSubRowSelection ?? true
|
|
395
|
+
},
|
|
396
|
+
|
|
397
|
+
getCanMultiSelect: () => {
|
|
398
|
+
if (typeof instance.options.enableMultiRowSelection === 'function') {
|
|
399
|
+
return instance.options.enableMultiRowSelection(row)
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
return instance.options.enableMultiRowSelection ?? true
|
|
403
|
+
},
|
|
404
|
+
getToggleSelectedHandler: () => {
|
|
405
|
+
const canSelect = row.getCanSelect()
|
|
406
|
+
|
|
407
|
+
return (e: unknown) => {
|
|
408
|
+
if (!canSelect) return
|
|
409
|
+
row.toggleSelected(
|
|
410
|
+
((e as MouseEvent).target as HTMLInputElement)?.checked
|
|
411
|
+
)
|
|
412
|
+
}
|
|
413
|
+
},
|
|
464
414
|
}
|
|
465
415
|
},
|
|
466
416
|
}
|
|
@@ -486,7 +436,7 @@ const mutateRowIsSelected = <TGenerics extends TableGenerics>(
|
|
|
486
436
|
}
|
|
487
437
|
// }
|
|
488
438
|
|
|
489
|
-
if (row.subRows?.length &&
|
|
439
|
+
if (row.subRows?.length && row.getCanSelectSubRows()) {
|
|
490
440
|
row.subRows.forEach(row =>
|
|
491
441
|
mutateRowIsSelected(selectedRowIds, row.id, value, instance)
|
|
492
442
|
)
|
package/src/features/Rows.ts
CHANGED
|
@@ -12,7 +12,8 @@ export type CoreRow<TGenerics extends TableGenerics> = {
|
|
|
12
12
|
index: number
|
|
13
13
|
original?: TGenerics['Row']
|
|
14
14
|
depth: number
|
|
15
|
-
|
|
15
|
+
valuesCache: Record<string, any>
|
|
16
|
+
getValue: (columnId: string) => any
|
|
16
17
|
subRows: Row<TGenerics>[]
|
|
17
18
|
getLeafRows: () => Row<TGenerics>[]
|
|
18
19
|
originalSubRows?: TGenerics['Row'][]
|
|
@@ -44,7 +45,7 @@ export type RowsInstance<TGenerics extends TableGenerics> = {
|
|
|
44
45
|
original: TGenerics['Row'] | undefined,
|
|
45
46
|
rowIndex: number,
|
|
46
47
|
depth: number,
|
|
47
|
-
|
|
48
|
+
subRows?: Row<TGenerics>[]
|
|
48
49
|
) => Row<TGenerics>
|
|
49
50
|
getCoreRowModel: () => RowModel<TGenerics>
|
|
50
51
|
_getCoreRowModel?: () => RowModel<TGenerics>
|
|
@@ -73,20 +74,34 @@ export const Rows = {
|
|
|
73
74
|
) =>
|
|
74
75
|
instance.options.getRowId?.(row, index, parent) ??
|
|
75
76
|
`${parent ? [parent.id, index].join('.') : index}`,
|
|
76
|
-
createRow: (id, original, rowIndex, depth,
|
|
77
|
+
createRow: (id, original, rowIndex, depth, subRows) => {
|
|
77
78
|
let row: CoreRow<TGenerics> = {
|
|
78
79
|
id,
|
|
79
80
|
index: rowIndex,
|
|
80
81
|
original,
|
|
81
82
|
depth,
|
|
82
|
-
|
|
83
|
-
|
|
83
|
+
valuesCache: {},
|
|
84
|
+
getValue: columnId => {
|
|
85
|
+
if (row.valuesCache.hasOwnProperty(columnId)) {
|
|
86
|
+
return row.valuesCache[columnId]
|
|
87
|
+
}
|
|
88
|
+
const column = instance.getColumn(columnId)
|
|
89
|
+
if (!column.accessorFn) {
|
|
90
|
+
throw new Error()
|
|
91
|
+
}
|
|
92
|
+
row.valuesCache[columnId] = column.accessorFn(
|
|
93
|
+
row.original,
|
|
94
|
+
rowIndex
|
|
95
|
+
)
|
|
96
|
+
return row.valuesCache[columnId]
|
|
97
|
+
},
|
|
98
|
+
subRows: subRows ?? [],
|
|
84
99
|
getLeafRows: () => flattenBy(row.subRows, d => d.subRows),
|
|
85
100
|
}
|
|
86
101
|
|
|
87
102
|
for (let i = 0; i < instance._features.length; i++) {
|
|
88
103
|
const feature = instance._features[i]
|
|
89
|
-
Object.assign(row, feature
|
|
104
|
+
Object.assign(row, feature?.createRow?.(row, instance))
|
|
90
105
|
}
|
|
91
106
|
|
|
92
107
|
return row as Row<TGenerics>
|