@tanstack/table-core 8.0.0-alpha.68 → 8.0.0-alpha.71

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 (62) hide show
  1. package/build/cjs/features/ColumnSizing.js +19 -16
  2. package/build/cjs/features/ColumnSizing.js.map +1 -1
  3. package/build/cjs/features/Expanding.js +12 -4
  4. package/build/cjs/features/Expanding.js.map +1 -1
  5. package/build/cjs/features/Filters.js +6 -6
  6. package/build/cjs/features/Filters.js.map +1 -1
  7. package/build/cjs/features/Grouping.js +2 -2
  8. package/build/cjs/features/Grouping.js.map +1 -1
  9. package/build/cjs/features/Ordering.js +2 -2
  10. package/build/cjs/features/Ordering.js.map +1 -1
  11. package/build/cjs/features/Pagination.js +32 -19
  12. package/build/cjs/features/Pagination.js.map +1 -1
  13. package/build/cjs/features/Pinning.js +8 -6
  14. package/build/cjs/features/Pinning.js.map +1 -1
  15. package/build/cjs/features/RowSelection.js +2 -2
  16. package/build/cjs/features/RowSelection.js.map +1 -1
  17. package/build/cjs/features/Sorting.js +8 -8
  18. package/build/cjs/features/Sorting.js.map +1 -1
  19. package/build/cjs/features/Visibility.js +5 -0
  20. package/build/cjs/features/Visibility.js.map +1 -1
  21. package/build/cjs/utils/getCoreRowModel.js +1 -3
  22. package/build/cjs/utils/getCoreRowModel.js.map +1 -1
  23. package/build/cjs/utils/getFacetedMinMaxValues.js +10 -4
  24. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
  25. package/build/cjs/utils/getFilteredRowModel.js +1 -3
  26. package/build/cjs/utils/getFilteredRowModel.js.map +1 -1
  27. package/build/cjs/utils/getSortedRowModel.js +1 -3
  28. package/build/cjs/utils/getSortedRowModel.js.map +1 -1
  29. package/build/esm/index.js +109 -78
  30. package/build/esm/index.js.map +1 -1
  31. package/build/stats-html.html +1 -1
  32. package/build/stats-react.json +322 -322
  33. package/build/types/features/ColumnSizing.d.ts +2 -2
  34. package/build/types/features/Expanding.d.ts +1 -1
  35. package/build/types/features/Filters.d.ts +7 -7
  36. package/build/types/features/Grouping.d.ts +1 -1
  37. package/build/types/features/Ordering.d.ts +1 -1
  38. package/build/types/features/Pagination.d.ts +4 -4
  39. package/build/types/features/Pinning.d.ts +1 -1
  40. package/build/types/features/RowSelection.d.ts +1 -1
  41. package/build/types/features/Sorting.d.ts +2 -1
  42. package/build/types/features/Visibility.d.ts +1 -0
  43. package/build/types/utils/getFacetedMinMaxValues.d.ts +1 -1
  44. package/build/umd/index.development.js +109 -78
  45. package/build/umd/index.development.js.map +1 -1
  46. package/build/umd/index.production.js +1 -1
  47. package/build/umd/index.production.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/features/ColumnSizing.ts +25 -18
  50. package/src/features/Expanding.ts +15 -5
  51. package/src/features/Filters.ts +17 -13
  52. package/src/features/Grouping.ts +5 -3
  53. package/src/features/Ordering.ts +5 -3
  54. package/src/features/Pagination.ts +42 -21
  55. package/src/features/Pinning.ts +13 -7
  56. package/src/features/RowSelection.ts +5 -3
  57. package/src/features/Sorting.ts +12 -10
  58. package/src/features/Visibility.ts +7 -0
  59. package/src/utils/getCoreRowModel.ts +1 -3
  60. package/src/utils/getFacetedMinMaxValues.ts +8 -5
  61. package/src/utils/getFilteredRowModel.ts +1 -3
  62. package/src/utils/getSortedRowModel.ts +1 -3
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.68",
4
+ "version": "8.0.0-alpha.71",
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",
@@ -46,8 +46,8 @@ export type ColumnSizingDefaultOptions = {
46
46
  export type ColumnSizingInstance<TGenerics extends TableGenerics> = {
47
47
  setColumnSizing: (updater: Updater<ColumnSizingState>) => void
48
48
  setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void
49
- resetColumnSizing: () => void
50
- resetHeaderSizeInfo: () => void
49
+ resetColumnSizing: (defaultState?: boolean) => void
50
+ resetHeaderSizeInfo: (defaultState?: boolean) => void
51
51
  getTotalSize: () => number
52
52
  getLeftTotalSize: () => number
53
53
  getCenterTotalSize: () => number
@@ -83,6 +83,15 @@ export const defaultColumnSizing = {
83
83
  maxSize: Number.MAX_SAFE_INTEGER,
84
84
  }
85
85
 
86
+ const getDefaultColumnSizingInfoState = (): ColumnSizingInfoState => ({
87
+ startOffset: null,
88
+ startSize: null,
89
+ deltaOffset: null,
90
+ deltaPercentage: null,
91
+ isResizingColumn: false,
92
+ columnSizingStart: [],
93
+ })
94
+
86
95
  export const ColumnSizing: TableFeature = {
87
96
  getDefaultColumn: (): ColumnSizingColumnDef => {
88
97
  return defaultColumnSizing
@@ -90,14 +99,7 @@ export const ColumnSizing: TableFeature = {
90
99
  getInitialState: (state): ColumnSizingTableState => {
91
100
  return {
92
101
  columnSizing: {},
93
- columnSizingInfo: {
94
- startOffset: null,
95
- startSize: null,
96
- deltaOffset: null,
97
- deltaPercentage: null,
98
- isResizingColumn: false,
99
- columnSizingStart: [],
100
- },
102
+ columnSizingInfo: getDefaultColumnSizingInfoState(),
101
103
  ...state,
102
104
  }
103
105
  },
@@ -353,29 +355,34 @@ export const ColumnSizing: TableFeature = {
353
355
  instance.options.onColumnSizingChange?.(updater),
354
356
  setColumnSizingInfo: updater =>
355
357
  instance.options.onColumnSizingInfoChange?.(updater),
356
- resetColumnSizing: () => {
357
- instance.setColumnSizing(instance.initialState.columnSizing ?? {})
358
+ resetColumnSizing: defaultState => {
359
+ instance.setColumnSizing(
360
+ defaultState ? {} : instance.initialState.columnSizing ?? {}
361
+ )
358
362
  },
359
- resetHeaderSizeInfo: () => {
363
+ resetHeaderSizeInfo: defaultState => {
360
364
  instance.setColumnSizingInfo(
361
- instance.initialState.columnSizingInfo ?? {}
365
+ defaultState
366
+ ? getDefaultColumnSizingInfoState()
367
+ : instance.initialState.columnSizingInfo ??
368
+ getDefaultColumnSizingInfoState()
362
369
  )
363
370
  },
364
371
  getTotalSize: () =>
365
372
  instance.getHeaderGroups()[0]?.headers.reduce((sum, header) => {
366
- return sum + header.column.getSize()
373
+ return sum + header.getSize()
367
374
  }, 0) ?? 0,
368
375
  getLeftTotalSize: () =>
369
376
  instance.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {
370
- return sum + header.column.getSize()
377
+ return sum + header.getSize()
371
378
  }, 0) ?? 0,
372
379
  getCenterTotalSize: () =>
373
380
  instance.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {
374
- return sum + header.column.getSize()
381
+ return sum + header.getSize()
375
382
  }, 0) ?? 0,
376
383
  getRightTotalSize: () =>
377
384
  instance.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {
378
- return sum + header.column.getSize()
385
+ return sum + header.getSize()
379
386
  }, 0) ?? 0,
380
387
  }
381
388
  },
@@ -41,7 +41,7 @@ export type ExpandedInstance<TGenerics extends TableGenerics> = {
41
41
  _autoResetExpanded: () => void
42
42
  setExpanded: (updater: Updater<ExpandedState>) => void
43
43
  toggleAllRowsExpanded: (expanded?: boolean) => void
44
- resetExpanded: () => void
44
+ resetExpanded: (defaultState?: boolean) => void
45
45
  getCanSomeRowsExpand: () => boolean
46
46
  getToggleAllRowsExpandedHandler: () => (event: unknown) => void
47
47
  getIsSomeRowsExpanded: () => boolean
@@ -77,11 +77,14 @@ export const Expanding: TableFeature = {
77
77
  instance: TableInstance<TGenerics>
78
78
  ): ExpandedInstance<TGenerics> => {
79
79
  let registered = false
80
+ let queued = false
80
81
 
81
82
  return {
82
83
  _autoResetExpanded: () => {
83
84
  if (!registered) {
84
- registered = true
85
+ instance.queue(() => {
86
+ registered = true
87
+ })
85
88
  return
86
89
  }
87
90
 
@@ -93,7 +96,12 @@ export const Expanding: TableFeature = {
93
96
  instance.options.autoResetAll === true ||
94
97
  instance.options.autoResetExpanded
95
98
  ) {
96
- instance.resetExpanded()
99
+ if (queued) return
100
+ queued = true
101
+ instance.queue(() => {
102
+ instance.resetExpanded()
103
+ queued = false
104
+ })
97
105
  }
98
106
  },
99
107
  setExpanded: updater => instance.options.onExpandedChange?.(updater),
@@ -104,8 +112,10 @@ export const Expanding: TableFeature = {
104
112
  instance.setExpanded({})
105
113
  }
106
114
  },
107
- resetExpanded: () => {
108
- instance.setExpanded(instance.initialState?.expanded ?? {})
115
+ resetExpanded: defaultState => {
116
+ instance.setExpanded(
117
+ defaultState ? {} : instance.initialState?.expanded ?? {}
118
+ )
109
119
  },
110
120
  getCanSomeRowsExpand: () => {
111
121
  return instance.getRowModel().flatRows.some(row => row.getCanExpand())
@@ -85,8 +85,8 @@ export type FiltersColumn<TGenerics extends TableGenerics> = {
85
85
  getFilterIndex: () => number
86
86
  getFacetedUniqueValues: () => Map<any, number>
87
87
  _getFacetedUniqueValues?: () => Map<any, number>
88
- getFacetedMinMaxValues: () => [any, any]
89
- _getFacetedMinMaxValues?: () => [any, any]
88
+ getFacetedMinMaxValues: () => undefined | [number, number]
89
+ _getFacetedMinMaxValues?: () => undefined | [number, number]
90
90
  }
91
91
 
92
92
  export type FiltersRow<TGenerics extends TableGenerics> = {
@@ -125,13 +125,13 @@ export type FiltersOptions<TGenerics extends TableGenerics> = {
125
125
  getFacetedMinMaxValues?: (
126
126
  instance: TableInstance<TGenerics>,
127
127
  columnId: string
128
- ) => () => [number, number]
128
+ ) => () => undefined | [number, number]
129
129
  }
130
130
 
131
131
  export type FiltersInstance<TGenerics extends TableGenerics> = {
132
132
  setColumnFilters: (updater: Updater<ColumnFiltersState>) => void
133
133
 
134
- resetColumnFilters: () => void
134
+ resetColumnFilters: (defaultState?: boolean) => void
135
135
 
136
136
  // Column Filters
137
137
  getPreFilteredRowModel: () => RowModel<TGenerics>
@@ -140,15 +140,15 @@ export type FiltersInstance<TGenerics extends TableGenerics> = {
140
140
 
141
141
  // Global Filters
142
142
  setGlobalFilter: (updater: Updater<any>) => void
143
- resetGlobalFilter: () => void
143
+ resetGlobalFilter: (defaultState?: boolean) => void
144
144
  getGlobalAutoFilterFn: () => FilterFn<TGenerics> | undefined
145
145
  getGlobalFilterFn: () => FilterFn<TGenerics> | undefined
146
146
  getGlobalFacetedRowModel: () => RowModel<TGenerics>
147
147
  _getGlobalFacetedRowModel?: () => RowModel<TGenerics>
148
148
  getGlobalFacetedUniqueValues: () => Map<any, number>
149
149
  _getGlobalFacetedUniqueValues?: () => Map<any, number>
150
- getGlobalFacetedMinMaxValues: () => [number, number]
151
- _getGlobalFacetedMinMaxValues?: () => [number, number]
150
+ getGlobalFacetedMinMaxValues: () => undefined | [number, number]
151
+ _getGlobalFacetedMinMaxValues?: () => undefined | [number, number]
152
152
  }
153
153
 
154
154
  //
@@ -328,7 +328,7 @@ export const Filters: TableFeature = {
328
328
  instance.options.getFacetedMinMaxValues(instance, column.id),
329
329
  getFacetedMinMaxValues: () => {
330
330
  if (!column._getFacetedMinMaxValues) {
331
- return [NaN, NaN]
331
+ return undefined
332
332
  }
333
333
 
334
334
  return column._getFacetedMinMaxValues()
@@ -398,12 +398,16 @@ export const Filters: TableFeature = {
398
398
  instance.options.onGlobalFilterChange?.(updater)
399
399
  },
400
400
 
401
- resetGlobalFilter: () => {
402
- instance.setGlobalFilter(instance.initialState.globalFilter)
401
+ resetGlobalFilter: defaultState => {
402
+ instance.setGlobalFilter(
403
+ defaultState ? undefined : instance.initialState.globalFilter
404
+ )
403
405
  },
404
406
 
405
- resetColumnFilters: () => {
406
- instance.setColumnFilters(instance.initialState?.columnFilters ?? [])
407
+ resetColumnFilters: defaultState => {
408
+ instance.setColumnFilters(
409
+ defaultState ? [] : instance.initialState?.columnFilters ?? []
410
+ )
407
411
  },
408
412
 
409
413
  getPreFilteredRowModel: () => instance.getCoreRowModel(),
@@ -452,7 +456,7 @@ export const Filters: TableFeature = {
452
456
  instance.options.getFacetedMinMaxValues(instance, '__global__'),
453
457
  getGlobalFacetedMinMaxValues: () => {
454
458
  if (!instance._getGlobalFacetedMinMaxValues) {
455
- return [NaN, NaN]
459
+ return
456
460
  }
457
461
 
458
462
  return instance._getGlobalFacetedMinMaxValues()
@@ -99,7 +99,7 @@ export type GroupingColumnMode = false | 'reorder' | 'remove'
99
99
 
100
100
  export type GroupingInstance<TGenerics extends TableGenerics> = {
101
101
  setGrouping: (updater: Updater<GroupingState>) => void
102
- resetGrouping: () => void
102
+ resetGrouping: (defaultState?: boolean) => void
103
103
  getPreGroupedRowModel: () => RowModel<TGenerics>
104
104
  getGroupedRowModel: () => RowModel<TGenerics>
105
105
  _getGroupedRowModel?: () => RowModel<TGenerics>
@@ -214,8 +214,10 @@ export const Grouping: TableFeature = {
214
214
  return {
215
215
  setGrouping: updater => instance.options.onGroupingChange?.(updater),
216
216
 
217
- resetGrouping: () => {
218
- instance.setGrouping(instance.initialState?.grouping ?? [])
217
+ resetGrouping: defaultState => {
218
+ instance.setGrouping(
219
+ defaultState ? [] : instance.initialState?.grouping ?? []
220
+ )
219
221
  },
220
222
 
221
223
  getPreGroupedRowModel: () => instance.getSortedRowModel(),
@@ -27,7 +27,7 @@ export type ColumnOrderDefaultOptions = {
27
27
 
28
28
  export type ColumnOrderInstance<TGenerics extends TableGenerics> = {
29
29
  setColumnOrder: (updater: Updater<ColumnOrderState>) => void
30
- resetColumnOrder: () => void
30
+ resetColumnOrder: (defaultState?: boolean) => void
31
31
  _getOrderColumnsFn: () => (
32
32
  columns: Column<TGenerics>[]
33
33
  ) => Column<TGenerics>[]
@@ -57,8 +57,10 @@ export const Ordering: TableFeature = {
57
57
  return {
58
58
  setColumnOrder: updater =>
59
59
  instance.options.onColumnOrderChange?.(updater),
60
- resetColumnOrder: () => {
61
- instance.setColumnOrder(instance.initialState.columnOrder ?? [])
60
+ resetColumnOrder: defaultState => {
61
+ instance.setColumnOrder(
62
+ defaultState ? [] : instance.initialState.columnOrder ?? []
63
+ )
62
64
  },
63
65
  _getOrderColumnsFn: memo(
64
66
  () => [
@@ -11,7 +11,7 @@ import { functionalUpdate, makeStateUpdater, memo } from '../utils'
11
11
  export type PaginationState = {
12
12
  pageIndex: number
13
13
  pageSize: number
14
- pageCount: number
14
+ pageCount?: number
15
15
  }
16
16
 
17
17
  export type PaginationTableState = {
@@ -39,11 +39,11 @@ export type PaginationDefaultOptions = {
39
39
  export type PaginationInstance<TGenerics extends TableGenerics> = {
40
40
  _autoResetPageIndex: () => void
41
41
  setPagination: (updater: Updater<PaginationState>) => void
42
- resetPagination: () => void
42
+ resetPagination: (defaultState?: boolean) => void
43
43
  setPageIndex: (updater: Updater<number>) => void
44
- resetPageIndex: () => void
44
+ resetPageIndex: (defaultState?: boolean) => void
45
45
  setPageSize: (updater: Updater<number>) => void
46
- resetPageSize: () => void
46
+ resetPageSize: (defaultState?: boolean) => void
47
47
  setPageCount: (updater: Updater<number>) => void
48
48
  getPageOptions: () => number[]
49
49
  getCanPreviousPage: () => boolean
@@ -58,14 +58,20 @@ export type PaginationInstance<TGenerics extends TableGenerics> = {
58
58
 
59
59
  //
60
60
 
61
+ const defaultPageIndex = 0
62
+ const defaultPageSize = 10
63
+
64
+ const getDefaultPaginationState = (): PaginationState => ({
65
+ pageIndex: defaultPageIndex,
66
+ pageSize: defaultPageSize,
67
+ })
68
+
61
69
  export const Pagination: TableFeature = {
62
70
  getInitialState: (state): PaginationTableState => {
63
71
  return {
64
72
  ...state,
65
73
  pagination: {
66
- pageCount: -1,
67
- pageIndex: 0,
68
- pageSize: 10,
74
+ ...getDefaultPaginationState(),
69
75
  ...state?.pagination,
70
76
  },
71
77
  }
@@ -84,11 +90,14 @@ export const Pagination: TableFeature = {
84
90
  instance: TableInstance<TGenerics>
85
91
  ): PaginationInstance<TGenerics> => {
86
92
  let registered = false
93
+ let queued = false
87
94
 
88
95
  return {
89
96
  _autoResetPageIndex: () => {
90
97
  if (!registered) {
91
- registered = true
98
+ instance.queue(() => {
99
+ registered = true
100
+ })
92
101
  return
93
102
  }
94
103
 
@@ -100,7 +109,12 @@ export const Pagination: TableFeature = {
100
109
  instance.options.autoResetAll === true ||
101
110
  instance.options.autoResetPageIndex
102
111
  ) {
103
- instance.resetPageIndex()
112
+ if (queued) return
113
+ queued = true
114
+ instance.queue(() => {
115
+ instance.resetPageIndex()
116
+ queued = false
117
+ })
104
118
  }
105
119
  },
106
120
  setPagination: updater => {
@@ -112,13 +126,11 @@ export const Pagination: TableFeature = {
112
126
 
113
127
  return instance.options.onPaginationChange?.(safeUpdater)
114
128
  },
115
- resetPagination: () => {
129
+ resetPagination: defaultState => {
116
130
  instance.setPagination(
117
- instance.initialState.pagination ?? {
118
- pageIndex: 0,
119
- pageSize: 10,
120
- pageCount: -1,
121
- }
131
+ defaultState
132
+ ? getDefaultPaginationState()
133
+ : instance.initialState.pagination ?? getDefaultPaginationState()
122
134
  )
123
135
  },
124
136
  setPageIndex: updater => {
@@ -138,11 +150,19 @@ export const Pagination: TableFeature = {
138
150
  }
139
151
  })
140
152
  },
141
- resetPageIndex: () => {
142
- instance.setPageIndex(0)
153
+ resetPageIndex: defaultState => {
154
+ instance.setPageIndex(
155
+ defaultState
156
+ ? defaultPageIndex
157
+ : instance.initialState?.pagination?.pageIndex ?? defaultPageIndex
158
+ )
143
159
  },
144
- resetPageSize: () => {
145
- instance.setPageSize(instance.initialState?.pagination?.pageSize ?? 10)
160
+ resetPageSize: defaultState => {
161
+ instance.setPageSize(
162
+ defaultState
163
+ ? defaultPageSize
164
+ : instance.initialState?.pagination?.pageSize ?? defaultPageSize
165
+ )
146
166
  },
147
167
  setPageSize: updater => {
148
168
  instance.setPagination(old => {
@@ -159,7 +179,7 @@ export const Pagination: TableFeature = {
159
179
  },
160
180
  setPageCount: updater =>
161
181
  instance.setPagination(old => {
162
- let newPageCount = functionalUpdate(updater, old.pageCount)
182
+ let newPageCount = functionalUpdate(updater, old.pageCount ?? -1)
163
183
 
164
184
  if (typeof newPageCount === 'number') {
165
185
  newPageCount = Math.max(-1, newPageCount)
@@ -239,7 +259,8 @@ export const Pagination: TableFeature = {
239
259
 
240
260
  getPageCount: () => {
241
261
  const { pageCount } = instance.getState().pagination
242
- if (pageCount > 0) {
262
+
263
+ if (typeof pageCount !== 'undefined') {
243
264
  return pageCount
244
265
  }
245
266
 
@@ -49,7 +49,7 @@ export type ColumnPinningRow<TGenerics extends TableGenerics> = {
49
49
 
50
50
  export type ColumnPinningInstance<TGenerics extends TableGenerics> = {
51
51
  setColumnPinning: (updater: Updater<ColumnPinningState>) => void
52
- resetColumnPinning: () => void
52
+ resetColumnPinning: (defaultState?: boolean) => void
53
53
  getIsSomeColumnsPinned: () => boolean
54
54
  getLeftLeafColumns: () => Column<TGenerics>[]
55
55
  getRightLeafColumns: () => Column<TGenerics>[]
@@ -58,13 +58,15 @@ export type ColumnPinningInstance<TGenerics extends TableGenerics> = {
58
58
 
59
59
  //
60
60
 
61
+ const getDefaultPinningState = (): ColumnPinningState => ({
62
+ left: [],
63
+ right: [],
64
+ })
65
+
61
66
  export const Pinning: TableFeature = {
62
67
  getInitialState: (state): ColumnPinningTableState => {
63
68
  return {
64
- columnPinning: {
65
- left: [],
66
- right: [],
67
- },
69
+ columnPinning: getDefaultPinningState(),
68
70
  ...state,
69
71
  }
70
72
  },
@@ -220,8 +222,12 @@ export const Pinning: TableFeature = {
220
222
  setColumnPinning: updater =>
221
223
  instance.options.onColumnPinningChange?.(updater),
222
224
 
223
- resetColumnPinning: () =>
224
- instance.setColumnPinning(instance.initialState?.columnPinning ?? {}),
225
+ resetColumnPinning: defaultState =>
226
+ instance.setColumnPinning(
227
+ defaultState
228
+ ? getDefaultPinningState()
229
+ : instance.initialState?.columnPinning ?? getDefaultPinningState()
230
+ ),
225
231
 
226
232
  getIsSomeColumnsPinned: () => {
227
233
  const { left, right } = instance.getState().columnPinning
@@ -53,7 +53,7 @@ export type RowSelectionInstance<TGenerics extends TableGenerics> = {
53
53
  getToggleAllRowsSelectedHandler: () => (event: unknown) => void
54
54
  getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void
55
55
  setRowSelection: (updater: Updater<RowSelectionState>) => void
56
- resetRowSelection: () => void
56
+ resetRowSelection: (defaultState?: boolean) => void
57
57
  getIsAllRowsSelected: () => boolean
58
58
  getIsAllPageRowsSelected: () => boolean
59
59
  getIsSomeRowsSelected: () => boolean
@@ -96,8 +96,10 @@ export const RowSelection: TableFeature = {
96
96
  return {
97
97
  setRowSelection: updater =>
98
98
  instance.options.onRowSelectionChange?.(updater),
99
- resetRowSelection: () =>
100
- instance.setRowSelection(instance.initialState.rowSelection ?? {}),
99
+ resetRowSelection: defaultState =>
100
+ instance.setRowSelection(
101
+ defaultState ? {} : instance.initialState.rowSelection ?? {}
102
+ ),
101
103
  toggleAllRowsSelected: value => {
102
104
  instance.setRowSelection(old => {
103
105
  value =
@@ -62,7 +62,7 @@ export type SortingColumn<TGenerics extends TableGenerics> = {
62
62
  getCanMultiSort: () => boolean
63
63
  getSortIndex: () => number
64
64
  getIsSorted: () => false | SortDirection
65
- resetSorting: () => void
65
+ clearSorting: () => void
66
66
  toggleSorting: (desc?: boolean, isMulti?: boolean) => void
67
67
  getToggleSortingHandler: () => undefined | ((event: unknown) => void)
68
68
  }
@@ -85,6 +85,7 @@ export type SortingOptions<TGenerics extends TableGenerics> = {
85
85
 
86
86
  export type SortingInstance<TGenerics extends TableGenerics> = {
87
87
  setSorting: (updater: Updater<SortingState>) => void
88
+ resetSorting: (defaultState?: boolean) => void
88
89
  getPreSortedRowModel: () => RowModel<TGenerics>
89
90
  getSortedRowModel: () => RowModel<TGenerics>
90
91
  _getSortedRowModel?: () => RowModel<TGenerics>
@@ -304,14 +305,11 @@ export const Sorting: TableFeature = {
304
305
  getSortIndex: () =>
305
306
  instance.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,
306
307
 
307
- resetSorting: (columnId?: string) => {
308
- if (columnId) {
309
- instance.setSorting(old =>
310
- old?.length ? old.filter(d => d.id !== columnId) : []
311
- )
312
- } else {
313
- instance.setSorting(instance.initialState?.sorting ?? [])
314
- }
308
+ clearSorting: () => {
309
+ //clear sorting for just 1 column
310
+ instance.setSorting(old =>
311
+ old?.length ? old.filter(d => d.id !== column.id) : []
312
+ )
315
313
  },
316
314
 
317
315
  getToggleSortingHandler: () => {
@@ -338,7 +336,11 @@ export const Sorting: TableFeature = {
338
336
 
339
337
  return {
340
338
  setSorting: updater => instance.options.onSortingChange?.(updater),
341
-
339
+ resetSorting: defaultState => {
340
+ instance.setSorting(
341
+ defaultState ? [] : instance.initialState?.sorting ?? []
342
+ )
343
+ },
342
344
  getPreSortedRowModel: () => instance.getFilteredRowModel(),
343
345
  getSortedRowModel: () => {
344
346
  if (
@@ -32,6 +32,7 @@ export type VisibilityInstance<TGenerics extends TableGenerics> = {
32
32
  getRightVisibleLeafColumns: () => Column<TGenerics>[]
33
33
  getCenterVisibleLeafColumns: () => Column<TGenerics>[]
34
34
  setColumnVisibility: (updater: Updater<VisibilityState>) => void
35
+ resetColumnVisibility: (defaultState?: boolean) => void
35
36
  toggleAllColumnsVisible: (value?: boolean) => void
36
37
  getIsAllColumnsVisible: () => boolean
37
38
  getIsSomeColumnsVisible: () => boolean
@@ -202,6 +203,12 @@ export const Visibility: TableFeature = {
202
203
  setColumnVisibility: updater =>
203
204
  instance.options.onColumnVisibilityChange?.(updater),
204
205
 
206
+ resetColumnVisibility: defaultState => {
207
+ instance.setColumnVisibility(
208
+ defaultState ? {} : instance.initialState.columnVisibility ?? {}
209
+ )
210
+ },
211
+
205
212
  toggleAllColumnsVisible: value => {
206
213
  value = value ?? !instance.getIsAllColumnsVisible()
207
214
 
@@ -91,9 +91,7 @@ export function getCoreRowModel<TGenerics extends TableGenerics>(): (
91
91
  key: process.env.NODE_ENV === 'development' && 'getRowModel',
92
92
  debug: () => instance.options.debugAll ?? instance.options.debugTable,
93
93
  onChange: () => {
94
- instance.queue(() => {
95
- instance._autoResetPageIndex()
96
- })
94
+ instance._autoResetPageIndex()
97
95
  },
98
96
  }
99
97
  )
@@ -4,15 +4,18 @@ import { memo } from '../utils'
4
4
  export function getFacetedMinMaxValues<TGenerics extends TableGenerics>(): (
5
5
  instance: TableInstance<TGenerics>,
6
6
  columnId: string
7
- ) => () => [number, number] {
7
+ ) => () => undefined | [number, number] {
8
8
  return (instance, columnId) =>
9
9
  memo(
10
10
  () => [instance.getColumn(columnId).getFacetedRowModel()],
11
11
  facetedRowModel => {
12
- let facetedMinMaxValues: [any, any] = [
13
- facetedRowModel.flatRows[0]?.getValue(columnId) ?? null,
14
- facetedRowModel.flatRows[0]?.getValue(columnId) ?? null,
15
- ]
12
+ const firstValue = facetedRowModel.flatRows[0]?.getValue(columnId)
13
+
14
+ if (typeof firstValue === 'undefined') {
15
+ return undefined
16
+ }
17
+
18
+ let facetedMinMaxValues: [any, any] = [firstValue, firstValue]
16
19
 
17
20
  for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
18
21
  const value = facetedRowModel.flatRows[i]?.getValue(columnId)
@@ -141,9 +141,7 @@ export function getFilteredRowModel<TGenerics extends TableGenerics>(): (
141
141
  key: process.env.NODE_ENV === 'development' && 'getFilteredRowModel',
142
142
  debug: () => instance.options.debugAll ?? instance.options.debugTable,
143
143
  onChange: () => {
144
- instance.queue(() => {
145
- instance._autoResetPageIndex()
146
- })
144
+ instance._autoResetPageIndex()
147
145
  },
148
146
  }
149
147
  )
@@ -109,9 +109,7 @@ export function getSortedRowModel<TGenerics extends TableGenerics>(): (
109
109
  key: process.env.NODE_ENV === 'development' && 'getSortedRowModel',
110
110
  debug: () => instance.options.debugAll ?? instance.options.debugTable,
111
111
  onChange: () => {
112
- instance.queue(() => {
113
- instance._autoResetPageIndex()
114
- })
112
+ instance._autoResetPageIndex()
115
113
  },
116
114
  }
117
115
  )