@tanstack/react-table 8.0.0-alpha.2 → 8.0.0-alpha.20

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 (99) hide show
  1. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -78
  2. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  3. package/build/cjs/index.js +96 -12
  4. package/build/cjs/index.js.map +1 -1
  5. package/build/esm/index.js +40 -3663
  6. package/build/esm/index.js.map +1 -1
  7. package/build/stats-html.html +1 -1
  8. package/build/stats-react.json +28 -676
  9. package/build/types/index.d.ts +13 -7
  10. package/build/umd/index.development.js +50 -3665
  11. package/build/umd/index.development.js.map +1 -1
  12. package/build/umd/index.production.js +1 -1
  13. package/build/umd/index.production.js.map +1 -1
  14. package/package.json +4 -1
  15. package/src/index.tsx +104 -7
  16. package/build/cjs/aggregationTypes.js +0 -130
  17. package/build/cjs/aggregationTypes.js.map +0 -1
  18. package/build/cjs/core.js +0 -519
  19. package/build/cjs/core.js.map +0 -1
  20. package/build/cjs/createTable.js +0 -103
  21. package/build/cjs/createTable.js.map +0 -1
  22. package/build/cjs/features/ColumnSizing.js +0 -331
  23. package/build/cjs/features/ColumnSizing.js.map +0 -1
  24. package/build/cjs/features/Expanding.js +0 -234
  25. package/build/cjs/features/Expanding.js.map +0 -1
  26. package/build/cjs/features/Filters.js +0 -396
  27. package/build/cjs/features/Filters.js.map +0 -1
  28. package/build/cjs/features/Grouping.js +0 -228
  29. package/build/cjs/features/Grouping.js.map +0 -1
  30. package/build/cjs/features/Headers.js +0 -486
  31. package/build/cjs/features/Headers.js.map +0 -1
  32. package/build/cjs/features/Ordering.js +0 -83
  33. package/build/cjs/features/Ordering.js.map +0 -1
  34. package/build/cjs/features/Pinning.js +0 -163
  35. package/build/cjs/features/Pinning.js.map +0 -1
  36. package/build/cjs/features/Sorting.js +0 -269
  37. package/build/cjs/features/Sorting.js.map +0 -1
  38. package/build/cjs/features/Visibility.js +0 -160
  39. package/build/cjs/features/Visibility.js.map +0 -1
  40. package/build/cjs/filterTypes.js +0 -172
  41. package/build/cjs/filterTypes.js.map +0 -1
  42. package/build/cjs/sortTypes.js +0 -121
  43. package/build/cjs/sortTypes.js.map +0 -1
  44. package/build/cjs/utils/columnFilterRowsFn.js +0 -130
  45. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  46. package/build/cjs/utils/expandRowsFn.js +0 -38
  47. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  48. package/build/cjs/utils/globalFilterRowsFn.js +0 -100
  49. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  50. package/build/cjs/utils/groupRowsFn.js +0 -154
  51. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  52. package/build/cjs/utils/sortRowsFn.js +0 -93
  53. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  54. package/build/cjs/utils.js +0 -143
  55. package/build/cjs/utils.js.map +0 -1
  56. package/build/types/aggregationTypes.d.ts +0 -22
  57. package/build/types/core.d.ts +0 -126
  58. package/build/types/createTable.d.ts +0 -35
  59. package/build/types/features/ColumnSizing.d.ts +0 -73
  60. package/build/types/features/Expanding.d.ts +0 -52
  61. package/build/types/features/Filters.d.ts +0 -93
  62. package/build/types/features/Grouping.d.ts +0 -82
  63. package/build/types/features/Headers.d.ts +0 -41
  64. package/build/types/features/Ordering.d.ts +0 -19
  65. package/build/types/features/Pinning.d.ts +0 -39
  66. package/build/types/features/Sorting.d.ts +0 -75
  67. package/build/types/features/Visibility.d.ts +0 -47
  68. package/build/types/filterTypes.d.ts +0 -50
  69. package/build/types/sortTypes.d.ts +0 -17
  70. package/build/types/types.d.ts +0 -124
  71. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  72. package/build/types/utils/expandRowsFn.d.ts +0 -2
  73. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  74. package/build/types/utils/groupRowsFn.d.ts +0 -2
  75. package/build/types/utils/sortRowsFn.d.ts +0 -2
  76. package/build/types/utils.d.ts +0 -24
  77. package/src/aggregationTypes.ts +0 -115
  78. package/src/core.tsx +0 -1232
  79. package/src/createTable.tsx +0 -181
  80. package/src/features/ColumnSizing.ts +0 -482
  81. package/src/features/Expanding.ts +0 -388
  82. package/src/features/Filters.ts +0 -707
  83. package/src/features/Grouping.ts +0 -451
  84. package/src/features/Headers.ts +0 -944
  85. package/src/features/Ordering.ts +0 -134
  86. package/src/features/Pinning.ts +0 -213
  87. package/src/features/Sorting.ts +0 -487
  88. package/src/features/Visibility.ts +0 -281
  89. package/src/features/withPagination.oldts +0 -208
  90. package/src/features/withRowSelection.oldts +0 -467
  91. package/src/filterTypes.ts +0 -251
  92. package/src/sortTypes.ts +0 -159
  93. package/src/types.ts +0 -314
  94. package/src/utils/columnFilterRowsFn.ts +0 -162
  95. package/src/utils/expandRowsFn.ts +0 -53
  96. package/src/utils/globalFilterRowsFn.ts +0 -129
  97. package/src/utils/groupRowsFn.ts +0 -196
  98. package/src/utils/sortRowsFn.ts +0 -115
  99. package/src/utils.tsx +0 -249
@@ -1,388 +0,0 @@
1
- import { MouseEvent, TouchEvent } from 'react'
2
- import { RowModel } from '..'
3
- import {
4
- Getter,
5
- OnChangeFn,
6
- PropGetterValue,
7
- ReactTable,
8
- Row,
9
- Updater,
10
- } from '../types'
11
- import { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'
12
-
13
- export type ExpandedStateList = Record<string, boolean>
14
- export type ExpandedState = true | Record<string, boolean>
15
- export type ExpandedTableState = {
16
- expanded: ExpandedState
17
- }
18
-
19
- export type ExpandedRow = {
20
- toggleExpanded: (expanded?: boolean) => void
21
- getIsExpanded: () => boolean
22
- getCanExpand: () => boolean
23
- getToggleExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(
24
- userProps?: TGetter
25
- ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>
26
- }
27
-
28
- export type ExpandedOptions<
29
- TData,
30
- TValue,
31
- TFilterFns,
32
- TSortingFns,
33
- TAggregationFns
34
- > = {
35
- onExpandedChange?: OnChangeFn<ExpandedState>
36
- autoResetExpanded?: boolean
37
- enableExpanded?: boolean
38
- expandRowsFn?: (
39
- instance: ReactTable<
40
- TData,
41
- TValue,
42
- TFilterFns,
43
- TSortingFns,
44
- TAggregationFns
45
- >,
46
- expandedState: ExpandedState,
47
- groupedRowModel: RowModel<
48
- TData,
49
- TValue,
50
- TFilterFns,
51
- TSortingFns,
52
- TAggregationFns
53
- >
54
- ) => RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
55
- expandSubRows?: boolean
56
- defaultCanExpand?: boolean
57
- getIsRowExpanded?: (
58
- row: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
59
- ) => boolean
60
- getRowCanExpand?: (
61
- row: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
62
- ) => boolean
63
- paginateExpandedRows?: boolean
64
- }
65
-
66
- export type ToggleExpandedProps = {
67
- title?: string
68
- onClick?: (event: MouseEvent | TouchEvent) => void
69
- }
70
-
71
- export type ExpandedInstance<
72
- TData,
73
- TValue,
74
- TFilterFns,
75
- TSortingFns,
76
- TAggregationFns
77
- > = {
78
- setExpanded: (updater: Updater<ExpandedState>) => void
79
- toggleRowExpanded: (rowId: string, expanded?: boolean) => void
80
- toggleAllRowsExpanded: (expanded?: boolean) => void
81
- resetExpanded: () => void
82
- getRowCanExpand: (rowId: string) => boolean
83
- getIsRowExpanded: (rowId: string) => boolean
84
- getToggleExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(
85
- rowId: string,
86
- userProps?: TGetter
87
- ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>
88
- getToggleAllRowsExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(
89
- userProps?: TGetter
90
- ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>
91
- getIsAllRowsExpanded: () => boolean
92
- getExpandedDepth: () => number
93
- getExpandedRowModel: () => RowModel<
94
- TData,
95
- TValue,
96
- TFilterFns,
97
- TSortingFns,
98
- TAggregationFns
99
- >
100
- getPreExpandedRows: () => Row<
101
- TData,
102
- TValue,
103
- TFilterFns,
104
- TSortingFns,
105
- TAggregationFns
106
- >[]
107
- getPreExpandedFlatRows: () => Row<
108
- TData,
109
- TValue,
110
- TFilterFns,
111
- TSortingFns,
112
- TAggregationFns
113
- >[]
114
- getPreExpandedRowsById: () => Record<
115
- string,
116
- Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
117
- >
118
- getExpandedRows: () => Row<
119
- TData,
120
- TValue,
121
- TFilterFns,
122
- TSortingFns,
123
- TAggregationFns
124
- >[]
125
- getExpandedFlatRows: () => Row<
126
- TData,
127
- TValue,
128
- TFilterFns,
129
- TSortingFns,
130
- TAggregationFns
131
- >[]
132
- getExpandedRowsById: () => Record<
133
- string,
134
- Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
135
- >
136
- }
137
-
138
- //
139
-
140
- export function getInitialState(): ExpandedTableState {
141
- return {
142
- expanded: {},
143
- }
144
- }
145
-
146
- export function getDefaultOptions<
147
- TData,
148
- TValue,
149
- TFilterFns,
150
- TSortingFns,
151
- TAggregationFns
152
- >(
153
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
154
- ): ExpandedOptions<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
155
- return {
156
- onExpandedChange: makeStateUpdater('expanded', instance),
157
- autoResetExpanded: true,
158
- getIsRowExpanded: row => !!(row?.original as { expanded?: any }).expanded,
159
- expandSubRows: true,
160
- paginateExpandedRows: true,
161
- }
162
- }
163
-
164
- export function getInstance<
165
- TData,
166
- TValue,
167
- TFilterFns,
168
- TSortingFns,
169
- TAggregationFns
170
- >(
171
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
172
- ): ExpandedInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
173
- return {
174
- setExpanded: updater =>
175
- instance.options.onExpandedChange?.(
176
- updater,
177
- functionalUpdate(updater, instance.getState().expanded)
178
- ),
179
- toggleRowExpanded: (rowId, expanded) => {
180
- if (!rowId) return
181
-
182
- instance.setExpanded((old = {}) => {
183
- const exists = old === true ? true : !!old?.[rowId]
184
-
185
- let oldExpanded: ExpandedStateList = {}
186
-
187
- if (old === true) {
188
- Object.keys(instance.getRowsById()).forEach(rowId => {
189
- oldExpanded[rowId] = true
190
- })
191
- } else {
192
- oldExpanded = old
193
- }
194
-
195
- expanded = expanded ?? !exists
196
-
197
- if (!exists && expanded) {
198
- return {
199
- ...oldExpanded,
200
- [rowId]: true,
201
- }
202
- }
203
-
204
- if (exists && !expanded) {
205
- const { [rowId]: _, ...rest } = oldExpanded
206
- return rest
207
- }
208
-
209
- return old
210
- })
211
- },
212
- toggleAllRowsExpanded: expanded => {
213
- if (expanded ?? !instance.getIsAllRowsExpanded()) {
214
- instance.setExpanded(true)
215
- } else {
216
- instance.setExpanded({})
217
- }
218
- },
219
- resetExpanded: () => {
220
- instance.setExpanded(instance.options?.initialState?.expanded ?? {})
221
- },
222
- getIsRowExpanded: rowId => {
223
- const row = instance.getRow(rowId)
224
-
225
- if (!row) {
226
- if (process.env.NODE_ENV !== 'production') {
227
- console.warn(
228
- `[ReactTable] getIsRowExpanded: no row found with id ${rowId}`
229
- )
230
- }
231
- throw new Error()
232
- }
233
-
234
- const expanded = instance.getState().expanded
235
-
236
- return !!(
237
- instance.options.getIsRowExpanded?.(row) ??
238
- (expanded || expanded?.[rowId])
239
- )
240
- },
241
- getRowCanExpand: rowId => {
242
- const row = instance.getRow(rowId)
243
-
244
- if (!row) {
245
- if (process.env.NODE_ENV !== 'production') {
246
- console.warn(
247
- `[ReactTable] getRowCanExpand: no row found with id ${rowId}`
248
- )
249
- }
250
- throw new Error()
251
- }
252
-
253
- return (
254
- instance.options.getRowCanExpand?.(row) ??
255
- instance.options.enableExpanded ??
256
- instance.options.defaultCanExpand ??
257
- !!row.subRows?.length
258
- )
259
- },
260
- getToggleExpandedProps: (rowId, userProps) => {
261
- const row = instance.getRow(rowId)
262
-
263
- if (!row) {
264
- return
265
- }
266
-
267
- const canExpand = instance.getRowCanExpand(rowId)
268
-
269
- const initialProps: ToggleExpandedProps = {
270
- title: canExpand ? 'Toggle Expanded' : undefined,
271
- onClick: canExpand
272
- ? (e: MouseEvent | TouchEvent) => {
273
- e.persist()
274
- instance.toggleRowExpanded(rowId)
275
- }
276
- : undefined,
277
- }
278
-
279
- return propGetter(initialProps, userProps)
280
- },
281
- getToggleAllRowsExpandedProps: userProps => {
282
- const initialProps: ToggleExpandedProps = {
283
- title: 'Toggle All Expanded',
284
- onClick: (e: MouseEvent | TouchEvent) => {
285
- e.persist()
286
- instance.toggleAllRowsExpanded()
287
- },
288
- }
289
-
290
- return propGetter(initialProps, userProps)
291
- },
292
- getIsAllRowsExpanded: () => {
293
- const expanded = instance.getState().expanded
294
-
295
- // If expanded is true, save some cycles and return true
296
- if (expanded === true) {
297
- return true
298
- }
299
-
300
- // If any row is not expanded, return false
301
- if (
302
- Object.keys(instance.getRowsById()).some(
303
- id => !instance.getIsRowExpanded(id)
304
- )
305
- ) {
306
- return false
307
- }
308
-
309
- // They must all be expanded :shrug:
310
- return true
311
- },
312
- getExpandedDepth: () => {
313
- let maxDepth = 0
314
-
315
- const rowIds =
316
- instance.getState().expanded === true
317
- ? Object.keys(instance.getRowsById())
318
- : Object.keys(instance.getState().expanded)
319
-
320
- rowIds.forEach(id => {
321
- const splitId = id.split('.')
322
- maxDepth = Math.max(maxDepth, splitId.length)
323
- })
324
-
325
- return maxDepth
326
- },
327
- getExpandedRowModel: memo(
328
- () => [
329
- instance.getState().expanded,
330
- instance.getGroupedRowModel(),
331
- instance.options.expandRowsFn,
332
- instance.options.paginateExpandedRows,
333
- ],
334
- (expanded, rowModel, expandRowsFn, paginateExpandedRows) => {
335
- if (
336
- !expandRowsFn ||
337
- // Do not expand if rows are not included in pagination
338
- !paginateExpandedRows ||
339
- !Object.keys(expanded ?? {}).length
340
- ) {
341
- return rowModel
342
- }
343
-
344
- if (process.env.NODE_ENV !== 'production' && instance.options.debug)
345
- console.info('Expanding...')
346
-
347
- return expandRowsFn(instance, expanded, rowModel)
348
- },
349
- 'getExpandedRowModel',
350
- instance.options.debug
351
- ),
352
-
353
- getPreExpandedRows: () => instance.getGroupedRowModel().rows,
354
- getPreExpandedFlatRows: () => instance.getGroupedRowModel().flatRows,
355
- getPreExpandedRowsById: () => instance.getGroupedRowModel().rowsById,
356
- getExpandedRows: () => instance.getExpandedRowModel().rows,
357
- getExpandedFlatRows: () => instance.getExpandedRowModel().flatRows,
358
- getExpandedRowsById: () => instance.getExpandedRowModel().rowsById,
359
- }
360
- }
361
-
362
- export function createRow<
363
- TData,
364
- TValue,
365
- TFilterFns,
366
- TSortingFns,
367
- TAggregationFns
368
- >(
369
- row: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
370
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
371
- ): ExpandedRow {
372
- return {
373
- toggleExpanded: expanded =>
374
- void instance.toggleRowExpanded(row.id, expanded),
375
- getIsExpanded: () => instance.getIsRowExpanded(row.id),
376
- getCanExpand: () => row.subRows && !!row.subRows.length,
377
- getToggleExpandedProps: userProps => {
378
- const initialProps: ToggleExpandedProps = {
379
- title: 'Toggle Row Expanded',
380
- onClick: (e: MouseEvent | TouchEvent) => {
381
- e.stopPropagation()
382
- instance.toggleRowExpanded(row.id)
383
- },
384
- }
385
- return propGetter(initialProps, userProps)
386
- },
387
- }
388
- }