@tanstack/table-core 8.5.2 → 8.5.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.
- package/build/cjs/columnHelper.js.map +1 -1
- package/build/cjs/core/column.js.map +1 -1
- package/build/cjs/core/table.js +2 -1
- package/build/cjs/core/table.js.map +1 -1
- package/build/cjs/features/RowSelection.js +3 -3
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/esm/index.js +5 -4
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +312 -312
- package/build/types/index.d.ts +116 -109
- package/build/umd/index.development.js +5 -4
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/columnHelper.ts +12 -22
- package/src/core/column.ts +4 -56
- package/src/core/table.ts +12 -5
- package/src/features/RowSelection.ts +3 -3
- package/src/types.ts +94 -10
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/table-core",
|
|
3
3
|
"author": "Tanner Linsley",
|
|
4
|
-
"version": "8.5.
|
|
4
|
+
"version": "8.5.3",
|
|
5
5
|
"description": "Headless UI for building powerful tables & datagrids for TS/JS.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/tanstack/table#readme",
|
package/src/columnHelper.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
AccessorFn,
|
|
3
|
+
ColumnDef,
|
|
4
|
+
DisplayColumnDef,
|
|
5
|
+
GroupColumnDef,
|
|
6
|
+
IdentifiedColumnDef,
|
|
7
|
+
RowData,
|
|
8
|
+
} from './types'
|
|
7
9
|
import { DeepKeys, DeepValue, RequiredKeys } from './utils'
|
|
8
10
|
|
|
9
11
|
// type Person = {
|
|
@@ -56,24 +58,12 @@ export type ColumnHelper<TData extends RowData> = {
|
|
|
56
58
|
: never
|
|
57
59
|
>(
|
|
58
60
|
accessor: TAccessor,
|
|
59
|
-
column:
|
|
61
|
+
column: TAccessor extends AccessorFn<TData>
|
|
62
|
+
? DisplayColumnDef<TData, TValue>
|
|
63
|
+
: IdentifiedColumnDef<TData, TValue>
|
|
60
64
|
) => ColumnDef<TData, TValue>
|
|
61
|
-
display: (
|
|
62
|
-
|
|
63
|
-
Omit<ColumnDef<TData, unknown>, 'accessorKey' | 'accessorFn'>,
|
|
64
|
-
'id'
|
|
65
|
-
>
|
|
66
|
-
) => ColumnDef<TData, unknown>
|
|
67
|
-
group: (
|
|
68
|
-
column: Omit<
|
|
69
|
-
ColumnDef<TData, unknown>,
|
|
70
|
-
'id' | 'header' | 'accessorKey' | 'accessorFn' | 'columns'
|
|
71
|
-
> &
|
|
72
|
-
(
|
|
73
|
-
| CoreColumnDefDisplayWithStringHeader<TData, unknown>
|
|
74
|
-
| CoreColumnDefDisplay<TData, unknown>
|
|
75
|
-
) & { columns: ColumnDef<TData, any>[] }
|
|
76
|
-
) => ColumnDef<TData, unknown>
|
|
65
|
+
display: (column: DisplayColumnDef<TData>) => ColumnDef<TData, unknown>
|
|
66
|
+
group: (column: GroupColumnDef<TData>) => ColumnDef<TData, unknown>
|
|
77
67
|
}
|
|
78
68
|
|
|
79
69
|
export function createColumnHelper<
|
package/src/core/column.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TaggedTemplateExpression } from '@babel/types'
|
|
1
2
|
import {
|
|
2
3
|
Column,
|
|
3
4
|
Table,
|
|
@@ -6,62 +7,9 @@ import {
|
|
|
6
7
|
ColumnDefTemplate,
|
|
7
8
|
RowData,
|
|
8
9
|
ColumnMeta,
|
|
10
|
+
ColumnDefResolved,
|
|
9
11
|
} from '../types'
|
|
10
|
-
import {
|
|
11
|
-
import { CellContext } from './cell'
|
|
12
|
-
import { HeaderContext } from './headers'
|
|
13
|
-
|
|
14
|
-
export type CoreColumnDefBase<TData extends RowData, TValue> = {
|
|
15
|
-
columns?: ColumnDef<TData, unknown>[]
|
|
16
|
-
header?: ColumnDefTemplate<HeaderContext<TData, TValue>>
|
|
17
|
-
footer?: ColumnDefTemplate<HeaderContext<TData, TValue>>
|
|
18
|
-
cell?: ColumnDefTemplate<CellContext<TData, TValue>>
|
|
19
|
-
meta?: ColumnMeta<TData, TValue>
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export type CoreColumnDefDisplay<
|
|
23
|
-
TData extends RowData,
|
|
24
|
-
TValue
|
|
25
|
-
> = CoreColumnDefBase<TData, TValue> & {
|
|
26
|
-
id: string
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export type CoreColumnDefDisplayWithStringHeader<
|
|
30
|
-
TData extends RowData,
|
|
31
|
-
TValue
|
|
32
|
-
> = CoreColumnDefBase<TData, TValue> & {
|
|
33
|
-
header: string
|
|
34
|
-
id?: string
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export type CoreColumnDefAccessorFn<
|
|
38
|
-
TData extends RowData,
|
|
39
|
-
TValue
|
|
40
|
-
> = CoreColumnDefBase<TData, TValue> & {
|
|
41
|
-
accessorFn: AccessorFn<TData, TValue>
|
|
42
|
-
id: string
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export type CoreColumnDefAccessorKey<
|
|
46
|
-
TData extends RowData,
|
|
47
|
-
TValue
|
|
48
|
-
> = CoreColumnDefBase<TData, TValue> & {
|
|
49
|
-
accessorKey: DeepKeys<TData>
|
|
50
|
-
id?: string
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export type CoreColumnDef<TData extends RowData, TValue> =
|
|
54
|
-
| CoreColumnDefDisplay<TData, TValue>
|
|
55
|
-
| CoreColumnDefDisplayWithStringHeader<TData, TValue>
|
|
56
|
-
| CoreColumnDefAccessorFn<TData, TValue>
|
|
57
|
-
| CoreColumnDefAccessorKey<TData, TValue>
|
|
58
|
-
|
|
59
|
-
export type CoreColumnDefResolved<
|
|
60
|
-
TData extends RowData,
|
|
61
|
-
TValue = unknown
|
|
62
|
-
> = Partial<UnionToIntersection<CoreColumnDef<TData, TValue>>> & {
|
|
63
|
-
accessorKey?: string
|
|
64
|
-
}
|
|
12
|
+
import { memo } from '../utils'
|
|
65
13
|
|
|
66
14
|
export type CoreColumn<TData extends RowData, TValue> = {
|
|
67
15
|
id: string
|
|
@@ -85,7 +33,7 @@ export function createColumn<TData extends RowData, TValue>(
|
|
|
85
33
|
const resolvedColumnDef = {
|
|
86
34
|
...defaultColumn,
|
|
87
35
|
...columnDef,
|
|
88
|
-
} as
|
|
36
|
+
} as ColumnDefResolved<TData>
|
|
89
37
|
|
|
90
38
|
const accessorKey = resolvedColumnDef.accessorKey
|
|
91
39
|
|
package/src/core/table.ts
CHANGED
|
@@ -14,17 +14,19 @@ import {
|
|
|
14
14
|
TableOptions,
|
|
15
15
|
RowData,
|
|
16
16
|
TableMeta,
|
|
17
|
+
ColumnDefResolved,
|
|
18
|
+
GroupColumnDef,
|
|
17
19
|
} from '../types'
|
|
18
20
|
|
|
19
21
|
//
|
|
20
|
-
import {
|
|
22
|
+
import { createColumn } from './column'
|
|
21
23
|
import { Headers } from './headers'
|
|
22
24
|
//
|
|
23
25
|
|
|
24
26
|
import { ColumnSizing } from '../features/ColumnSizing'
|
|
25
27
|
import { Expanding } from '../features/Expanding'
|
|
26
28
|
import { Filters } from '../features/Filters'
|
|
27
|
-
import { Grouping } from '../features/Grouping'
|
|
29
|
+
import { Grouping, GroupingColumnDef } from '../features/Grouping'
|
|
28
30
|
import { Ordering } from '../features/Ordering'
|
|
29
31
|
import { Pagination } from '../features/Pagination'
|
|
30
32
|
import { Pinning } from '../features/Pinning'
|
|
@@ -234,7 +236,7 @@ export function createTable<TData extends RowData>(
|
|
|
234
236
|
return {
|
|
235
237
|
header: props => {
|
|
236
238
|
const resolvedColumnDef = props.header.column
|
|
237
|
-
.columnDef as
|
|
239
|
+
.columnDef as ColumnDefResolved<TData>
|
|
238
240
|
|
|
239
241
|
if (resolvedColumnDef.accessorKey) {
|
|
240
242
|
return resolvedColumnDef.accessorKey
|
|
@@ -273,8 +275,13 @@ export function createTable<TData extends RowData>(
|
|
|
273
275
|
return columnDefs.map(columnDef => {
|
|
274
276
|
const column = createColumn(table, columnDef, depth, parent)
|
|
275
277
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
+
const groupingColumnDef = columnDef as GroupColumnDef<
|
|
279
|
+
TData,
|
|
280
|
+
unknown
|
|
281
|
+
>
|
|
282
|
+
|
|
283
|
+
column.columns = groupingColumnDef.columns
|
|
284
|
+
? recurseColumns(groupingColumnDef.columns, column, depth + 1)
|
|
278
285
|
: []
|
|
279
286
|
|
|
280
287
|
return column
|
|
@@ -267,16 +267,16 @@ export const RowSelection: TableFeature = {
|
|
|
267
267
|
// },
|
|
268
268
|
|
|
269
269
|
getIsAllRowsSelected: () => {
|
|
270
|
-
const
|
|
270
|
+
const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows
|
|
271
271
|
const { rowSelection } = table.getState()
|
|
272
272
|
|
|
273
273
|
let isAllRowsSelected = Boolean(
|
|
274
|
-
|
|
274
|
+
preGroupedFlatRows.length && Object.keys(rowSelection).length
|
|
275
275
|
)
|
|
276
276
|
|
|
277
277
|
if (isAllRowsSelected) {
|
|
278
278
|
if (
|
|
279
|
-
|
|
279
|
+
preGroupedFlatRows.some(
|
|
280
280
|
row => row.getCanSelect() && !rowSelection[row.id]
|
|
281
281
|
)
|
|
282
282
|
) {
|
package/src/types.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CoreOptions, CoreTableState, CoreInstance } from './core/table'
|
|
2
|
-
import { CoreColumn, CoreColumnDef } from './core/column'
|
|
3
2
|
import {
|
|
4
3
|
VisibilityInstance,
|
|
5
4
|
VisibilityTableState,
|
|
@@ -21,7 +20,12 @@ import {
|
|
|
21
20
|
ColumnPinningRow,
|
|
22
21
|
ColumnPinningTableState,
|
|
23
22
|
} from './features/Pinning'
|
|
24
|
-
import {
|
|
23
|
+
import {
|
|
24
|
+
CoreHeader,
|
|
25
|
+
CoreHeaderGroup,
|
|
26
|
+
HeaderContext,
|
|
27
|
+
HeadersInstance,
|
|
28
|
+
} from './core/headers'
|
|
25
29
|
import {
|
|
26
30
|
FilterFn,
|
|
27
31
|
FiltersColumn,
|
|
@@ -75,8 +79,9 @@ import {
|
|
|
75
79
|
RowSelectionTableState,
|
|
76
80
|
} from './features/RowSelection'
|
|
77
81
|
import { CoreRow } from './core/row'
|
|
78
|
-
import { PartialKeys } from './utils'
|
|
79
|
-
import { CoreCell } from './core/cell'
|
|
82
|
+
import { DeepKeys, PartialKeys, UnionToIntersection } from './utils'
|
|
83
|
+
import { CellContext, CoreCell } from './core/cell'
|
|
84
|
+
import { CoreColumn } from './core/column'
|
|
80
85
|
|
|
81
86
|
export interface TableMeta<TData extends RowData> {}
|
|
82
87
|
export interface ColumnMeta<TData extends RowData, TValue> {}
|
|
@@ -171,18 +176,97 @@ export type ColumnDefTemplate<TProps extends object> =
|
|
|
171
176
|
| string
|
|
172
177
|
| ((props: TProps) => any)
|
|
173
178
|
|
|
174
|
-
export type
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
+
export type StringOrTemplateHeader<TData, TValue> =
|
|
180
|
+
| string
|
|
181
|
+
| ColumnDefTemplate<HeaderContext<TData, TValue>>
|
|
182
|
+
|
|
183
|
+
type StringHeaderIdentifier = {
|
|
184
|
+
header: string
|
|
185
|
+
id?: string
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
type IdIdentifier<TData extends RowData, TValue> = {
|
|
189
|
+
id: string
|
|
190
|
+
header?: StringOrTemplateHeader<TData, TValue>
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
type ColumnIdentifiers<TData extends RowData, TValue> =
|
|
194
|
+
| IdIdentifier<TData, TValue>
|
|
195
|
+
| StringHeaderIdentifier
|
|
196
|
+
|
|
197
|
+
//
|
|
198
|
+
|
|
199
|
+
export type ColumnDefBase<TData extends RowData, TValue = unknown> = {
|
|
200
|
+
footer?: ColumnDefTemplate<HeaderContext<TData, TValue>>
|
|
201
|
+
cell?: ColumnDefTemplate<CellContext<TData, TValue>>
|
|
202
|
+
meta?: ColumnMeta<TData, TValue>
|
|
203
|
+
} & VisibilityColumnDef &
|
|
179
204
|
ColumnPinningColumnDef &
|
|
180
205
|
FiltersColumnDef<TData> &
|
|
181
206
|
SortingColumnDef<TData> &
|
|
182
207
|
GroupingColumnDef<TData, TValue> &
|
|
183
208
|
ColumnSizingColumnDef
|
|
184
209
|
|
|
185
|
-
|
|
210
|
+
//
|
|
211
|
+
|
|
212
|
+
export type IdentifiedColumnDef<
|
|
213
|
+
TData extends RowData,
|
|
214
|
+
TValue = unknown
|
|
215
|
+
> = ColumnDefBase<TData, TValue> & {
|
|
216
|
+
id?: string
|
|
217
|
+
header?: StringOrTemplateHeader<TData, TValue>
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export type DisplayColumnDef<
|
|
221
|
+
TData extends RowData,
|
|
222
|
+
TValue = unknown
|
|
223
|
+
> = ColumnDefBase<TData, TValue> & ColumnIdentifiers<TData, TValue>
|
|
224
|
+
|
|
225
|
+
export type GroupColumnDef<
|
|
226
|
+
TData extends RowData,
|
|
227
|
+
TValue = unknown
|
|
228
|
+
> = ColumnDefBase<TData, TValue> &
|
|
229
|
+
ColumnIdentifiers<TData, TValue> & {
|
|
230
|
+
columns?: ColumnDef<TData, any>[]
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export type AccessorFnColumnDef<
|
|
234
|
+
TData extends RowData,
|
|
235
|
+
TValue = unknown
|
|
236
|
+
> = ColumnDefBase<TData, TValue> &
|
|
237
|
+
ColumnIdentifiers<TData, TValue> & {
|
|
238
|
+
accessorFn: AccessorFn<TData, TValue>
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export type AccessorKeyColumnDef<TData extends RowData, TValue = unknown> = {
|
|
242
|
+
id?: string
|
|
243
|
+
} & ColumnIdentifiers<TData, TValue> &
|
|
244
|
+
ColumnDefBase<TData, TValue> & {
|
|
245
|
+
accessorKey: DeepKeys<TData>
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export type AccessorColumnDef<TData extends RowData, TValue = unknown> =
|
|
249
|
+
| AccessorKeyColumnDef<TData, TValue>
|
|
250
|
+
| AccessorFnColumnDef<TData, TValue>
|
|
251
|
+
|
|
252
|
+
//
|
|
253
|
+
|
|
254
|
+
export type ColumnDef<TData extends RowData, TValue = unknown> =
|
|
255
|
+
| DisplayColumnDef<TData, TValue>
|
|
256
|
+
| GroupColumnDef<TData, TValue>
|
|
257
|
+
| AccessorColumnDef<TData, TValue>
|
|
258
|
+
|
|
259
|
+
export type ColumnDefResolved<
|
|
260
|
+
TData extends RowData,
|
|
261
|
+
TValue = unknown
|
|
262
|
+
> = Partial<UnionToIntersection<ColumnDef<TData, TValue>>> & {
|
|
263
|
+
accessorKey?: string
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export type Column<TData extends RowData, TValue = unknown> = CoreColumn<
|
|
267
|
+
TData,
|
|
268
|
+
TValue
|
|
269
|
+
> &
|
|
186
270
|
ColumnVisibilityColumn &
|
|
187
271
|
ColumnPinningColumn &
|
|
188
272
|
FiltersColumn<TData> &
|