@tanstack/react-table 0.0.1-alpha.9 → 8.0.0-alpha.3

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 (129) hide show
  1. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +112 -0
  2. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  3. package/build/cjs/aggregationTypes.js +130 -0
  4. package/build/cjs/aggregationTypes.js.map +1 -0
  5. package/build/cjs/core.js +552 -0
  6. package/build/cjs/core.js.map +1 -0
  7. package/build/cjs/createTable.js +108 -0
  8. package/build/cjs/createTable.js.map +1 -0
  9. package/build/cjs/features/ColumnSizing.js +317 -0
  10. package/build/cjs/features/ColumnSizing.js.map +1 -0
  11. package/build/cjs/features/Expanding.js +255 -0
  12. package/build/cjs/features/Expanding.js.map +1 -0
  13. package/build/cjs/features/Filters.js +445 -0
  14. package/build/cjs/features/Filters.js.map +1 -0
  15. package/build/cjs/features/Grouping.js +249 -0
  16. package/build/cjs/features/Grouping.js.map +1 -0
  17. package/build/cjs/features/Headers.js +549 -0
  18. package/build/cjs/features/Headers.js.map +1 -0
  19. package/build/cjs/features/Ordering.js +86 -0
  20. package/build/cjs/features/Ordering.js.map +1 -0
  21. package/build/cjs/features/Pagination.js +194 -0
  22. package/build/cjs/features/Pagination.js.map +1 -0
  23. package/build/cjs/features/Pinning.js +149 -0
  24. package/build/cjs/features/Pinning.js.map +1 -0
  25. package/build/cjs/features/RowSelection.js +541 -0
  26. package/build/cjs/features/RowSelection.js.map +1 -0
  27. package/build/cjs/features/Sorting.js +327 -0
  28. package/build/cjs/features/Sorting.js.map +1 -0
  29. package/build/cjs/features/Visibility.js +166 -0
  30. package/build/cjs/features/Visibility.js.map +1 -0
  31. package/build/cjs/filterTypes.js +172 -0
  32. package/build/cjs/filterTypes.js.map +1 -0
  33. package/build/cjs/index.js +30 -0
  34. package/build/cjs/index.js.map +1 -0
  35. package/build/cjs/sortTypes.js +122 -0
  36. package/build/cjs/sortTypes.js.map +1 -0
  37. package/build/cjs/utils/columnFilterRowsFn.js +131 -0
  38. package/build/cjs/utils/columnFilterRowsFn.js.map +1 -0
  39. package/build/cjs/utils/expandRowsFn.js +38 -0
  40. package/build/cjs/utils/expandRowsFn.js.map +1 -0
  41. package/build/cjs/utils/globalFilterRowsFn.js +101 -0
  42. package/build/cjs/utils/globalFilterRowsFn.js.map +1 -0
  43. package/build/cjs/utils/groupRowsFn.js +155 -0
  44. package/build/cjs/utils/groupRowsFn.js.map +1 -0
  45. package/build/cjs/utils/sortRowsFn.js +94 -0
  46. package/build/cjs/utils/sortRowsFn.js.map +1 -0
  47. package/build/cjs/utils.js +146 -0
  48. package/build/cjs/utils.js.map +1 -0
  49. package/build/esm/index.js +4747 -0
  50. package/build/esm/index.js.map +1 -0
  51. package/build/stats-html.html +2689 -0
  52. package/build/stats-react.json +817 -0
  53. package/build/types/aggregationTypes.d.ts +22 -0
  54. package/build/types/core.d.ts +111 -0
  55. package/build/types/createTable.d.ts +53 -0
  56. package/build/types/features/ColumnSizing.d.ts +67 -0
  57. package/build/types/features/Expanding.d.ts +53 -0
  58. package/build/types/features/Filters.d.ts +98 -0
  59. package/build/types/features/Grouping.d.ts +82 -0
  60. package/build/types/features/Headers.d.ts +41 -0
  61. package/build/types/features/Ordering.d.ts +19 -0
  62. package/build/types/features/Pagination.d.ts +43 -0
  63. package/build/types/features/Pinning.d.ts +39 -0
  64. package/build/types/features/RowSelection.d.ts +66 -0
  65. package/build/types/features/Sorting.d.ts +78 -0
  66. package/build/types/features/Visibility.d.ts +47 -0
  67. package/build/types/filterTypes.d.ts +50 -0
  68. package/build/types/index.d.ts +7 -0
  69. package/build/types/sortTypes.d.ts +18 -0
  70. package/build/types/types.d.ts +127 -0
  71. package/build/types/utils/columnFilterRowsFn.d.ts +2 -0
  72. package/build/types/utils/expandRowsFn.d.ts +2 -0
  73. package/build/types/utils/globalFilterRowsFn.d.ts +2 -0
  74. package/build/types/utils/groupRowsFn.d.ts +2 -0
  75. package/build/types/utils/paginateRowsFn.d.ts +2 -0
  76. package/build/types/utils/sortRowsFn.d.ts +2 -0
  77. package/build/types/utils.d.ts +28 -0
  78. package/{dist/react-table.development.js → build/umd/index.development.js} +1617 -249
  79. package/build/umd/index.development.js.map +1 -0
  80. package/build/umd/index.production.js +12 -0
  81. package/build/umd/index.production.js.map +1 -0
  82. package/package.json +9 -94
  83. package/src/core.tsx +252 -264
  84. package/src/createTable.tsx +69 -9
  85. package/src/features/ColumnSizing.ts +453 -0
  86. package/src/features/Expanding.ts +27 -11
  87. package/src/features/Filters.ts +75 -20
  88. package/src/features/Grouping.ts +27 -12
  89. package/src/features/Headers.ts +55 -50
  90. package/src/features/Ordering.ts +2 -3
  91. package/src/features/Pagination.ts +314 -0
  92. package/src/features/Pinning.ts +3 -16
  93. package/src/features/RowSelection.ts +831 -0
  94. package/src/features/Sorting.ts +82 -22
  95. package/src/features/Visibility.ts +2 -4
  96. package/src/sortTypes.ts +1 -1
  97. package/src/types.ts +55 -9
  98. package/src/utils/columnFilterRowsFn.ts +5 -12
  99. package/src/utils/expandRowsFn.ts +2 -5
  100. package/src/utils/globalFilterRowsFn.ts +3 -10
  101. package/src/utils/groupRowsFn.ts +3 -5
  102. package/src/utils/paginateRowsFn.ts +34 -0
  103. package/src/utils/sortRowsFn.ts +5 -5
  104. package/src/utils.tsx +20 -6
  105. package/dist/react-table.development.js.map +0 -1
  106. package/dist/react-table.production.min.js +0 -2
  107. package/dist/react-table.production.min.js.map +0 -1
  108. package/lib/index.js +0 -65
  109. package/src/features/notest/useAbsoluteLayout.test.js +0 -152
  110. package/src/features/notest/useBlockLayout.test.js +0 -158
  111. package/src/features/notest/useColumnOrder.test.js +0 -186
  112. package/src/features/notest/useExpanded.test.js +0 -125
  113. package/src/features/notest/useFilters.test.js +0 -393
  114. package/src/features/notest/useFiltersAndRowSelect.test.js +0 -256
  115. package/src/features/notest/useFlexLayout.test.js +0 -152
  116. package/src/features/notest/useGroupBy.test.js +0 -259
  117. package/src/features/notest/usePagination.test.js +0 -231
  118. package/src/features/notest/useResizeColumns.test.js +0 -229
  119. package/src/features/notest/useRowSelect.test.js +0 -250
  120. package/src/features/notest/useRowState.test.js +0 -178
  121. package/src/features/tests/Visibility.test.tsx +0 -225
  122. package/src/features/tests/__snapshots__/Visibility.test.tsx.snap +0 -390
  123. package/src/features/tests/withSorting.notest.tsx +0 -341
  124. package/src/features/withColumnResizing.ts +0 -281
  125. package/src/features/withPagination.ts +0 -208
  126. package/src/features/withRowSelection.ts +0 -467
  127. package/src/test-utils/makeTestData.ts +0 -41
  128. package/src/tests/__snapshots__/core.test.tsx.snap +0 -148
  129. package/src/tests/core.test.tsx +0 -241
@@ -1,225 +0,0 @@
1
- import * as React from 'react'
2
-
3
- // import { renderHook } from '@testing-library/react-hooks'
4
- import * as RTL from '@testing-library/react'
5
- import '@testing-library/jest-dom/extend-expect'
6
- import { createTable } from 'react-table'
7
-
8
- type Row = {
9
- firstName: string
10
- lastName: string
11
- age: number
12
- visits: number
13
- status: string
14
- progress: number
15
- }
16
-
17
- const table = createTable().RowType<Row>()
18
-
19
- const defaultData: Row[] = [
20
- {
21
- firstName: 'tanner',
22
- lastName: 'linsley',
23
- age: 29,
24
- visits: 100,
25
- status: 'In Relationship',
26
- progress: 50,
27
- },
28
- {
29
- firstName: 'derek',
30
- lastName: 'perkins',
31
- age: 40,
32
- visits: 40,
33
- status: 'Single',
34
- progress: 80,
35
- },
36
- {
37
- firstName: 'joe',
38
- lastName: 'bergevin',
39
- age: 45,
40
- visits: 20,
41
- status: 'Complicated',
42
- progress: 10,
43
- },
44
- ]
45
-
46
- const defaultColumns = table.createColumns([
47
- table.createGroup({
48
- header: 'Name',
49
- footer: props => props.column.id,
50
- columns: [
51
- table.createColumn('firstName', {
52
- cell: info => info.value,
53
- footer: props => props.column.id,
54
- }),
55
- table.createColumn(row => row.lastName, {
56
- id: 'lastName',
57
- cell: info => info.value,
58
- header: <span>Last Name</span>,
59
- footer: props => props.column.id,
60
- }),
61
- ],
62
- }),
63
- table.createGroup({
64
- header: 'Info',
65
- footer: props => props.column.id,
66
- columns: [
67
- table.createColumn('age', {
68
- header: () => 'Age',
69
- footer: props => props.column.id,
70
- }),
71
- table.createGroup({
72
- header: 'More Info',
73
- columns: [
74
- table.createColumn('visits', {
75
- header: () => <span>Visits</span>,
76
- footer: props => props.column.id,
77
- }),
78
- table.createColumn('status', {
79
- header: 'Status',
80
- footer: props => props.column.id,
81
- }),
82
- table.createColumn('progress', {
83
- header: 'Profile Progress',
84
- footer: props => props.column.id,
85
- }),
86
- ],
87
- }),
88
- ],
89
- }),
90
- ])
91
-
92
- describe('useTable', () => {
93
- it('can toggle column visibility', () => {
94
- const Table = () => {
95
- const [data] = React.useState<Row[]>(() => [...defaultData])
96
- const [columns] = React.useState<typeof defaultColumns>(() => [
97
- ...defaultColumns,
98
- ])
99
- const [columnVisibility, setColumnVisibility] = React.useState({})
100
-
101
- const rerender = React.useReducer(() => ({}), {})[1]
102
-
103
- const instance = table.useTable({
104
- data,
105
- columns,
106
- onColumnVisibilityChange: setColumnVisibility,
107
- state: {
108
- columnVisibility,
109
- },
110
- // debug: true,
111
- })
112
-
113
- return (
114
- <div className="p-2">
115
- <div className="inline-block border border-black shadow rounded">
116
- <div className="px-1 border-b border-black">
117
- <label>
118
- <input {...instance.getToggleAllColumnsVisibilityProps()} />{' '}
119
- Toggle All
120
- </label>
121
- </div>
122
- {instance.getAllLeafColumns().map(column => {
123
- return (
124
- <div key={column.id} className="px-1">
125
- <label>
126
- <input {...column.getToggleVisibilityProps()} /> {column.id}
127
- </label>
128
- </div>
129
- )
130
- })}
131
- </div>
132
- <div className="h-4" />
133
- <table {...instance.getTableProps()}>
134
- <thead>
135
- {instance.getHeaderGroups().map(headerGroup => (
136
- <tr {...headerGroup.getHeaderGroupProps()}>
137
- {headerGroup.headers.map(header => (
138
- <th {...header.getHeaderProps()}>
139
- {header.isPlaceholder ? null : header.renderHeader()}
140
- </th>
141
- ))}
142
- </tr>
143
- ))}
144
- </thead>
145
- <tbody {...instance.getTableBodyProps()}>
146
- {instance.getRows().map(row => (
147
- <tr {...row.getRowProps()}>
148
- {row.getVisibleCells().map(cell => (
149
- <td {...cell.getCellProps()}>{cell.renderCell()}</td>
150
- ))}
151
- </tr>
152
- ))}
153
- </tbody>
154
- <tfoot>
155
- {instance.getFooterGroups().map(footerGroup => (
156
- <tr {...footerGroup.getFooterGroupProps()}>
157
- {footerGroup.headers.map(header => (
158
- <th {...header.getFooterProps()}>
159
- {header.isPlaceholder ? null : header.renderFooter()}
160
- </th>
161
- ))}
162
- </tr>
163
- ))}
164
- </tfoot>
165
- </table>
166
- <div className="h-4" />
167
- <button onClick={() => rerender()} className="border p-2">
168
- Rerender
169
- </button>
170
- </div>
171
- )
172
- }
173
-
174
- // let api: any;
175
-
176
- const rendered = RTL.render(<Table />)
177
-
178
- // RTL.screen.logTestingPlaygroundURL()
179
-
180
- let snapIndex = 0
181
-
182
- const snap = (name: string) => {
183
- expect({
184
- headers: Array.from(
185
- rendered.container.querySelectorAll('thead > tr')
186
- ).map(d =>
187
- Array.from(d.querySelectorAll('th')).map(d => [
188
- d.innerHTML,
189
- d.getAttribute('colspan'),
190
- ])
191
- ),
192
- rows: Array.from(rendered.container.querySelectorAll('tbody > tr')).map(
193
- d => Array.from(d.querySelectorAll('td')).map(d => d.innerHTML)
194
- ),
195
- footers: Array.from(
196
- rendered.container.querySelectorAll('tfoot > tr')
197
- ).map(d =>
198
- Array.from(d.querySelectorAll('th')).map(d => [
199
- d.innerHTML,
200
- d.getAttribute('colspan'),
201
- ])
202
- ),
203
- }).toMatchSnapshot(`${snapIndex++} - ${name}`)
204
- }
205
-
206
- RTL.fireEvent.click(rendered.getByLabelText('Toggle All'))
207
-
208
- snap('after toggling all off')
209
-
210
- RTL.fireEvent.click(rendered.getByLabelText('Toggle All'))
211
-
212
- snap('after toggling all on')
213
-
214
- RTL.fireEvent.click(rendered.getByLabelText('firstName'))
215
-
216
- snap('after toggling firstName off')
217
-
218
- RTL.fireEvent.click(rendered.getByLabelText('firstName'))
219
- RTL.fireEvent.click(rendered.getByLabelText('visits'))
220
- RTL.fireEvent.click(rendered.getByLabelText('status'))
221
- RTL.fireEvent.click(rendered.getByLabelText('progress'))
222
-
223
- snap('after toggling More Info off')
224
- })
225
- })
@@ -1,390 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`useTable can toggle column visibility: 0 - after toggling all off 1`] = `
4
- {
5
- "footers": [
6
- [],
7
- [],
8
- [],
9
- ],
10
- "headers": [
11
- [],
12
- [],
13
- [],
14
- ],
15
- "rows": [
16
- [],
17
- [],
18
- [],
19
- ],
20
- }
21
- `;
22
-
23
- exports[`useTable can toggle column visibility: 1 - after toggling all on 1`] = `
24
- {
25
- "footers": [
26
- [
27
- [
28
- "firstName",
29
- "1",
30
- ],
31
- [
32
- "lastName",
33
- "1",
34
- ],
35
- [
36
- "age",
37
- "1",
38
- ],
39
- [
40
- "visits",
41
- "1",
42
- ],
43
- [
44
- "status",
45
- "1",
46
- ],
47
- [
48
- "progress",
49
- "1",
50
- ],
51
- ],
52
- [
53
- [
54
- "",
55
- "1",
56
- ],
57
- [
58
- "",
59
- "1",
60
- ],
61
- [
62
- "",
63
- "1",
64
- ],
65
- [
66
- "More Info",
67
- "3",
68
- ],
69
- ],
70
- [
71
- [
72
- "Name",
73
- "2",
74
- ],
75
- [
76
- "Info",
77
- "4",
78
- ],
79
- ],
80
- ],
81
- "headers": [
82
- [
83
- [
84
- "Name",
85
- "2",
86
- ],
87
- [
88
- "Info",
89
- "4",
90
- ],
91
- ],
92
- [
93
- [
94
- "",
95
- "1",
96
- ],
97
- [
98
- "",
99
- "1",
100
- ],
101
- [
102
- "",
103
- "1",
104
- ],
105
- [
106
- "More Info",
107
- "3",
108
- ],
109
- ],
110
- [
111
- [
112
- "firstName",
113
- "1",
114
- ],
115
- [
116
- "<span>Last Name</span>",
117
- "1",
118
- ],
119
- [
120
- "Age",
121
- "1",
122
- ],
123
- [
124
- "<span>Visits</span>",
125
- "1",
126
- ],
127
- [
128
- "Status",
129
- "1",
130
- ],
131
- [
132
- "Profile Progress",
133
- "1",
134
- ],
135
- ],
136
- ],
137
- "rows": [
138
- [
139
- "tanner",
140
- "linsley",
141
- "29",
142
- "100",
143
- "In Relationship",
144
- "50",
145
- ],
146
- [
147
- "derek",
148
- "perkins",
149
- "40",
150
- "40",
151
- "Single",
152
- "80",
153
- ],
154
- [
155
- "joe",
156
- "bergevin",
157
- "45",
158
- "20",
159
- "Complicated",
160
- "10",
161
- ],
162
- ],
163
- }
164
- `;
165
-
166
- exports[`useTable can toggle column visibility: 2 - after toggling firstName off 1`] = `
167
- {
168
- "footers": [
169
- [
170
- [
171
- "lastName",
172
- "1",
173
- ],
174
- [
175
- "age",
176
- "1",
177
- ],
178
- [
179
- "visits",
180
- "1",
181
- ],
182
- [
183
- "status",
184
- "1",
185
- ],
186
- [
187
- "progress",
188
- "1",
189
- ],
190
- ],
191
- [
192
- [
193
- "",
194
- "1",
195
- ],
196
- [
197
- "",
198
- "1",
199
- ],
200
- [
201
- "More Info",
202
- "3",
203
- ],
204
- ],
205
- [
206
- [
207
- "Name",
208
- "1",
209
- ],
210
- [
211
- "Info",
212
- "4",
213
- ],
214
- ],
215
- ],
216
- "headers": [
217
- [
218
- [
219
- "Name",
220
- "1",
221
- ],
222
- [
223
- "Info",
224
- "4",
225
- ],
226
- ],
227
- [
228
- [
229
- "",
230
- "1",
231
- ],
232
- [
233
- "",
234
- "1",
235
- ],
236
- [
237
- "More Info",
238
- "3",
239
- ],
240
- ],
241
- [
242
- [
243
- "<span>Last Name</span>",
244
- "1",
245
- ],
246
- [
247
- "Age",
248
- "1",
249
- ],
250
- [
251
- "<span>Visits</span>",
252
- "1",
253
- ],
254
- [
255
- "Status",
256
- "1",
257
- ],
258
- [
259
- "Profile Progress",
260
- "1",
261
- ],
262
- ],
263
- ],
264
- "rows": [
265
- [
266
- "linsley",
267
- "29",
268
- "100",
269
- "In Relationship",
270
- "50",
271
- ],
272
- [
273
- "perkins",
274
- "40",
275
- "40",
276
- "Single",
277
- "80",
278
- ],
279
- [
280
- "bergevin",
281
- "45",
282
- "20",
283
- "Complicated",
284
- "10",
285
- ],
286
- ],
287
- }
288
- `;
289
-
290
- exports[`useTable can toggle column visibility: 3 - after toggling More Info off 1`] = `
291
- {
292
- "footers": [
293
- [
294
- [
295
- "firstName",
296
- "1",
297
- ],
298
- [
299
- "lastName",
300
- "1",
301
- ],
302
- [
303
- "age",
304
- "1",
305
- ],
306
- ],
307
- [
308
- [
309
- "",
310
- "1",
311
- ],
312
- [
313
- "",
314
- "1",
315
- ],
316
- [
317
- "",
318
- "1",
319
- ],
320
- ],
321
- [
322
- [
323
- "Name",
324
- "2",
325
- ],
326
- [
327
- "Info",
328
- "1",
329
- ],
330
- ],
331
- ],
332
- "headers": [
333
- [
334
- [
335
- "Name",
336
- "2",
337
- ],
338
- [
339
- "Info",
340
- "1",
341
- ],
342
- ],
343
- [
344
- [
345
- "",
346
- "1",
347
- ],
348
- [
349
- "",
350
- "1",
351
- ],
352
- [
353
- "",
354
- "1",
355
- ],
356
- ],
357
- [
358
- [
359
- "firstName",
360
- "1",
361
- ],
362
- [
363
- "<span>Last Name</span>",
364
- "1",
365
- ],
366
- [
367
- "Age",
368
- "1",
369
- ],
370
- ],
371
- ],
372
- "rows": [
373
- [
374
- "tanner",
375
- "linsley",
376
- "29",
377
- ],
378
- [
379
- "derek",
380
- "perkins",
381
- "40",
382
- ],
383
- [
384
- "joe",
385
- "bergevin",
386
- "45",
387
- ],
388
- ],
389
- }
390
- `;