@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
|
@@ -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
|
-
resetColumnSizing: () => void
|
|
52
|
-
|
|
53
|
-
resetHeaderSize: (headerId: string) => void
|
|
54
|
-
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
|
|
49
|
+
resetColumnSizing: (defaultState?: boolean) => void
|
|
50
|
+
resetHeaderSizeInfo: (defaultState?: boolean) => void
|
|
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
|
//
|
|
@@ -94,6 +83,15 @@ export const defaultColumnSizing = {
|
|
|
94
83
|
maxSize: Number.MAX_SAFE_INTEGER,
|
|
95
84
|
}
|
|
96
85
|
|
|
86
|
+
const getDefaultColumnSizingInfoState = (): ColumnSizingInfoState => ({
|
|
87
|
+
startOffset: null,
|
|
88
|
+
startSize: null,
|
|
89
|
+
deltaOffset: null,
|
|
90
|
+
deltaPercentage: null,
|
|
91
|
+
isResizingColumn: false,
|
|
92
|
+
columnSizingStart: [],
|
|
93
|
+
})
|
|
94
|
+
|
|
97
95
|
export const ColumnSizing: TableFeature = {
|
|
98
96
|
getDefaultColumn: (): ColumnSizingColumnDef => {
|
|
99
97
|
return defaultColumnSizing
|
|
@@ -101,14 +99,7 @@ export const ColumnSizing: TableFeature = {
|
|
|
101
99
|
getInitialState: (state): ColumnSizingTableState => {
|
|
102
100
|
return {
|
|
103
101
|
columnSizing: {},
|
|
104
|
-
columnSizingInfo:
|
|
105
|
-
startOffset: null,
|
|
106
|
-
startSize: null,
|
|
107
|
-
deltaOffset: null,
|
|
108
|
-
deltaPercentage: null,
|
|
109
|
-
isResizingColumn: false,
|
|
110
|
-
columnSizingStart: [],
|
|
111
|
-
},
|
|
102
|
+
columnSizingInfo: getDefaultColumnSizingInfoState(),
|
|
112
103
|
...state,
|
|
113
104
|
}
|
|
114
105
|
},
|
|
@@ -128,37 +119,7 @@ export const ColumnSizing: TableFeature = {
|
|
|
128
119
|
instance: TableInstance<TGenerics>
|
|
129
120
|
): ColumnSizingColumn<TGenerics> => {
|
|
130
121
|
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
|
-
|
|
122
|
+
getSize: () => {
|
|
162
123
|
const columnSize = instance.getState().columnSizing[column.id]
|
|
163
124
|
|
|
164
125
|
return Math.min(
|
|
@@ -169,99 +130,74 @@ export const ColumnSizing: TableFeature = {
|
|
|
169
130
|
column.maxSize ?? defaultColumnSizing.maxSize
|
|
170
131
|
)
|
|
171
132
|
},
|
|
172
|
-
|
|
173
|
-
const column = instance.getColumn(columnId)
|
|
174
|
-
|
|
175
|
-
if (!column) {
|
|
176
|
-
throw new Error()
|
|
177
|
-
}
|
|
178
|
-
|
|
133
|
+
getStart: position => {
|
|
179
134
|
const columns = !position
|
|
180
135
|
? instance.getVisibleLeafColumns()
|
|
181
136
|
: position === 'left'
|
|
182
137
|
? instance.getLeftVisibleLeafColumns()
|
|
183
138
|
: instance.getRightVisibleLeafColumns()
|
|
184
139
|
|
|
185
|
-
const index = columns.findIndex(d => d.id ===
|
|
140
|
+
const index = columns.findIndex(d => d.id === column.id)
|
|
186
141
|
|
|
187
142
|
if (index > 0) {
|
|
188
|
-
const prevSiblingColumn = columns[index - 1]
|
|
143
|
+
const prevSiblingColumn = columns[index - 1]!
|
|
189
144
|
|
|
190
145
|
return (
|
|
191
|
-
|
|
192
|
-
prevSiblingColumn.getSize()
|
|
146
|
+
prevSiblingColumn.getStart(position) + prevSiblingColumn.getSize()
|
|
193
147
|
)
|
|
194
148
|
}
|
|
195
149
|
|
|
196
150
|
return 0
|
|
197
151
|
},
|
|
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 }) => {
|
|
152
|
+
resetSize: () => {
|
|
153
|
+
instance.setColumnSizing(({ [column.id]: _, ...rest }) => {
|
|
212
154
|
return rest
|
|
213
155
|
})
|
|
214
156
|
},
|
|
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)
|
|
157
|
+
getCanResize: () => {
|
|
158
|
+
return (
|
|
159
|
+
(column.enableResizing ?? true) &&
|
|
160
|
+
(instance.options.enableColumnResizing ?? true)
|
|
161
|
+
)
|
|
228
162
|
},
|
|
229
|
-
|
|
230
|
-
const column = instance.getColumn(columnId)
|
|
231
|
-
|
|
232
|
-
if (!column) {
|
|
233
|
-
throw new Error()
|
|
234
|
-
}
|
|
235
|
-
|
|
163
|
+
getIsResizing: () => {
|
|
236
164
|
return (
|
|
237
|
-
column.
|
|
238
|
-
instance.options.enableColumnResizing ??
|
|
239
|
-
column.defaultCanResize ??
|
|
240
|
-
true
|
|
165
|
+
instance.getState().columnSizingInfo.isResizingColumn === column.id
|
|
241
166
|
)
|
|
242
167
|
},
|
|
243
|
-
|
|
244
|
-
|
|
168
|
+
}
|
|
169
|
+
},
|
|
245
170
|
|
|
246
|
-
|
|
247
|
-
|
|
171
|
+
createHeader: <TGenerics extends TableGenerics>(
|
|
172
|
+
header: Header<TGenerics>,
|
|
173
|
+
instance: TableInstance<TGenerics>
|
|
174
|
+
): ColumnSizingHeader<TGenerics> => {
|
|
175
|
+
return {
|
|
176
|
+
getSize: () => {
|
|
177
|
+
let sum = 0
|
|
178
|
+
|
|
179
|
+
const recurse = (header: Header<TGenerics>) => {
|
|
180
|
+
if (header.subHeaders.length) {
|
|
181
|
+
header.subHeaders.forEach(recurse)
|
|
182
|
+
} else {
|
|
183
|
+
sum += header.column.getSize() ?? 0
|
|
184
|
+
}
|
|
248
185
|
}
|
|
249
186
|
|
|
250
|
-
|
|
251
|
-
instance.getState().columnSizingInfo.isResizingColumn === columnId
|
|
252
|
-
)
|
|
253
|
-
},
|
|
254
|
-
getHeaderIsResizing: headerId => {
|
|
255
|
-
const header = instance.getHeader(headerId)
|
|
187
|
+
recurse(header)
|
|
256
188
|
|
|
257
|
-
|
|
258
|
-
|
|
189
|
+
return sum
|
|
190
|
+
},
|
|
191
|
+
getStart: () => {
|
|
192
|
+
if (header.index > 0) {
|
|
193
|
+
const prevSiblingHeader =
|
|
194
|
+
header.headerGroup.headers[header.index - 1]!
|
|
195
|
+
return prevSiblingHeader.getStart() + prevSiblingHeader.getSize()
|
|
259
196
|
}
|
|
260
197
|
|
|
261
|
-
return
|
|
198
|
+
return 0
|
|
262
199
|
},
|
|
263
|
-
getResizeHandler: (
|
|
264
|
-
const header = instance.getHeader(headerId)
|
|
200
|
+
getResizeHandler: () => {
|
|
265
201
|
const column = instance.getColumn(header.column.id)
|
|
266
202
|
const canResize = column.getCanResize()
|
|
267
203
|
|
|
@@ -279,16 +215,16 @@ export const ColumnSizing: TableFeature = {
|
|
|
279
215
|
}
|
|
280
216
|
}
|
|
281
217
|
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
const startSize = header ? header.getSize() : column.getSize()
|
|
218
|
+
const startSize = column.getSize()
|
|
285
219
|
|
|
286
220
|
const columnSizingStart: [string, number][] = header
|
|
287
|
-
? header
|
|
221
|
+
? header
|
|
222
|
+
.getLeafHeaders()
|
|
223
|
+
.map(d => [d.column.id, d.column.getSize()])
|
|
288
224
|
: [[column.id, column.getSize()]]
|
|
289
225
|
|
|
290
226
|
const clientX = isTouchStartEvent(e)
|
|
291
|
-
? Math.round(e.touches[0]
|
|
227
|
+
? Math.round(e.touches[0]!.clientX)
|
|
292
228
|
: (e as MouseEvent).clientX
|
|
293
229
|
|
|
294
230
|
const updateOffset = (
|
|
@@ -365,7 +301,7 @@ export const ColumnSizing: TableFeature = {
|
|
|
365
301
|
e.preventDefault()
|
|
366
302
|
e.stopPropagation()
|
|
367
303
|
}
|
|
368
|
-
onMove(e.touches[0]
|
|
304
|
+
onMove(e.touches[0]!.clientX)
|
|
369
305
|
return false
|
|
370
306
|
},
|
|
371
307
|
upHandler: (e: TouchEvent) => {
|
|
@@ -375,7 +311,7 @@ export const ColumnSizing: TableFeature = {
|
|
|
375
311
|
e.preventDefault()
|
|
376
312
|
e.stopPropagation()
|
|
377
313
|
}
|
|
378
|
-
onEnd(e.touches[0]
|
|
314
|
+
onEnd(e.touches[0]!.clientX)
|
|
379
315
|
},
|
|
380
316
|
}
|
|
381
317
|
|
|
@@ -384,16 +320,6 @@ export const ColumnSizing: TableFeature = {
|
|
|
384
320
|
: false
|
|
385
321
|
|
|
386
322
|
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
323
|
} else {
|
|
398
324
|
document.addEventListener(
|
|
399
325
|
'mousemove',
|
|
@@ -418,21 +344,45 @@ export const ColumnSizing: TableFeature = {
|
|
|
418
344
|
}))
|
|
419
345
|
}
|
|
420
346
|
},
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
|
|
350
|
+
createInstance: <TGenerics extends TableGenerics>(
|
|
351
|
+
instance: TableInstance<TGenerics>
|
|
352
|
+
): ColumnSizingInstance<TGenerics> => {
|
|
353
|
+
return {
|
|
354
|
+
setColumnSizing: updater =>
|
|
355
|
+
instance.options.onColumnSizingChange?.(updater),
|
|
356
|
+
setColumnSizingInfo: updater =>
|
|
357
|
+
instance.options.onColumnSizingInfoChange?.(updater),
|
|
358
|
+
resetColumnSizing: defaultState => {
|
|
359
|
+
instance.setColumnSizing(
|
|
360
|
+
defaultState ? {} : instance.initialState.columnSizing ?? {}
|
|
361
|
+
)
|
|
362
|
+
},
|
|
363
|
+
resetHeaderSizeInfo: defaultState => {
|
|
364
|
+
instance.setColumnSizingInfo(
|
|
365
|
+
defaultState
|
|
366
|
+
? getDefaultColumnSizingInfoState()
|
|
367
|
+
: instance.initialState.columnSizingInfo ??
|
|
368
|
+
getDefaultColumnSizingInfoState()
|
|
369
|
+
)
|
|
370
|
+
},
|
|
421
371
|
getTotalSize: () =>
|
|
422
372
|
instance.getHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
423
|
-
return sum + header.getSize()
|
|
373
|
+
return sum + header.column.getSize()
|
|
424
374
|
}, 0) ?? 0,
|
|
425
375
|
getLeftTotalSize: () =>
|
|
426
376
|
instance.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
427
|
-
return sum + header.getSize()
|
|
377
|
+
return sum + header.column.getSize()
|
|
428
378
|
}, 0) ?? 0,
|
|
429
379
|
getCenterTotalSize: () =>
|
|
430
380
|
instance.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
431
|
-
return sum + header.getSize()
|
|
381
|
+
return sum + header.column.getSize()
|
|
432
382
|
}, 0) ?? 0,
|
|
433
383
|
getRightTotalSize: () =>
|
|
434
384
|
instance.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
435
|
-
return sum + header.getSize()
|
|
385
|
+
return sum + header.column.getSize()
|
|
436
386
|
}, 0) ?? 0,
|
|
437
387
|
}
|
|
438
388
|
},
|
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: process.env.NODE_ENV === '
|
|
107
|
+
key: process.env.NODE_ENV === 'development' && 'getDefaultColumn',
|
|
112
108
|
}
|
|
113
109
|
),
|
|
114
110
|
|
|
@@ -225,7 +221,7 @@ export const Columns = {
|
|
|
225
221
|
return recurseColumns(columnDefs)
|
|
226
222
|
},
|
|
227
223
|
{
|
|
228
|
-
key: process.env.NODE_ENV === '
|
|
224
|
+
key: process.env.NODE_ENV === 'development' && 'getAllColumns',
|
|
229
225
|
debug: () =>
|
|
230
226
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
231
227
|
}
|
|
@@ -239,7 +235,7 @@ export const Columns = {
|
|
|
239
235
|
})
|
|
240
236
|
},
|
|
241
237
|
{
|
|
242
|
-
key: process.env.NODE_ENV === '
|
|
238
|
+
key: process.env.NODE_ENV === 'development' && 'getAllFlatColumns',
|
|
243
239
|
debug: () =>
|
|
244
240
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
245
241
|
}
|
|
@@ -254,7 +250,8 @@ export const Columns = {
|
|
|
254
250
|
}, {} as Record<string, Column<TGenerics>>)
|
|
255
251
|
},
|
|
256
252
|
{
|
|
257
|
-
key:
|
|
253
|
+
key:
|
|
254
|
+
process.env.NODE_ENV === 'development' && 'getAllFlatColumnsById',
|
|
258
255
|
debug: () =>
|
|
259
256
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
260
257
|
}
|
|
@@ -269,7 +266,7 @@ export const Columns = {
|
|
|
269
266
|
return orderColumns(leafColumns)
|
|
270
267
|
},
|
|
271
268
|
{
|
|
272
|
-
key: process.env.NODE_ENV === '
|
|
269
|
+
key: process.env.NODE_ENV === 'development' && 'getAllLeafColumns',
|
|
273
270
|
debug: () =>
|
|
274
271
|
instance.options.debugAll ?? instance.options.debugColumns,
|
|
275
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
|
-
resetExpanded: () => void
|
|
46
|
-
getRowCanExpand: (rowId: string) => boolean
|
|
44
|
+
resetExpanded: (defaultState?: boolean) => void
|
|
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)
|
|
@@ -141,65 +104,13 @@ export const Expanding: TableFeature = {
|
|
|
141
104
|
instance.setExpanded({})
|
|
142
105
|
}
|
|
143
106
|
},
|
|
144
|
-
resetExpanded:
|
|
145
|
-
instance.setExpanded(
|
|
146
|
-
|
|
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
|
|
107
|
+
resetExpanded: defaultState => {
|
|
108
|
+
instance.setExpanded(
|
|
109
|
+
defaultState ? {} : instance.initialState?.expanded ?? {}
|
|
183
110
|
)
|
|
184
111
|
},
|
|
185
112
|
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
|
-
}
|
|
113
|
+
return instance.getRowModel().flatRows.some(row => row.getCanExpand())
|
|
203
114
|
},
|
|
204
115
|
getToggleAllRowsExpandedHandler: () => {
|
|
205
116
|
return (e: unknown) => {
|
|
@@ -220,11 +131,7 @@ export const Expanding: TableFeature = {
|
|
|
220
131
|
}
|
|
221
132
|
|
|
222
133
|
// If any row is not expanded, return false
|
|
223
|
-
if (
|
|
224
|
-
Object.keys(instance.getRowModel().rowsById).some(
|
|
225
|
-
id => !instance.getIsRowExpanded(id)
|
|
226
|
-
)
|
|
227
|
-
) {
|
|
134
|
+
if (instance.getRowModel().flatRows.some(row => row.getIsExpanded())) {
|
|
228
135
|
return false
|
|
229
136
|
}
|
|
230
137
|
|
|
@@ -273,12 +180,60 @@ export const Expanding: TableFeature = {
|
|
|
273
180
|
instance: TableInstance<TGenerics>
|
|
274
181
|
): ExpandedRow => {
|
|
275
182
|
return {
|
|
276
|
-
toggleExpanded: expanded =>
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
183
|
+
toggleExpanded: expanded => {
|
|
184
|
+
instance.setExpanded(old => {
|
|
185
|
+
const exists = old === true ? true : !!old?.[row.id]
|
|
186
|
+
|
|
187
|
+
let oldExpanded: ExpandedStateList = {}
|
|
188
|
+
|
|
189
|
+
if (old === true) {
|
|
190
|
+
Object.keys(instance.getRowModel().rowsById).forEach(rowId => {
|
|
191
|
+
oldExpanded[rowId] = true
|
|
192
|
+
})
|
|
193
|
+
} else {
|
|
194
|
+
oldExpanded = old
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
expanded = expanded ?? !exists
|
|
198
|
+
|
|
199
|
+
if (!exists && expanded) {
|
|
200
|
+
return {
|
|
201
|
+
...oldExpanded,
|
|
202
|
+
[row.id]: true,
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
if (exists && !expanded) {
|
|
207
|
+
const { [row.id]: _, ...rest } = oldExpanded
|
|
208
|
+
return rest
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return old
|
|
212
|
+
})
|
|
213
|
+
},
|
|
214
|
+
getIsExpanded: () => {
|
|
215
|
+
const expanded = instance.getState().expanded
|
|
216
|
+
|
|
217
|
+
return !!(
|
|
218
|
+
instance.options.getIsRowExpanded?.(row) ??
|
|
219
|
+
(expanded === true || expanded?.[row.id])
|
|
220
|
+
)
|
|
221
|
+
},
|
|
222
|
+
getCanExpand: () => {
|
|
223
|
+
return (
|
|
224
|
+
(instance.options.getRowCanExpand?.(row) ?? true) &&
|
|
225
|
+
(instance.options.enableExpanding ?? true) &&
|
|
226
|
+
!!row.subRows?.length
|
|
227
|
+
)
|
|
228
|
+
},
|
|
229
|
+
getToggleExpandedHandler: () => {
|
|
230
|
+
const canExpand = row.getCanExpand()
|
|
231
|
+
|
|
232
|
+
return () => {
|
|
233
|
+
if (!canExpand) return
|
|
234
|
+
row.toggleExpanded()
|
|
235
|
+
}
|
|
236
|
+
},
|
|
282
237
|
}
|
|
283
238
|
},
|
|
284
239
|
}
|