@tanstack/table-core 8.0.0-alpha.55 → 8.0.0-alpha.59

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 (88) hide show
  1. package/build/cjs/core.js +18 -404
  2. package/build/cjs/core.js.map +1 -1
  3. package/build/cjs/createTable.js +3 -3
  4. package/build/cjs/createTable.js.map +1 -1
  5. package/build/cjs/features/Cells.js +107 -0
  6. package/build/cjs/features/Cells.js.map +1 -0
  7. package/build/cjs/features/ColumnSizing.js +96 -54
  8. package/build/cjs/features/ColumnSizing.js.map +1 -1
  9. package/build/cjs/features/Columns.js +216 -0
  10. package/build/cjs/features/Columns.js.map +1 -0
  11. package/build/cjs/features/Expanding.js +13 -21
  12. package/build/cjs/features/Expanding.js.map +1 -1
  13. package/build/cjs/features/Filters.js +3 -3
  14. package/build/cjs/features/Filters.js.map +1 -1
  15. package/build/cjs/features/Grouping.js +8 -11
  16. package/build/cjs/features/Grouping.js.map +1 -1
  17. package/build/cjs/features/Headers.js +79 -220
  18. package/build/cjs/features/Headers.js.map +1 -1
  19. package/build/cjs/features/Ordering.js +1 -1
  20. package/build/cjs/features/Ordering.js.map +1 -1
  21. package/build/cjs/features/Pagination.js +5 -5
  22. package/build/cjs/features/Pagination.js.map +1 -1
  23. package/build/cjs/features/Pinning.js +172 -2
  24. package/build/cjs/features/Pinning.js.map +1 -1
  25. package/build/cjs/features/RowSelection.js +16 -48
  26. package/build/cjs/features/RowSelection.js.map +1 -1
  27. package/build/cjs/features/Rows.js +84 -0
  28. package/build/cjs/features/Rows.js.map +1 -0
  29. package/build/cjs/features/Sorting.js +9 -12
  30. package/build/cjs/features/Sorting.js.map +1 -1
  31. package/build/cjs/features/Visibility.js +59 -38
  32. package/build/cjs/features/Visibility.js.map +1 -1
  33. package/build/cjs/filterFns.js +16 -0
  34. package/build/cjs/filterFns.js.map +1 -1
  35. package/build/cjs/index.js +0 -1
  36. package/build/cjs/index.js.map +1 -1
  37. package/build/cjs/utils.js +0 -16
  38. package/build/cjs/utils.js.map +1 -1
  39. package/build/esm/index.js +866 -856
  40. package/build/esm/index.js.map +1 -1
  41. package/build/stats-html.html +1 -1
  42. package/build/stats-react.json +424 -322
  43. package/build/types/core.d.ts +9 -88
  44. package/build/types/createTable.d.ts +10 -11
  45. package/build/types/features/Cells.d.ts +13 -0
  46. package/build/types/features/ColumnSizing.d.ts +24 -30
  47. package/build/types/features/Columns.d.ts +54 -0
  48. package/build/types/features/Expanding.d.ts +6 -9
  49. package/build/types/features/Filters.d.ts +3 -1
  50. package/build/types/features/Grouping.d.ts +6 -9
  51. package/build/types/features/Headers.d.ts +3 -15
  52. package/build/types/features/Ordering.d.ts +1 -1
  53. package/build/types/features/Pagination.d.ts +6 -6
  54. package/build/types/features/Pinning.d.ts +18 -4
  55. package/build/types/features/RowSelection.d.ts +6 -13
  56. package/build/types/features/Rows.d.ts +27 -0
  57. package/build/types/features/Sorting.d.ts +5 -8
  58. package/build/types/features/Visibility.d.ts +9 -7
  59. package/build/types/filterFns.d.ts +5 -0
  60. package/build/types/types.d.ts +27 -69
  61. package/build/types/utils.d.ts +1 -5
  62. package/build/umd/index.development.js +844 -835
  63. package/build/umd/index.development.js.map +1 -1
  64. package/build/umd/index.production.js +1 -1
  65. package/build/umd/index.production.js.map +1 -1
  66. package/package.json +1 -1
  67. package/src/core.ts +55 -601
  68. package/src/createTable.ts +13 -17
  69. package/src/features/Cells.ts +130 -0
  70. package/src/features/ColumnSizing.ts +111 -89
  71. package/src/features/Columns.ts +288 -0
  72. package/src/features/Expanding.ts +20 -42
  73. package/src/features/Filters.ts +11 -3
  74. package/src/features/Grouping.ts +13 -39
  75. package/src/features/Headers.ts +49 -233
  76. package/src/features/Ordering.ts +1 -1
  77. package/src/features/Pagination.ts +14 -4
  78. package/src/features/Pinning.ts +194 -3
  79. package/src/features/RowSelection.ts +26 -88
  80. package/src/features/Rows.ts +123 -0
  81. package/src/features/Sorting.ts +20 -43
  82. package/src/features/Visibility.ts +82 -63
  83. package/src/filterFns.ts +20 -0
  84. package/src/types.ts +59 -133
  85. package/src/utils/getColumnFilteredRowModelAsync.ts +1 -5
  86. package/src/utils/getGlobalFilteredRowModelAsync.ts +2 -6
  87. package/src/utils/getSortedRowModelAsync.ts +0 -1
  88. package/src/utils.ts +2 -31
package/src/types.ts CHANGED
@@ -1,11 +1,5 @@
1
- import {
2
- CoreColumn,
3
- CoreColumnDef,
4
- CoreOptions,
5
- CoreRow,
6
- CoreTableState,
7
- TableCore,
8
- } from './core'
1
+ import { CoreOptions, CoreTableState, TableCore } from './core'
2
+ import { ColumnsOptions, CoreColumn, CoreColumnDef } from './features/Columns'
9
3
  import {
10
4
  VisibilityInstance,
11
5
  VisibilityTableState,
@@ -24,9 +18,11 @@ import {
24
18
  ColumnPinningColumnDef,
25
19
  ColumnPinningInstance,
26
20
  ColumnPinningOptions,
21
+ ColumnPinningPosition,
22
+ ColumnPinningRow,
27
23
  ColumnPinningTableState,
28
24
  } from './features/Pinning'
29
- import { HeadersInstance, HeadersRow } from './features/Headers'
25
+ import { HeadersInstance } from './features/Headers'
30
26
  import {
31
27
  FiltersColumn,
32
28
  FiltersColumnDef,
@@ -56,7 +52,7 @@ import {
56
52
  ExpandedTableState,
57
53
  ExpandedRow,
58
54
  } from './features/Expanding'
59
- import { Overwrite, PartialKeys } from './utils'
55
+ import { Overwrite } from './utils'
60
56
  import {
61
57
  ColumnSizingColumn,
62
58
  ColumnSizingColumnDef,
@@ -66,6 +62,7 @@ import {
66
62
  ColumnSizingTableState,
67
63
  } from './features/ColumnSizing'
68
64
  import {
65
+ PaginationInitialTableState,
69
66
  PaginationInstance,
70
67
  PaginationOptions,
71
68
  PaginationTableState,
@@ -76,6 +73,12 @@ import {
76
73
  RowSelectionRow,
77
74
  RowSelectionTableState,
78
75
  } from './features/RowSelection'
76
+ import { ColumnsInstance } from './features/Columns'
77
+ import { CellsInstance, CellsRow } from './features/Cells'
78
+ import { CoreRow, RowsInstance, RowsOptions } from './features/Rows'
79
+
80
+ export type Updater<T> = T | ((old: T) => T)
81
+ export type OnChangeFn<T> = (updaterOrValue: Updater<T>) => void
79
82
 
80
83
  export type TableGenerics = {
81
84
  Row?: any
@@ -83,28 +86,30 @@ export type TableGenerics = {
83
86
  FilterFns?: any
84
87
  SortingFns?: any
85
88
  AggregationFns?: any
86
- Render?: any
89
+ Renderer?: any
90
+ Rendered?: any
87
91
  ColumnMeta?: any
88
92
  TableMeta?: any
89
93
  }
90
94
 
91
95
  export type AnyRender = (Comp: any, props: any) => any
92
96
 
93
- export type UseRenderer<TGenerics extends TableGenerics> =
94
- TGenerics['Render'] extends (...args: any) => any ? TGenerics['Render'] : any
95
-
96
97
  export type TableFeature = {
97
98
  getDefaultOptions?: (instance: any) => any
98
- getInitialState?: () => any
99
- getInstance?: (instance: any) => any
99
+ getInitialState?: (initialState?: InitialTableState) => any
100
+ createInstance?: (instance: any) => any
100
101
  getDefaultColumn?: () => any
101
102
  createColumn?: (column: any, instance: any) => any
103
+ createHeader?: (column: any, instance: any) => any
102
104
  createCell?: (cell: any, column: any, row: any, instance: any) => any
103
105
  createRow?: (row: any, instance: any) => any
104
106
  }
105
107
 
106
108
  export type TableInstance<TGenerics extends TableGenerics> =
107
109
  TableCore<TGenerics> &
110
+ ColumnsInstance<TGenerics> &
111
+ RowsInstance<TGenerics> &
112
+ CellsInstance<TGenerics> &
108
113
  VisibilityInstance<TGenerics> &
109
114
  ColumnOrderInstance<TGenerics> &
110
115
  ColumnPinningInstance<TGenerics> &
@@ -117,22 +122,20 @@ export type TableInstance<TGenerics extends TableGenerics> =
117
122
  PaginationInstance<TGenerics> &
118
123
  RowSelectionInstance<TGenerics>
119
124
 
120
- //
121
-
122
- export type Options<TGenerics extends TableGenerics> = CoreOptions<TGenerics> &
123
- VisibilityOptions &
124
- ColumnOrderOptions &
125
- ColumnPinningOptions &
126
- FiltersOptions<TGenerics> &
127
- SortingOptions<TGenerics> &
128
- GroupingOptions<TGenerics> &
129
- ExpandedOptions<TGenerics> &
130
- ColumnSizingOptions &
131
- PaginationOptions<TGenerics> &
132
- RowSelectionOptions<TGenerics>
133
-
134
- export type Updater<T> = T | ((old: T) => T)
135
- export type OnChangeFn<T> = (updaterOrValue: Updater<T>) => void
125
+ export type TableOptions<TGenerics extends TableGenerics> =
126
+ CoreOptions<TGenerics> &
127
+ ColumnsOptions<TGenerics> &
128
+ RowsOptions<TGenerics> &
129
+ VisibilityOptions &
130
+ ColumnOrderOptions &
131
+ ColumnPinningOptions &
132
+ FiltersOptions<TGenerics> &
133
+ SortingOptions<TGenerics> &
134
+ GroupingOptions<TGenerics> &
135
+ ExpandedOptions<TGenerics> &
136
+ ColumnSizingOptions &
137
+ PaginationOptions<TGenerics> &
138
+ RowSelectionOptions<TGenerics>
136
139
 
137
140
  export type TableState = CoreTableState &
138
141
  VisibilityTableState &
@@ -146,9 +149,24 @@ export type TableState = CoreTableState &
146
149
  PaginationTableState &
147
150
  RowSelectionTableState
148
151
 
152
+ export type InitialTableState = Partial<
153
+ CoreTableState &
154
+ VisibilityTableState &
155
+ ColumnOrderTableState &
156
+ ColumnPinningTableState &
157
+ FiltersTableState &
158
+ SortingTableState &
159
+ ExpandedTableState &
160
+ GroupingTableState &
161
+ ColumnSizingTableState &
162
+ PaginationInitialTableState &
163
+ RowSelectionTableState
164
+ >
165
+
149
166
  export type Row<TGenerics extends TableGenerics> = CoreRow<TGenerics> &
167
+ CellsRow<TGenerics> &
150
168
  VisibilityRow<TGenerics> &
151
- HeadersRow<TGenerics> &
169
+ ColumnPinningRow<TGenerics> &
152
170
  GroupingRow &
153
171
  RowSelectionRow &
154
172
  ExpandedRow
@@ -165,28 +183,9 @@ export type RowModel<TGenerics extends TableGenerics> = {
165
183
 
166
184
  export type AccessorFn<TData> = (originalRow: TData, index: number) => any
167
185
 
168
- // export type UserColumnDef<TGenerics extends TableGenerics> = Overwrite<
169
- // ColumnDef<TGenerics>,
170
- // GeneratedProperties<false>
171
- // >
172
-
173
- // type _GeneratedProperties = {
174
- // ['Column definitions should be generated with the table.createColumn() (and related) utilities']: false
175
- // }
176
-
177
- // export type GeneratedProperties<T> = T extends true
178
- // ? {
179
- // [TKey in keyof _GeneratedProperties]: true
180
- // }
181
- // : T extends false
182
- // ? {
183
- // [TKey in keyof _GeneratedProperties]?: false
184
- // }
185
- // : never
186
-
187
186
  export type Renderable<TGenerics extends TableGenerics, TProps> =
188
187
  | string
189
- | ((props: TProps) => ReturnType<UseRenderer<TGenerics>>)
188
+ | ((props: TProps) => TGenerics['Rendered'])
190
189
 
191
190
  export type ColumnDef<TGenerics extends TableGenerics> =
192
191
  CoreColumnDef<TGenerics> &
@@ -216,8 +215,7 @@ export type CoreCell<TGenerics extends TableGenerics> = {
216
215
  value: TGenerics['Value']
217
216
  row: Row<TGenerics>
218
217
  column: Column<TGenerics>
219
- getCellProps: PropGetter<CellProps>
220
- renderCell: () => string | null | ReturnType<UseRenderer<TGenerics>>
218
+ renderCell: () => string | null | TGenerics['Rendered']
221
219
  }
222
220
 
223
221
  export type Header<TGenerics extends TableGenerics> = CoreHeader<TGenerics> &
@@ -225,31 +223,30 @@ export type Header<TGenerics extends TableGenerics> = CoreHeader<TGenerics> &
225
223
 
226
224
  export type CoreHeader<TGenerics extends TableGenerics> = {
227
225
  id: string
226
+ index: number
228
227
  depth: number
229
228
  column: Column<TGenerics>
230
- getWidth: () => number
229
+ getStart: () => number
230
+ getSize: () => number
231
+ headerGroup: HeaderGroup<TGenerics>
231
232
  subHeaders: Header<TGenerics>[]
232
233
  colSpan?: number
233
234
  rowSpan?: number
234
- getHeaderProps: PropGetter<HeaderProps>
235
- getFooterProps: PropGetter<HeaderProps>
236
235
  getLeafHeaders: () => Header<TGenerics>[]
237
236
  isPlaceholder?: boolean
238
237
  placeholderId?: string
239
238
  renderHeader: (options?: {
240
239
  renderPlaceholder?: boolean
241
- }) => string | null | ReturnType<UseRenderer<TGenerics>>
240
+ }) => string | null | TGenerics['Rendered']
242
241
  renderFooter: (options?: {
243
242
  renderPlaceholder?: boolean
244
- }) => string | null | ReturnType<UseRenderer<TGenerics>>
243
+ }) => string | null | TGenerics['Rendered']
245
244
  }
246
245
 
247
246
  export type HeaderGroup<TGenerics extends TableGenerics> = {
248
247
  id: string
249
248
  depth: number
250
249
  headers: Header<TGenerics>[]
251
- getHeaderGroupProps: PropGetter<HeaderGroupProps>
252
- getFooterGroupProps: PropGetter<FooterGroupProps>
253
250
  }
254
251
 
255
252
  export type HeaderRenderProps<THeader> = {
@@ -265,75 +262,4 @@ export type CellRenderProps<TCell, TRow> = {
265
262
  row: TRow
266
263
  }
267
264
 
268
- export type TableProps = {
269
- role: string
270
- }
271
-
272
- export type TableBodyProps = {
273
- role: string
274
- }
275
-
276
- export type TableHeadProps = {
277
- key: string
278
- role: string
279
- }
280
-
281
- export type TableFooterProps = {
282
- key: string
283
- role: string
284
- }
285
-
286
- export type HeaderGroupProps = {
287
- key: string
288
- role: string
289
- }
290
-
291
- export type FooterGroupProps = {
292
- key: string
293
- role: string
294
- }
295
-
296
- export type HeaderProps = {
297
- key: string
298
- role: string
299
- colSpan?: number
300
- rowSpan?: number
301
- }
302
-
303
- export type FooterProps = {
304
- key: string
305
- role: string
306
- colSpan?: number
307
- rowSpan?: number
308
- }
309
-
310
- export type RowProps = {
311
- key: string
312
- role: string
313
- }
314
-
315
- export type CellProps = {
316
- key: string
317
- role: string
318
- }
319
-
320
- //
321
-
322
- export type PropGetter<TBase> = <TGetter extends Getter<TBase>>(
323
- userProps?: TGetter
324
- ) => PropGetterValue<TBase, TGetter>
325
-
326
- export type Getter<TInitial> =
327
- | ((initial: TInitial) => object)
328
- | object
329
- | undefined
330
-
331
- export type PropGetterValue<TBase, TGetter> = TGetter extends undefined
332
- ? TBase
333
- : TGetter extends (...args: any[]) => infer TReturn
334
- ? Overwrite<TBase, TReturn>
335
- : TGetter extends object
336
- ? Overwrite<TBase, TGetter>
337
- : never
338
-
339
265
  export type NoInfer<A extends any> = [A][A extends any ? 0 : never]
@@ -1,9 +1,5 @@
1
1
  import { TableInstance, RowModel, TableGenerics, Row } from '../types'
2
- import { incrementalMemo, memo } from '../utils'
3
- import {
4
- filterRowModelFromLeafs,
5
- filterRowModelFromRoot,
6
- } from './filterRowsUtils'
2
+ import { incrementalMemo } from '../utils'
7
3
 
8
4
  export function getColumnFilteredRowModelAsync<
9
5
  TGenerics extends TableGenerics
@@ -1,9 +1,5 @@
1
- import { TableInstance, RowModel, TableGenerics, Row } from '../types'
2
- import { incrementalMemo, memo } from '../utils'
3
- import {
4
- filterRowModelFromLeafs,
5
- filterRowModelFromRoot,
6
- } from './filterRowsUtils'
1
+ import { TableInstance, RowModel, TableGenerics } from '../types'
2
+ import { incrementalMemo } from '../utils'
7
3
 
8
4
  export function getGlobalFilteredRowModelAsync<
9
5
  TGenerics extends TableGenerics
@@ -1,5 +1,4 @@
1
1
  import { TableInstance, Row, RowModel, TableGenerics } from '../types'
2
- import { SortingFn } from '../features/Sorting'
3
2
  import { incrementalMemo, memo } from '../utils'
4
3
 
5
4
  export function getSortedRowModelSync<TGenerics extends TableGenerics>(opts?: {
package/src/utils.ts CHANGED
@@ -1,6 +1,5 @@
1
- import { Getter, NoInfer, PropGetterValue, TableState, Updater } from './types'
1
+ import { NoInfer, TableState, Updater } from './types'
2
2
 
3
- export type IsAny<T> = 0 extends 1 & T ? true : false
4
3
  export type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
5
4
  export type RequiredKeys<T, K extends keyof T> = Omit<T, K> &
6
5
  Required<Pick<T, K>>
@@ -12,20 +11,9 @@ export type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<
12
11
 
13
12
  export type IfDefined<T, N> = 0 extends 1 & T ? N : T extends {} ? T : N
14
13
 
15
- // export type DefinedGenericKeys<T extends TableGenerics> = {
16
- // [K in keyof T]: 0 extends 1 & T[K] ? never : T[K] extends {} ? K : never
17
- // }[keyof T]
18
-
19
- // export type DefinedGenerics<T extends TableGenerics> = Pick<
20
- // T,
21
- // DefinedGenericKeys<T>
22
- // >
23
-
24
- export type DataUpdateFunction<T> = (input: T) => T
25
-
26
14
  export function functionalUpdate<T>(updater: Updater<T>, input: T): T {
27
15
  return typeof updater === 'function'
28
- ? (updater as DataUpdateFunction<T>)(input)
16
+ ? (updater as (input: T) => T)(input)
29
17
  : updater
30
18
  }
31
19
 
@@ -100,23 +88,6 @@ export function flattenBy<TNode>(
100
88
  return flat
101
89
  }
102
90
 
103
- type PropGetterImpl = <TBaseProps, TGetter extends Getter<TBaseProps>>(
104
- initial: TBaseProps,
105
- userProps?: TGetter
106
- ) => PropGetterValue<TBaseProps, TGetter>
107
-
108
- // @ts-ignore // Just rely on the type, not the implementation
109
- export const propGetter: PropGetterImpl = (initial, getter) => {
110
- if (isFunction(getter)) {
111
- return getter(initial)
112
- }
113
-
114
- return {
115
- ...initial,
116
- ...(getter ?? {}),
117
- }
118
- }
119
-
120
91
  export function memo<TDeps extends readonly any[], TResult>(
121
92
  getDeps: () => [...TDeps],
122
93
  fn: (...args: NoInfer<[...TDeps]>) => TResult,