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