@tanstack/table-core 8.0.0-alpha.65 → 8.0.0-alpha.67
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 +0 -2
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/features/Cells.js +1 -1
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +65 -140
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js +5 -5
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +49 -87
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +89 -145
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +30 -58
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +16 -40
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +1 -1
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +1 -1
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +70 -95
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +60 -112
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Sorting.js +33 -83
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +16 -39
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelAsync.js +1 -1
- package/build/cjs/utils/getCoreRowModelAsync.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelSync.js +1 -1
- package/build/cjs/utils/getCoreRowModelSync.js.map +1 -1
- package/build/cjs/utils/getExpandedRowModel.js +2 -2
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFilteredRowModelSync.js +64 -69
- package/build/cjs/utils/getFilteredRowModelSync.js.map +1 -1
- package/build/cjs/utils/getGroupedRowModel.js +1 -1
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +1 -1
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModelSync.js +3 -3
- package/build/cjs/utils/getSortedRowModelSync.js.map +1 -1
- package/build/esm/index.js +546 -924
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +354 -354
- package/build/types/features/ColumnSizing.d.ts +2 -13
- package/build/types/features/Expanding.d.ts +1 -6
- package/build/types/features/Filters.d.ts +12 -14
- package/build/types/features/Grouping.d.ts +0 -7
- package/build/types/features/Pinning.d.ts +0 -4
- package/build/types/features/RowSelection.d.ts +1 -7
- package/build/types/features/Sorting.d.ts +3 -14
- package/build/types/features/Visibility.d.ts +0 -4
- package/build/types/types.d.ts +0 -2
- package/build/umd/index.development.js +534 -912
- 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 +0 -2
- package/src/features/Cells.ts +1 -1
- package/src/features/ColumnSizing.ts +67 -125
- package/src/features/Columns.ts +6 -5
- package/src/features/Expanding.ts +58 -105
- package/src/features/Filters.ts +122 -172
- package/src/features/Grouping.ts +36 -60
- package/src/features/Headers.ts +18 -40
- package/src/features/Ordering.ts +1 -1
- package/src/features/Pagination.ts +1 -1
- package/src/features/Pinning.ts +66 -89
- package/src/features/RowSelection.ts +63 -115
- package/src/features/Sorting.ts +36 -94
- package/src/features/Visibility.ts +19 -49
- package/src/types.ts +0 -2
- package/src/utils/getCoreRowModelAsync.ts +1 -1
- package/src/utils/getCoreRowModelSync.ts +1 -1
- package/src/utils/getExpandedRowModel.ts +2 -2
- package/src/utils/getFilteredRowModelAsync.ts +118 -10
- package/src/utils/getFilteredRowModelSync.ts +95 -104
- package/src/utils/getGroupedRowModel.ts +1 -1
- package/src/utils/getPaginationRowModel.ts +1 -1
- package/src/utils/getSortedRowModelAsync.ts +1 -1
- package/src/utils/getSortedRowModelSync.ts +4 -4
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/table-core",
|
|
3
3
|
"author": "Tanner Linsley",
|
|
4
|
-
"version": "8.0.0-alpha.
|
|
4
|
+
"version": "8.0.0-alpha.67",
|
|
5
5
|
"description": "Hooks for building lightweight, fast and extendable datagrids for React",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/tanstack/react-table#readme",
|
package/src/core.ts
CHANGED
|
@@ -144,7 +144,6 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
144
144
|
Promise.resolve()
|
|
145
145
|
.then(() => {
|
|
146
146
|
while (queued.length) {
|
|
147
|
-
console.log('queue')
|
|
148
147
|
queued.shift()!()
|
|
149
148
|
}
|
|
150
149
|
queuedTimeout = false
|
|
@@ -156,7 +155,6 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
156
155
|
)
|
|
157
156
|
}
|
|
158
157
|
},
|
|
159
|
-
// willUpdate: () => {},
|
|
160
158
|
initialState,
|
|
161
159
|
reset: () => {
|
|
162
160
|
instance.setState(instance.initialState)
|
package/src/features/Cells.ts
CHANGED
|
@@ -42,7 +42,7 @@ export const Cells = {
|
|
|
42
42
|
})
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
|
-
key: process.env.NODE_ENV
|
|
45
|
+
key: process.env.NODE_ENV === 'development' ? 'row.getAllCells' : '',
|
|
46
46
|
debug: () => instance.options.debugAll ?? instance.options.debugRows,
|
|
47
47
|
}
|
|
48
48
|
),
|
|
@@ -44,19 +44,10 @@ export type ColumnSizingDefaultOptions = {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
export type ColumnSizingInstance<TGenerics extends TableGenerics> = {
|
|
47
|
-
getColumnSize: (columnId: string) => number
|
|
48
|
-
getColumnStart: (columnId: string, position?: ColumnPinningPosition) => number
|
|
49
47
|
setColumnSizing: (updater: Updater<ColumnSizingState>) => void
|
|
50
48
|
setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void
|
|
51
49
|
resetColumnSizing: () => void
|
|
52
|
-
resetColumnSize: (columnId: string) => void
|
|
53
|
-
resetHeaderSize: (headerId: string) => void
|
|
54
50
|
resetHeaderSizeInfo: () => void
|
|
55
|
-
getColumnCanResize: (columnId: string) => boolean
|
|
56
|
-
getHeaderCanResize: (headerId: string) => boolean
|
|
57
|
-
getResizeHandler: (headerId: string) => (event: unknown) => void
|
|
58
|
-
getColumnIsResizing: (columnId: string) => boolean
|
|
59
|
-
getHeaderIsResizing: (headerId: string) => boolean
|
|
60
51
|
getTotalSize: () => number
|
|
61
52
|
getLeftTotalSize: () => number
|
|
62
53
|
getCenterTotalSize: () => number
|
|
@@ -65,7 +56,6 @@ export type ColumnSizingInstance<TGenerics extends TableGenerics> = {
|
|
|
65
56
|
|
|
66
57
|
export type ColumnSizingColumnDef = {
|
|
67
58
|
enableResizing?: boolean
|
|
68
|
-
defaultCanResize?: boolean
|
|
69
59
|
size?: number
|
|
70
60
|
minSize?: number
|
|
71
61
|
maxSize?: number
|
|
@@ -80,10 +70,9 @@ export type ColumnSizingColumn<TGenerics extends TableGenerics> = {
|
|
|
80
70
|
}
|
|
81
71
|
|
|
82
72
|
export type ColumnSizingHeader<TGenerics extends TableGenerics> = {
|
|
83
|
-
|
|
84
|
-
|
|
73
|
+
getSize: () => number
|
|
74
|
+
getStart: (position?: ColumnPinningPosition) => number
|
|
85
75
|
getResizeHandler: () => (event: unknown) => void
|
|
86
|
-
resetSize: () => void
|
|
87
76
|
}
|
|
88
77
|
|
|
89
78
|
//
|
|
@@ -128,37 +117,7 @@ export const ColumnSizing: TableFeature = {
|
|
|
128
117
|
instance: TableInstance<TGenerics>
|
|
129
118
|
): ColumnSizingColumn<TGenerics> => {
|
|
130
119
|
return {
|
|
131
|
-
getSize: () =>
|
|
132
|
-
getStart: position => instance.getColumnStart(column.id, position),
|
|
133
|
-
getIsResizing: () => instance.getColumnIsResizing(column.id),
|
|
134
|
-
getCanResize: () => instance.getColumnCanResize(column.id),
|
|
135
|
-
resetSize: () => instance.resetColumnSize(column.id),
|
|
136
|
-
}
|
|
137
|
-
},
|
|
138
|
-
|
|
139
|
-
createHeader: <TGenerics extends TableGenerics>(
|
|
140
|
-
header: Header<TGenerics>,
|
|
141
|
-
instance: TableInstance<TGenerics>
|
|
142
|
-
): ColumnSizingHeader<TGenerics> => {
|
|
143
|
-
return {
|
|
144
|
-
getIsResizing: () => instance.getColumnIsResizing(header.column.id),
|
|
145
|
-
getCanResize: () => instance.getColumnCanResize(header.column.id),
|
|
146
|
-
resetSize: () => instance.resetColumnSize(header.column.id),
|
|
147
|
-
getResizeHandler: () => instance.getResizeHandler(header.id),
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
|
|
151
|
-
createInstance: <TGenerics extends TableGenerics>(
|
|
152
|
-
instance: TableInstance<TGenerics>
|
|
153
|
-
): ColumnSizingInstance<TGenerics> => {
|
|
154
|
-
return {
|
|
155
|
-
getColumnSize: (columnId: string) => {
|
|
156
|
-
const column = instance.getColumn(columnId)
|
|
157
|
-
|
|
158
|
-
if (!column) {
|
|
159
|
-
throw new Error()
|
|
160
|
-
}
|
|
161
|
-
|
|
120
|
+
getSize: () => {
|
|
162
121
|
const columnSize = instance.getState().columnSizing[column.id]
|
|
163
122
|
|
|
164
123
|
return Math.min(
|
|
@@ -169,99 +128,73 @@ export const ColumnSizing: TableFeature = {
|
|
|
169
128
|
column.maxSize ?? defaultColumnSizing.maxSize
|
|
170
129
|
)
|
|
171
130
|
},
|
|
172
|
-
|
|
173
|
-
const column = instance.getColumn(columnId)
|
|
174
|
-
|
|
175
|
-
if (!column) {
|
|
176
|
-
throw new Error()
|
|
177
|
-
}
|
|
178
|
-
|
|
131
|
+
getStart: position => {
|
|
179
132
|
const columns = !position
|
|
180
133
|
? instance.getVisibleLeafColumns()
|
|
181
134
|
: position === 'left'
|
|
182
135
|
? instance.getLeftVisibleLeafColumns()
|
|
183
136
|
: instance.getRightVisibleLeafColumns()
|
|
184
137
|
|
|
185
|
-
const index = columns.findIndex(d => d.id ===
|
|
138
|
+
const index = columns.findIndex(d => d.id === column.id)
|
|
186
139
|
|
|
187
140
|
if (index > 0) {
|
|
188
141
|
const prevSiblingColumn = columns[index - 1]
|
|
189
142
|
|
|
190
143
|
return (
|
|
191
|
-
|
|
192
|
-
prevSiblingColumn.getSize()
|
|
144
|
+
prevSiblingColumn.getStart(position) + prevSiblingColumn.getSize()
|
|
193
145
|
)
|
|
194
146
|
}
|
|
195
147
|
|
|
196
148
|
return 0
|
|
197
149
|
},
|
|
198
|
-
|
|
199
|
-
instance.
|
|
200
|
-
setColumnSizingInfo: updater =>
|
|
201
|
-
instance.options.onColumnSizingInfoChange?.(updater),
|
|
202
|
-
resetColumnSizing: () => {
|
|
203
|
-
instance.setColumnSizing(instance.initialState.columnSizing ?? {})
|
|
204
|
-
},
|
|
205
|
-
resetHeaderSizeInfo: () => {
|
|
206
|
-
instance.setColumnSizingInfo(
|
|
207
|
-
instance.initialState.columnSizingInfo ?? {}
|
|
208
|
-
)
|
|
209
|
-
},
|
|
210
|
-
resetColumnSize: columnId => {
|
|
211
|
-
instance.setColumnSizing(({ [columnId]: _, ...rest }) => {
|
|
150
|
+
resetSize: () => {
|
|
151
|
+
instance.setColumnSizing(({ [column.id]: _, ...rest }) => {
|
|
212
152
|
return rest
|
|
213
153
|
})
|
|
214
154
|
},
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
getHeaderCanResize: headerId => {
|
|
221
|
-
const header = instance.getHeader(headerId)
|
|
222
|
-
|
|
223
|
-
if (!header) {
|
|
224
|
-
throw new Error()
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
return instance.getColumnCanResize(header.column.id)
|
|
155
|
+
getCanResize: () => {
|
|
156
|
+
return (
|
|
157
|
+
(column.enableResizing ?? true) &&
|
|
158
|
+
(instance.options.enableColumnResizing ?? true)
|
|
159
|
+
)
|
|
228
160
|
},
|
|
229
|
-
|
|
230
|
-
const column = instance.getColumn(columnId)
|
|
231
|
-
|
|
232
|
-
if (!column) {
|
|
233
|
-
throw new Error()
|
|
234
|
-
}
|
|
235
|
-
|
|
161
|
+
getIsResizing: () => {
|
|
236
162
|
return (
|
|
237
|
-
column.
|
|
238
|
-
instance.options.enableColumnResizing ??
|
|
239
|
-
column.defaultCanResize ??
|
|
240
|
-
true
|
|
163
|
+
instance.getState().columnSizingInfo.isResizingColumn === column.id
|
|
241
164
|
)
|
|
242
165
|
},
|
|
243
|
-
|
|
244
|
-
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
createHeader: <TGenerics extends TableGenerics>(
|
|
170
|
+
header: Header<TGenerics>,
|
|
171
|
+
instance: TableInstance<TGenerics>
|
|
172
|
+
): ColumnSizingHeader<TGenerics> => {
|
|
173
|
+
return {
|
|
174
|
+
getSize: () => {
|
|
175
|
+
let sum = 0
|
|
245
176
|
|
|
246
|
-
|
|
247
|
-
|
|
177
|
+
const recurse = (header: Header<TGenerics>) => {
|
|
178
|
+
if (header.subHeaders.length) {
|
|
179
|
+
header.subHeaders.forEach(recurse)
|
|
180
|
+
} else {
|
|
181
|
+
sum += header.column.getSize() ?? 0
|
|
182
|
+
}
|
|
248
183
|
}
|
|
249
184
|
|
|
250
|
-
|
|
251
|
-
instance.getState().columnSizingInfo.isResizingColumn === columnId
|
|
252
|
-
)
|
|
253
|
-
},
|
|
254
|
-
getHeaderIsResizing: headerId => {
|
|
255
|
-
const header = instance.getHeader(headerId)
|
|
185
|
+
recurse(header)
|
|
256
186
|
|
|
257
|
-
|
|
258
|
-
|
|
187
|
+
return sum
|
|
188
|
+
},
|
|
189
|
+
getStart: () => {
|
|
190
|
+
if (header.index > 0) {
|
|
191
|
+
const prevSiblingHeader = header.headerGroup.headers[header.index - 1]
|
|
192
|
+
return prevSiblingHeader.getStart() + prevSiblingHeader.getSize()
|
|
259
193
|
}
|
|
260
194
|
|
|
261
|
-
return
|
|
195
|
+
return 0
|
|
262
196
|
},
|
|
263
|
-
getResizeHandler: (
|
|
264
|
-
const header = instance.getHeader(headerId)
|
|
197
|
+
getResizeHandler: () => {
|
|
265
198
|
const column = instance.getColumn(header.column.id)
|
|
266
199
|
const canResize = column.getCanResize()
|
|
267
200
|
|
|
@@ -279,12 +212,12 @@ export const ColumnSizing: TableFeature = {
|
|
|
279
212
|
}
|
|
280
213
|
}
|
|
281
214
|
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
const startSize = header ? header.getSize() : column.getSize()
|
|
215
|
+
const startSize = column.getSize()
|
|
285
216
|
|
|
286
217
|
const columnSizingStart: [string, number][] = header
|
|
287
|
-
? header
|
|
218
|
+
? header
|
|
219
|
+
.getLeafHeaders()
|
|
220
|
+
.map(d => [d.column.id, d.column.getSize()])
|
|
288
221
|
: [[column.id, column.getSize()]]
|
|
289
222
|
|
|
290
223
|
const clientX = isTouchStartEvent(e)
|
|
@@ -384,16 +317,6 @@ export const ColumnSizing: TableFeature = {
|
|
|
384
317
|
: false
|
|
385
318
|
|
|
386
319
|
if (isTouchStartEvent(e)) {
|
|
387
|
-
document.addEventListener(
|
|
388
|
-
'touchmove',
|
|
389
|
-
touchEvents.moveHandler,
|
|
390
|
-
passiveIfSupported
|
|
391
|
-
)
|
|
392
|
-
document.addEventListener(
|
|
393
|
-
'touchend',
|
|
394
|
-
touchEvents.upHandler,
|
|
395
|
-
passiveIfSupported
|
|
396
|
-
)
|
|
397
320
|
} else {
|
|
398
321
|
document.addEventListener(
|
|
399
322
|
'mousemove',
|
|
@@ -418,21 +341,40 @@ export const ColumnSizing: TableFeature = {
|
|
|
418
341
|
}))
|
|
419
342
|
}
|
|
420
343
|
},
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
|
|
347
|
+
createInstance: <TGenerics extends TableGenerics>(
|
|
348
|
+
instance: TableInstance<TGenerics>
|
|
349
|
+
): ColumnSizingInstance<TGenerics> => {
|
|
350
|
+
return {
|
|
351
|
+
setColumnSizing: updater =>
|
|
352
|
+
instance.options.onColumnSizingChange?.(updater),
|
|
353
|
+
setColumnSizingInfo: updater =>
|
|
354
|
+
instance.options.onColumnSizingInfoChange?.(updater),
|
|
355
|
+
resetColumnSizing: () => {
|
|
356
|
+
instance.setColumnSizing(instance.initialState.columnSizing ?? {})
|
|
357
|
+
},
|
|
358
|
+
resetHeaderSizeInfo: () => {
|
|
359
|
+
instance.setColumnSizingInfo(
|
|
360
|
+
instance.initialState.columnSizingInfo ?? {}
|
|
361
|
+
)
|
|
362
|
+
},
|
|
421
363
|
getTotalSize: () =>
|
|
422
364
|
instance.getHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
423
|
-
return sum + header.getSize()
|
|
365
|
+
return sum + header.column.getSize()
|
|
424
366
|
}, 0) ?? 0,
|
|
425
367
|
getLeftTotalSize: () =>
|
|
426
368
|
instance.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
427
|
-
return sum + header.getSize()
|
|
369
|
+
return sum + header.column.getSize()
|
|
428
370
|
}, 0) ?? 0,
|
|
429
371
|
getCenterTotalSize: () =>
|
|
430
372
|
instance.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
431
|
-
return sum + header.getSize()
|
|
373
|
+
return sum + header.column.getSize()
|
|
432
374
|
}, 0) ?? 0,
|
|
433
375
|
getRightTotalSize: () =>
|
|
434
376
|
instance.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
435
|
-
return sum + header.getSize()
|
|
377
|
+
return sum + header.column.getSize()
|
|
436
378
|
}, 0) ?? 0,
|
|
437
379
|
}
|
|
438
380
|
},
|
package/src/features/Columns.ts
CHANGED
|
@@ -108,7 +108,7 @@ export const Columns = {
|
|
|
108
108
|
{
|
|
109
109
|
debug: () =>
|
|
110
110
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
111
|
-
key: process.env.NODE_ENV === '
|
|
111
|
+
key: process.env.NODE_ENV === 'development' && 'getDefaultColumn',
|
|
112
112
|
}
|
|
113
113
|
),
|
|
114
114
|
|
|
@@ -225,7 +225,7 @@ export const Columns = {
|
|
|
225
225
|
return recurseColumns(columnDefs)
|
|
226
226
|
},
|
|
227
227
|
{
|
|
228
|
-
key: process.env.NODE_ENV === '
|
|
228
|
+
key: process.env.NODE_ENV === 'development' && 'getAllColumns',
|
|
229
229
|
debug: () =>
|
|
230
230
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
231
231
|
}
|
|
@@ -239,7 +239,7 @@ export const Columns = {
|
|
|
239
239
|
})
|
|
240
240
|
},
|
|
241
241
|
{
|
|
242
|
-
key: process.env.NODE_ENV === '
|
|
242
|
+
key: process.env.NODE_ENV === 'development' && 'getAllFlatColumns',
|
|
243
243
|
debug: () =>
|
|
244
244
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
245
245
|
}
|
|
@@ -254,7 +254,8 @@ export const Columns = {
|
|
|
254
254
|
}, {} as Record<string, Column<TGenerics>>)
|
|
255
255
|
},
|
|
256
256
|
{
|
|
257
|
-
key:
|
|
257
|
+
key:
|
|
258
|
+
process.env.NODE_ENV === 'development' && 'getAllFlatColumnsById',
|
|
258
259
|
debug: () =>
|
|
259
260
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
260
261
|
}
|
|
@@ -269,7 +270,7 @@ export const Columns = {
|
|
|
269
270
|
return orderColumns(leafColumns)
|
|
270
271
|
},
|
|
271
272
|
{
|
|
272
|
-
key: process.env.NODE_ENV === '
|
|
273
|
+
key: process.env.NODE_ENV === 'development' && 'getAllLeafColumns',
|
|
273
274
|
debug: () =>
|
|
274
275
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
275
276
|
}
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
TableFeature,
|
|
9
9
|
} from '../types'
|
|
10
10
|
import { makeStateUpdater } from '../utils'
|
|
11
|
+
import { Rows } from './Rows'
|
|
11
12
|
|
|
12
13
|
export type ExpandedStateList = Record<string, boolean>
|
|
13
14
|
export type ExpandedState = true | Record<string, boolean>
|
|
@@ -26,12 +27,11 @@ export type ExpandedOptions<TGenerics extends TableGenerics> = {
|
|
|
26
27
|
manualExpanding?: boolean
|
|
27
28
|
onExpandedChange?: OnChangeFn<ExpandedState>
|
|
28
29
|
autoResetExpanded?: boolean
|
|
29
|
-
|
|
30
|
+
enableExpanding?: boolean
|
|
30
31
|
getExpandedRowModel?: (
|
|
31
32
|
instance: TableInstance<TGenerics>
|
|
32
33
|
) => () => RowModel<TGenerics>
|
|
33
34
|
expandSubRows?: boolean
|
|
34
|
-
defaultCanExpand?: boolean
|
|
35
35
|
getIsRowExpanded?: (row: Row<TGenerics>) => boolean
|
|
36
36
|
getRowCanExpand?: (row: Row<TGenerics>) => boolean
|
|
37
37
|
paginateExpandedRows?: boolean
|
|
@@ -40,13 +40,9 @@ export type ExpandedOptions<TGenerics extends TableGenerics> = {
|
|
|
40
40
|
export type ExpandedInstance<TGenerics extends TableGenerics> = {
|
|
41
41
|
_autoResetExpanded: () => void
|
|
42
42
|
setExpanded: (updater: Updater<ExpandedState>) => void
|
|
43
|
-
toggleRowExpanded: (rowId: string, expanded?: boolean) => void
|
|
44
43
|
toggleAllRowsExpanded: (expanded?: boolean) => void
|
|
45
44
|
resetExpanded: () => void
|
|
46
|
-
getRowCanExpand: (rowId: string) => boolean
|
|
47
45
|
getCanSomeRowsExpand: () => boolean
|
|
48
|
-
getIsRowExpanded: (rowId: string) => boolean
|
|
49
|
-
getToggleExpandedHandler: (rowId: string) => undefined | (() => void)
|
|
50
46
|
getToggleAllRowsExpandedHandler: () => (event: unknown) => void
|
|
51
47
|
getIsSomeRowsExpanded: () => boolean
|
|
52
48
|
getIsAllRowsExpanded: () => boolean
|
|
@@ -101,39 +97,6 @@ export const Expanding: TableFeature = {
|
|
|
101
97
|
}
|
|
102
98
|
},
|
|
103
99
|
setExpanded: updater => instance.options.onExpandedChange?.(updater),
|
|
104
|
-
toggleRowExpanded: (rowId, expanded) => {
|
|
105
|
-
if (!rowId) return
|
|
106
|
-
|
|
107
|
-
instance.setExpanded(old => {
|
|
108
|
-
const exists = old === true ? true : !!old?.[rowId]
|
|
109
|
-
|
|
110
|
-
let oldExpanded: ExpandedStateList = {}
|
|
111
|
-
|
|
112
|
-
if (old === true) {
|
|
113
|
-
Object.keys(instance.getRowModel().rowsById).forEach(rowId => {
|
|
114
|
-
oldExpanded[rowId] = true
|
|
115
|
-
})
|
|
116
|
-
} else {
|
|
117
|
-
oldExpanded = old
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
expanded = expanded ?? !exists
|
|
121
|
-
|
|
122
|
-
if (!exists && expanded) {
|
|
123
|
-
return {
|
|
124
|
-
...oldExpanded,
|
|
125
|
-
[rowId]: true,
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (exists && !expanded) {
|
|
130
|
-
const { [rowId]: _, ...rest } = oldExpanded
|
|
131
|
-
return rest
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
return old
|
|
135
|
-
})
|
|
136
|
-
},
|
|
137
100
|
toggleAllRowsExpanded: expanded => {
|
|
138
101
|
if (expanded ?? !instance.getIsAllRowsExpanded()) {
|
|
139
102
|
instance.setExpanded(true)
|
|
@@ -144,62 +107,8 @@ export const Expanding: TableFeature = {
|
|
|
144
107
|
resetExpanded: () => {
|
|
145
108
|
instance.setExpanded(instance.initialState?.expanded ?? {})
|
|
146
109
|
},
|
|
147
|
-
getIsRowExpanded: rowId => {
|
|
148
|
-
const row = instance.getPreExpandedRowModel().rowsById[rowId]
|
|
149
|
-
|
|
150
|
-
if (!row) {
|
|
151
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
152
|
-
console.warn(
|
|
153
|
-
`[Table] getIsRowExpanded: no row found with id ${rowId}`
|
|
154
|
-
)
|
|
155
|
-
}
|
|
156
|
-
throw new Error()
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
const expanded = instance.getState().expanded
|
|
160
|
-
|
|
161
|
-
return !!(
|
|
162
|
-
instance.options.getIsRowExpanded?.(row) ??
|
|
163
|
-
(expanded === true || expanded?.[rowId])
|
|
164
|
-
)
|
|
165
|
-
},
|
|
166
|
-
getRowCanExpand: rowId => {
|
|
167
|
-
const row = instance.getRow(rowId)
|
|
168
|
-
|
|
169
|
-
if (!row) {
|
|
170
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
171
|
-
console.warn(
|
|
172
|
-
`[Table] getRowCanExpand: no row found with id ${rowId}`
|
|
173
|
-
)
|
|
174
|
-
}
|
|
175
|
-
throw new Error()
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
return (
|
|
179
|
-
instance.options.getRowCanExpand?.(row) ??
|
|
180
|
-
instance.options.enableExpanded ??
|
|
181
|
-
instance.options.defaultCanExpand ??
|
|
182
|
-
!!row.subRows?.length
|
|
183
|
-
)
|
|
184
|
-
},
|
|
185
110
|
getCanSomeRowsExpand: () => {
|
|
186
|
-
return
|
|
187
|
-
instance.getRowCanExpand(id)
|
|
188
|
-
)
|
|
189
|
-
},
|
|
190
|
-
getToggleExpandedHandler: rowId => {
|
|
191
|
-
const row = instance.getRow(rowId)
|
|
192
|
-
|
|
193
|
-
if (!row) {
|
|
194
|
-
return
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
const canExpand = instance.getRowCanExpand(rowId)
|
|
198
|
-
|
|
199
|
-
return () => {
|
|
200
|
-
if (!canExpand) return
|
|
201
|
-
instance.toggleRowExpanded(rowId)
|
|
202
|
-
}
|
|
111
|
+
return instance.getRowModel().flatRows.some(row => row.getCanExpand())
|
|
203
112
|
},
|
|
204
113
|
getToggleAllRowsExpandedHandler: () => {
|
|
205
114
|
return (e: unknown) => {
|
|
@@ -220,11 +129,7 @@ export const Expanding: TableFeature = {
|
|
|
220
129
|
}
|
|
221
130
|
|
|
222
131
|
// If any row is not expanded, return false
|
|
223
|
-
if (
|
|
224
|
-
Object.keys(instance.getRowModel().rowsById).some(
|
|
225
|
-
id => !instance.getIsRowExpanded(id)
|
|
226
|
-
)
|
|
227
|
-
) {
|
|
132
|
+
if (instance.getRowModel().flatRows.some(row => row.getIsExpanded())) {
|
|
228
133
|
return false
|
|
229
134
|
}
|
|
230
135
|
|
|
@@ -273,12 +178,60 @@ export const Expanding: TableFeature = {
|
|
|
273
178
|
instance: TableInstance<TGenerics>
|
|
274
179
|
): ExpandedRow => {
|
|
275
180
|
return {
|
|
276
|
-
toggleExpanded: expanded =>
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
181
|
+
toggleExpanded: expanded => {
|
|
182
|
+
instance.setExpanded(old => {
|
|
183
|
+
const exists = old === true ? true : !!old?.[row.id]
|
|
184
|
+
|
|
185
|
+
let oldExpanded: ExpandedStateList = {}
|
|
186
|
+
|
|
187
|
+
if (old === true) {
|
|
188
|
+
Object.keys(instance.getRowModel().rowsById).forEach(rowId => {
|
|
189
|
+
oldExpanded[rowId] = true
|
|
190
|
+
})
|
|
191
|
+
} else {
|
|
192
|
+
oldExpanded = old
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
expanded = expanded ?? !exists
|
|
196
|
+
|
|
197
|
+
if (!exists && expanded) {
|
|
198
|
+
return {
|
|
199
|
+
...oldExpanded,
|
|
200
|
+
[row.id]: true,
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (exists && !expanded) {
|
|
205
|
+
const { [row.id]: _, ...rest } = oldExpanded
|
|
206
|
+
return rest
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return old
|
|
210
|
+
})
|
|
211
|
+
},
|
|
212
|
+
getIsExpanded: () => {
|
|
213
|
+
const expanded = instance.getState().expanded
|
|
214
|
+
|
|
215
|
+
return !!(
|
|
216
|
+
instance.options.getIsRowExpanded?.(row) ??
|
|
217
|
+
(expanded === true || expanded?.[row.id])
|
|
218
|
+
)
|
|
219
|
+
},
|
|
220
|
+
getCanExpand: () => {
|
|
221
|
+
return (
|
|
222
|
+
(instance.options.getRowCanExpand?.(row) ?? true) &&
|
|
223
|
+
(instance.options.enableExpanding ?? true) &&
|
|
224
|
+
!!row.subRows?.length
|
|
225
|
+
)
|
|
226
|
+
},
|
|
227
|
+
getToggleExpandedHandler: () => {
|
|
228
|
+
const canExpand = row.getCanExpand()
|
|
229
|
+
|
|
230
|
+
return () => {
|
|
231
|
+
if (!canExpand) return
|
|
232
|
+
row.toggleExpanded()
|
|
233
|
+
}
|
|
234
|
+
},
|
|
282
235
|
}
|
|
283
236
|
},
|
|
284
237
|
}
|