@tanstack/react-table 8.0.0-alpha.6 → 8.0.0-alpha.9

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 (96) hide show
  1. package/build/cjs/core.js +66 -73
  2. package/build/cjs/core.js.map +1 -1
  3. package/build/cjs/createTable.js +47 -33
  4. package/build/cjs/createTable.js.map +1 -1
  5. package/build/cjs/features/ColumnSizing.js +23 -22
  6. package/build/cjs/features/ColumnSizing.js.map +1 -1
  7. package/build/cjs/features/Expanding.js +10 -22
  8. package/build/cjs/features/Expanding.js.map +1 -1
  9. package/build/cjs/features/Filters.js +27 -58
  10. package/build/cjs/features/Filters.js.map +1 -1
  11. package/build/cjs/features/Grouping.js +10 -27
  12. package/build/cjs/features/Grouping.js.map +1 -1
  13. package/build/cjs/features/Headers.js +108 -28
  14. package/build/cjs/features/Headers.js.map +1 -1
  15. package/build/cjs/features/Ordering.js +2 -2
  16. package/build/cjs/features/Ordering.js.map +1 -1
  17. package/build/cjs/features/Pagination.js +24 -29
  18. package/build/cjs/features/Pagination.js.map +1 -1
  19. package/build/cjs/features/Pinning.js.map +1 -1
  20. package/build/cjs/features/RowSelection.js +23 -38
  21. package/build/cjs/features/RowSelection.js.map +1 -1
  22. package/build/cjs/features/Sorting.js +10 -22
  23. package/build/cjs/features/Sorting.js.map +1 -1
  24. package/build/cjs/features/Visibility.js +10 -2
  25. package/build/cjs/features/Visibility.js.map +1 -1
  26. package/build/cjs/filterTypes.js.map +1 -1
  27. package/build/cjs/index.js +12 -0
  28. package/build/cjs/index.js.map +1 -1
  29. package/build/cjs/sortTypes.js.map +1 -1
  30. package/build/cjs/types.js +22 -0
  31. package/build/cjs/types.js.map +1 -0
  32. package/build/cjs/utils/columnFilterRowsFn.js.map +1 -1
  33. package/build/cjs/utils/expandRowsFn.js.map +1 -1
  34. package/build/cjs/utils/globalFilterRowsFn.js.map +1 -1
  35. package/build/cjs/utils/groupRowsFn.js.map +1 -1
  36. package/build/cjs/utils/paginateRowsFn.js.map +1 -1
  37. package/build/cjs/utils/sortRowsFn.js.map +1 -1
  38. package/build/cjs/utils.js +44 -18
  39. package/build/cjs/utils.js.map +1 -1
  40. package/build/esm/index.js +1388 -1355
  41. package/build/esm/index.js.map +1 -1
  42. package/build/stats-html.html +1 -1
  43. package/build/stats-react.json +337 -307
  44. package/build/types/core.d.ts +63 -67
  45. package/build/types/createTable.d.ts +34 -44
  46. package/build/types/features/ColumnSizing.d.ts +13 -7
  47. package/build/types/features/Expanding.d.ts +11 -16
  48. package/build/types/features/Filters.d.ts +39 -47
  49. package/build/types/features/Grouping.d.ts +28 -27
  50. package/build/types/features/Headers.d.ts +30 -30
  51. package/build/types/features/Ordering.d.ts +5 -5
  52. package/build/types/features/Pagination.d.ts +11 -16
  53. package/build/types/features/Pinning.d.ts +5 -5
  54. package/build/types/features/RowSelection.d.ts +15 -23
  55. package/build/types/features/Sorting.d.ts +26 -25
  56. package/build/types/features/Visibility.d.ts +9 -9
  57. package/build/types/filterTypes.d.ts +10 -10
  58. package/build/types/index.d.ts +1 -0
  59. package/build/types/sortTypes.d.ts +7 -7
  60. package/build/types/types.d.ts +34 -23
  61. package/build/types/utils/columnFilterRowsFn.d.ts +2 -2
  62. package/build/types/utils/expandRowsFn.d.ts +2 -2
  63. package/build/types/utils/globalFilterRowsFn.d.ts +2 -2
  64. package/build/types/utils/groupRowsFn.d.ts +2 -2
  65. package/build/types/utils/paginateRowsFn.d.ts +2 -2
  66. package/build/types/utils/sortRowsFn.d.ts +2 -2
  67. package/build/types/utils.d.ts +5 -6
  68. package/build/umd/index.development.js +1397 -1354
  69. package/build/umd/index.development.js.map +1 -1
  70. package/build/umd/index.production.js +1 -1
  71. package/build/umd/index.production.js.map +1 -1
  72. package/package.json +1 -1
  73. package/src/core.tsx +192 -520
  74. package/src/createTable.tsx +137 -192
  75. package/src/features/ColumnSizing.ts +48 -77
  76. package/src/features/Expanding.ts +25 -113
  77. package/src/features/Filters.ts +91 -293
  78. package/src/features/Grouping.ts +60 -165
  79. package/src/features/Headers.ts +148 -331
  80. package/src/features/Ordering.ts +19 -42
  81. package/src/features/Pagination.ts +35 -110
  82. package/src/features/Pinning.ts +16 -40
  83. package/src/features/RowSelection.ts +47 -227
  84. package/src/features/Sorting.ts +49 -143
  85. package/src/features/Visibility.ts +23 -64
  86. package/src/filterTypes.ts +19 -82
  87. package/src/index.tsx +1 -0
  88. package/src/sortTypes.ts +19 -31
  89. package/src/types.ts +80 -100
  90. package/src/utils/columnFilterRowsFn.ts +11 -53
  91. package/src/utils/expandRowsFn.ts +7 -27
  92. package/src/utils/globalFilterRowsFn.ts +10 -43
  93. package/src/utils/groupRowsFn.ts +13 -37
  94. package/src/utils/paginateRowsFn.ts +5 -11
  95. package/src/utils/sortRowsFn.ts +8 -28
  96. package/src/utils.tsx +61 -35
@@ -1,6 +1,12 @@
1
1
  import { functionalUpdate, makeStateUpdater, memo } from '../utils'
2
2
 
3
- import { ReactTable, OnChangeFn, Updater, Column } from '../types'
3
+ import {
4
+ TableInstance,
5
+ OnChangeFn,
6
+ Updater,
7
+ Column,
8
+ PartialGenerics,
9
+ } from '../types'
4
10
 
5
11
  import * as Grouping from './Grouping'
6
12
 
@@ -18,18 +24,10 @@ export type ColumnOrderDefaultOptions = {
18
24
  onColumnOrderChange: OnChangeFn<ColumnOrderState>
19
25
  }
20
26
 
21
- export type ColumnOrderInstance<
22
- TData,
23
- TValue,
24
- TFilterFns,
25
- TSortingFns,
26
- TAggregationFns
27
- > = {
27
+ export type ColumnOrderInstance<TGenerics extends PartialGenerics> = {
28
28
  setColumnOrder: (updater: Updater<ColumnOrderState>) => void
29
29
  resetColumnOrder: () => void
30
- getOrderColumnsFn: () => (
31
- columns: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
32
- ) => Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
30
+ getOrderColumnsFn: () => (columns: Column<TGenerics>[]) => Column<TGenerics>[]
33
31
  }
34
32
 
35
33
  //
@@ -40,35 +38,17 @@ export function getInitialState(): ColumnOrderTableState {
40
38
  }
41
39
  }
42
40
 
43
- export function getDefaultOptions<
44
- TData,
45
- TValue,
46
- TFilterFns,
47
- TSortingFns,
48
- TAggregationFns
49
- >(
50
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
41
+ export function getDefaultOptions<TGenerics extends PartialGenerics>(
42
+ instance: TableInstance<TGenerics>
51
43
  ): ColumnOrderDefaultOptions {
52
44
  return {
53
45
  onColumnOrderChange: makeStateUpdater('columnOrder', instance),
54
46
  }
55
47
  }
56
48
 
57
- export function getInstance<
58
- TData,
59
- TValue,
60
- TFilterFns,
61
- TSortingFns,
62
- TAggregationFns
63
- >(
64
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
65
- ): ColumnOrderInstance<
66
- TData,
67
- TValue,
68
- TFilterFns,
69
- TSortingFns,
70
- TAggregationFns
71
- > {
49
+ export function getInstance<TGenerics extends PartialGenerics>(
50
+ instance: TableInstance<TGenerics>
51
+ ): ColumnOrderInstance<TGenerics> {
72
52
  return {
73
53
  setColumnOrder: updater =>
74
54
  instance.options.onColumnOrderChange?.(
@@ -87,13 +67,7 @@ export function getInstance<
87
67
  (columnOrder, grouping, groupedColumnMode) => columns => {
88
68
  // Sort grouped columns to the start of the column list
89
69
  // before the headers are built
90
- let orderedColumns: Column<
91
- TData,
92
- TValue,
93
- TFilterFns,
94
- TSortingFns,
95
- TAggregationFns
96
- >[] = []
70
+ let orderedColumns: Column<TGenerics>[] = []
97
71
 
98
72
  // If there is no order, return the normal columns
99
73
  if (!columnOrder?.length) {
@@ -127,7 +101,10 @@ export function getInstance<
127
101
  groupedColumnMode
128
102
  )
129
103
  },
130
- { key: 'getOrderColumnsFn', debug: instance.options.debug }
104
+ {
105
+ key: 'getOrderColumnsFn',
106
+ // debug: () => instance.options.debugAll ?? instance.options.debugTable,
107
+ }
131
108
  ),
132
109
  }
133
110
  }
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  Column,
3
3
  OnChangeFn,
4
- ReactTable,
4
+ PartialGenerics,
5
+ TableInstance,
5
6
  Row,
6
7
  RowModel,
7
8
  TableState,
@@ -9,37 +10,23 @@ import {
9
10
  } from '../types'
10
11
  import { functionalUpdate, makeStateUpdater, memo } from '../utils'
11
12
 
12
- export type PageCount = undefined | null | number
13
-
14
13
  export type PaginationState = {
15
14
  pageIndex: number
16
15
  pageSize: number
17
- pageCount?: PageCount
16
+ pageCount: number
18
17
  }
19
18
 
20
19
  export type PaginationTableState = {
21
20
  pagination: PaginationState
22
21
  }
23
22
 
24
- export type PaginationOptions<
25
- TData,
26
- TValue,
27
- TFilterFns,
28
- TSortingFns,
29
- TAggregationFns
30
- > = {
23
+ export type PaginationOptions<TGenerics extends PartialGenerics> = {
31
24
  onPaginationChange?: OnChangeFn<PaginationState>
32
25
  autoResetPageIndex?: boolean
33
26
  paginateRowsFn?: (
34
- instance: ReactTable<
35
- TData,
36
- TValue,
37
- TFilterFns,
38
- TSortingFns,
39
- TAggregationFns
40
- >,
41
- rowModel: RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
42
- ) => RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
27
+ instance: TableInstance<TGenerics>,
28
+ rowModel: RowModel<TGenerics>
29
+ ) => RowModel<TGenerics>
43
30
  }
44
31
 
45
32
  export type PaginationDefaultOptions = {
@@ -47,13 +34,7 @@ export type PaginationDefaultOptions = {
47
34
  autoResetPageIndex: boolean
48
35
  }
49
36
 
50
- export type PaginationInstance<
51
- TData,
52
- TValue,
53
- TFilterFns,
54
- TSortingFns,
55
- TAggregationFns
56
- > = {
37
+ export type PaginationInstance<TGenerics extends PartialGenerics> = {
57
38
  _notifyPageIndexReset: () => void
58
39
  setPagination: (updater: Updater<PaginationState>) => void
59
40
  resetPagination: () => void
@@ -61,55 +42,15 @@ export type PaginationInstance<
61
42
  resetPageIndex: () => void
62
43
  setPageSize: (updater: Updater<number>) => void
63
44
  resetPageSize: () => void
64
- setPageCount: (updater: Updater<PageCount>) => void
45
+ setPageCount: (updater: Updater<number>) => void
65
46
  getPageOptions: () => number[]
66
47
  getCanPreviousPage: () => boolean
67
48
  getCanNextPage: () => boolean
68
49
  previousPage: () => void
69
50
  nextPage: () => void
70
- getPaginationRowModel: () => RowModel<
71
- TData,
72
- TValue,
73
- TFilterFns,
74
- TSortingFns,
75
- TAggregationFns
76
- >
77
- getPrePaginationRows: () => Row<
78
- TData,
79
- TValue,
80
- TFilterFns,
81
- TSortingFns,
82
- TAggregationFns
83
- >[]
84
- getPrePaginationFlatRows: () => Row<
85
- TData,
86
- TValue,
87
- TFilterFns,
88
- TSortingFns,
89
- TAggregationFns
90
- >[]
91
- getPrePaginationRowsById: () => Record<
92
- string,
93
- Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
94
- >
95
- getPaginationRows: () => Row<
96
- TData,
97
- TValue,
98
- TFilterFns,
99
- TSortingFns,
100
- TAggregationFns
101
- >[]
102
- getPaginationFlatRows: () => Row<
103
- TData,
104
- TValue,
105
- TFilterFns,
106
- TSortingFns,
107
- TAggregationFns
108
- >[]
109
- getPaginationRowsById: () => Record<
110
- string,
111
- Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
112
- >
51
+ getPrePaginationRowModel: () => RowModel<TGenerics>
52
+ getPaginationRowModel: () => RowModel<TGenerics>
53
+ getPageCount: () => number
113
54
  }
114
55
 
115
56
  //
@@ -117,20 +58,15 @@ export type PaginationInstance<
117
58
  export function getInitialState(): PaginationTableState {
118
59
  return {
119
60
  pagination: {
61
+ pageCount: -1,
120
62
  pageIndex: 0,
121
63
  pageSize: 10,
122
64
  },
123
65
  }
124
66
  }
125
67
 
126
- export function getDefaultOptions<
127
- TData,
128
- TValue,
129
- TFilterFns,
130
- TSortingFns,
131
- TAggregationFns
132
- >(
133
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
68
+ export function getDefaultOptions<TGenerics extends PartialGenerics>(
69
+ instance: TableInstance<TGenerics>
134
70
  ): PaginationDefaultOptions {
135
71
  return {
136
72
  onPaginationChange: makeStateUpdater('pagination', instance),
@@ -138,15 +74,9 @@ export function getDefaultOptions<
138
74
  }
139
75
  }
140
76
 
141
- export function getInstance<
142
- TData,
143
- TValue,
144
- TFilterFns,
145
- TSortingFns,
146
- TAggregationFns
147
- >(
148
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
149
- ): PaginationInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
77
+ export function getInstance<TGenerics extends PartialGenerics>(
78
+ instance: TableInstance<TGenerics>
79
+ ): PaginationInstance<TGenerics> {
150
80
  let registered = false
151
81
  return {
152
82
  _notifyPageIndexReset: () => {
@@ -163,22 +93,13 @@ export function getInstance<
163
93
  instance.options.autoResetAll === true ||
164
94
  instance.options.autoResetPageIndex
165
95
  ) {
166
- instance.resetPageSize()
96
+ instance.resetPageIndex()
167
97
  }
168
98
  },
169
99
  setPagination: updater => {
170
100
  const safeUpdater: Updater<PaginationState> = old => {
171
101
  let newState = functionalUpdate(updater, old)
172
102
 
173
- if (instance.options.paginateRowsFn) {
174
- newState.pageCount = instance.getPrePaginationRows()?.length
175
- ? Math.ceil(
176
- instance.getPrePaginationRows().length /
177
- instance.getState().pagination.pageSize
178
- )
179
- : 0
180
- }
181
-
182
103
  return newState
183
104
  }
184
105
 
@@ -260,7 +181,7 @@ export function getInstance<
260
181
  },
261
182
  {
262
183
  key: 'getPageOptions',
263
- debug: instance.options.debug,
184
+ debug: () => instance.options.debugAll ?? instance.options.debugTable,
264
185
  }
265
186
  ),
266
187
 
@@ -279,7 +200,8 @@ export function getInstance<
279
200
 
280
201
  return (
281
202
  pageIndex <
282
- Math.ceil(instance.getPrePaginationRows().length / pageSize) - 1
203
+ Math.ceil(instance.getPrePaginationRowModel().rows.length / pageSize) -
204
+ 1
283
205
  )
284
206
  },
285
207
 
@@ -293,6 +215,7 @@ export function getInstance<
293
215
  })
294
216
  },
295
217
 
218
+ getPrePaginationRowModel: () => instance.getExpandedRowModel(),
296
219
  getPaginationRowModel: memo(
297
220
  () => [
298
221
  instance.getState().pagination,
@@ -304,22 +227,24 @@ export function getInstance<
304
227
  return rowModel
305
228
  }
306
229
 
307
- if (process.env.NODE_ENV !== 'production' && instance.options.debug)
308
- console.info('Paginating...')
309
-
310
230
  return paginateRowsFn(instance, rowModel)
311
231
  },
312
232
  {
313
233
  key: 'getPaginationRowModel',
314
- debug: instance.options.debug,
234
+ debug: () => instance.options.debugAll ?? instance.options.debugTable,
315
235
  }
316
236
  ),
317
237
 
318
- getPrePaginationRows: () => instance.getExpandedRowModel().rows,
319
- getPrePaginationFlatRows: () => instance.getExpandedRowModel().flatRows,
320
- getPrePaginationRowsById: () => instance.getExpandedRowModel().rowsById,
321
- getPaginationRows: () => instance.getPaginationRowModel().rows,
322
- getPaginationFlatRows: () => instance.getPaginationRowModel().flatRows,
323
- getPaginationRowsById: () => instance.getPaginationRowModel().rowsById,
238
+ getPageCount: () => {
239
+ const { pageCount } = instance.getState().pagination
240
+ if (pageCount > 0) {
241
+ return pageCount
242
+ }
243
+
244
+ return Math.ceil(
245
+ instance.getPrePaginationRowModel().rows.length /
246
+ instance.getState().pagination.pageSize
247
+ )
248
+ },
324
249
  }
325
250
  }
@@ -1,4 +1,10 @@
1
- import { OnChangeFn, Updater, ReactTable, Column } from '../types'
1
+ import {
2
+ OnChangeFn,
3
+ Updater,
4
+ TableInstance,
5
+ Column,
6
+ PartialGenerics,
7
+ } from '../types'
2
8
  import { functionalUpdate, makeStateUpdater } from '../utils'
3
9
 
4
10
  type ColumnPinningPosition = false | 'left' | 'right'
@@ -33,13 +39,7 @@ export type ColumnPinningColumn = {
33
39
  pin: (position: ColumnPinningPosition) => void
34
40
  }
35
41
 
36
- export type ColumnPinningInstance<
37
- _TData,
38
- _TValue,
39
- _TFilterFns,
40
- _TSortingFns,
41
- _TAggregationFns
42
- > = {
42
+ export type ColumnPinningInstance<TGenerics extends PartialGenerics> = {
43
43
  setColumnPinning: (updater: Updater<ColumnPinningState>) => void
44
44
  resetColumnPinning: () => void
45
45
  pinColumn: (columnId: string, position: ColumnPinningPosition) => void
@@ -59,29 +59,17 @@ export function getInitialState(): ColumnPinningTableState {
59
59
  }
60
60
  }
61
61
 
62
- export function getDefaultOptions<
63
- TData,
64
- TValue,
65
- TFilterFns,
66
- TSortingFns,
67
- TAggregationFns
68
- >(
69
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
62
+ export function getDefaultOptions<TGenerics extends PartialGenerics>(
63
+ instance: TableInstance<TGenerics>
70
64
  ): ColumnPinningDefaultOptions {
71
65
  return {
72
66
  onColumnPinningChange: makeStateUpdater('columnPinning', instance),
73
67
  }
74
68
  }
75
69
 
76
- export function createColumn<
77
- TData,
78
- TValue,
79
- TFilterFns,
80
- TSortingFns,
81
- TAggregationFns
82
- >(
83
- column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
84
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
70
+ export function createColumn<TGenerics extends PartialGenerics>(
71
+ column: Column<TGenerics>,
72
+ instance: TableInstance<TGenerics>
85
73
  ): ColumnPinningColumn {
86
74
  return {
87
75
  getCanPin: () => instance.getColumnCanPin(column.id),
@@ -91,21 +79,9 @@ export function createColumn<
91
79
  }
92
80
  }
93
81
 
94
- export function getInstance<
95
- TData,
96
- TValue,
97
- TFilterFns,
98
- TSortingFns,
99
- TAggregationFns
100
- >(
101
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
102
- ): ColumnPinningInstance<
103
- TData,
104
- TValue,
105
- TFilterFns,
106
- TSortingFns,
107
- TAggregationFns
108
- > {
82
+ export function getInstance<TGenerics extends PartialGenerics>(
83
+ instance: TableInstance<TGenerics>
84
+ ): ColumnPinningInstance<TGenerics> {
109
85
  return {
110
86
  setColumnPinning: updater =>
111
87
  instance.options.onColumnPinningChange?.(