@tanstack/table-core 8.0.13 → 8.0.14
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/core/cell.js +13 -13
- package/build/cjs/core/cell.js.map +1 -1
- package/build/cjs/core/column.js +20 -21
- package/build/cjs/core/column.js.map +1 -1
- package/build/cjs/core/headers.js +63 -68
- package/build/cjs/core/headers.js.map +1 -1
- package/build/cjs/core/row.js +16 -11
- package/build/cjs/core/row.js.map +1 -1
- package/build/cjs/core/{instance.js → table.js} +46 -57
- package/build/cjs/core/table.js.map +1 -0
- package/build/cjs/features/ColumnSizing.js +36 -36
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Expanding.js +34 -34
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +46 -52
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +24 -49
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Ordering.js +8 -8
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +37 -37
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +33 -33
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +67 -67
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Sorting.js +36 -40
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +30 -30
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/index.js +2 -4
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +8 -8
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getCoreRowModel.js +8 -8
- package/build/cjs/utils/getCoreRowModel.js.map +1 -1
- package/build/cjs/utils/getExpandedRowModel.js +4 -4
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedMinMaxValues.js +3 -3
- package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
- package/build/cjs/utils/getFacetedRowModel.js +4 -4
- package/build/cjs/utils/getFacetedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedUniqueValues.js +3 -3
- package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -1
- package/build/cjs/utils/getFilteredRowModel.js +8 -8
- package/build/cjs/utils/getFilteredRowModel.js.map +1 -1
- package/build/cjs/utils/getGroupedRowModel.js +9 -9
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +4 -4
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModel.js +7 -7
- package/build/cjs/utils/getSortedRowModel.js.map +1 -1
- package/build/cjs/utils.js +2 -2
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +567 -670
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +352 -377
- package/build/types/index.d.ts +284 -360
- package/build/umd/index.development.js +567 -671
- 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/core/cell.ts +34 -28
- package/src/core/column.ts +83 -72
- package/src/core/headers.ts +118 -149
- package/src/core/row.ts +31 -25
- package/src/core/{instance.ts → table.ts} +85 -116
- package/src/features/ColumnSizing.ts +45 -47
- package/src/features/Expanding.ts +53 -59
- package/src/features/Filters.ts +112 -132
- package/src/features/Grouping.ts +63 -112
- package/src/features/Ordering.ts +19 -21
- package/src/features/Pagination.ts +54 -55
- package/src/features/Pinning.ts +49 -61
- package/src/features/RowSelection.ts +97 -108
- package/src/features/Sorting.ts +57 -72
- package/src/features/Visibility.ts +48 -48
- package/src/index.ts +1 -2
- package/src/types.ts +64 -69
- package/src/utils/filterRowsUtils.ts +33 -28
- package/src/utils/getCoreRowModel.ts +22 -22
- package/src/utils/getExpandedRowModel.ts +15 -15
- package/src/utils/getFacetedMinMaxValues.ts +6 -6
- package/src/utils/getFacetedRowModel.ts +12 -12
- package/src/utils/getFacetedUniqueValues.ts +6 -6
- package/src/utils/getFilteredRowModel.ts +17 -17
- package/src/utils/getGroupedRowModel.ts +18 -21
- package/src/utils/getPaginationRowModel.ts +10 -13
- package/src/utils/getSortedRowModel.ts +14 -14
- package/src/utils.ts +8 -2
- package/build/cjs/core/instance.js.map +0 -1
- package/build/cjs/createTable.js +0 -72
- package/build/cjs/createTable.js.map +0 -1
- package/src/createTable.ts +0 -188
|
@@ -4,15 +4,15 @@ import {
|
|
|
4
4
|
Updater,
|
|
5
5
|
TableOptionsResolved,
|
|
6
6
|
TableState,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
TableGenerics,
|
|
7
|
+
Table,
|
|
8
|
+
ColumnDefTemplate,
|
|
10
9
|
InitialTableState,
|
|
11
10
|
Row,
|
|
12
11
|
Column,
|
|
13
12
|
RowModel,
|
|
14
13
|
ColumnDef,
|
|
15
14
|
TableOptions,
|
|
15
|
+
RowData,
|
|
16
16
|
} from '../types'
|
|
17
17
|
|
|
18
18
|
//
|
|
@@ -32,14 +32,14 @@ import { Sorting } from '../features/Sorting'
|
|
|
32
32
|
import { Visibility } from '../features/Visibility'
|
|
33
33
|
|
|
34
34
|
export type TableFeature = {
|
|
35
|
-
getDefaultOptions?: (
|
|
35
|
+
getDefaultOptions?: (table: any) => any
|
|
36
36
|
getInitialState?: (initialState?: InitialTableState) => any
|
|
37
|
-
|
|
37
|
+
createTable?: (table: any) => any
|
|
38
38
|
getDefaultColumnDef?: () => any
|
|
39
|
-
createColumn?: (column: any,
|
|
40
|
-
createHeader?: (column: any,
|
|
41
|
-
createCell?: (cell: any, column: any, row: any,
|
|
42
|
-
createRow?: (row: any,
|
|
39
|
+
createColumn?: (column: any, table: any) => any
|
|
40
|
+
createHeader?: (column: any, table: any) => any
|
|
41
|
+
createCell?: (cell: any, column: any, row: any, table: any) => any
|
|
42
|
+
createRow?: (row: any, table: any) => any
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
const features = [
|
|
@@ -60,11 +60,10 @@ const features = [
|
|
|
60
60
|
|
|
61
61
|
export type CoreTableState = {}
|
|
62
62
|
|
|
63
|
-
export type CoreOptions<
|
|
64
|
-
data:
|
|
63
|
+
export type CoreOptions<TData extends RowData> = {
|
|
64
|
+
data: TData[]
|
|
65
65
|
state: Partial<TableState>
|
|
66
66
|
onStateChange: (updater: Updater<TableState>) => void
|
|
67
|
-
render: TGenerics['Renderer']
|
|
68
67
|
debugAll?: boolean
|
|
69
68
|
debugTable?: boolean
|
|
70
69
|
debugHeaders?: boolean
|
|
@@ -73,72 +72,57 @@ export type CoreOptions<TGenerics extends TableGenerics> = {
|
|
|
73
72
|
initialState?: InitialTableState
|
|
74
73
|
autoResetAll?: boolean
|
|
75
74
|
mergeOptions?: (
|
|
76
|
-
defaultOptions: TableOptions<
|
|
77
|
-
options: Partial<TableOptions<
|
|
78
|
-
) => TableOptions<
|
|
79
|
-
meta?:
|
|
80
|
-
getCoreRowModel: (
|
|
81
|
-
getSubRows?: (
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
getRowId?: (
|
|
86
|
-
originalRow: TGenerics['Row'],
|
|
87
|
-
index: number,
|
|
88
|
-
parent?: Row<TGenerics>
|
|
89
|
-
) => string
|
|
90
|
-
columns: ColumnDef<TGenerics>[]
|
|
91
|
-
defaultColumn?: Partial<ColumnDef<TGenerics>>
|
|
75
|
+
defaultOptions: TableOptions<TData>,
|
|
76
|
+
options: Partial<TableOptions<TData>>
|
|
77
|
+
) => TableOptions<TData>
|
|
78
|
+
meta?: unknown
|
|
79
|
+
getCoreRowModel: (table: Table<any>) => () => RowModel<any>
|
|
80
|
+
getSubRows?: (originalRow: TData, index: number) => undefined | TData[]
|
|
81
|
+
getRowId?: (originalRow: TData, index: number, parent?: Row<TData>) => string
|
|
82
|
+
columns: ColumnDef<TData>[]
|
|
83
|
+
defaultColumn?: Partial<ColumnDef<TData>>
|
|
92
84
|
renderFallbackValue: any
|
|
93
85
|
}
|
|
94
86
|
|
|
95
|
-
export type CoreInstance<
|
|
87
|
+
export type CoreInstance<TData extends RowData> = {
|
|
96
88
|
initialState: TableState
|
|
97
89
|
reset: () => void
|
|
98
|
-
options: RequiredKeys<TableOptionsResolved<
|
|
99
|
-
setOptions: (newOptions: Updater<TableOptionsResolved<
|
|
90
|
+
options: RequiredKeys<TableOptionsResolved<TData>, 'state'>
|
|
91
|
+
setOptions: (newOptions: Updater<TableOptionsResolved<TData>>) => void
|
|
100
92
|
getState: () => TableState
|
|
101
93
|
setState: (updater: Updater<TableState>) => void
|
|
102
94
|
_features: readonly TableFeature[]
|
|
103
95
|
_queue: (cb: () => void) => void
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
) =>
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
) =>
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
getRow: (id: string) => Row<TGenerics>
|
|
117
|
-
_getDefaultColumnDef: () => Partial<ColumnDef<TGenerics>>
|
|
118
|
-
_getColumnDefs: () => ColumnDef<TGenerics>[]
|
|
119
|
-
_getAllFlatColumnsById: () => Record<string, Column<TGenerics>>
|
|
120
|
-
getAllColumns: () => Column<TGenerics>[]
|
|
121
|
-
getAllFlatColumns: () => Column<TGenerics>[]
|
|
122
|
-
getAllLeafColumns: () => Column<TGenerics>[]
|
|
123
|
-
getColumn: (columnId: string) => Column<TGenerics>
|
|
96
|
+
_getRowId: (_: TData, index: number, parent?: Row<TData>) => string
|
|
97
|
+
getCoreRowModel: () => RowModel<TData>
|
|
98
|
+
_getCoreRowModel?: () => RowModel<TData>
|
|
99
|
+
getRowModel: () => RowModel<TData>
|
|
100
|
+
getRow: (id: string) => Row<TData>
|
|
101
|
+
_getDefaultColumnDef: () => Partial<ColumnDef<TData>>
|
|
102
|
+
_getColumnDefs: () => ColumnDef<TData>[]
|
|
103
|
+
_getAllFlatColumnsById: () => Record<string, Column<TData>>
|
|
104
|
+
getAllColumns: () => Column<TData>[]
|
|
105
|
+
getAllFlatColumns: () => Column<TData>[]
|
|
106
|
+
getAllLeafColumns: () => Column<TData>[]
|
|
107
|
+
getColumn: (columnId: string) => Column<TData>
|
|
124
108
|
}
|
|
125
109
|
|
|
126
|
-
export function
|
|
127
|
-
options: TableOptionsResolved<
|
|
128
|
-
):
|
|
110
|
+
export function createTable<TData extends RowData>(
|
|
111
|
+
options: TableOptionsResolved<TData>
|
|
112
|
+
): Table<TData> {
|
|
129
113
|
if (options.debugAll || options.debugTable) {
|
|
130
114
|
console.info('Creating Table Instance...')
|
|
131
115
|
}
|
|
132
116
|
|
|
133
|
-
let
|
|
117
|
+
let table = { _features: features } as unknown as Table<TData>
|
|
134
118
|
|
|
135
|
-
const defaultOptions =
|
|
136
|
-
return Object.assign(obj, feature.getDefaultOptions?.(
|
|
137
|
-
}, {}) as TableOptionsResolved<
|
|
119
|
+
const defaultOptions = table._features.reduce((obj, feature) => {
|
|
120
|
+
return Object.assign(obj, feature.getDefaultOptions?.(table))
|
|
121
|
+
}, {}) as TableOptionsResolved<TData>
|
|
138
122
|
|
|
139
|
-
const mergeOptions = (options: TableOptionsResolved<
|
|
140
|
-
if (
|
|
141
|
-
return
|
|
123
|
+
const mergeOptions = (options: TableOptionsResolved<TData>) => {
|
|
124
|
+
if (table.options.mergeOptions) {
|
|
125
|
+
return table.options.mergeOptions(defaultOptions, options)
|
|
142
126
|
}
|
|
143
127
|
|
|
144
128
|
return {
|
|
@@ -154,14 +138,14 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
154
138
|
...(options.initialState ?? {}),
|
|
155
139
|
} as TableState
|
|
156
140
|
|
|
157
|
-
|
|
141
|
+
table._features.forEach(feature => {
|
|
158
142
|
initialState = feature.getInitialState?.(initialState) ?? initialState
|
|
159
143
|
})
|
|
160
144
|
|
|
161
145
|
const queued: (() => void)[] = []
|
|
162
146
|
let queuedTimeout = false
|
|
163
147
|
|
|
164
|
-
const coreInstance: CoreInstance<
|
|
148
|
+
const coreInstance: CoreInstance<TData> = {
|
|
165
149
|
_features: features,
|
|
166
150
|
options: {
|
|
167
151
|
...defaultOptions,
|
|
@@ -191,59 +175,44 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
191
175
|
}
|
|
192
176
|
},
|
|
193
177
|
reset: () => {
|
|
194
|
-
|
|
178
|
+
table.setState(table.initialState)
|
|
195
179
|
},
|
|
196
180
|
setOptions: updater => {
|
|
197
|
-
const newOptions = functionalUpdate(updater,
|
|
198
|
-
|
|
199
|
-
TableOptionsResolved<
|
|
181
|
+
const newOptions = functionalUpdate(updater, table.options)
|
|
182
|
+
table.options = mergeOptions(newOptions) as RequiredKeys<
|
|
183
|
+
TableOptionsResolved<TData>,
|
|
200
184
|
'state'
|
|
201
185
|
>
|
|
202
186
|
},
|
|
203
|
-
_render: (template, props) => {
|
|
204
|
-
if (typeof instance.options.render === 'function') {
|
|
205
|
-
return instance.options.render(template, props)
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
if (typeof template === 'function') {
|
|
209
|
-
return (template as Function)(props)
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
return template
|
|
213
|
-
},
|
|
214
187
|
|
|
215
188
|
getState: () => {
|
|
216
|
-
return
|
|
189
|
+
return table.options.state as TableState
|
|
217
190
|
},
|
|
218
191
|
|
|
219
192
|
setState: (updater: Updater<TableState>) => {
|
|
220
|
-
|
|
193
|
+
table.options.onStateChange?.(updater)
|
|
221
194
|
},
|
|
222
195
|
|
|
223
|
-
_getRowId: (
|
|
224
|
-
row
|
|
225
|
-
index: number,
|
|
226
|
-
parent?: Row<TGenerics>
|
|
227
|
-
) =>
|
|
228
|
-
instance.options.getRowId?.(row, index, parent) ??
|
|
196
|
+
_getRowId: (row: TData, index: number, parent?: Row<TData>) =>
|
|
197
|
+
table.options.getRowId?.(row, index, parent) ??
|
|
229
198
|
`${parent ? [parent.id, index].join('.') : index}`,
|
|
230
199
|
|
|
231
200
|
getCoreRowModel: () => {
|
|
232
|
-
if (!
|
|
233
|
-
|
|
201
|
+
if (!table._getCoreRowModel) {
|
|
202
|
+
table._getCoreRowModel = table.options.getCoreRowModel(table)
|
|
234
203
|
}
|
|
235
204
|
|
|
236
|
-
return
|
|
205
|
+
return table._getCoreRowModel!()
|
|
237
206
|
},
|
|
238
207
|
|
|
239
208
|
// The final calls start at the bottom of the model,
|
|
240
209
|
// expanded rows, which then work their way up
|
|
241
210
|
|
|
242
211
|
getRowModel: () => {
|
|
243
|
-
return
|
|
212
|
+
return table.getPaginationRowModel()
|
|
244
213
|
},
|
|
245
214
|
getRow: (id: string) => {
|
|
246
|
-
const row =
|
|
215
|
+
const row = table.getRowModel().rowsById[id]
|
|
247
216
|
|
|
248
217
|
if (!row) {
|
|
249
218
|
if (process.env.NODE_ENV !== 'production') {
|
|
@@ -255,38 +224,38 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
255
224
|
return row
|
|
256
225
|
},
|
|
257
226
|
_getDefaultColumnDef: memo(
|
|
258
|
-
() => [
|
|
227
|
+
() => [table.options.defaultColumn],
|
|
259
228
|
defaultColumn => {
|
|
260
|
-
defaultColumn = (defaultColumn ?? {}) as Partial<ColumnDef<
|
|
229
|
+
defaultColumn = (defaultColumn ?? {}) as Partial<ColumnDef<TData>>
|
|
261
230
|
|
|
262
231
|
return {
|
|
263
232
|
header: props => props.header.column.id,
|
|
264
233
|
footer: props => props.header.column.id,
|
|
265
|
-
cell: props => props.
|
|
266
|
-
...
|
|
234
|
+
cell: props => (props.renderValue() as any)?.toString?.() ?? null,
|
|
235
|
+
...table._features.reduce((obj, feature) => {
|
|
267
236
|
return Object.assign(obj, feature.getDefaultColumnDef?.())
|
|
268
237
|
}, {}),
|
|
269
238
|
...defaultColumn,
|
|
270
|
-
} as Partial<ColumnDef<
|
|
239
|
+
} as Partial<ColumnDef<TData>>
|
|
271
240
|
},
|
|
272
241
|
{
|
|
273
|
-
debug: () =>
|
|
242
|
+
debug: () => table.options.debugAll ?? table.options.debugColumns,
|
|
274
243
|
key: process.env.NODE_ENV === 'development' && 'getDefaultColumnDef',
|
|
275
244
|
}
|
|
276
245
|
),
|
|
277
246
|
|
|
278
|
-
_getColumnDefs: () =>
|
|
247
|
+
_getColumnDefs: () => table.options.columns,
|
|
279
248
|
|
|
280
249
|
getAllColumns: memo(
|
|
281
|
-
() => [
|
|
250
|
+
() => [table._getColumnDefs()],
|
|
282
251
|
columnDefs => {
|
|
283
252
|
const recurseColumns = (
|
|
284
|
-
columnDefs: ColumnDef<
|
|
285
|
-
parent?: Column<
|
|
253
|
+
columnDefs: ColumnDef<TData>[],
|
|
254
|
+
parent?: Column<TData>,
|
|
286
255
|
depth = 0
|
|
287
|
-
): Column<
|
|
256
|
+
): Column<TData>[] => {
|
|
288
257
|
return columnDefs.map(columnDef => {
|
|
289
|
-
const column = createColumn(
|
|
258
|
+
const column = createColumn(table, columnDef, depth, parent)
|
|
290
259
|
|
|
291
260
|
column.columns = columnDef.columns
|
|
292
261
|
? recurseColumns(columnDef.columns, column, depth + 1)
|
|
@@ -300,12 +269,12 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
300
269
|
},
|
|
301
270
|
{
|
|
302
271
|
key: process.env.NODE_ENV === 'development' && 'getAllColumns',
|
|
303
|
-
debug: () =>
|
|
272
|
+
debug: () => table.options.debugAll ?? table.options.debugColumns,
|
|
304
273
|
}
|
|
305
274
|
),
|
|
306
275
|
|
|
307
276
|
getAllFlatColumns: memo(
|
|
308
|
-
() => [
|
|
277
|
+
() => [table.getAllColumns()],
|
|
309
278
|
allColumns => {
|
|
310
279
|
return allColumns.flatMap(column => {
|
|
311
280
|
return column.getFlatColumns()
|
|
@@ -313,38 +282,38 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
313
282
|
},
|
|
314
283
|
{
|
|
315
284
|
key: process.env.NODE_ENV === 'development' && 'getAllFlatColumns',
|
|
316
|
-
debug: () =>
|
|
285
|
+
debug: () => table.options.debugAll ?? table.options.debugColumns,
|
|
317
286
|
}
|
|
318
287
|
),
|
|
319
288
|
|
|
320
289
|
_getAllFlatColumnsById: memo(
|
|
321
|
-
() => [
|
|
290
|
+
() => [table.getAllFlatColumns()],
|
|
322
291
|
flatColumns => {
|
|
323
292
|
return flatColumns.reduce((acc, column) => {
|
|
324
293
|
acc[column.id] = column
|
|
325
294
|
return acc
|
|
326
|
-
}, {} as Record<string, Column<
|
|
295
|
+
}, {} as Record<string, Column<TData>>)
|
|
327
296
|
},
|
|
328
297
|
{
|
|
329
298
|
key: process.env.NODE_ENV === 'development' && 'getAllFlatColumnsById',
|
|
330
|
-
debug: () =>
|
|
299
|
+
debug: () => table.options.debugAll ?? table.options.debugColumns,
|
|
331
300
|
}
|
|
332
301
|
),
|
|
333
302
|
|
|
334
303
|
getAllLeafColumns: memo(
|
|
335
|
-
() => [
|
|
304
|
+
() => [table.getAllColumns(), table._getOrderColumnsFn()],
|
|
336
305
|
(allColumns, orderColumns) => {
|
|
337
306
|
let leafColumns = allColumns.flatMap(column => column.getLeafColumns())
|
|
338
307
|
return orderColumns(leafColumns)
|
|
339
308
|
},
|
|
340
309
|
{
|
|
341
310
|
key: process.env.NODE_ENV === 'development' && 'getAllLeafColumns',
|
|
342
|
-
debug: () =>
|
|
311
|
+
debug: () => table.options.debugAll ?? table.options.debugColumns,
|
|
343
312
|
}
|
|
344
313
|
),
|
|
345
314
|
|
|
346
315
|
getColumn: columnId => {
|
|
347
|
-
const column =
|
|
316
|
+
const column = table._getAllFlatColumnsById()[columnId]
|
|
348
317
|
|
|
349
318
|
if (!column) {
|
|
350
319
|
if (process.env.NODE_ENV !== 'production') {
|
|
@@ -357,11 +326,11 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
357
326
|
},
|
|
358
327
|
}
|
|
359
328
|
|
|
360
|
-
Object.assign(
|
|
329
|
+
Object.assign(table, coreInstance)
|
|
361
330
|
|
|
362
|
-
|
|
363
|
-
return Object.assign(
|
|
331
|
+
table._features.forEach(feature => {
|
|
332
|
+
return Object.assign(table, feature.createTable?.(table))
|
|
364
333
|
})
|
|
365
334
|
|
|
366
|
-
return
|
|
335
|
+
return table
|
|
367
336
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { TableFeature } from '../core/
|
|
1
|
+
import { TableFeature } from '../core/table'
|
|
2
2
|
import {
|
|
3
|
+
RowData,
|
|
3
4
|
Column,
|
|
4
5
|
Header,
|
|
5
6
|
OnChangeFn,
|
|
6
7
|
TableGenerics,
|
|
7
|
-
|
|
8
|
+
Table,
|
|
8
9
|
Updater,
|
|
9
10
|
} from '../types'
|
|
10
11
|
import { makeStateUpdater } from '../utils'
|
|
@@ -43,7 +44,7 @@ export type ColumnSizingDefaultOptions = {
|
|
|
43
44
|
onColumnSizingInfoChange: OnChangeFn<ColumnSizingInfoState>
|
|
44
45
|
}
|
|
45
46
|
|
|
46
|
-
export type ColumnSizingInstance
|
|
47
|
+
export type ColumnSizingInstance = {
|
|
47
48
|
setColumnSizing: (updater: Updater<ColumnSizingState>) => void
|
|
48
49
|
setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void
|
|
49
50
|
resetColumnSizing: (defaultState?: boolean) => void
|
|
@@ -61,7 +62,7 @@ export type ColumnSizingColumnDef = {
|
|
|
61
62
|
maxSize?: number
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
export type ColumnSizingColumn
|
|
65
|
+
export type ColumnSizingColumn = {
|
|
65
66
|
getSize: () => number
|
|
66
67
|
getStart: (position?: ColumnPinningPosition) => number
|
|
67
68
|
getCanResize: () => boolean
|
|
@@ -69,7 +70,7 @@ export type ColumnSizingColumn<TGenerics extends TableGenerics> = {
|
|
|
69
70
|
resetSize: () => void
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
export type ColumnSizingHeader
|
|
73
|
+
export type ColumnSizingHeader = {
|
|
73
74
|
getSize: () => number
|
|
74
75
|
getStart: (position?: ColumnPinningPosition) => number
|
|
75
76
|
getResizeHandler: () => (event: unknown) => void
|
|
@@ -104,23 +105,23 @@ export const ColumnSizing: TableFeature = {
|
|
|
104
105
|
}
|
|
105
106
|
},
|
|
106
107
|
|
|
107
|
-
getDefaultOptions: <
|
|
108
|
-
|
|
108
|
+
getDefaultOptions: <TData extends RowData>(
|
|
109
|
+
table: Table<TData>
|
|
109
110
|
): ColumnSizingDefaultOptions => {
|
|
110
111
|
return {
|
|
111
112
|
columnResizeMode: 'onEnd',
|
|
112
|
-
onColumnSizingChange: makeStateUpdater('columnSizing',
|
|
113
|
-
onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo',
|
|
113
|
+
onColumnSizingChange: makeStateUpdater('columnSizing', table),
|
|
114
|
+
onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table),
|
|
114
115
|
}
|
|
115
116
|
},
|
|
116
117
|
|
|
117
|
-
createColumn: <
|
|
118
|
-
column: Column<
|
|
119
|
-
|
|
120
|
-
): ColumnSizingColumn
|
|
118
|
+
createColumn: <TData extends RowData>(
|
|
119
|
+
column: Column<TData>,
|
|
120
|
+
table: Table<TData>
|
|
121
|
+
): ColumnSizingColumn => {
|
|
121
122
|
return {
|
|
122
123
|
getSize: () => {
|
|
123
|
-
const columnSize =
|
|
124
|
+
const columnSize = table.getState().columnSizing[column.id]
|
|
124
125
|
|
|
125
126
|
return Math.min(
|
|
126
127
|
Math.max(
|
|
@@ -132,10 +133,10 @@ export const ColumnSizing: TableFeature = {
|
|
|
132
133
|
},
|
|
133
134
|
getStart: position => {
|
|
134
135
|
const columns = !position
|
|
135
|
-
?
|
|
136
|
+
? table.getVisibleLeafColumns()
|
|
136
137
|
: position === 'left'
|
|
137
|
-
?
|
|
138
|
-
:
|
|
138
|
+
? table.getLeftVisibleLeafColumns()
|
|
139
|
+
: table.getRightVisibleLeafColumns()
|
|
139
140
|
|
|
140
141
|
const index = columns.findIndex(d => d.id === column.id)
|
|
141
142
|
|
|
@@ -150,33 +151,31 @@ export const ColumnSizing: TableFeature = {
|
|
|
150
151
|
return 0
|
|
151
152
|
},
|
|
152
153
|
resetSize: () => {
|
|
153
|
-
|
|
154
|
+
table.setColumnSizing(({ [column.id]: _, ...rest }) => {
|
|
154
155
|
return rest
|
|
155
156
|
})
|
|
156
157
|
},
|
|
157
158
|
getCanResize: () => {
|
|
158
159
|
return (
|
|
159
160
|
(column.columnDef.enableResizing ?? true) &&
|
|
160
|
-
(
|
|
161
|
+
(table.options.enableColumnResizing ?? true)
|
|
161
162
|
)
|
|
162
163
|
},
|
|
163
164
|
getIsResizing: () => {
|
|
164
|
-
return (
|
|
165
|
-
instance.getState().columnSizingInfo.isResizingColumn === column.id
|
|
166
|
-
)
|
|
165
|
+
return table.getState().columnSizingInfo.isResizingColumn === column.id
|
|
167
166
|
},
|
|
168
167
|
}
|
|
169
168
|
},
|
|
170
169
|
|
|
171
|
-
createHeader: <
|
|
172
|
-
header: Header<
|
|
173
|
-
|
|
174
|
-
): ColumnSizingHeader
|
|
170
|
+
createHeader: <TData extends RowData>(
|
|
171
|
+
header: Header<TData>,
|
|
172
|
+
table: Table<TData>
|
|
173
|
+
): ColumnSizingHeader => {
|
|
175
174
|
return {
|
|
176
175
|
getSize: () => {
|
|
177
176
|
let sum = 0
|
|
178
177
|
|
|
179
|
-
const recurse = (header: Header<
|
|
178
|
+
const recurse = (header: Header<TData>) => {
|
|
180
179
|
if (header.subHeaders.length) {
|
|
181
180
|
header.subHeaders.forEach(recurse)
|
|
182
181
|
} else {
|
|
@@ -198,7 +197,7 @@ export const ColumnSizing: TableFeature = {
|
|
|
198
197
|
return 0
|
|
199
198
|
},
|
|
200
199
|
getResizeHandler: () => {
|
|
201
|
-
const column =
|
|
200
|
+
const column = table.getColumn(header.column.id)
|
|
202
201
|
const canResize = column.getCanResize()
|
|
203
202
|
|
|
204
203
|
return (e: unknown) => {
|
|
@@ -237,7 +236,7 @@ export const ColumnSizing: TableFeature = {
|
|
|
237
236
|
|
|
238
237
|
let newColumnSizing: ColumnSizingState = {}
|
|
239
238
|
|
|
240
|
-
|
|
239
|
+
table.setColumnSizingInfo(old => {
|
|
241
240
|
const deltaOffset = clientXPos - (old?.startOffset ?? 0)
|
|
242
241
|
const deltaPercentage = Math.max(
|
|
243
242
|
deltaOffset / (old?.startSize ?? 0),
|
|
@@ -259,10 +258,10 @@ export const ColumnSizing: TableFeature = {
|
|
|
259
258
|
})
|
|
260
259
|
|
|
261
260
|
if (
|
|
262
|
-
|
|
261
|
+
table.options.columnResizeMode === 'onChange' ||
|
|
263
262
|
eventType === 'end'
|
|
264
263
|
) {
|
|
265
|
-
|
|
264
|
+
table.setColumnSizing(old => ({
|
|
266
265
|
...old,
|
|
267
266
|
...newColumnSizing,
|
|
268
267
|
}))
|
|
@@ -275,7 +274,7 @@ export const ColumnSizing: TableFeature = {
|
|
|
275
274
|
const onEnd = (clientXPos?: number) => {
|
|
276
275
|
updateOffset('end', clientXPos)
|
|
277
276
|
|
|
278
|
-
|
|
277
|
+
table.setColumnSizingInfo(old => ({
|
|
279
278
|
...old,
|
|
280
279
|
isResizingColumn: false,
|
|
281
280
|
startOffset: null,
|
|
@@ -333,7 +332,7 @@ export const ColumnSizing: TableFeature = {
|
|
|
333
332
|
)
|
|
334
333
|
}
|
|
335
334
|
|
|
336
|
-
|
|
335
|
+
table.setColumnSizingInfo(old => ({
|
|
337
336
|
...old,
|
|
338
337
|
startOffset: clientX,
|
|
339
338
|
startSize,
|
|
@@ -347,41 +346,40 @@ export const ColumnSizing: TableFeature = {
|
|
|
347
346
|
}
|
|
348
347
|
},
|
|
349
348
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
): ColumnSizingInstance
|
|
349
|
+
createTable: <TData extends RowData>(
|
|
350
|
+
table: Table<TData>
|
|
351
|
+
): ColumnSizingInstance => {
|
|
353
352
|
return {
|
|
354
|
-
setColumnSizing: updater =>
|
|
355
|
-
instance.options.onColumnSizingChange?.(updater),
|
|
353
|
+
setColumnSizing: updater => table.options.onColumnSizingChange?.(updater),
|
|
356
354
|
setColumnSizingInfo: updater =>
|
|
357
|
-
|
|
355
|
+
table.options.onColumnSizingInfoChange?.(updater),
|
|
358
356
|
resetColumnSizing: defaultState => {
|
|
359
|
-
|
|
360
|
-
defaultState ? {} :
|
|
357
|
+
table.setColumnSizing(
|
|
358
|
+
defaultState ? {} : table.initialState.columnSizing ?? {}
|
|
361
359
|
)
|
|
362
360
|
},
|
|
363
361
|
resetHeaderSizeInfo: defaultState => {
|
|
364
|
-
|
|
362
|
+
table.setColumnSizingInfo(
|
|
365
363
|
defaultState
|
|
366
364
|
? getDefaultColumnSizingInfoState()
|
|
367
|
-
:
|
|
365
|
+
: table.initialState.columnSizingInfo ??
|
|
368
366
|
getDefaultColumnSizingInfoState()
|
|
369
367
|
)
|
|
370
368
|
},
|
|
371
369
|
getTotalSize: () =>
|
|
372
|
-
|
|
370
|
+
table.getHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
373
371
|
return sum + header.getSize()
|
|
374
372
|
}, 0) ?? 0,
|
|
375
373
|
getLeftTotalSize: () =>
|
|
376
|
-
|
|
374
|
+
table.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
377
375
|
return sum + header.getSize()
|
|
378
376
|
}, 0) ?? 0,
|
|
379
377
|
getCenterTotalSize: () =>
|
|
380
|
-
|
|
378
|
+
table.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
381
379
|
return sum + header.getSize()
|
|
382
380
|
}, 0) ?? 0,
|
|
383
381
|
getRightTotalSize: () =>
|
|
384
|
-
|
|
382
|
+
table.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
385
383
|
return sum + header.getSize()
|
|
386
384
|
}, 0) ?? 0,
|
|
387
385
|
}
|