@tanstack/react-table 8.0.0-alpha.1 → 8.0.0-alpha.11

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/_virtual/_rollupPluginBabelHelpers.js +0 -78
  2. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  3. package/build/cjs/index.js +67 -12
  4. package/build/cjs/index.js.map +1 -1
  5. package/build/esm/index.js +30 -3346
  6. package/build/esm/index.js.map +1 -1
  7. package/build/stats-html.html +1 -1
  8. package/build/stats-react.json +28 -632
  9. package/build/types/index.d.ts +3 -7
  10. package/build/umd/index.development.js +37 -3348
  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 +56 -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 -493
  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/Expanding.js +0 -234
  23. package/build/cjs/features/Expanding.js.map +0 -1
  24. package/build/cjs/features/Filters.js +0 -396
  25. package/build/cjs/features/Filters.js.map +0 -1
  26. package/build/cjs/features/Grouping.js +0 -228
  27. package/build/cjs/features/Grouping.js.map +0 -1
  28. package/build/cjs/features/Headers.js +0 -483
  29. package/build/cjs/features/Headers.js.map +0 -1
  30. package/build/cjs/features/Ordering.js +0 -83
  31. package/build/cjs/features/Ordering.js.map +0 -1
  32. package/build/cjs/features/Pinning.js +0 -163
  33. package/build/cjs/features/Pinning.js.map +0 -1
  34. package/build/cjs/features/Sorting.js +0 -269
  35. package/build/cjs/features/Sorting.js.map +0 -1
  36. package/build/cjs/features/Visibility.js +0 -160
  37. package/build/cjs/features/Visibility.js.map +0 -1
  38. package/build/cjs/filterTypes.js +0 -172
  39. package/build/cjs/filterTypes.js.map +0 -1
  40. package/build/cjs/sortTypes.js +0 -121
  41. package/build/cjs/sortTypes.js.map +0 -1
  42. package/build/cjs/utils/columnFilterRowsFn.js +0 -130
  43. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  44. package/build/cjs/utils/expandRowsFn.js +0 -38
  45. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  46. package/build/cjs/utils/globalFilterRowsFn.js +0 -100
  47. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  48. package/build/cjs/utils/groupRowsFn.js +0 -154
  49. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  50. package/build/cjs/utils/sortRowsFn.js +0 -93
  51. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  52. package/build/cjs/utils.js +0 -143
  53. package/build/cjs/utils.js.map +0 -1
  54. package/build/types/aggregationTypes.d.ts +0 -22
  55. package/build/types/core.d.ts +0 -122
  56. package/build/types/createTable.d.ts +0 -35
  57. package/build/types/features/Expanding.d.ts +0 -52
  58. package/build/types/features/Filters.d.ts +0 -93
  59. package/build/types/features/Grouping.d.ts +0 -82
  60. package/build/types/features/Headers.d.ts +0 -41
  61. package/build/types/features/Ordering.d.ts +0 -19
  62. package/build/types/features/Pinning.d.ts +0 -39
  63. package/build/types/features/Sorting.d.ts +0 -75
  64. package/build/types/features/Visibility.d.ts +0 -47
  65. package/build/types/filterTypes.d.ts +0 -50
  66. package/build/types/sortTypes.d.ts +0 -17
  67. package/build/types/types.d.ts +0 -122
  68. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  69. package/build/types/utils/expandRowsFn.d.ts +0 -2
  70. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  71. package/build/types/utils/groupRowsFn.d.ts +0 -2
  72. package/build/types/utils/sortRowsFn.d.ts +0 -2
  73. package/build/types/utils.d.ts +0 -24
  74. package/src/aggregationTypes.ts +0 -115
  75. package/src/core.tsx +0 -1194
  76. package/src/createTable.tsx +0 -181
  77. package/src/features/Expanding.ts +0 -388
  78. package/src/features/Filters.ts +0 -707
  79. package/src/features/Grouping.ts +0 -451
  80. package/src/features/Headers.ts +0 -907
  81. package/src/features/Ordering.ts +0 -134
  82. package/src/features/Pinning.ts +0 -213
  83. package/src/features/Sorting.ts +0 -487
  84. package/src/features/Visibility.ts +0 -281
  85. package/src/features/withColumnResizing.oldts +0 -281
  86. package/src/features/withPagination.oldts +0 -208
  87. package/src/features/withRowSelection.oldts +0 -467
  88. package/src/filterTypes.ts +0 -251
  89. package/src/sortTypes.ts +0 -159
  90. package/src/types.ts +0 -285
  91. package/src/utils/columnFilterRowsFn.ts +0 -162
  92. package/src/utils/expandRowsFn.ts +0 -53
  93. package/src/utils/globalFilterRowsFn.ts +0 -129
  94. package/src/utils/groupRowsFn.ts +0 -196
  95. package/src/utils/sortRowsFn.ts +0 -115
  96. package/src/utils.tsx +0 -243
@@ -1,134 +0,0 @@
1
- import { functionalUpdate, makeStateUpdater, memo } from '../utils'
2
-
3
- import { ReactTable, OnChangeFn, Updater, Column } from '../types'
4
-
5
- import * as Grouping from './Grouping'
6
-
7
- export type ColumnOrderState = string[]
8
-
9
- export type ColumnOrderTableState = {
10
- columnOrder: string[]
11
- }
12
-
13
- export type ColumnOrderOptions = {
14
- onColumnOrderChange?: OnChangeFn<ColumnOrderState>
15
- }
16
-
17
- export type ColumnOrderDefaultOptions = {
18
- onColumnOrderChange: OnChangeFn<ColumnOrderState>
19
- }
20
-
21
- export type ColumnOrderInstance<
22
- TData,
23
- TValue,
24
- TFilterFns,
25
- TSortingFns,
26
- TAggregationFns
27
- > = {
28
- setColumnOrder: (updater: Updater<ColumnOrderState>) => void
29
- resetColumnOrder: () => void
30
- getOrderColumnsFn: () => (
31
- columns: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
32
- ) => Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
33
- }
34
-
35
- //
36
-
37
- export function getInitialState(): ColumnOrderTableState {
38
- return {
39
- columnOrder: [],
40
- }
41
- }
42
-
43
- export function getDefaultOptions<
44
- TData,
45
- TValue,
46
- TFilterFns,
47
- TSortingFns,
48
- TAggregationFns
49
- >(
50
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
51
- ): ColumnOrderDefaultOptions {
52
- return {
53
- onColumnOrderChange: makeStateUpdater('columnOrder', instance),
54
- }
55
- }
56
-
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
- > {
72
- return {
73
- setColumnOrder: updater =>
74
- instance.options.onColumnOrderChange?.(
75
- updater,
76
- functionalUpdate(updater, instance.getState().columnOrder)
77
- ),
78
- resetColumnOrder: () => {
79
- instance.setColumnOrder(instance.initialState.columnOrder ?? [])
80
- },
81
- getOrderColumnsFn: memo(
82
- () => [
83
- instance.getState().columnOrder,
84
- instance.getState().grouping,
85
- instance.options.groupedColumnMode,
86
- ],
87
- (columnOrder, grouping, groupedColumnMode) => columns => {
88
- // Sort grouped columns to the start of the column list
89
- // before the headers are built
90
- let orderedColumns: Column<
91
- TData,
92
- TValue,
93
- TFilterFns,
94
- TSortingFns,
95
- TAggregationFns
96
- >[] = []
97
-
98
- // If there is no order, return the normal columns
99
- if (!columnOrder?.length) {
100
- orderedColumns = columns
101
- } else {
102
- const columnOrderCopy = [...columnOrder]
103
-
104
- // If there is an order, make a copy of the columns
105
- const columnsCopy = [...columns]
106
-
107
- // And make a new ordered array of the columns
108
-
109
- // Loop over the columns and place them in order into the new array
110
- while (columnsCopy.length && columnOrderCopy.length) {
111
- const targetColumnId = columnOrderCopy.shift()
112
- const foundIndex = columnsCopy.findIndex(
113
- d => d.id === targetColumnId
114
- )
115
- if (foundIndex > -1) {
116
- orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]!)
117
- }
118
- }
119
-
120
- // If there are any columns left, add them to the end
121
- orderedColumns = [...orderedColumns, ...columnsCopy]
122
- }
123
-
124
- return Grouping.orderColumns(
125
- orderedColumns,
126
- grouping,
127
- groupedColumnMode
128
- )
129
- },
130
- 'getOrderColumnsFn',
131
- instance.options.debug
132
- ),
133
- }
134
- }
@@ -1,213 +0,0 @@
1
- import { OnChangeFn, Updater, ReactTable, Column } from '../types'
2
- import { functionalUpdate, makeStateUpdater } from '../utils'
3
-
4
- type ColumnPinningPosition = 'left' | 'right' | 'both'
5
-
6
- export type ColumnPinningState = {
7
- left?: string[]
8
- right?: string[]
9
- }
10
-
11
- export type ColumnPinningTableState = {
12
- columnPinning: ColumnPinningState
13
- }
14
-
15
- export type ColumnPinningOptions = {
16
- onColumnPinningChange?: OnChangeFn<ColumnPinningState>
17
- enablePinning?: boolean
18
- }
19
-
20
- export type ColumnPinningDefaultOptions = {
21
- onColumnPinningChange: OnChangeFn<ColumnPinningState>
22
- }
23
-
24
- export type ColumnPinningColumnDef = {
25
- enablePinning?: boolean
26
- defaultCanPin?: boolean
27
- }
28
-
29
- export type ColumnPinningColumn = {
30
- getCanPin: () => boolean
31
- getPinnedIndex: () => number
32
- getIsPinned: () => false | ColumnPinningPosition
33
- pin: (position: ColumnPinningPosition) => void
34
- }
35
-
36
- export type ColumnPinningInstance<
37
- _TData,
38
- _TValue,
39
- _TFilterFns,
40
- _TSortingFns,
41
- _TAggregationFns
42
- > = {
43
- setColumnPinning: (updater: Updater<ColumnPinningState>) => void
44
- resetColumnPinning: () => void
45
- pinColumn: (columnId: string, position: ColumnPinningPosition) => void
46
- getColumnCanPin: (columnId: string) => boolean
47
- getColumnIsPinned: (columnId: string) => false | ColumnPinningPosition
48
- getColumnPinnedIndex: (columnId: string) => number
49
- }
50
-
51
- //
52
-
53
- export function getInitialState(): ColumnPinningTableState {
54
- return {
55
- columnPinning: {
56
- left: [],
57
- right: [],
58
- },
59
- }
60
- }
61
-
62
- export function getDefaultOptions<
63
- TData,
64
- TValue,
65
- TFilterFns,
66
- TSortingFns,
67
- TAggregationFns
68
- >(
69
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
70
- ): ColumnPinningDefaultOptions {
71
- return {
72
- onColumnPinningChange: makeStateUpdater('columnPinning', instance),
73
- }
74
- }
75
-
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>
85
- ): ColumnPinningColumn {
86
- return {
87
- getCanPin: () => instance.getColumnCanPin(column.id),
88
- getPinnedIndex: () => instance.getColumnPinnedIndex(column.id),
89
- getIsPinned: () => instance.getColumnIsPinned(column.id),
90
- pin: position => instance.pinColumn(column.id, position),
91
- }
92
- }
93
-
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
- > {
109
- return {
110
- setColumnPinning: updater =>
111
- instance.options.onColumnPinningChange?.(
112
- updater,
113
- functionalUpdate(updater, instance.getState().columnPinning)
114
- ),
115
-
116
- resetColumnPinning: () =>
117
- instance.setColumnPinning(
118
- instance.options.initialState?.columnPinning ?? {}
119
- ),
120
-
121
- pinColumn: (columnId, position) => {
122
- const column = instance.getColumn(columnId)
123
-
124
- const columnIds = column
125
- ?.getLeafColumns()
126
- .map(d => d.id)
127
- .filter(Boolean) as string[]
128
-
129
- instance.setColumnPinning(old => {
130
- if (position === 'right') {
131
- return {
132
- left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),
133
- right: [
134
- ...(old?.right ?? []).filter(d => !columnIds?.includes(d)),
135
- ...columnIds,
136
- ],
137
- }
138
- }
139
-
140
- if (position === 'left') {
141
- return {
142
- left: [
143
- ...(old?.left ?? []).filter(d => !columnIds?.includes(d)),
144
- ...columnIds,
145
- ],
146
- right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),
147
- }
148
- }
149
-
150
- return {
151
- left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),
152
- right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),
153
- }
154
- })
155
- },
156
-
157
- getColumnCanPin: columnId => {
158
- const column = instance.getColumn(columnId)
159
-
160
- if (!column) {
161
- throw new Error()
162
- }
163
-
164
- const leafColumns = column.getLeafColumns()
165
-
166
- return leafColumns.some(
167
- d =>
168
- d.enablePinning ??
169
- instance.options.enablePinning ??
170
- d.defaultCanPin ??
171
- !!d.accessorFn
172
- )
173
- },
174
-
175
- getColumnIsPinned: columnId => {
176
- const column = instance.getColumn(columnId)
177
-
178
- if (!column) {
179
- throw new Error()
180
- }
181
-
182
- const leafColumnIds = column.getLeafColumns().map(d => d.id)
183
-
184
- const { left, right } = instance.getState().columnPinning
185
-
186
- const isLeft = leafColumnIds.some(d => left?.includes(d))
187
- const isRight = leafColumnIds.some(d => right?.includes(d))
188
-
189
- if (isLeft && isRight) {
190
- return 'both'
191
- }
192
-
193
- return isLeft ? 'left' : isRight ? 'right' : false
194
- },
195
-
196
- getColumnPinnedIndex: columnId => {
197
- const position = instance.getColumnIsPinned(columnId)
198
-
199
- if (position === 'both') {
200
- if (process.env.NODE_ENV !== 'production') {
201
- console.warn(
202
- `Column ${columnId} has leaf columns that are pinned on both sides`
203
- )
204
- }
205
- throw new Error()
206
- }
207
-
208
- return position
209
- ? instance.getState().columnPinning?.[position]?.indexOf(columnId) ?? -1
210
- : 0
211
- },
212
- }
213
- }