@tanstack/react-table 8.0.0-alpha.9 → 8.0.0-beta.2

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.
Files changed (115) hide show
  1. package/build/cjs/react-table/src/index.js +139 -0
  2. package/build/cjs/react-table/src/index.js.map +1 -0
  3. package/build/cjs/table-core/build/esm/index.js +3867 -0
  4. package/build/cjs/table-core/build/esm/index.js.map +1 -0
  5. package/build/esm/index.js +3196 -4117
  6. package/build/esm/index.js.map +1 -1
  7. package/build/stats-html.html +1 -1
  8. package/build/stats-react.json +24 -813
  9. package/build/types/index.d.ts +16 -9
  10. package/build/umd/index.development.js +3234 -4125
  11. package/build/umd/index.development.js.map +1 -1
  12. package/build/umd/index.production.js +11 -1
  13. package/build/umd/index.production.js.map +1 -1
  14. package/package.json +10 -6
  15. package/src/index.tsx +111 -9
  16. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
  17. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  18. package/build/cjs/aggregationTypes.js +0 -130
  19. package/build/cjs/aggregationTypes.js.map +0 -1
  20. package/build/cjs/core.js +0 -545
  21. package/build/cjs/core.js.map +0 -1
  22. package/build/cjs/createTable.js +0 -122
  23. package/build/cjs/createTable.js.map +0 -1
  24. package/build/cjs/features/ColumnSizing.js +0 -318
  25. package/build/cjs/features/ColumnSizing.js.map +0 -1
  26. package/build/cjs/features/Expanding.js +0 -239
  27. package/build/cjs/features/Expanding.js.map +0 -1
  28. package/build/cjs/features/Filters.js +0 -414
  29. package/build/cjs/features/Filters.js.map +0 -1
  30. package/build/cjs/features/Grouping.js +0 -232
  31. package/build/cjs/features/Grouping.js.map +0 -1
  32. package/build/cjs/features/Headers.js +0 -629
  33. package/build/cjs/features/Headers.js.map +0 -1
  34. package/build/cjs/features/Ordering.js +0 -86
  35. package/build/cjs/features/Ordering.js.map +0 -1
  36. package/build/cjs/features/Pagination.js +0 -193
  37. package/build/cjs/features/Pagination.js.map +0 -1
  38. package/build/cjs/features/Pinning.js +0 -149
  39. package/build/cjs/features/Pinning.js.map +0 -1
  40. package/build/cjs/features/RowSelection.js +0 -526
  41. package/build/cjs/features/RowSelection.js.map +0 -1
  42. package/build/cjs/features/Sorting.js +0 -315
  43. package/build/cjs/features/Sorting.js.map +0 -1
  44. package/build/cjs/features/Visibility.js +0 -174
  45. package/build/cjs/features/Visibility.js.map +0 -1
  46. package/build/cjs/filterTypes.js +0 -172
  47. package/build/cjs/filterTypes.js.map +0 -1
  48. package/build/cjs/index.js +0 -44
  49. package/build/cjs/index.js.map +0 -1
  50. package/build/cjs/sortTypes.js +0 -122
  51. package/build/cjs/sortTypes.js.map +0 -1
  52. package/build/cjs/types.js +0 -22
  53. package/build/cjs/types.js.map +0 -1
  54. package/build/cjs/utils/columnFilterRowsFn.js +0 -131
  55. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  56. package/build/cjs/utils/expandRowsFn.js +0 -38
  57. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  58. package/build/cjs/utils/globalFilterRowsFn.js +0 -101
  59. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  60. package/build/cjs/utils/groupRowsFn.js +0 -155
  61. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  62. package/build/cjs/utils/paginateRowsFn.js +0 -44
  63. package/build/cjs/utils/paginateRowsFn.js.map +0 -1
  64. package/build/cjs/utils/sortRowsFn.js +0 -94
  65. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  66. package/build/cjs/utils.js +0 -167
  67. package/build/cjs/utils.js.map +0 -1
  68. package/build/types/aggregationTypes.d.ts +0 -22
  69. package/build/types/core.d.ts +0 -105
  70. package/build/types/createTable.d.ts +0 -42
  71. package/build/types/features/ColumnSizing.d.ts +0 -73
  72. package/build/types/features/Expanding.d.ts +0 -48
  73. package/build/types/features/Filters.d.ts +0 -90
  74. package/build/types/features/Grouping.d.ts +0 -83
  75. package/build/types/features/Headers.d.ts +0 -41
  76. package/build/types/features/Ordering.d.ts +0 -19
  77. package/build/types/features/Pagination.d.ts +0 -39
  78. package/build/types/features/Pinning.d.ts +0 -39
  79. package/build/types/features/RowSelection.d.ts +0 -58
  80. package/build/types/features/Sorting.d.ts +0 -79
  81. package/build/types/features/Visibility.d.ts +0 -47
  82. package/build/types/filterTypes.d.ts +0 -50
  83. package/build/types/sortTypes.d.ts +0 -18
  84. package/build/types/types.d.ts +0 -138
  85. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  86. package/build/types/utils/expandRowsFn.d.ts +0 -2
  87. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  88. package/build/types/utils/groupRowsFn.d.ts +0 -2
  89. package/build/types/utils/paginateRowsFn.d.ts +0 -2
  90. package/build/types/utils/sortRowsFn.d.ts +0 -2
  91. package/build/types/utils.d.ts +0 -23
  92. package/src/aggregationTypes.ts +0 -115
  93. package/src/core.tsx +0 -763
  94. package/src/createTable.tsx +0 -186
  95. package/src/features/ColumnSizing.ts +0 -424
  96. package/src/features/Expanding.ts +0 -318
  97. package/src/features/Filters.ts +0 -560
  98. package/src/features/Grouping.ts +0 -361
  99. package/src/features/Headers.ts +0 -729
  100. package/src/features/Ordering.ts +0 -110
  101. package/src/features/Pagination.ts +0 -250
  102. package/src/features/Pinning.ts +0 -174
  103. package/src/features/RowSelection.ts +0 -651
  104. package/src/features/Sorting.ts +0 -453
  105. package/src/features/Visibility.ts +0 -238
  106. package/src/filterTypes.ts +0 -188
  107. package/src/sortTypes.ts +0 -147
  108. package/src/types.ts +0 -311
  109. package/src/utils/columnFilterRowsFn.ts +0 -113
  110. package/src/utils/expandRowsFn.ts +0 -30
  111. package/src/utils/globalFilterRowsFn.ts +0 -89
  112. package/src/utils/groupRowsFn.ts +0 -170
  113. package/src/utils/paginateRowsFn.ts +0 -28
  114. package/src/utils/sortRowsFn.ts +0 -95
  115. package/src/utils.tsx +0 -221
@@ -1,560 +0,0 @@
1
- import { RowModel } from '..'
2
- import { BuiltInFilterType, filterTypes } from '../filterTypes'
3
- import {
4
- Column,
5
- OnChangeFn,
6
- PartialGenerics,
7
- TableInstance,
8
- Row,
9
- Updater,
10
- } from '../types'
11
- import {
12
- functionalUpdate,
13
- isFunction,
14
- makeStateUpdater,
15
- memo,
16
- Overwrite,
17
- } from '../utils'
18
-
19
- export type ColumnFilter = {
20
- id: string
21
- value: unknown
22
- }
23
-
24
- export type ColumnFiltersState = ColumnFilter[]
25
-
26
- export type FilterFn<TGenerics extends PartialGenerics> = {
27
- (rows: Row<TGenerics>[], columnIds: string[], filterValue: any): any
28
- autoRemove?: ColumnFilterAutoRemoveTestFn<TGenerics>
29
- }
30
-
31
- export type ColumnFilterAutoRemoveTestFn<TGenerics extends PartialGenerics> = (
32
- value: unknown,
33
- column?: Column<TGenerics>
34
- ) => boolean
35
-
36
- export type CustomFilterTypes<TGenerics extends PartialGenerics> = Record<
37
- string,
38
- FilterFn<TGenerics>
39
- >
40
-
41
- export type FiltersTableState = {
42
- columnFilters: ColumnFiltersState
43
- globalFilter: any
44
- }
45
-
46
- export type FilterType<TGenerics extends PartialGenerics> =
47
- | 'auto'
48
- | BuiltInFilterType
49
- | TGenerics['FilterFns']
50
- | FilterFn<TGenerics>
51
-
52
- export type FiltersColumnDef<TGenerics extends PartialGenerics> = {
53
- filterType?: FilterType<Overwrite<TGenerics, { Value: any }>>
54
- enableAllFilters?: boolean
55
- enableColumnFilter?: boolean
56
- enableGlobalFilter?: boolean
57
- defaultCanFilter?: boolean
58
- defaultCanColumnFilter?: boolean
59
- defaultCanGlobalFilter?: boolean
60
- }
61
-
62
- export type FiltersColumn<TGenerics extends PartialGenerics> = {
63
- filterType: FilterType<Overwrite<TGenerics, { Value: any }>>
64
- getCanColumnFilter: () => boolean
65
- getCanGlobalFilter: () => boolean
66
- getColumnFilterIndex: () => number
67
- getIsColumnFiltered: () => boolean
68
- getColumnFilterValue: () => unknown
69
- setColumnFilterValue: (value: any) => void
70
- getPreFilteredRows: () => Row<TGenerics>[] | undefined
71
- getPreFilteredUniqueValues: () => Map<any, number>
72
- getPreFilteredMinMaxValues: () => [any, any]
73
- }
74
-
75
- export type FiltersOptions<TGenerics extends PartialGenerics> = {
76
- filterFromChildrenUp?: boolean
77
- filterTypes?: TGenerics['FilterFns']
78
- enableFilters?: boolean
79
- // Column
80
- onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>
81
- autoResetColumnFilters?: boolean
82
- enableColumnFilters?: boolean
83
- columnFilterRowsFn?: (
84
- instance: TableInstance<TGenerics>,
85
- coreRowModel: RowModel<TGenerics>
86
- ) => RowModel<TGenerics>
87
- // Global
88
- globalFilterType?: FilterType<TGenerics>
89
- onGlobalFilterChange?: OnChangeFn<any>
90
- enableGlobalFilters?: boolean
91
- autoResetGlobalFilter?: boolean
92
- enableGlobalFilter?: boolean
93
- globalFilterRowsFn?: (
94
- instance: TableInstance<TGenerics>,
95
- rowModel: RowModel<TGenerics>
96
- ) => RowModel<TGenerics>
97
- getColumnCanGlobalFilterFn?: (column: Column<TGenerics>) => boolean
98
- }
99
-
100
- export type FiltersInstance<TGenerics extends PartialGenerics> = {
101
- _notifyFiltersReset: () => void
102
- getColumnAutoFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined
103
-
104
- getColumnFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined
105
-
106
- setColumnFilters: (updater: Updater<ColumnFiltersState>) => void
107
- setColumnFilterValue: (columnId: string, value: any) => void
108
- resetColumnFilters: () => void
109
- getColumnCanColumnFilter: (columnId: string) => boolean
110
- getColumnCanGlobalFilterFn?: (column: Column<TGenerics>) => boolean
111
-
112
- getColumnIsFiltered: (columnId: string) => boolean
113
- getColumnFilterValue: (columnId: string) => unknown
114
- getColumnFilterIndex: (columnId: string) => number
115
-
116
- // All
117
- getPreFilteredRowModel: () => RowModel<TGenerics>
118
-
119
- // Column Filters
120
- getPreColumnFilteredRowModel: () => RowModel<TGenerics>
121
- getColumnFilteredRowModel: () => RowModel<TGenerics>
122
-
123
- // Global Filters
124
- setGlobalFilter: (updater: Updater<any>) => void
125
- resetGlobalFilter: () => void
126
- getGlobalAutoFilterFn: () => FilterFn<TGenerics> | undefined
127
- getGlobalFilterFn: () => FilterFn<TGenerics> | undefined
128
- getColumnCanGlobalFilter: (columnId: string) => boolean
129
- getPreGlobalFilteredRowModel: () => RowModel<TGenerics>
130
- getGlobalFilteredRowModel: () => RowModel<TGenerics>
131
- }
132
-
133
- //
134
-
135
- export function getDefaultColumn<
136
- TGenerics extends PartialGenerics
137
- >(): FiltersColumnDef<TGenerics> {
138
- return {
139
- filterType: 'auto',
140
- }
141
- }
142
-
143
- export function getInitialState(): FiltersTableState {
144
- return {
145
- columnFilters: [],
146
- globalFilter: undefined,
147
- }
148
- }
149
-
150
- export function getDefaultOptions<TGenerics extends PartialGenerics>(
151
- instance: TableInstance<TGenerics>
152
- ): FiltersOptions<TGenerics> {
153
- return {
154
- onColumnFiltersChange: makeStateUpdater('columnFilters', instance),
155
- onGlobalFilterChange: makeStateUpdater('globalFilter', instance),
156
- autoResetColumnFilters: true,
157
- filterFromChildrenUp: true,
158
- autoResetGlobalFilter: true,
159
- globalFilterType: 'auto',
160
- getColumnCanGlobalFilterFn: column => {
161
- const value = instance
162
- .getCoreRowModel()
163
- .flatRows[0]?.getAllCellsByColumnId()[column.id]?.value
164
-
165
- return typeof value === 'string'
166
- },
167
- }
168
- }
169
-
170
- export function createColumn<TGenerics extends PartialGenerics>(
171
- column: Column<TGenerics>,
172
- instance: TableInstance<TGenerics>
173
- ): FiltersColumn<TGenerics> {
174
- const getFacetInfo = memo(
175
- () => [column.getPreFilteredRows()],
176
- (rows = []) => {
177
- let preFilteredUniqueValues = new Map<any, number>()
178
-
179
- let preFilteredMinMaxValues: [any, any] = [
180
- rows[0]?.values[column.id] ?? null,
181
- rows[0]?.values[column.id] ?? null,
182
- ]
183
-
184
- for (let i = 0; i < rows.length; i++) {
185
- const value = rows[i]?.values[column.id]
186
-
187
- if (preFilteredUniqueValues.has(value)) {
188
- preFilteredUniqueValues.set(
189
- value,
190
- (preFilteredUniqueValues.get(value) ?? 0) + 1
191
- )
192
- } else {
193
- preFilteredUniqueValues.set(value, 1)
194
- }
195
-
196
- if (value < preFilteredMinMaxValues[0]) {
197
- preFilteredMinMaxValues[0] = value
198
- } else if (value > preFilteredMinMaxValues[1]) {
199
- preFilteredMinMaxValues[1] = value
200
- }
201
- }
202
-
203
- return {
204
- preFilteredUniqueValues,
205
- preFilteredMinMaxValues,
206
- }
207
- },
208
- {
209
- key: 'column.getFacetInfo',
210
- debug: () => instance.options.debugAll ?? instance.options.debugColumns,
211
- }
212
- )
213
-
214
- return {
215
- filterType: column.filterType,
216
- getCanColumnFilter: () => instance.getColumnCanColumnFilter(column.id),
217
- getCanGlobalFilter: () => instance.getColumnCanGlobalFilter(column.id),
218
- getColumnFilterIndex: () => instance.getColumnFilterIndex(column.id),
219
- getIsColumnFiltered: () => instance.getColumnIsFiltered(column.id),
220
- getColumnFilterValue: () => instance.getColumnFilterValue(column.id),
221
- setColumnFilterValue: val => instance.setColumnFilterValue(column.id, val),
222
- getPreFilteredUniqueValues: () => getFacetInfo().preFilteredUniqueValues,
223
- getPreFilteredMinMaxValues: () => getFacetInfo().preFilteredMinMaxValues,
224
- getPreFilteredRows: () => undefined,
225
- }
226
- }
227
-
228
- export function getInstance<TGenerics extends PartialGenerics>(
229
- instance: TableInstance<TGenerics>
230
- ): FiltersInstance<TGenerics> {
231
- let registered = false
232
-
233
- return {
234
- _notifyFiltersReset: () => {
235
- if (!registered) {
236
- registered = true
237
- return
238
- }
239
-
240
- if (instance.options.autoResetAll === false) {
241
- return
242
- }
243
-
244
- if (instance.options.autoResetAll === true) {
245
- instance.resetSorting()
246
- } else {
247
- if (instance.options.autoResetColumnFilters) {
248
- instance.resetColumnFilters()
249
- }
250
- if (instance.options.autoResetGlobalFilter) {
251
- instance.resetGlobalFilter()
252
- }
253
- }
254
- },
255
- getColumnAutoFilterFn: columnId => {
256
- const firstRow = instance.getCoreRowModel().flatRows[0]
257
-
258
- const value = firstRow?.values[columnId]
259
-
260
- if (typeof value === 'string') {
261
- return filterTypes.includesString
262
- }
263
-
264
- if (typeof value === 'number') {
265
- return filterTypes.betweenNumberRange
266
- }
267
-
268
- if (value !== null && typeof value === 'object') {
269
- return filterTypes.equals
270
- }
271
-
272
- if (Array.isArray(value)) {
273
- return filterTypes.arrIncludes
274
- }
275
-
276
- return filterTypes.weakEquals
277
- },
278
- getGlobalAutoFilterFn: () => {
279
- return filterTypes.includesString
280
- },
281
- getColumnFilterFn: columnId => {
282
- const column = instance.getColumn(columnId)
283
- const userFilterTypes = instance.options.filterTypes
284
-
285
- if (!column) {
286
- throw new Error()
287
- }
288
-
289
- return isFunction(column.filterType)
290
- ? column.filterType
291
- : column.filterType === 'auto'
292
- ? instance.getColumnAutoFilterFn(columnId)
293
- : (userFilterTypes as Record<string, any>)?.[
294
- column.filterType as string
295
- ] ??
296
- (filterTypes[
297
- column.filterType as BuiltInFilterType
298
- ] as FilterFn<TGenerics>)
299
- },
300
-
301
- getGlobalFilterFn: () => {
302
- const { filterTypes: userFilterTypes, globalFilterType } =
303
- instance.options
304
-
305
- return isFunction(globalFilterType)
306
- ? globalFilterType
307
- : globalFilterType === 'auto'
308
- ? instance.getGlobalAutoFilterFn()
309
- : (userFilterTypes as Record<string, any>)?.[
310
- globalFilterType as string
311
- ] ??
312
- (filterTypes[
313
- globalFilterType as BuiltInFilterType
314
- ] as FilterFn<TGenerics>)
315
- },
316
-
317
- setColumnFilters: (updater: Updater<ColumnFiltersState>) => {
318
- const leafColumns = instance.getAllLeafColumns()
319
-
320
- const updateFn = (old: ColumnFiltersState) => {
321
- return functionalUpdate(updater, old)?.filter(filter => {
322
- const column = leafColumns.find(d => d.id === filter.id)
323
-
324
- if (column) {
325
- const filterFn = instance.getColumnFilterFn(column.id)
326
-
327
- if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
328
- return false
329
- }
330
- }
331
-
332
- return true
333
- })
334
- }
335
-
336
- instance.options.onColumnFiltersChange?.(
337
- updateFn,
338
- updateFn(instance.getState().columnFilters)
339
- )
340
- },
341
-
342
- setGlobalFilter: updater => {
343
- instance.options.onGlobalFilterChange?.(
344
- updater,
345
- functionalUpdate(updater, instance.getState().globalFilter)
346
- )
347
- },
348
-
349
- resetGlobalFilter: () => {
350
- instance.setGlobalFilter(undefined)
351
- },
352
-
353
- getColumnCanColumnFilter: columnId => {
354
- const column = instance.getColumn(columnId)
355
-
356
- if (!column) {
357
- throw new Error()
358
- }
359
-
360
- return (
361
- column.enableAllFilters ??
362
- column.enableColumnFilter ??
363
- instance.options.enableFilters ??
364
- instance.options.enableColumnFilters ??
365
- column.defaultCanFilter ??
366
- column.defaultCanColumnFilter ??
367
- !!column.accessorFn
368
- )
369
- },
370
-
371
- getColumnCanGlobalFilter: columnId => {
372
- const column = instance.getColumn(columnId)
373
-
374
- if (!column) {
375
- throw new Error()
376
- }
377
-
378
- return (
379
- ((instance.options.enableFilters ??
380
- instance.options.enableGlobalFilter ??
381
- column.enableAllFilters ??
382
- column.enableGlobalFilter ??
383
- column.defaultCanFilter ??
384
- column.defaultCanGlobalFilter ??
385
- !!column.accessorFn) &&
386
- instance.options.getColumnCanGlobalFilterFn?.(column)) ??
387
- true
388
- )
389
- },
390
-
391
- getColumnIsFiltered: columnId =>
392
- instance.getColumnFilterIndex(columnId) > -1,
393
-
394
- getColumnFilterValue: columnId =>
395
- instance.getState().columnFilters?.find(d => d.id === columnId)?.value,
396
-
397
- getColumnFilterIndex: columnId =>
398
- instance.getState().columnFilters?.findIndex(d => d.id === columnId) ??
399
- -1,
400
-
401
- setColumnFilterValue: (columnId, value) => {
402
- if (!columnId) return
403
-
404
- instance.setColumnFilters(old => {
405
- const column = instance.getColumn(columnId)
406
-
407
- if (!column) {
408
- if (process.env.NODE_ENV !== 'production') {
409
- console.warn(
410
- `React-Table: Could not find a column with id: ${columnId}`
411
- )
412
- }
413
- throw new Error()
414
- }
415
-
416
- const filterFn = instance.getColumnFilterFn(column.id)
417
- const previousfilter = old?.find(d => d.id === columnId)
418
-
419
- const newFilter = functionalUpdate(
420
- value,
421
- previousfilter ? previousfilter.value : undefined
422
- )
423
-
424
- //
425
- if (
426
- shouldAutoRemoveFilter(
427
- filterFn as FilterFn<TGenerics>,
428
- newFilter,
429
- column
430
- )
431
- ) {
432
- return old?.filter(d => d.id !== columnId) ?? []
433
- }
434
-
435
- const newFilterObj = { id: columnId, value: newFilter }
436
-
437
- if (previousfilter) {
438
- return (
439
- old?.map(d => {
440
- if (d.id === columnId) {
441
- return newFilterObj
442
- }
443
- return d
444
- }) ?? []
445
- )
446
- }
447
-
448
- if (old?.length) {
449
- return [...old, newFilterObj]
450
- }
451
-
452
- return [newFilterObj]
453
- })
454
- },
455
-
456
- resetColumnFilters: () => {
457
- instance.setColumnFilters(instance.initialState?.columnFilters ?? [])
458
- },
459
-
460
- getPreFilteredRowModel: () => instance.getCoreRowModel(),
461
- getPreColumnFilteredRowModel: () => instance.getCoreRowModel(),
462
- getColumnFilteredRowModel: memo(
463
- () => [
464
- instance.getState().columnFilters,
465
- instance.getCoreRowModel(),
466
- instance.options.columnFilterRowsFn,
467
- ],
468
- (columnFilters, rowModel, columnFiltersFn) => {
469
- const columnFilteredRowModel = (() => {
470
- if (!columnFilters?.length || !columnFiltersFn) {
471
- return rowModel
472
- }
473
-
474
- return columnFiltersFn(instance as any, rowModel)
475
- })()
476
-
477
- // Now that each filtered column has it's partially filtered rows,
478
- // lets assign the final filtered rows to all of the other columns
479
- const nonFilteredColumns = instance
480
- .getAllLeafColumns()
481
- .filter(
482
- column =>
483
- !instance.getState().columnFilters?.find(d => d.id === column.id)
484
- )
485
-
486
- // This essentially enables faceted filter options to be built easily
487
- // using every column's preFilteredRows value
488
-
489
- nonFilteredColumns.forEach(column => {
490
- column.getPreFilteredRows = () => columnFilteredRowModel.rows
491
- })
492
-
493
- return columnFilteredRowModel
494
- },
495
- {
496
- key: 'getColumnFilteredRowModel',
497
- debug: () => instance.options.debugAll ?? instance.options.debugTable,
498
- }
499
- ),
500
- getPreGlobalFilteredRowModel: () => instance.getColumnFilteredRowModel(),
501
- getGlobalFilteredRowModel: memo(
502
- () => [
503
- instance.getState().globalFilter,
504
- instance.getColumnFilteredRowModel(),
505
- instance.options.globalFilterRowsFn,
506
- ],
507
- (globalFilterValue, columnFilteredRowModel, globalFiltersFn) => {
508
- const globalFilteredRowModel = (() => {
509
- if (!globalFiltersFn || !globalFilterValue) {
510
- return columnFilteredRowModel
511
- }
512
-
513
- return globalFiltersFn(
514
- instance as TableInstance<TGenerics>,
515
- columnFilteredRowModel
516
- )
517
- })()
518
-
519
- // Now that each filtered column has it's partially filtered rows,
520
- // lets assign the final filtered rows to all of the other columns
521
- const nonFilteredColumns = instance
522
- .getAllLeafColumns()
523
- .filter(
524
- column =>
525
- !instance.getState().columnFilters?.find(d => d.id === column.id)
526
- )
527
-
528
- // This essentially enables faceted filter options to be built easily
529
- // using every column's preFilteredRows value
530
-
531
- nonFilteredColumns.forEach(column => {
532
- column.getPreFilteredRows = () => globalFilteredRowModel.rows
533
- })
534
-
535
- return globalFilteredRowModel
536
- },
537
- {
538
- key: 'getGlobalFilteredRowModel',
539
- debug: () => instance.options.debugAll ?? instance.options.debugTable,
540
- onChange: () => {
541
- instance._notifySortingReset()
542
- },
543
- }
544
- ),
545
- }
546
- }
547
-
548
- export function shouldAutoRemoveFilter<TGenerics extends PartialGenerics>(
549
- filterFn?: FilterFn<TGenerics>,
550
- value?: any,
551
- column?: Column<TGenerics>
552
- ) {
553
- return (
554
- (filterFn && filterFn.autoRemove
555
- ? filterFn.autoRemove(value, column)
556
- : false) ||
557
- typeof value === 'undefined' ||
558
- (typeof value === 'string' && !value)
559
- )
560
- }