@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
package/src/features/Sorting.ts
CHANGED
|
@@ -50,18 +50,19 @@ export type SortingColumnDef<TGenerics extends TableGenerics> = {
|
|
|
50
50
|
sortDescFirst?: boolean
|
|
51
51
|
enableSorting?: boolean
|
|
52
52
|
enableMultiSort?: boolean
|
|
53
|
-
defaultCanSort?: boolean
|
|
54
53
|
invertSorting?: boolean
|
|
55
54
|
sortUndefined?: false | -1 | 1
|
|
56
55
|
}
|
|
57
56
|
|
|
58
57
|
export type SortingColumn<TGenerics extends TableGenerics> = {
|
|
59
|
-
|
|
58
|
+
getAutoSortingFn: () => SortingFn<TGenerics>
|
|
59
|
+
getAutoSortDir: () => SortDirection
|
|
60
|
+
getSortingFn: () => SortingFn<TGenerics>
|
|
60
61
|
getCanSort: () => boolean
|
|
61
62
|
getCanMultiSort: () => boolean
|
|
62
63
|
getSortIndex: () => number
|
|
63
64
|
getIsSorted: () => false | SortDirection
|
|
64
|
-
|
|
65
|
+
clearSorting: () => void
|
|
65
66
|
toggleSorting: (desc?: boolean, isMulti?: boolean) => void
|
|
66
67
|
getToggleSortingHandler: () => undefined | ((event: unknown) => void)
|
|
67
68
|
}
|
|
@@ -83,25 +84,8 @@ export type SortingOptions<TGenerics extends TableGenerics> = {
|
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
export type SortingInstance<TGenerics extends TableGenerics> = {
|
|
86
|
-
getColumnAutoSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined
|
|
87
|
-
getColumnAutoSortDir: (columnId: string) => SortDirection
|
|
88
|
-
|
|
89
|
-
getColumnSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined
|
|
90
|
-
|
|
91
87
|
setSorting: (updater: Updater<SortingState>) => void
|
|
92
|
-
|
|
93
|
-
columnId: string,
|
|
94
|
-
desc?: boolean,
|
|
95
|
-
multi?: boolean
|
|
96
|
-
) => void
|
|
97
|
-
resetSorting: (columnId?: string) => void
|
|
98
|
-
getColumnCanSort: (columnId: string) => boolean
|
|
99
|
-
getColumnCanMultiSort: (columnId: string) => boolean
|
|
100
|
-
getColumnIsSorted: (columnId: string) => false | 'asc' | 'desc'
|
|
101
|
-
getColumnSortIndex: (columnId: string) => number
|
|
102
|
-
getToggleSortingHandler: (
|
|
103
|
-
columnId: string
|
|
104
|
-
) => undefined | ((event: unknown) => void)
|
|
88
|
+
resetSorting: (defaultState?: boolean) => void
|
|
105
89
|
getPreSortedRowModel: () => RowModel<TGenerics>
|
|
106
90
|
getSortedRowModel: () => RowModel<TGenerics>
|
|
107
91
|
_getSortedRowModel?: () => RowModel<TGenerics>
|
|
@@ -141,32 +125,13 @@ export const Sorting: TableFeature = {
|
|
|
141
125
|
instance: TableInstance<TGenerics>
|
|
142
126
|
): SortingColumn<TGenerics> => {
|
|
143
127
|
return {
|
|
144
|
-
|
|
145
|
-
getCanSort: () => instance.getColumnCanSort(column.id),
|
|
146
|
-
getCanMultiSort: () => instance.getColumnCanMultiSort(column.id),
|
|
147
|
-
getSortIndex: () => instance.getColumnSortIndex(column.id),
|
|
148
|
-
getIsSorted: () => instance.getColumnIsSorted(column.id),
|
|
149
|
-
resetSorting: () => instance.resetSorting(column.id),
|
|
150
|
-
toggleSorting: (desc, isMulti) =>
|
|
151
|
-
instance.toggleColumnSorting(column.id, desc, isMulti),
|
|
152
|
-
getToggleSortingHandler: () =>
|
|
153
|
-
instance.getToggleSortingHandler(column.id)!,
|
|
154
|
-
}
|
|
155
|
-
},
|
|
156
|
-
|
|
157
|
-
createInstance: <TGenerics extends TableGenerics>(
|
|
158
|
-
instance: TableInstance<TGenerics>
|
|
159
|
-
): SortingInstance<TGenerics> => {
|
|
160
|
-
let registered = false
|
|
161
|
-
|
|
162
|
-
return {
|
|
163
|
-
getColumnAutoSortingFn: columnId => {
|
|
128
|
+
getAutoSortingFn: () => {
|
|
164
129
|
const firstRows = instance.getFilteredRowModel().flatRows.slice(100)
|
|
165
130
|
|
|
166
131
|
let isString = false
|
|
167
132
|
|
|
168
133
|
for (const row of firstRows) {
|
|
169
|
-
const value = row?.
|
|
134
|
+
const value = row?.getValue(column.id)
|
|
170
135
|
|
|
171
136
|
if (Object.prototype.toString.call(value) === '[object Date]') {
|
|
172
137
|
return sortingFns.datetime
|
|
@@ -187,10 +152,10 @@ export const Sorting: TableFeature = {
|
|
|
187
152
|
|
|
188
153
|
return sortingFns.basic
|
|
189
154
|
},
|
|
190
|
-
|
|
155
|
+
getAutoSortDir: () => {
|
|
191
156
|
const firstRow = instance.getFilteredRowModel().flatRows[0]
|
|
192
157
|
|
|
193
|
-
const value = firstRow?.
|
|
158
|
+
const value = firstRow?.getValue(column.id)
|
|
194
159
|
|
|
195
160
|
if (typeof value === 'string') {
|
|
196
161
|
return 'asc'
|
|
@@ -198,8 +163,7 @@ export const Sorting: TableFeature = {
|
|
|
198
163
|
|
|
199
164
|
return 'desc'
|
|
200
165
|
},
|
|
201
|
-
|
|
202
|
-
const column = instance.getColumn(columnId)
|
|
166
|
+
getSortingFn: () => {
|
|
203
167
|
const userSortingFn = instance.options.sortingFns
|
|
204
168
|
|
|
205
169
|
if (!column) {
|
|
@@ -209,7 +173,7 @@ export const Sorting: TableFeature = {
|
|
|
209
173
|
return isFunction(column.sortingFn)
|
|
210
174
|
? column.sortingFn
|
|
211
175
|
: column.sortingFn === 'auto'
|
|
212
|
-
?
|
|
176
|
+
? column.getAutoSortingFn()
|
|
213
177
|
: (userSortingFn as Record<string, any>)?.[
|
|
214
178
|
column.sortingFn as string
|
|
215
179
|
] ??
|
|
@@ -217,16 +181,7 @@ export const Sorting: TableFeature = {
|
|
|
217
181
|
column.sortingFn as BuiltInSortingFn
|
|
218
182
|
] as SortingFn<TGenerics>)
|
|
219
183
|
},
|
|
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
|
-
|
|
184
|
+
toggleSorting: (desc, multi) => {
|
|
230
185
|
// if (column.columns.length) {
|
|
231
186
|
// column.columns.forEach((c, i) => {
|
|
232
187
|
// if (c.id) {
|
|
@@ -238,8 +193,8 @@ export const Sorting: TableFeature = {
|
|
|
238
193
|
|
|
239
194
|
instance.setSorting(old => {
|
|
240
195
|
// Find any existing sorting for this column
|
|
241
|
-
const existingSorting = old?.find(d => d.id ===
|
|
242
|
-
const existingIndex = old?.findIndex(d => d.id ===
|
|
196
|
+
const existingSorting = old?.find(d => d.id === column.id)
|
|
197
|
+
const existingIndex = old?.findIndex(d => d.id === column.id)
|
|
243
198
|
const hasDescDefined = typeof desc !== 'undefined' && desc !== null
|
|
244
199
|
|
|
245
200
|
let newSorting: SortingState = []
|
|
@@ -267,7 +222,7 @@ export const Sorting: TableFeature = {
|
|
|
267
222
|
const sortDescFirst =
|
|
268
223
|
column.sortDescFirst ??
|
|
269
224
|
instance.options.sortDescFirst ??
|
|
270
|
-
|
|
225
|
+
column.getAutoSortDir() === 'desc'
|
|
271
226
|
|
|
272
227
|
// Handle toggle states that will remove the sorting
|
|
273
228
|
if (
|
|
@@ -285,7 +240,7 @@ export const Sorting: TableFeature = {
|
|
|
285
240
|
if (sortAction === 'replace') {
|
|
286
241
|
newSorting = [
|
|
287
242
|
{
|
|
288
|
-
id:
|
|
243
|
+
id: column.id,
|
|
289
244
|
desc: hasDescDefined ? desc! : !!sortDescFirst,
|
|
290
245
|
},
|
|
291
246
|
]
|
|
@@ -293,7 +248,7 @@ export const Sorting: TableFeature = {
|
|
|
293
248
|
newSorting = [
|
|
294
249
|
...old,
|
|
295
250
|
{
|
|
296
|
-
id:
|
|
251
|
+
id: column.id,
|
|
297
252
|
desc: hasDescDefined ? desc! : !!sortDescFirst,
|
|
298
253
|
},
|
|
299
254
|
]
|
|
@@ -307,7 +262,7 @@ export const Sorting: TableFeature = {
|
|
|
307
262
|
} else if (sortAction === 'toggle' && old?.length) {
|
|
308
263
|
// This flips (or sets) the
|
|
309
264
|
newSorting = old.map(d => {
|
|
310
|
-
if (d.id ===
|
|
265
|
+
if (d.id === column.id) {
|
|
311
266
|
return {
|
|
312
267
|
...d,
|
|
313
268
|
desc: hasDescDefined ? desc! : !existingSorting?.desc,
|
|
@@ -316,38 +271,22 @@ export const Sorting: TableFeature = {
|
|
|
316
271
|
return d
|
|
317
272
|
})
|
|
318
273
|
} else if (sortAction === 'remove' && old?.length) {
|
|
319
|
-
newSorting = old.filter(d => d.id !==
|
|
274
|
+
newSorting = old.filter(d => d.id !== column.id)
|
|
320
275
|
}
|
|
321
276
|
|
|
322
277
|
return newSorting
|
|
323
278
|
})
|
|
324
279
|
},
|
|
325
280
|
|
|
326
|
-
|
|
327
|
-
const column = instance.getColumn(columnId)
|
|
328
|
-
|
|
329
|
-
if (!column) {
|
|
330
|
-
throw new Error()
|
|
331
|
-
}
|
|
332
|
-
|
|
281
|
+
getCanSort: () => {
|
|
333
282
|
return (
|
|
334
|
-
column.enableSorting ??
|
|
335
|
-
instance.options.enableSorting ??
|
|
336
|
-
column.defaultCanSort ??
|
|
283
|
+
(column.enableSorting ?? true) &&
|
|
284
|
+
(instance.options.enableSorting ?? true) &&
|
|
337
285
|
!!column.accessorFn
|
|
338
|
-
// (!!column.accessorFn ||
|
|
339
|
-
// column.columns?.some(c => c.id && instance.getColumnCanSort(c.id))) ??
|
|
340
|
-
// false
|
|
341
286
|
)
|
|
342
287
|
},
|
|
343
288
|
|
|
344
|
-
|
|
345
|
-
const column = instance.getColumn(columnId)
|
|
346
|
-
|
|
347
|
-
if (!column) {
|
|
348
|
-
throw new Error()
|
|
349
|
-
}
|
|
350
|
-
|
|
289
|
+
getCanMultiSort: () => {
|
|
351
290
|
return (
|
|
352
291
|
column.enableMultiSort ??
|
|
353
292
|
instance.options.enableMultiSort ??
|
|
@@ -355,34 +294,25 @@ export const Sorting: TableFeature = {
|
|
|
355
294
|
)
|
|
356
295
|
},
|
|
357
296
|
|
|
358
|
-
|
|
297
|
+
getIsSorted: () => {
|
|
359
298
|
const columnSort = instance
|
|
360
299
|
.getState()
|
|
361
|
-
.sorting?.find(d => d.id ===
|
|
300
|
+
.sorting?.find(d => d.id === column.id)
|
|
362
301
|
|
|
363
302
|
return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'
|
|
364
303
|
},
|
|
365
304
|
|
|
366
|
-
|
|
367
|
-
instance.getState().sorting?.findIndex(d => d.id ===
|
|
305
|
+
getSortIndex: () =>
|
|
306
|
+
instance.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,
|
|
368
307
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
} else {
|
|
375
|
-
instance.setSorting(instance.initialState?.sorting ?? [])
|
|
376
|
-
}
|
|
308
|
+
clearSorting: () => {
|
|
309
|
+
//clear sorting for just 1 column
|
|
310
|
+
instance.setSorting(old =>
|
|
311
|
+
old?.length ? old.filter(d => d.id !== column.id) : []
|
|
312
|
+
)
|
|
377
313
|
},
|
|
378
314
|
|
|
379
|
-
getToggleSortingHandler:
|
|
380
|
-
const column = instance.getColumn(columnId)
|
|
381
|
-
|
|
382
|
-
if (!column) {
|
|
383
|
-
throw new Error()
|
|
384
|
-
}
|
|
385
|
-
|
|
315
|
+
getToggleSortingHandler: () => {
|
|
386
316
|
const canSort = column.getCanSort()
|
|
387
317
|
|
|
388
318
|
return (e: unknown) => {
|
|
@@ -396,7 +326,21 @@ export const Sorting: TableFeature = {
|
|
|
396
326
|
)
|
|
397
327
|
}
|
|
398
328
|
},
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
|
|
332
|
+
createInstance: <TGenerics extends TableGenerics>(
|
|
333
|
+
instance: TableInstance<TGenerics>
|
|
334
|
+
): SortingInstance<TGenerics> => {
|
|
335
|
+
let registered = false
|
|
399
336
|
|
|
337
|
+
return {
|
|
338
|
+
setSorting: updater => instance.options.onSortingChange?.(updater),
|
|
339
|
+
resetSorting: defaultState => {
|
|
340
|
+
instance.setSorting(
|
|
341
|
+
defaultState ? [] : instance.initialState?.sorting ?? []
|
|
342
|
+
)
|
|
343
|
+
},
|
|
400
344
|
getPreSortedRowModel: () => instance.getFilteredRowModel(),
|
|
401
345
|
getSortedRowModel: () => {
|
|
402
346
|
if (
|
|
@@ -32,10 +32,8 @@ export type VisibilityInstance<TGenerics extends TableGenerics> = {
|
|
|
32
32
|
getRightVisibleLeafColumns: () => Column<TGenerics>[]
|
|
33
33
|
getCenterVisibleLeafColumns: () => Column<TGenerics>[]
|
|
34
34
|
setColumnVisibility: (updater: Updater<VisibilityState>) => void
|
|
35
|
-
|
|
35
|
+
resetColumnVisibility: (defaultState?: boolean) => void
|
|
36
36
|
toggleAllColumnsVisible: (value?: boolean) => void
|
|
37
|
-
getColumnIsVisible: (columId: string) => boolean
|
|
38
|
-
getColumnCanHide: (columnId: string) => boolean
|
|
39
37
|
getIsAllColumnsVisible: () => boolean
|
|
40
38
|
getIsSomeColumnsVisible: () => boolean
|
|
41
39
|
getToggleAllColumnsVisibilityHandler: () =>
|
|
@@ -45,7 +43,6 @@ export type VisibilityInstance<TGenerics extends TableGenerics> = {
|
|
|
45
43
|
|
|
46
44
|
export type VisibilityColumnDef = {
|
|
47
45
|
enableHiding?: boolean
|
|
48
|
-
defaultCanHide?: boolean
|
|
49
46
|
defaultIsVisible?: boolean
|
|
50
47
|
}
|
|
51
48
|
|
|
@@ -90,10 +87,24 @@ export const Visibility: TableFeature = {
|
|
|
90
87
|
instance: TableInstance<TGenerics>
|
|
91
88
|
): VisibilityColumn => {
|
|
92
89
|
return {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
90
|
+
toggleVisibility: value => {
|
|
91
|
+
if (column.getCanHide()) {
|
|
92
|
+
instance.setColumnVisibility(old => ({
|
|
93
|
+
...old,
|
|
94
|
+
[column.id]: value ?? !column.getIsVisible(),
|
|
95
|
+
}))
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
getIsVisible: () => {
|
|
99
|
+
return instance.getState().columnVisibility?.[column.id] ?? true
|
|
100
|
+
},
|
|
101
|
+
|
|
102
|
+
getCanHide: () => {
|
|
103
|
+
return (
|
|
104
|
+
(column.enableHiding ?? true) &&
|
|
105
|
+
(instance.options.enableHiding ?? true)
|
|
106
|
+
)
|
|
107
|
+
},
|
|
97
108
|
getToggleVisibilityHandler: () => {
|
|
98
109
|
return (e: unknown) => {
|
|
99
110
|
column.toggleVisibility?.(
|
|
@@ -134,7 +145,7 @@ export const Visibility: TableFeature = {
|
|
|
134
145
|
],
|
|
135
146
|
(left, center, right) => [...left, ...center, ...right],
|
|
136
147
|
{
|
|
137
|
-
key: process.env.NODE_ENV === '
|
|
148
|
+
key: process.env.NODE_ENV === 'development' && 'row.getVisibleCells',
|
|
138
149
|
debug: () => instance.options.debugAll ?? instance.options.debugRows,
|
|
139
150
|
}
|
|
140
151
|
),
|
|
@@ -192,15 +203,10 @@ export const Visibility: TableFeature = {
|
|
|
192
203
|
setColumnVisibility: updater =>
|
|
193
204
|
instance.options.onColumnVisibilityChange?.(updater),
|
|
194
205
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
instance.setColumnVisibility(old => ({
|
|
200
|
-
...old,
|
|
201
|
-
[columnId]: value ?? !instance.getColumnIsVisible(columnId),
|
|
202
|
-
}))
|
|
203
|
-
}
|
|
206
|
+
resetColumnVisibility: defaultState => {
|
|
207
|
+
instance.setColumnVisibility(
|
|
208
|
+
defaultState ? {} : instance.initialState.columnVisibility ?? {}
|
|
209
|
+
)
|
|
204
210
|
},
|
|
205
211
|
|
|
206
212
|
toggleAllColumnsVisible: value => {
|
|
@@ -217,35 +223,6 @@ export const Visibility: TableFeature = {
|
|
|
217
223
|
)
|
|
218
224
|
},
|
|
219
225
|
|
|
220
|
-
getColumnIsVisible: columnId => {
|
|
221
|
-
const column = instance.getColumn(columnId)
|
|
222
|
-
|
|
223
|
-
if (!column) {
|
|
224
|
-
throw new Error()
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
return (
|
|
228
|
-
instance.getState().columnVisibility?.[columnId] ??
|
|
229
|
-
column.defaultIsVisible ??
|
|
230
|
-
true
|
|
231
|
-
)
|
|
232
|
-
},
|
|
233
|
-
|
|
234
|
-
getColumnCanHide: columnId => {
|
|
235
|
-
const column = instance.getColumn(columnId)
|
|
236
|
-
|
|
237
|
-
if (!column) {
|
|
238
|
-
throw new Error()
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
return (
|
|
242
|
-
instance.options.enableHiding ??
|
|
243
|
-
column.enableHiding ??
|
|
244
|
-
column.defaultCanHide ??
|
|
245
|
-
true
|
|
246
|
-
)
|
|
247
|
-
},
|
|
248
|
-
|
|
249
226
|
getIsAllColumnsVisible: () =>
|
|
250
227
|
!instance.getAllLeafColumns().some(column => !column.getIsVisible?.()),
|
|
251
228
|
|
package/src/filterFns.ts
CHANGED
|
@@ -6,7 +6,7 @@ const includesString: FilterFn<any> = (
|
|
|
6
6
|
filterValue: string
|
|
7
7
|
) => {
|
|
8
8
|
const search = filterValue.toLowerCase()
|
|
9
|
-
return row.
|
|
9
|
+
return row.getValue(columnId).toLowerCase().includes(search)
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
includesString.autoRemove = (val: any) => testFalsey(val)
|
|
@@ -16,7 +16,7 @@ const includesStringSensitive: FilterFn<any> = (
|
|
|
16
16
|
columnId: string,
|
|
17
17
|
filterValue: string
|
|
18
18
|
) => {
|
|
19
|
-
return row.
|
|
19
|
+
return row.getValue(columnId).includes(filterValue)
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
includesStringSensitive.autoRemove = (val: any) => testFalsey(val)
|
|
@@ -26,7 +26,7 @@ const equalsString: FilterFn<any> = (
|
|
|
26
26
|
columnId: string,
|
|
27
27
|
filterValue: string
|
|
28
28
|
) => {
|
|
29
|
-
return row.
|
|
29
|
+
return row.getValue(columnId).toLowerCase() === filterValue.toLowerCase()
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
equalsString.autoRemove = (val: any) => testFalsey(val)
|
|
@@ -36,7 +36,7 @@ const arrIncludes: FilterFn<any> = (
|
|
|
36
36
|
columnId: string,
|
|
37
37
|
filterValue: unknown
|
|
38
38
|
) => {
|
|
39
|
-
return row.
|
|
39
|
+
return row.getValue(columnId).includes(filterValue)
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
arrIncludes.autoRemove = (val: any) => testFalsey(val) || !val?.length
|
|
@@ -46,7 +46,7 @@ const arrIncludesAll: FilterFn<any> = (
|
|
|
46
46
|
columnId: string,
|
|
47
47
|
filterValue: unknown[]
|
|
48
48
|
) => {
|
|
49
|
-
return !filterValue.some(val => !row.
|
|
49
|
+
return !filterValue.some(val => !row.getValue(columnId).includes(val))
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
arrIncludesAll.autoRemove = (val: any) => testFalsey(val) || !val?.length
|
|
@@ -56,13 +56,13 @@ const arrIncludesSome: FilterFn<any> = (
|
|
|
56
56
|
columnId: string,
|
|
57
57
|
filterValue: unknown[]
|
|
58
58
|
) => {
|
|
59
|
-
return filterValue.some(val => row.
|
|
59
|
+
return filterValue.some(val => row.getValue(columnId).includes(val))
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
arrIncludesSome.autoRemove = (val: any) => testFalsey(val) || !val?.length
|
|
63
63
|
|
|
64
64
|
const equals: FilterFn<any> = (row, columnId: string, filterValue: unknown) => {
|
|
65
|
-
return row.
|
|
65
|
+
return row.getValue(columnId) === filterValue
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
equals.autoRemove = (val: any) => testFalsey(val)
|
|
@@ -72,7 +72,7 @@ const weakEquals: FilterFn<any> = (
|
|
|
72
72
|
columnId: string,
|
|
73
73
|
filterValue: unknown
|
|
74
74
|
) => {
|
|
75
|
-
return row.
|
|
75
|
+
return row.getValue(columnId) == filterValue
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
weakEquals.autoRemove = (val: any) => testFalsey(val)
|
|
@@ -84,7 +84,7 @@ const inNumberRange: FilterFn<any> = (
|
|
|
84
84
|
) => {
|
|
85
85
|
let [min, max] = filterValue
|
|
86
86
|
|
|
87
|
-
const rowValue = row.
|
|
87
|
+
const rowValue = row.getValue(columnId)
|
|
88
88
|
return rowValue >= min && rowValue <= max
|
|
89
89
|
}
|
|
90
90
|
|
package/src/index.ts
CHANGED
|
@@ -15,10 +15,18 @@ export * from './features/Sorting'
|
|
|
15
15
|
export * from './features/Visibility'
|
|
16
16
|
export * from './features/Expanding'
|
|
17
17
|
export * from './utils'
|
|
18
|
-
export * from './utils/
|
|
19
|
-
export * from './utils/
|
|
20
|
-
export * from './utils/
|
|
21
|
-
export * from './utils/
|
|
18
|
+
export * from './utils/getCoreRowModel'
|
|
19
|
+
export * from './utils/getFilteredRowModel'
|
|
20
|
+
export * from './utils/getFacetedRowModel'
|
|
21
|
+
export * from './utils/getFacetedUniqueValues'
|
|
22
|
+
export * from './utils/getFacetedMinMaxValues'
|
|
23
|
+
export * from './utils/getSortedRowModel'
|
|
22
24
|
export * from './utils/getGroupedRowModel'
|
|
23
25
|
export * from './utils/getExpandedRowModel'
|
|
24
26
|
export * from './utils/getPaginationRowModel'
|
|
27
|
+
// Experimental Async
|
|
28
|
+
// export * from './utils/getCoreRowModelAsync'
|
|
29
|
+
// export * from './utils/getFilteredRowModelAsync'
|
|
30
|
+
// export * from './utils/getFacetedRowModelAsync'
|
|
31
|
+
// export * from './utils/getFacetedUniqueValuesAsync'
|
|
32
|
+
// export * from './utils/getFacetedMinMaxValuesAsync'
|
package/src/sortingFns.ts
CHANGED
|
@@ -19,8 +19,8 @@ function alphanumeric<TGenerics extends TableGenerics>(
|
|
|
19
19
|
columnId: string
|
|
20
20
|
) {
|
|
21
21
|
return compareAlphanumeric(
|
|
22
|
-
toString(rowA.
|
|
23
|
-
toString(rowB.
|
|
22
|
+
toString(rowA.getValue(columnId)).toLowerCase(),
|
|
23
|
+
toString(rowB.getValue(columnId)).toLowerCase()
|
|
24
24
|
)
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -30,8 +30,8 @@ function alphanumericCaseSensitive<TGenerics extends TableGenerics>(
|
|
|
30
30
|
columnId: string
|
|
31
31
|
) {
|
|
32
32
|
return compareAlphanumeric(
|
|
33
|
-
toString(rowA.
|
|
34
|
-
toString(rowB.
|
|
33
|
+
toString(rowA.getValue(columnId)),
|
|
34
|
+
toString(rowB.getValue(columnId))
|
|
35
35
|
)
|
|
36
36
|
}
|
|
37
37
|
|
|
@@ -90,8 +90,8 @@ function text<TGenerics extends TableGenerics>(
|
|
|
90
90
|
columnId: string
|
|
91
91
|
) {
|
|
92
92
|
return compareBasic(
|
|
93
|
-
toString(rowA.
|
|
94
|
-
toString(rowB.
|
|
93
|
+
toString(rowA.getValue(columnId)).toLowerCase(),
|
|
94
|
+
toString(rowB.getValue(columnId)).toLowerCase()
|
|
95
95
|
)
|
|
96
96
|
}
|
|
97
97
|
|
|
@@ -103,8 +103,8 @@ function textCaseSensitive<TGenerics extends TableGenerics>(
|
|
|
103
103
|
columnId: string
|
|
104
104
|
) {
|
|
105
105
|
return compareBasic(
|
|
106
|
-
toString(rowA.
|
|
107
|
-
toString(rowB.
|
|
106
|
+
toString(rowA.getValue(columnId)),
|
|
107
|
+
toString(rowB.getValue(columnId))
|
|
108
108
|
)
|
|
109
109
|
}
|
|
110
110
|
|
|
@@ -114,8 +114,8 @@ function datetime<TGenerics extends TableGenerics>(
|
|
|
114
114
|
columnId: string
|
|
115
115
|
) {
|
|
116
116
|
return compareBasic(
|
|
117
|
-
(rowA.
|
|
118
|
-
(rowB.
|
|
117
|
+
(rowA.getValue(columnId) as Date).getTime(),
|
|
118
|
+
(rowB.getValue(columnId) as Date).getTime()
|
|
119
119
|
)
|
|
120
120
|
}
|
|
121
121
|
|
|
@@ -124,7 +124,7 @@ function basic<TGenerics extends TableGenerics>(
|
|
|
124
124
|
rowB: Row<TGenerics>,
|
|
125
125
|
columnId: string
|
|
126
126
|
) {
|
|
127
|
-
return compareBasic(rowA.
|
|
127
|
+
return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
// Utils
|
package/src/types.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CoreOptions, CoreTableState,
|
|
1
|
+
import { CoreOptions, CoreTableState, CoreInstance } from './core'
|
|
2
2
|
import { ColumnsOptions, CoreColumn, CoreColumnDef } from './features/Columns'
|
|
3
3
|
import {
|
|
4
4
|
VisibilityInstance,
|
|
@@ -107,7 +107,7 @@ export type TableFeature = {
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
export type TableInstance<TGenerics extends TableGenerics> =
|
|
110
|
-
|
|
110
|
+
CoreInstance<TGenerics> &
|
|
111
111
|
ColumnsInstance<TGenerics> &
|
|
112
112
|
RowsInstance<TGenerics> &
|
|
113
113
|
CellsInstance<TGenerics> &
|
|
@@ -214,7 +214,7 @@ export type CoreCell<TGenerics extends TableGenerics> = {
|
|
|
214
214
|
id: string
|
|
215
215
|
rowId: string
|
|
216
216
|
columnId: string
|
|
217
|
-
|
|
217
|
+
getValue: () => TGenerics['Value']
|
|
218
218
|
row: Row<TGenerics>
|
|
219
219
|
column: Column<TGenerics>
|
|
220
220
|
renderCell: () => string | null | TGenerics['Rendered']
|
|
@@ -228,8 +228,6 @@ export type CoreHeader<TGenerics extends TableGenerics> = {
|
|
|
228
228
|
index: number
|
|
229
229
|
depth: number
|
|
230
230
|
column: Column<TGenerics>
|
|
231
|
-
getStart: () => number
|
|
232
|
-
getSize: () => number
|
|
233
231
|
headerGroup: HeaderGroup<TGenerics>
|
|
234
232
|
subHeaders: Header<TGenerics>[]
|
|
235
233
|
colSpan?: number
|
|
@@ -251,17 +249,4 @@ export type HeaderGroup<TGenerics extends TableGenerics> = {
|
|
|
251
249
|
headers: Header<TGenerics>[]
|
|
252
250
|
}
|
|
253
251
|
|
|
254
|
-
export type HeaderRenderProps<THeader> = {
|
|
255
|
-
header: THeader
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
export type FooterRenderProps<THeader> = {
|
|
259
|
-
header: THeader
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
export type CellRenderProps<TCell, TRow> = {
|
|
263
|
-
cell: TCell
|
|
264
|
-
row: TRow
|
|
265
|
-
}
|
|
266
|
-
|
|
267
252
|
export type NoInfer<A extends any> = [A][A extends any ? 0 : never]
|