@tanstack/table-core 8.0.0-alpha.64 → 8.0.0-alpha.68
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 -47
- 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 +29 -35
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +126 -218
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js +59 -86
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +78 -125
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +143 -218
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +70 -116
- 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 +31 -43
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +64 -72
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +96 -177
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +134 -205
- 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 +62 -131
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +53 -120
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +52 -133
- 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 +56 -41
- 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 -211
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +1970 -2956
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +390 -482
- package/build/types/core.d.ts +3 -5
- package/build/types/features/Cells.d.ts +1 -1
- package/build/types/features/ColumnSizing.d.ts +2 -13
- package/build/types/features/Columns.d.ts +1 -1
- package/build/types/features/Expanding.d.ts +1 -6
- package/build/types/features/Filters.d.ts +42 -30
- package/build/types/features/Grouping.d.ts +4 -10
- package/build/types/features/Pinning.d.ts +0 -4
- package/build/types/features/RowSelection.d.ts +1 -7
- package/build/types/features/Rows.d.ts +4 -3
- package/build/types/features/Sorting.d.ts +3 -14
- package/build/types/features/Visibility.d.ts +0 -4
- package/build/types/filterFns.d.ts +10 -52
- package/build/types/index.d.ts +6 -5
- package/build/types/types.d.ts +5 -17
- package/build/types/utils/filterRowsUtils.d.ts +3 -2
- 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 +2 -18
- package/build/umd/index.development.js +1948 -2935
- 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 +2 -1
- package/src/core.ts +197 -46
- package/src/features/Cells.ts +10 -12
- package/src/features/ColumnSizing.ts +72 -129
- package/src/features/Columns.ts +16 -15
- package/src/features/Expanding.ts +58 -105
- package/src/features/Filters.ts +223 -226
- package/src/features/Grouping.ts +51 -79
- 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 +73 -92
- package/src/features/RowSelection.ts +71 -120
- package/src/features/Rows.ts +21 -6
- package/src/features/Sorting.ts +39 -99
- package/src/features/Visibility.ts +21 -50
- package/src/filterFns.ts +74 -147
- package/src/index.ts +12 -5
- package/src/sortingFns.ts +11 -11
- package/src/types.ts +5 -18
- package/src/utils/filterRowsUtils.ts +59 -56
- 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 +29 -239
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
- package/build/cjs/utils/getColumnFilteredRowModelSync.js +0 -115
- package/build/cjs/utils/getColumnFilteredRowModelSync.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/getGlobalFilteredRowModelSync.js +0 -91
- package/build/cjs/utils/getGlobalFilteredRowModelSync.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/getColumnFilteredRowModelAsync.d.ts +0 -4
- package/build/types/utils/getColumnFilteredRowModelSync.d.ts +0 -2
- package/build/types/utils/getCoreRowModelAsync.d.ts +0 -4
- package/build/types/utils/getGlobalFilteredRowModelAsync.d.ts +0 -4
- package/build/types/utils/getGlobalFilteredRowModelSync.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/getColumnFilteredRowModelAsync.ts +0 -118
- package/src/utils/getColumnFilteredRowModelSync.ts +0 -102
- package/src/utils/getCoreRowModelAsync.ts +0 -104
- package/src/utils/getGlobalFilteredRowModelAsync.ts +0 -96
- package/src/utils/getGlobalFilteredRowModelSync.ts +0 -79
- package/src/utils/getSortedRowModelAsync.ts +0 -200
|
@@ -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,74 @@ 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
|
-
const prevSiblingColumn = columns[index - 1]
|
|
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 =
|
|
192
|
+
header.headerGroup.headers[header.index - 1]!
|
|
193
|
+
return prevSiblingHeader.getStart() + prevSiblingHeader.getSize()
|
|
259
194
|
}
|
|
260
195
|
|
|
261
|
-
return
|
|
196
|
+
return 0
|
|
262
197
|
},
|
|
263
|
-
getResizeHandler: (
|
|
264
|
-
const header = instance.getHeader(headerId)
|
|
198
|
+
getResizeHandler: () => {
|
|
265
199
|
const column = instance.getColumn(header.column.id)
|
|
266
200
|
const canResize = column.getCanResize()
|
|
267
201
|
|
|
@@ -279,16 +213,16 @@ export const ColumnSizing: TableFeature = {
|
|
|
279
213
|
}
|
|
280
214
|
}
|
|
281
215
|
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
const startSize = header ? header.getSize() : column.getSize()
|
|
216
|
+
const startSize = column.getSize()
|
|
285
217
|
|
|
286
218
|
const columnSizingStart: [string, number][] = header
|
|
287
|
-
? header
|
|
219
|
+
? header
|
|
220
|
+
.getLeafHeaders()
|
|
221
|
+
.map(d => [d.column.id, d.column.getSize()])
|
|
288
222
|
: [[column.id, column.getSize()]]
|
|
289
223
|
|
|
290
224
|
const clientX = isTouchStartEvent(e)
|
|
291
|
-
? Math.round(e.touches[0]
|
|
225
|
+
? Math.round(e.touches[0]!.clientX)
|
|
292
226
|
: (e as MouseEvent).clientX
|
|
293
227
|
|
|
294
228
|
const updateOffset = (
|
|
@@ -365,7 +299,7 @@ export const ColumnSizing: TableFeature = {
|
|
|
365
299
|
e.preventDefault()
|
|
366
300
|
e.stopPropagation()
|
|
367
301
|
}
|
|
368
|
-
onMove(e.touches[0]
|
|
302
|
+
onMove(e.touches[0]!.clientX)
|
|
369
303
|
return false
|
|
370
304
|
},
|
|
371
305
|
upHandler: (e: TouchEvent) => {
|
|
@@ -375,7 +309,7 @@ export const ColumnSizing: TableFeature = {
|
|
|
375
309
|
e.preventDefault()
|
|
376
310
|
e.stopPropagation()
|
|
377
311
|
}
|
|
378
|
-
onEnd(e.touches[0]
|
|
312
|
+
onEnd(e.touches[0]!.clientX)
|
|
379
313
|
},
|
|
380
314
|
}
|
|
381
315
|
|
|
@@ -384,16 +318,6 @@ export const ColumnSizing: TableFeature = {
|
|
|
384
318
|
: false
|
|
385
319
|
|
|
386
320
|
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
321
|
} else {
|
|
398
322
|
document.addEventListener(
|
|
399
323
|
'mousemove',
|
|
@@ -418,21 +342,40 @@ export const ColumnSizing: TableFeature = {
|
|
|
418
342
|
}))
|
|
419
343
|
}
|
|
420
344
|
},
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
|
|
348
|
+
createInstance: <TGenerics extends TableGenerics>(
|
|
349
|
+
instance: TableInstance<TGenerics>
|
|
350
|
+
): ColumnSizingInstance<TGenerics> => {
|
|
351
|
+
return {
|
|
352
|
+
setColumnSizing: updater =>
|
|
353
|
+
instance.options.onColumnSizingChange?.(updater),
|
|
354
|
+
setColumnSizingInfo: updater =>
|
|
355
|
+
instance.options.onColumnSizingInfoChange?.(updater),
|
|
356
|
+
resetColumnSizing: () => {
|
|
357
|
+
instance.setColumnSizing(instance.initialState.columnSizing ?? {})
|
|
358
|
+
},
|
|
359
|
+
resetHeaderSizeInfo: () => {
|
|
360
|
+
instance.setColumnSizingInfo(
|
|
361
|
+
instance.initialState.columnSizingInfo ?? {}
|
|
362
|
+
)
|
|
363
|
+
},
|
|
421
364
|
getTotalSize: () =>
|
|
422
365
|
instance.getHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
423
|
-
return sum + header.getSize()
|
|
366
|
+
return sum + header.column.getSize()
|
|
424
367
|
}, 0) ?? 0,
|
|
425
368
|
getLeftTotalSize: () =>
|
|
426
369
|
instance.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
427
|
-
return sum + header.getSize()
|
|
370
|
+
return sum + header.column.getSize()
|
|
428
371
|
}, 0) ?? 0,
|
|
429
372
|
getCenterTotalSize: () =>
|
|
430
373
|
instance.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
431
|
-
return sum + header.getSize()
|
|
374
|
+
return sum + header.column.getSize()
|
|
432
375
|
}, 0) ?? 0,
|
|
433
376
|
getRightTotalSize: () =>
|
|
434
377
|
instance.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
435
|
-
return sum + header.getSize()
|
|
378
|
+
return sum + header.column.getSize()
|
|
436
379
|
}, 0) ?? 0,
|
|
437
380
|
}
|
|
438
381
|
},
|
package/src/features/Columns.ts
CHANGED
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
AccessorFn,
|
|
9
9
|
ColumnDef,
|
|
10
10
|
Renderable,
|
|
11
|
-
HeaderRenderProps,
|
|
12
11
|
} from '../types'
|
|
13
12
|
import { memo } from '../utils'
|
|
14
13
|
|
|
@@ -42,7 +41,7 @@ export type CoreColumnDef<TGenerics extends TableGenerics> = {
|
|
|
42
41
|
row: Row<TGenerics>
|
|
43
42
|
column: Column<TGenerics>
|
|
44
43
|
cell: Cell<TGenerics>
|
|
45
|
-
|
|
44
|
+
getValue: () => TGenerics['Value']
|
|
46
45
|
}
|
|
47
46
|
>
|
|
48
47
|
meta?: TGenerics['ColumnMeta']
|
|
@@ -93,12 +92,9 @@ export const Columns = {
|
|
|
93
92
|
defaultColumn = (defaultColumn ?? {}) as Partial<ColumnDef<TGenerics>>
|
|
94
93
|
|
|
95
94
|
return {
|
|
96
|
-
header:
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
props.header.column.id,
|
|
100
|
-
cell: ({ value = '' }: { value: any }): JSX.Element =>
|
|
101
|
-
typeof value === 'boolean' ? value.toString() : value,
|
|
95
|
+
header: props => props.header.column.id,
|
|
96
|
+
footer: props => props.header.column.id,
|
|
97
|
+
cell: props => props.getValue().toString?.() ?? null,
|
|
102
98
|
...instance._features.reduce((obj, feature) => {
|
|
103
99
|
return Object.assign(obj, feature.getDefaultColumn?.())
|
|
104
100
|
}, {}),
|
|
@@ -108,7 +104,7 @@ export const Columns = {
|
|
|
108
104
|
{
|
|
109
105
|
debug: () =>
|
|
110
106
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
111
|
-
key: 'getDefaultColumn',
|
|
107
|
+
key: process.env.NODE_ENV === 'development' && 'getDefaultColumn',
|
|
112
108
|
}
|
|
113
109
|
),
|
|
114
110
|
|
|
@@ -165,7 +161,9 @@ export const Columns = {
|
|
|
165
161
|
]
|
|
166
162
|
},
|
|
167
163
|
{
|
|
168
|
-
key:
|
|
164
|
+
key:
|
|
165
|
+
process.env.NODE_ENV === 'production' &&
|
|
166
|
+
'column.getFlatColumns',
|
|
169
167
|
debug: () =>
|
|
170
168
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
171
169
|
}
|
|
@@ -184,7 +182,9 @@ export const Columns = {
|
|
|
184
182
|
return [column as Column<TGenerics>]
|
|
185
183
|
},
|
|
186
184
|
{
|
|
187
|
-
key:
|
|
185
|
+
key:
|
|
186
|
+
process.env.NODE_ENV === 'production' &&
|
|
187
|
+
'column.getLeafColumns',
|
|
188
188
|
debug: () =>
|
|
189
189
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
190
190
|
}
|
|
@@ -221,7 +221,7 @@ export const Columns = {
|
|
|
221
221
|
return recurseColumns(columnDefs)
|
|
222
222
|
},
|
|
223
223
|
{
|
|
224
|
-
key: 'getAllColumns',
|
|
224
|
+
key: process.env.NODE_ENV === 'development' && 'getAllColumns',
|
|
225
225
|
debug: () =>
|
|
226
226
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
227
227
|
}
|
|
@@ -235,7 +235,7 @@ export const Columns = {
|
|
|
235
235
|
})
|
|
236
236
|
},
|
|
237
237
|
{
|
|
238
|
-
key: 'getAllFlatColumns',
|
|
238
|
+
key: process.env.NODE_ENV === 'development' && 'getAllFlatColumns',
|
|
239
239
|
debug: () =>
|
|
240
240
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
241
241
|
}
|
|
@@ -250,7 +250,8 @@ export const Columns = {
|
|
|
250
250
|
}, {} as Record<string, Column<TGenerics>>)
|
|
251
251
|
},
|
|
252
252
|
{
|
|
253
|
-
key:
|
|
253
|
+
key:
|
|
254
|
+
process.env.NODE_ENV === 'development' && 'getAllFlatColumnsById',
|
|
254
255
|
debug: () =>
|
|
255
256
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
256
257
|
}
|
|
@@ -265,7 +266,7 @@ export const Columns = {
|
|
|
265
266
|
return orderColumns(leafColumns)
|
|
266
267
|
},
|
|
267
268
|
{
|
|
268
|
-
key: 'getAllLeafColumns',
|
|
269
|
+
key: process.env.NODE_ENV === 'development' && 'getAllLeafColumns',
|
|
269
270
|
debug: () =>
|
|
270
271
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
271
272
|
}
|
|
@@ -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
|
}
|