@tanstack/table-core 8.0.0-alpha.70 → 8.0.0-alpha.73

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 (52) hide show
  1. package/build/cjs/core.js +2 -2
  2. package/build/cjs/core.js.map +1 -1
  3. package/build/cjs/features/Cells.js +1 -1
  4. package/build/cjs/features/Cells.js.map +1 -1
  5. package/build/cjs/features/ColumnSizing.js +4 -4
  6. package/build/cjs/features/ColumnSizing.js.map +1 -1
  7. package/build/cjs/features/Expanding.js +12 -2
  8. package/build/cjs/features/Expanding.js.map +1 -1
  9. package/build/cjs/features/Filters.js +2 -2
  10. package/build/cjs/features/Filters.js.map +1 -1
  11. package/build/cjs/features/Grouping.js +1 -1
  12. package/build/cjs/features/Grouping.js.map +1 -1
  13. package/build/cjs/features/Headers.js +2 -2
  14. package/build/cjs/features/Headers.js.map +1 -1
  15. package/build/cjs/features/Pagination.js +16 -9
  16. package/build/cjs/features/Pagination.js.map +1 -1
  17. package/build/cjs/utils/getCoreRowModel.js +1 -3
  18. package/build/cjs/utils/getCoreRowModel.js.map +1 -1
  19. package/build/cjs/utils/getFacetedMinMaxValues.js +10 -4
  20. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
  21. package/build/cjs/utils/getFilteredRowModel.js +1 -3
  22. package/build/cjs/utils/getFilteredRowModel.js.map +1 -1
  23. package/build/cjs/utils/getGroupedRowModel.js +1 -1
  24. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  25. package/build/cjs/utils/getSortedRowModel.js +1 -3
  26. package/build/cjs/utils/getSortedRowModel.js.map +1 -1
  27. package/build/esm/index.js +54 -37
  28. package/build/esm/index.js.map +1 -1
  29. package/build/stats-html.html +1 -1
  30. package/build/stats-react.json +317 -317
  31. package/build/types/core.d.ts +2 -3
  32. package/build/types/features/Filters.d.ts +5 -5
  33. package/build/types/features/Pagination.d.ts +0 -1
  34. package/build/types/utils/getFacetedMinMaxValues.d.ts +1 -1
  35. package/build/umd/index.development.js +54 -37
  36. package/build/umd/index.development.js.map +1 -1
  37. package/build/umd/index.production.js +1 -1
  38. package/build/umd/index.production.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/core.ts +6 -6
  41. package/src/features/Cells.ts +1 -1
  42. package/src/features/ColumnSizing.ts +4 -4
  43. package/src/features/Expanding.ts +10 -2
  44. package/src/features/Filters.ts +7 -7
  45. package/src/features/Grouping.ts +1 -1
  46. package/src/features/Headers.ts +2 -2
  47. package/src/features/Pagination.ts +14 -11
  48. package/src/utils/getCoreRowModel.ts +1 -3
  49. package/src/utils/getFacetedMinMaxValues.ts +8 -5
  50. package/src/utils/getFilteredRowModel.ts +1 -3
  51. package/src/utils/getGroupedRowModel.ts +1 -1
  52. 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.70",
4
+ "version": "8.0.0-alpha.73",
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",
package/src/core.ts CHANGED
@@ -44,8 +44,8 @@ export type CoreOptions<TGenerics extends TableGenerics> = {
44
44
  initialState?: InitialTableState
45
45
  autoResetAll?: boolean
46
46
  mergeOptions?: <T>(defaultOptions: T, options: Partial<T>) => T
47
- keepPreviousData?: boolean
48
47
  meta?: TGenerics['TableMeta']
48
+ // keepPreviousData?: boolean
49
49
  }
50
50
 
51
51
  export type CoreInstance<TGenerics extends TableGenerics> = {
@@ -54,20 +54,20 @@ export type CoreInstance<TGenerics extends TableGenerics> = {
54
54
  reset: () => void
55
55
  options: RequiredKeys<TableOptions<TGenerics>, 'state'>
56
56
  setOptions: (newOptions: Updater<TableOptions<TGenerics>>) => void
57
- queue: (cb: () => void) => void
58
57
  getState: () => TableState
59
58
  setState: (updater: Updater<TableState>) => void
60
- render: <TProps>(
59
+ _queue: (cb: () => void) => void
60
+ _render: <TProps>(
61
61
  template: Renderable<TGenerics, TProps>,
62
62
  props: TProps
63
63
  ) => string | null | TGenerics['Rendered']
64
+ _features: readonly TableFeature[]
64
65
  // getOverallProgress: () => number
65
66
  // getProgressStage: () =>
66
67
  // | undefined
67
68
  // | 'coreRowModel'
68
69
  // | 'filteredRowModel'
69
70
  // | 'facetedRowModel'
70
- _features: readonly TableFeature[]
71
71
  // createBatch: (priority: keyof CoreBatches) => Batch
72
72
  // init: () => void
73
73
  // willUpdate: () => void
@@ -231,7 +231,7 @@ export function createTableInstance<TGenerics extends TableGenerics>(
231
231
  ...options,
232
232
  },
233
233
  initialState,
234
- queue: cb => {
234
+ _queue: cb => {
235
235
  queued.push(cb)
236
236
 
237
237
  if (!queuedTimeout) {
@@ -297,7 +297,7 @@ export function createTableInstance<TGenerics extends TableGenerics>(
297
297
  const newOptions = functionalUpdate(updater, instance.options)
298
298
  instance.options = mergeOptions(newOptions)
299
299
  },
300
- render: (template, props) => {
300
+ _render: (template, props) => {
301
301
  if (typeof instance.options.render === 'function') {
302
302
  return instance.options.render(template, props)
303
303
  }
@@ -75,7 +75,7 @@ export const Cells = {
75
75
  getValue: () => row.getValue(columnId),
76
76
  renderCell: () =>
77
77
  column.cell
78
- ? instance.render(column.cell, {
78
+ ? instance._render(column.cell, {
79
79
  instance,
80
80
  column,
81
81
  row,
@@ -370,19 +370,19 @@ export const ColumnSizing: TableFeature = {
370
370
  },
371
371
  getTotalSize: () =>
372
372
  instance.getHeaderGroups()[0]?.headers.reduce((sum, header) => {
373
- return sum + header.column.getSize()
373
+ return sum + header.getSize()
374
374
  }, 0) ?? 0,
375
375
  getLeftTotalSize: () =>
376
376
  instance.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {
377
- return sum + header.column.getSize()
377
+ return sum + header.getSize()
378
378
  }, 0) ?? 0,
379
379
  getCenterTotalSize: () =>
380
380
  instance.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {
381
- return sum + header.column.getSize()
381
+ return sum + header.getSize()
382
382
  }, 0) ?? 0,
383
383
  getRightTotalSize: () =>
384
384
  instance.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {
385
- return sum + header.column.getSize()
385
+ return sum + header.getSize()
386
386
  }, 0) ?? 0,
387
387
  }
388
388
  },
@@ -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),
@@ -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,7 +125,7 @@ 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> = {
@@ -147,8 +147,8 @@ export type FiltersInstance<TGenerics extends TableGenerics> = {
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()
@@ -456,7 +456,7 @@ export const Filters: TableFeature = {
456
456
  instance.options.getFacetedMinMaxValues(instance, '__global__'),
457
457
  getGlobalFacetedMinMaxValues: () => {
458
458
  if (!instance._getGlobalFacetedMinMaxValues) {
459
- return [NaN, NaN]
459
+ return
460
460
  }
461
461
 
462
462
  return instance._getGlobalFacetedMinMaxValues()
@@ -267,7 +267,7 @@ export const Grouping: TableFeature = {
267
267
  const template = column.aggregatedCell ?? column.cell
268
268
 
269
269
  return template
270
- ? instance.render(template, {
270
+ ? instance._render(template, {
271
271
  instance,
272
272
  column,
273
273
  row,
@@ -88,7 +88,7 @@ export const Headers = {
88
88
  },
89
89
  renderHeader: () =>
90
90
  column.header
91
- ? instance.render(column.header, {
91
+ ? instance._render(column.header, {
92
92
  instance,
93
93
  header: header as Header<TGenerics>,
94
94
  column,
@@ -96,7 +96,7 @@ export const Headers = {
96
96
  : null,
97
97
  renderFooter: () =>
98
98
  column.footer
99
- ? instance.render(column.footer, {
99
+ ? instance._render(column.footer, {
100
100
  instance,
101
101
  header: header as Header<TGenerics>,
102
102
  column,
@@ -33,7 +33,6 @@ export type PaginationOptions<TGenerics extends TableGenerics> = {
33
33
 
34
34
  export type PaginationDefaultOptions = {
35
35
  onPaginationChange: OnChangeFn<PaginationState>
36
- autoResetPageIndex: boolean
37
36
  }
38
37
 
39
38
  export type PaginationInstance<TGenerics extends TableGenerics> = {
@@ -82,7 +81,6 @@ export const Pagination: TableFeature = {
82
81
  ): PaginationDefaultOptions => {
83
82
  return {
84
83
  onPaginationChange: makeStateUpdater('pagination', instance),
85
- autoResetPageIndex: true,
86
84
  }
87
85
  },
88
86
 
@@ -90,23 +88,28 @@ export const Pagination: TableFeature = {
90
88
  instance: TableInstance<TGenerics>
91
89
  ): PaginationInstance<TGenerics> => {
92
90
  let registered = false
91
+ let queued = false
93
92
 
94
93
  return {
95
94
  _autoResetPageIndex: () => {
96
95
  if (!registered) {
97
- registered = true
98
- return
99
- }
100
-
101
- if (instance.options.autoResetAll === false) {
96
+ instance._queue(() => {
97
+ registered = true
98
+ })
102
99
  return
103
100
  }
104
101
 
105
102
  if (
106
- instance.options.autoResetAll === true ||
107
- instance.options.autoResetPageIndex
103
+ instance.options.autoResetAll ??
104
+ instance.options.autoResetPageIndex ??
105
+ !instance.options.manualPagination
108
106
  ) {
109
- instance.resetPageIndex()
107
+ if (queued) return
108
+ queued = true
109
+ instance._queue(() => {
110
+ instance.resetPageIndex()
111
+ queued = false
112
+ })
110
113
  }
111
114
  },
112
115
  setPagination: updater => {
@@ -130,7 +133,7 @@ export const Pagination: TableFeature = {
130
133
  let pageIndex = functionalUpdate(updater, old.pageIndex)
131
134
 
132
135
  const maxPageIndex =
133
- old.pageCount && old.pageCount > 0
136
+ typeof old.pageCount !== 'undefined'
134
137
  ? old.pageCount - 1
135
138
  : Number.MAX_SAFE_INTEGER
136
139
 
@@ -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
  )
@@ -155,7 +155,7 @@ export function getGroupedRowModel<TGenerics extends TableGenerics>(): (
155
155
  key: process.env.NODE_ENV === 'development' && 'getGroupedRowModel',
156
156
  debug: () => instance.options.debugAll ?? instance.options.debugTable,
157
157
  onChange: () => {
158
- instance.queue(() => {
158
+ instance._queue(() => {
159
159
  instance._autoResetExpanded()
160
160
  instance._autoResetPageIndex()
161
161
  })
@@ -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
  )