@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/src/features/Sorting.ts
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
TableInstance,
|
|
13
13
|
Row,
|
|
14
14
|
Updater,
|
|
15
|
+
TableFeature,
|
|
15
16
|
} from '../types'
|
|
16
17
|
|
|
17
18
|
import { isFunction, makeStateUpdater, Overwrite } from '../utils'
|
|
@@ -49,13 +50,14 @@ export type SortingColumnDef<TGenerics extends TableGenerics> = {
|
|
|
49
50
|
sortDescFirst?: boolean
|
|
50
51
|
enableSorting?: boolean
|
|
51
52
|
enableMultiSort?: boolean
|
|
52
|
-
defaultCanSort?: boolean
|
|
53
53
|
invertSorting?: boolean
|
|
54
54
|
sortUndefined?: false | -1 | 1
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
export type SortingColumn<TGenerics extends TableGenerics> = {
|
|
58
|
-
|
|
58
|
+
getAutoSortingFn: () => SortingFn<TGenerics>
|
|
59
|
+
getAutoSortDir: () => SortDirection
|
|
60
|
+
getSortingFn: () => SortingFn<TGenerics>
|
|
59
61
|
getCanSort: () => boolean
|
|
60
62
|
getCanMultiSort: () => boolean
|
|
61
63
|
getSortIndex: () => number
|
|
@@ -82,25 +84,7 @@ export type SortingOptions<TGenerics extends TableGenerics> = {
|
|
|
82
84
|
}
|
|
83
85
|
|
|
84
86
|
export type SortingInstance<TGenerics extends TableGenerics> = {
|
|
85
|
-
getColumnAutoSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined
|
|
86
|
-
getColumnAutoSortDir: (columnId: string) => SortDirection
|
|
87
|
-
|
|
88
|
-
getColumnSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined
|
|
89
|
-
|
|
90
87
|
setSorting: (updater: Updater<SortingState>) => void
|
|
91
|
-
toggleColumnSorting: (
|
|
92
|
-
columnId: string,
|
|
93
|
-
desc?: boolean,
|
|
94
|
-
multi?: boolean
|
|
95
|
-
) => void
|
|
96
|
-
resetSorting: (columnId?: string) => void
|
|
97
|
-
getColumnCanSort: (columnId: string) => boolean
|
|
98
|
-
getColumnCanMultiSort: (columnId: string) => boolean
|
|
99
|
-
getColumnIsSorted: (columnId: string) => false | 'asc' | 'desc'
|
|
100
|
-
getColumnSortIndex: (columnId: string) => number
|
|
101
|
-
getToggleSortingHandler: (
|
|
102
|
-
columnId: string
|
|
103
|
-
) => undefined | ((event: unknown) => void)
|
|
104
88
|
getPreSortedRowModel: () => RowModel<TGenerics>
|
|
105
89
|
getSortedRowModel: () => RowModel<TGenerics>
|
|
106
90
|
_getSortedRowModel?: () => RowModel<TGenerics>
|
|
@@ -108,18 +92,19 @@ export type SortingInstance<TGenerics extends TableGenerics> = {
|
|
|
108
92
|
|
|
109
93
|
//
|
|
110
94
|
|
|
111
|
-
export const Sorting = {
|
|
112
|
-
|
|
113
|
-
TGenerics extends TableGenerics
|
|
114
|
-
>(): SortingColumnDef<TGenerics> => {
|
|
95
|
+
export const Sorting: TableFeature = {
|
|
96
|
+
getInitialState: (state): SortingTableState => {
|
|
115
97
|
return {
|
|
116
|
-
|
|
98
|
+
sorting: [],
|
|
99
|
+
...state,
|
|
117
100
|
}
|
|
118
101
|
},
|
|
119
102
|
|
|
120
|
-
|
|
103
|
+
getDefaultColumn: <
|
|
104
|
+
TGenerics extends TableGenerics
|
|
105
|
+
>(): SortingColumnDef<TGenerics> => {
|
|
121
106
|
return {
|
|
122
|
-
|
|
107
|
+
sortingFn: 'auto',
|
|
123
108
|
}
|
|
124
109
|
},
|
|
125
110
|
|
|
@@ -139,34 +124,13 @@ export const Sorting = {
|
|
|
139
124
|
instance: TableInstance<TGenerics>
|
|
140
125
|
): SortingColumn<TGenerics> => {
|
|
141
126
|
return {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
getCanMultiSort: () => instance.getColumnCanMultiSort(column.id),
|
|
145
|
-
getSortIndex: () => instance.getColumnSortIndex(column.id),
|
|
146
|
-
getIsSorted: () => instance.getColumnIsSorted(column.id),
|
|
147
|
-
resetSorting: () => instance.resetSorting(column.id),
|
|
148
|
-
toggleSorting: (desc, isMulti) =>
|
|
149
|
-
instance.toggleColumnSorting(column.id, desc, isMulti),
|
|
150
|
-
getToggleSortingHandler: () =>
|
|
151
|
-
instance.getToggleSortingHandler(column.id)!,
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
|
|
155
|
-
createInstance: <TGenerics extends TableGenerics>(
|
|
156
|
-
instance: TableInstance<TGenerics>
|
|
157
|
-
): SortingInstance<TGenerics> => {
|
|
158
|
-
let registered = false
|
|
159
|
-
|
|
160
|
-
return {
|
|
161
|
-
getColumnAutoSortingFn: columnId => {
|
|
162
|
-
const firstRows = instance
|
|
163
|
-
.getGlobalFilteredRowModel()
|
|
164
|
-
.flatRows.slice(100)
|
|
127
|
+
getAutoSortingFn: () => {
|
|
128
|
+
const firstRows = instance.getFilteredRowModel().flatRows.slice(100)
|
|
165
129
|
|
|
166
130
|
let isString = false
|
|
167
131
|
|
|
168
132
|
for (const row of firstRows) {
|
|
169
|
-
const value = row?.values[
|
|
133
|
+
const value = row?.values[column.id]
|
|
170
134
|
|
|
171
135
|
if (Object.prototype.toString.call(value) === '[object Date]') {
|
|
172
136
|
return sortingFns.datetime
|
|
@@ -187,10 +151,10 @@ export const Sorting = {
|
|
|
187
151
|
|
|
188
152
|
return sortingFns.basic
|
|
189
153
|
},
|
|
190
|
-
|
|
191
|
-
const firstRow = instance.
|
|
154
|
+
getAutoSortDir: () => {
|
|
155
|
+
const firstRow = instance.getFilteredRowModel().flatRows[0]
|
|
192
156
|
|
|
193
|
-
const value = firstRow?.values[
|
|
157
|
+
const value = firstRow?.values[column.id]
|
|
194
158
|
|
|
195
159
|
if (typeof value === 'string') {
|
|
196
160
|
return 'asc'
|
|
@@ -198,8 +162,7 @@ export const Sorting = {
|
|
|
198
162
|
|
|
199
163
|
return 'desc'
|
|
200
164
|
},
|
|
201
|
-
|
|
202
|
-
const column = instance.getColumn(columnId)
|
|
165
|
+
getSortingFn: () => {
|
|
203
166
|
const userSortingFn = instance.options.sortingFns
|
|
204
167
|
|
|
205
168
|
if (!column) {
|
|
@@ -209,7 +172,7 @@ export const Sorting = {
|
|
|
209
172
|
return isFunction(column.sortingFn)
|
|
210
173
|
? column.sortingFn
|
|
211
174
|
: column.sortingFn === 'auto'
|
|
212
|
-
?
|
|
175
|
+
? column.getAutoSortingFn()
|
|
213
176
|
: (userSortingFn as Record<string, any>)?.[
|
|
214
177
|
column.sortingFn as string
|
|
215
178
|
] ??
|
|
@@ -217,16 +180,7 @@ export const Sorting = {
|
|
|
217
180
|
column.sortingFn as BuiltInSortingFn
|
|
218
181
|
] as SortingFn<TGenerics>)
|
|
219
182
|
},
|
|
220
|
-
|
|
221
|
-
setSorting: updater => instance.options.onSortingChange?.(updater),
|
|
222
|
-
|
|
223
|
-
toggleColumnSorting: (columnId, desc, multi) => {
|
|
224
|
-
const column = instance.getColumn(columnId)
|
|
225
|
-
|
|
226
|
-
if (!column) {
|
|
227
|
-
throw new Error()
|
|
228
|
-
}
|
|
229
|
-
|
|
183
|
+
toggleSorting: (desc, multi) => {
|
|
230
184
|
// if (column.columns.length) {
|
|
231
185
|
// column.columns.forEach((c, i) => {
|
|
232
186
|
// if (c.id) {
|
|
@@ -238,8 +192,8 @@ export const Sorting = {
|
|
|
238
192
|
|
|
239
193
|
instance.setSorting(old => {
|
|
240
194
|
// Find any existing sorting for this column
|
|
241
|
-
const existingSorting = old?.find(d => d.id ===
|
|
242
|
-
const existingIndex = old?.findIndex(d => d.id ===
|
|
195
|
+
const existingSorting = old?.find(d => d.id === column.id)
|
|
196
|
+
const existingIndex = old?.findIndex(d => d.id === column.id)
|
|
243
197
|
const hasDescDefined = typeof desc !== 'undefined' && desc !== null
|
|
244
198
|
|
|
245
199
|
let newSorting: SortingState = []
|
|
@@ -267,7 +221,7 @@ export const Sorting = {
|
|
|
267
221
|
const sortDescFirst =
|
|
268
222
|
column.sortDescFirst ??
|
|
269
223
|
instance.options.sortDescFirst ??
|
|
270
|
-
|
|
224
|
+
column.getAutoSortDir() === 'desc'
|
|
271
225
|
|
|
272
226
|
// Handle toggle states that will remove the sorting
|
|
273
227
|
if (
|
|
@@ -285,7 +239,7 @@ export const Sorting = {
|
|
|
285
239
|
if (sortAction === 'replace') {
|
|
286
240
|
newSorting = [
|
|
287
241
|
{
|
|
288
|
-
id:
|
|
242
|
+
id: column.id,
|
|
289
243
|
desc: hasDescDefined ? desc! : !!sortDescFirst,
|
|
290
244
|
},
|
|
291
245
|
]
|
|
@@ -293,7 +247,7 @@ export const Sorting = {
|
|
|
293
247
|
newSorting = [
|
|
294
248
|
...old,
|
|
295
249
|
{
|
|
296
|
-
id:
|
|
250
|
+
id: column.id,
|
|
297
251
|
desc: hasDescDefined ? desc! : !!sortDescFirst,
|
|
298
252
|
},
|
|
299
253
|
]
|
|
@@ -307,7 +261,7 @@ export const Sorting = {
|
|
|
307
261
|
} else if (sortAction === 'toggle' && old?.length) {
|
|
308
262
|
// This flips (or sets) the
|
|
309
263
|
newSorting = old.map(d => {
|
|
310
|
-
if (d.id ===
|
|
264
|
+
if (d.id === column.id) {
|
|
311
265
|
return {
|
|
312
266
|
...d,
|
|
313
267
|
desc: hasDescDefined ? desc! : !existingSorting?.desc,
|
|
@@ -316,38 +270,22 @@ export const Sorting = {
|
|
|
316
270
|
return d
|
|
317
271
|
})
|
|
318
272
|
} else if (sortAction === 'remove' && old?.length) {
|
|
319
|
-
newSorting = old.filter(d => d.id !==
|
|
273
|
+
newSorting = old.filter(d => d.id !== column.id)
|
|
320
274
|
}
|
|
321
275
|
|
|
322
276
|
return newSorting
|
|
323
277
|
})
|
|
324
278
|
},
|
|
325
279
|
|
|
326
|
-
|
|
327
|
-
const column = instance.getColumn(columnId)
|
|
328
|
-
|
|
329
|
-
if (!column) {
|
|
330
|
-
throw new Error()
|
|
331
|
-
}
|
|
332
|
-
|
|
280
|
+
getCanSort: () => {
|
|
333
281
|
return (
|
|
334
|
-
column.enableSorting ??
|
|
335
|
-
instance.options.enableSorting ??
|
|
336
|
-
column.defaultCanSort ??
|
|
282
|
+
(column.enableSorting ?? true) &&
|
|
283
|
+
(instance.options.enableSorting ?? true) &&
|
|
337
284
|
!!column.accessorFn
|
|
338
|
-
// (!!column.accessorFn ||
|
|
339
|
-
// column.columns?.some(c => c.id && instance.getColumnCanSort(c.id))) ??
|
|
340
|
-
// false
|
|
341
285
|
)
|
|
342
286
|
},
|
|
343
287
|
|
|
344
|
-
|
|
345
|
-
const column = instance.getColumn(columnId)
|
|
346
|
-
|
|
347
|
-
if (!column) {
|
|
348
|
-
throw new Error()
|
|
349
|
-
}
|
|
350
|
-
|
|
288
|
+
getCanMultiSort: () => {
|
|
351
289
|
return (
|
|
352
290
|
column.enableMultiSort ??
|
|
353
291
|
instance.options.enableMultiSort ??
|
|
@@ -355,16 +293,16 @@ export const Sorting = {
|
|
|
355
293
|
)
|
|
356
294
|
},
|
|
357
295
|
|
|
358
|
-
|
|
296
|
+
getIsSorted: () => {
|
|
359
297
|
const columnSort = instance
|
|
360
298
|
.getState()
|
|
361
|
-
.sorting?.find(d => d.id ===
|
|
299
|
+
.sorting?.find(d => d.id === column.id)
|
|
362
300
|
|
|
363
301
|
return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'
|
|
364
302
|
},
|
|
365
303
|
|
|
366
|
-
|
|
367
|
-
instance.getState().sorting?.findIndex(d => d.id ===
|
|
304
|
+
getSortIndex: () =>
|
|
305
|
+
instance.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,
|
|
368
306
|
|
|
369
307
|
resetSorting: (columnId?: string) => {
|
|
370
308
|
if (columnId) {
|
|
@@ -376,13 +314,7 @@ export const Sorting = {
|
|
|
376
314
|
}
|
|
377
315
|
},
|
|
378
316
|
|
|
379
|
-
getToggleSortingHandler:
|
|
380
|
-
const column = instance.getColumn(columnId)
|
|
381
|
-
|
|
382
|
-
if (!column) {
|
|
383
|
-
throw new Error()
|
|
384
|
-
}
|
|
385
|
-
|
|
317
|
+
getToggleSortingHandler: () => {
|
|
386
318
|
const canSort = column.getCanSort()
|
|
387
319
|
|
|
388
320
|
return (e: unknown) => {
|
|
@@ -396,8 +328,18 @@ export const Sorting = {
|
|
|
396
328
|
)
|
|
397
329
|
}
|
|
398
330
|
},
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
|
|
334
|
+
createInstance: <TGenerics extends TableGenerics>(
|
|
335
|
+
instance: TableInstance<TGenerics>
|
|
336
|
+
): SortingInstance<TGenerics> => {
|
|
337
|
+
let registered = false
|
|
338
|
+
|
|
339
|
+
return {
|
|
340
|
+
setSorting: updater => instance.options.onSortingChange?.(updater),
|
|
399
341
|
|
|
400
|
-
getPreSortedRowModel: () => instance.
|
|
342
|
+
getPreSortedRowModel: () => instance.getFilteredRowModel(),
|
|
401
343
|
getSortedRowModel: () => {
|
|
402
344
|
if (
|
|
403
345
|
!instance._getSortedRowModel &&
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
TableInstance,
|
|
7
7
|
Updater,
|
|
8
8
|
Row,
|
|
9
|
+
TableFeature,
|
|
9
10
|
} from '../types'
|
|
10
11
|
import { makeStateUpdater, memo } from '../utils'
|
|
11
12
|
|
|
@@ -31,10 +32,7 @@ export type VisibilityInstance<TGenerics extends TableGenerics> = {
|
|
|
31
32
|
getRightVisibleLeafColumns: () => Column<TGenerics>[]
|
|
32
33
|
getCenterVisibleLeafColumns: () => Column<TGenerics>[]
|
|
33
34
|
setColumnVisibility: (updater: Updater<VisibilityState>) => void
|
|
34
|
-
toggleColumnVisibility: (columnId: string, value?: boolean) => void
|
|
35
35
|
toggleAllColumnsVisible: (value?: boolean) => void
|
|
36
|
-
getColumnIsVisible: (columId: string) => boolean
|
|
37
|
-
getColumnCanHide: (columnId: string) => boolean
|
|
38
36
|
getIsAllColumnsVisible: () => boolean
|
|
39
37
|
getIsSomeColumnsVisible: () => boolean
|
|
40
38
|
getToggleAllColumnsVisibilityHandler: () =>
|
|
@@ -44,7 +42,6 @@ export type VisibilityInstance<TGenerics extends TableGenerics> = {
|
|
|
44
42
|
|
|
45
43
|
export type VisibilityColumnDef = {
|
|
46
44
|
enableHiding?: boolean
|
|
47
|
-
defaultCanHide?: boolean
|
|
48
45
|
defaultIsVisible?: boolean
|
|
49
46
|
}
|
|
50
47
|
|
|
@@ -62,10 +59,11 @@ export type VisibilityColumn = {
|
|
|
62
59
|
|
|
63
60
|
//
|
|
64
61
|
|
|
65
|
-
export const Visibility = {
|
|
66
|
-
getInitialState: (): VisibilityTableState => {
|
|
62
|
+
export const Visibility: TableFeature = {
|
|
63
|
+
getInitialState: (state): VisibilityTableState => {
|
|
67
64
|
return {
|
|
68
65
|
columnVisibility: {},
|
|
66
|
+
...state,
|
|
69
67
|
}
|
|
70
68
|
},
|
|
71
69
|
|
|
@@ -88,10 +86,24 @@ export const Visibility = {
|
|
|
88
86
|
instance: TableInstance<TGenerics>
|
|
89
87
|
): VisibilityColumn => {
|
|
90
88
|
return {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
89
|
+
toggleVisibility: value => {
|
|
90
|
+
if (column.getCanHide()) {
|
|
91
|
+
instance.setColumnVisibility(old => ({
|
|
92
|
+
...old,
|
|
93
|
+
[column.id]: value ?? !column.getIsVisible(),
|
|
94
|
+
}))
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
getIsVisible: () => {
|
|
98
|
+
return instance.getState().columnVisibility?.[column.id] ?? true
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
getCanHide: () => {
|
|
102
|
+
return (
|
|
103
|
+
(column.enableHiding ?? true) &&
|
|
104
|
+
(instance.options.enableHiding ?? true)
|
|
105
|
+
)
|
|
106
|
+
},
|
|
95
107
|
getToggleVisibilityHandler: () => {
|
|
96
108
|
return (e: unknown) => {
|
|
97
109
|
column.toggleVisibility?.(
|
|
@@ -119,7 +131,8 @@ export const Visibility = {
|
|
|
119
131
|
return row.getAllCells().filter(cell => cell.column.getIsVisible())
|
|
120
132
|
},
|
|
121
133
|
{
|
|
122
|
-
key:
|
|
134
|
+
key:
|
|
135
|
+
process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',
|
|
123
136
|
debug: () => instance.options.debugAll ?? instance.options.debugRows,
|
|
124
137
|
}
|
|
125
138
|
),
|
|
@@ -131,7 +144,7 @@ export const Visibility = {
|
|
|
131
144
|
],
|
|
132
145
|
(left, center, right) => [...left, ...center, ...right],
|
|
133
146
|
{
|
|
134
|
-
key: 'row.getVisibleCells',
|
|
147
|
+
key: process.env.NODE_ENV === 'development' && 'row.getVisibleCells',
|
|
135
148
|
debug: () => instance.options.debugAll ?? instance.options.debugRows,
|
|
136
149
|
}
|
|
137
150
|
),
|
|
@@ -189,17 +202,6 @@ export const Visibility = {
|
|
|
189
202
|
setColumnVisibility: updater =>
|
|
190
203
|
instance.options.onColumnVisibilityChange?.(updater),
|
|
191
204
|
|
|
192
|
-
toggleColumnVisibility: (columnId, value) => {
|
|
193
|
-
if (!columnId) return
|
|
194
|
-
|
|
195
|
-
if (instance.getColumnCanHide(columnId)) {
|
|
196
|
-
instance.setColumnVisibility(old => ({
|
|
197
|
-
...old,
|
|
198
|
-
[columnId]: value ?? !instance.getColumnIsVisible(columnId),
|
|
199
|
-
}))
|
|
200
|
-
}
|
|
201
|
-
},
|
|
202
|
-
|
|
203
205
|
toggleAllColumnsVisible: value => {
|
|
204
206
|
value = value ?? !instance.getIsAllColumnsVisible()
|
|
205
207
|
|
|
@@ -214,35 +216,6 @@ export const Visibility = {
|
|
|
214
216
|
)
|
|
215
217
|
},
|
|
216
218
|
|
|
217
|
-
getColumnIsVisible: columnId => {
|
|
218
|
-
const column = instance.getColumn(columnId)
|
|
219
|
-
|
|
220
|
-
if (!column) {
|
|
221
|
-
throw new Error()
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
return (
|
|
225
|
-
instance.getState().columnVisibility?.[columnId] ??
|
|
226
|
-
column.defaultIsVisible ??
|
|
227
|
-
true
|
|
228
|
-
)
|
|
229
|
-
},
|
|
230
|
-
|
|
231
|
-
getColumnCanHide: columnId => {
|
|
232
|
-
const column = instance.getColumn(columnId)
|
|
233
|
-
|
|
234
|
-
if (!column) {
|
|
235
|
-
throw new Error()
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
return (
|
|
239
|
-
instance.options.enableHiding ??
|
|
240
|
-
column.enableHiding ??
|
|
241
|
-
column.defaultCanHide ??
|
|
242
|
-
true
|
|
243
|
-
)
|
|
244
|
-
},
|
|
245
|
-
|
|
246
219
|
getIsAllColumnsVisible: () =>
|
|
247
220
|
!instance.getAllLeafColumns().some(column => !column.getIsVisible?.()),
|
|
248
221
|
|