@tanstack/react-table 8.0.0-alpha.8 → 8.0.0-alpha.9
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.js +65 -80
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +44 -30
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +23 -22
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Expanding.js +10 -22
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +27 -58
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +10 -27
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +108 -28
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +2 -2
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +24 -29
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +23 -38
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Sorting.js +10 -22
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +10 -2
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterTypes.js.map +1 -1
- package/build/cjs/index.js +12 -0
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/sortTypes.js.map +1 -1
- package/build/cjs/types.js +22 -0
- package/build/cjs/types.js.map +1 -0
- package/build/cjs/utils/columnFilterRowsFn.js.map +1 -1
- package/build/cjs/utils/expandRowsFn.js.map +1 -1
- package/build/cjs/utils/globalFilterRowsFn.js.map +1 -1
- package/build/cjs/utils/groupRowsFn.js.map +1 -1
- package/build/cjs/utils/paginateRowsFn.js.map +1 -1
- package/build/cjs/utils/sortRowsFn.js.map +1 -1
- package/build/cjs/utils.js +44 -18
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +1382 -1357
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +337 -321
- package/build/types/core.d.ts +63 -68
- package/build/types/createTable.d.ts +34 -44
- package/build/types/features/ColumnSizing.d.ts +13 -7
- package/build/types/features/Expanding.d.ts +11 -16
- package/build/types/features/Filters.d.ts +39 -47
- package/build/types/features/Grouping.d.ts +28 -27
- package/build/types/features/Headers.d.ts +30 -30
- package/build/types/features/Ordering.d.ts +5 -5
- package/build/types/features/Pagination.d.ts +11 -16
- package/build/types/features/Pinning.d.ts +5 -5
- package/build/types/features/RowSelection.d.ts +15 -23
- package/build/types/features/Sorting.d.ts +26 -25
- package/build/types/features/Visibility.d.ts +9 -9
- package/build/types/filterTypes.d.ts +10 -10
- package/build/types/index.d.ts +1 -0
- package/build/types/sortTypes.d.ts +7 -7
- package/build/types/types.d.ts +34 -23
- package/build/types/utils/columnFilterRowsFn.d.ts +2 -2
- package/build/types/utils/expandRowsFn.d.ts +2 -2
- package/build/types/utils/globalFilterRowsFn.d.ts +2 -2
- package/build/types/utils/groupRowsFn.d.ts +2 -2
- package/build/types/utils/paginateRowsFn.d.ts +2 -2
- package/build/types/utils/sortRowsFn.d.ts +2 -2
- package/build/types/utils.d.ts +5 -6
- package/build/umd/index.development.js +1395 -1359
- 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 -7
- package/src/core.tsx +189 -522
- package/src/createTable.tsx +133 -191
- package/src/features/ColumnSizing.ts +48 -77
- package/src/features/Expanding.ts +25 -113
- package/src/features/Filters.ts +91 -293
- package/src/features/Grouping.ts +60 -165
- package/src/features/Headers.ts +148 -331
- package/src/features/Ordering.ts +19 -42
- package/src/features/Pagination.ts +35 -110
- package/src/features/Pinning.ts +16 -40
- package/src/features/RowSelection.ts +47 -227
- package/src/features/Sorting.ts +49 -143
- package/src/features/Visibility.ts +23 -64
- package/src/filterTypes.ts +19 -82
- package/src/index.tsx +1 -0
- package/src/sortTypes.ts +19 -31
- package/src/types.ts +80 -100
- package/src/utils/columnFilterRowsFn.ts +11 -53
- package/src/utils/expandRowsFn.ts +7 -27
- package/src/utils/globalFilterRowsFn.ts +10 -43
- package/src/utils/groupRowsFn.ts +13 -37
- package/src/utils/paginateRowsFn.ts +5 -11
- package/src/utils/sortRowsFn.ts +8 -28
- package/src/utils.tsx +61 -35
package/src/createTable.tsx
CHANGED
|
@@ -1,201 +1,124 @@
|
|
|
1
1
|
import * as React from 'react'
|
|
2
|
-
import { useSyncExternalStore } from 'use-sync-external-store/shim'
|
|
3
|
-
import { Cell, Column, Row } from '.'
|
|
4
2
|
import { createTableInstance } from './core'
|
|
3
|
+
import { CustomFilterTypes } from './features/Filters'
|
|
4
|
+
import { CustomAggregationTypes } from './features/Grouping'
|
|
5
|
+
import { CustomSortingTypes } from './features/Sorting'
|
|
5
6
|
import {
|
|
6
|
-
|
|
7
|
+
TableInstance,
|
|
7
8
|
ColumnDef,
|
|
8
9
|
AccessorFn,
|
|
9
10
|
Options,
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
DefaultGenerics,
|
|
12
|
+
PartialGenerics,
|
|
13
|
+
_NonGenerated,
|
|
12
14
|
} from './types'
|
|
13
|
-
import { Overwrite } from './utils'
|
|
15
|
+
import { Overwrite, PartialKeys } from './utils'
|
|
14
16
|
|
|
15
|
-
export type
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
TFilterFns,
|
|
19
|
-
TSortingFns,
|
|
20
|
-
TAggregationFns
|
|
21
|
-
> = {
|
|
22
|
-
RowType<TTData>(): TableHelper<
|
|
23
|
-
TTData,
|
|
24
|
-
TValue,
|
|
25
|
-
TFilterFns,
|
|
26
|
-
TSortingFns,
|
|
27
|
-
TAggregationFns
|
|
28
|
-
>
|
|
29
|
-
|
|
30
|
-
FilterFns: <TTFilterFns>(
|
|
31
|
-
filterFns: TTFilterFns
|
|
32
|
-
) => TableHelper<TData, TValue, TTFilterFns, TSortingFns, TAggregationFns>
|
|
17
|
+
export type CreatTableFactory<TGenerics extends Partial<DefaultGenerics>> = <
|
|
18
|
+
TRow
|
|
19
|
+
>() => CreateTable<Overwrite<TGenerics, { Row: TRow }>>
|
|
33
20
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
21
|
+
export type CreateTableOptions<
|
|
22
|
+
TFilterFns extends CustomFilterTypes<any>,
|
|
23
|
+
TSortingFns extends CustomSortingTypes<any>,
|
|
24
|
+
TAggregationFns extends CustomAggregationTypes<any>
|
|
25
|
+
> = {
|
|
26
|
+
filterFns?: TFilterFns
|
|
27
|
+
sortingFns?: TSortingFns
|
|
28
|
+
aggregationFns?: TAggregationFns
|
|
29
|
+
}
|
|
41
30
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
31
|
+
export function createTableFactory<
|
|
32
|
+
TFilterFns extends CustomFilterTypes<any>,
|
|
33
|
+
TSortingFns extends CustomSortingTypes<any>,
|
|
34
|
+
TAggregationFns extends CustomAggregationTypes<any>
|
|
35
|
+
>(
|
|
36
|
+
opts: CreateTableOptions<TFilterFns, TSortingFns, TAggregationFns>
|
|
37
|
+
): CreatTableFactory<
|
|
38
|
+
Overwrite<
|
|
39
|
+
PartialGenerics,
|
|
40
|
+
{
|
|
41
|
+
FilterFns: TFilterFns
|
|
42
|
+
SortingFns: TSortingFns
|
|
43
|
+
AggregationFns: TAggregationFns
|
|
44
|
+
}
|
|
45
|
+
>
|
|
46
|
+
> {
|
|
47
|
+
return () => _createTable(undefined, undefined, opts)
|
|
48
|
+
}
|
|
51
49
|
|
|
50
|
+
export type CreateTable<TGenerics extends Partial<DefaultGenerics>> = {
|
|
51
|
+
createColumns: (columns: ColumnDef<TGenerics>[]) => ColumnDef<TGenerics>[]
|
|
52
52
|
createGroup: (
|
|
53
53
|
column: Overwrite<
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
__generated?: never
|
|
57
|
-
accessorFn?: never
|
|
58
|
-
accessorKey?: never
|
|
59
|
-
header: string
|
|
60
|
-
id?: string
|
|
61
|
-
}
|
|
62
|
-
| {
|
|
63
|
-
__generated?: never
|
|
64
|
-
accessorFn?: never
|
|
65
|
-
accessorKey?: never
|
|
66
|
-
id: string
|
|
67
|
-
header?:
|
|
68
|
-
| string
|
|
69
|
-
| Renderable<{
|
|
70
|
-
instance: ReactTable<
|
|
71
|
-
TData,
|
|
72
|
-
TValue,
|
|
73
|
-
TFilterFns,
|
|
74
|
-
TSortingFns,
|
|
75
|
-
TAggregationFns
|
|
76
|
-
>
|
|
77
|
-
header: Header<
|
|
78
|
-
TData,
|
|
79
|
-
TValue,
|
|
80
|
-
TFilterFns,
|
|
81
|
-
TSortingFns,
|
|
82
|
-
TAggregationFns
|
|
83
|
-
>
|
|
84
|
-
column: Column<
|
|
85
|
-
TData,
|
|
86
|
-
TValue,
|
|
87
|
-
TFilterFns,
|
|
88
|
-
TSortingFns,
|
|
89
|
-
TAggregationFns
|
|
90
|
-
>
|
|
91
|
-
}>
|
|
92
|
-
}
|
|
93
|
-
>
|
|
94
|
-
) => ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>
|
|
95
|
-
|
|
96
|
-
createDisplayColumn: (
|
|
97
|
-
column: Overwrite<
|
|
98
|
-
ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>,
|
|
99
|
-
{ __generated?: never; accessorFn?: never; accessorKey?: never }
|
|
100
|
-
>
|
|
101
|
-
) => ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>
|
|
102
|
-
|
|
103
|
-
createDataColumn: <TAccessor extends AccessorFn<TData> | keyof TData>(
|
|
104
|
-
accessor: TAccessor,
|
|
105
|
-
column: TAccessor extends (...args: any[]) => any
|
|
106
|
-
? // Accessor Fn
|
|
107
|
-
Overwrite<
|
|
108
|
-
ColumnDef<
|
|
109
|
-
TData,
|
|
110
|
-
ReturnType<TAccessor>,
|
|
111
|
-
TFilterFns,
|
|
112
|
-
TSortingFns,
|
|
113
|
-
TAggregationFns
|
|
114
|
-
>,
|
|
54
|
+
| Overwrite<
|
|
55
|
+
_NonGenerated<ColumnDef<TGenerics>>,
|
|
115
56
|
{
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
accessorKey?: never
|
|
119
|
-
id: string
|
|
57
|
+
header: string
|
|
58
|
+
id?: string
|
|
120
59
|
}
|
|
121
60
|
>
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
Overwrite<
|
|
125
|
-
ColumnDef<
|
|
126
|
-
TData,
|
|
127
|
-
TData[TAccessor],
|
|
128
|
-
TFilterFns,
|
|
129
|
-
TSortingFns,
|
|
130
|
-
TAggregationFns
|
|
131
|
-
>,
|
|
61
|
+
| Overwrite<
|
|
62
|
+
_NonGenerated<ColumnDef<TGenerics>>,
|
|
132
63
|
{
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
accessorKey?: never
|
|
136
|
-
id?: string
|
|
64
|
+
id: string
|
|
65
|
+
header?: string | ColumnDef<TGenerics>['header']
|
|
137
66
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
) => ColumnDef<
|
|
141
|
-
TData,
|
|
142
|
-
TAccessor extends (...args: any[]) => any
|
|
143
|
-
? ReturnType<TAccessor>
|
|
144
|
-
: TAccessor extends keyof TData
|
|
145
|
-
? TData[TAccessor]
|
|
146
|
-
: never,
|
|
147
|
-
TFilterFns,
|
|
148
|
-
TSortingFns,
|
|
149
|
-
TAggregationFns
|
|
150
|
-
>
|
|
151
|
-
|
|
152
|
-
useTable: <TData, TValue, TFilterFns, TSortingFns, TAggregationFns>(
|
|
153
|
-
options: Options<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
154
|
-
) => ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
155
|
-
|
|
156
|
-
types: {
|
|
157
|
-
instance: ReactTable<
|
|
158
|
-
TData,
|
|
159
|
-
TValue,
|
|
160
|
-
TFilterFns,
|
|
161
|
-
TSortingFns,
|
|
162
|
-
TAggregationFns
|
|
67
|
+
>,
|
|
68
|
+
{ accessorFn?: never; accessorKey?: never }
|
|
163
69
|
>
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
TAggregationFns
|
|
70
|
+
) => ColumnDef<TGenerics>
|
|
71
|
+
createDisplayColumn: (
|
|
72
|
+
column: PartialKeys<
|
|
73
|
+
_NonGenerated<ColumnDef<TGenerics>>,
|
|
74
|
+
'accessorFn' | 'accessorKey'
|
|
170
75
|
>
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
76
|
+
) => ColumnDef<TGenerics>
|
|
77
|
+
createDataColumn: <
|
|
78
|
+
TAccessor extends AccessorFn<TGenerics['Row']> | keyof TGenerics['Row']
|
|
79
|
+
>(
|
|
80
|
+
accessor: TAccessor,
|
|
81
|
+
column: Overwrite<
|
|
82
|
+
TAccessor extends (...args: any[]) => any
|
|
83
|
+
? // Accessor Fn
|
|
84
|
+
_NonGenerated<ColumnDef<TGenerics>>
|
|
85
|
+
: TAccessor extends keyof TGenerics['Row']
|
|
86
|
+
? // Accessor Key
|
|
87
|
+
Overwrite<
|
|
88
|
+
_NonGenerated<ColumnDef<TGenerics>>,
|
|
89
|
+
{
|
|
90
|
+
id?: string
|
|
91
|
+
}
|
|
92
|
+
>
|
|
93
|
+
: never,
|
|
94
|
+
{
|
|
95
|
+
accessorFn?: never
|
|
96
|
+
accessorKey?: never
|
|
97
|
+
}
|
|
98
|
+
>
|
|
99
|
+
) => ColumnDef<TGenerics>
|
|
100
|
+
useTable: (
|
|
101
|
+
options: PartialKeys<
|
|
102
|
+
Omit<Options<TGenerics>, keyof CreateTableOptions<any, any, any>>,
|
|
103
|
+
'state' | 'onStateChange'
|
|
104
|
+
>
|
|
105
|
+
) => TableInstance<TGenerics>
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export function createTable<TRow>() {
|
|
109
|
+
return _createTable<Overwrite<PartialGenerics, { Row: TRow }>>()
|
|
175
110
|
}
|
|
176
111
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
TAggregationFns
|
|
183
|
-
>(): TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
|
|
112
|
+
function _createTable<TGenerics extends PartialGenerics>(
|
|
113
|
+
_?: undefined,
|
|
114
|
+
__?: undefined,
|
|
115
|
+
opts?: CreateTableOptions<any, any, any>
|
|
116
|
+
): CreateTable<TGenerics> {
|
|
184
117
|
return {
|
|
185
|
-
RowType: () => createTable(),
|
|
186
|
-
FilterFns: () => createTable(),
|
|
187
|
-
SortingFns: () => createTable(),
|
|
188
|
-
AggregationFns: () => createTable(),
|
|
189
118
|
createColumns: columns => columns,
|
|
190
|
-
createDisplayColumn: column =>
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}),
|
|
194
|
-
createGroup: column => ({
|
|
195
|
-
...column,
|
|
196
|
-
__generated: true,
|
|
197
|
-
}),
|
|
198
|
-
createDataColumn: (accessor, column) => {
|
|
119
|
+
createDisplayColumn: column => column as any,
|
|
120
|
+
createGroup: column => column as any,
|
|
121
|
+
createDataColumn: (accessor, column): any => {
|
|
199
122
|
column = {
|
|
200
123
|
...column,
|
|
201
124
|
id: column.id,
|
|
@@ -206,7 +129,6 @@ export function createTable<
|
|
|
206
129
|
...column,
|
|
207
130
|
id: column.id ?? accessor,
|
|
208
131
|
accessorKey: accessor,
|
|
209
|
-
__generated: true,
|
|
210
132
|
}
|
|
211
133
|
}
|
|
212
134
|
|
|
@@ -214,31 +136,51 @@ export function createTable<
|
|
|
214
136
|
return {
|
|
215
137
|
...column,
|
|
216
138
|
accessorFn: accessor,
|
|
217
|
-
__generated: true,
|
|
218
139
|
}
|
|
219
140
|
}
|
|
220
141
|
|
|
221
142
|
throw new Error('Invalid accessor')
|
|
222
143
|
},
|
|
223
|
-
useTable:
|
|
224
|
-
options:
|
|
225
|
-
|
|
144
|
+
useTable: (
|
|
145
|
+
options: PartialKeys<
|
|
146
|
+
Omit<Options<TGenerics>, keyof CreateTableOptions<any, any, any>>,
|
|
147
|
+
'state' | 'onStateChange'
|
|
148
|
+
>
|
|
149
|
+
): TableInstance<TGenerics> => {
|
|
150
|
+
// Compose in the generic options to the user options
|
|
151
|
+
const resolvedOptions = {
|
|
152
|
+
...(opts ?? {}),
|
|
153
|
+
state: {}, // Dummy state
|
|
154
|
+
onStateChange: () => {}, // noop
|
|
155
|
+
...options,
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Create a new table instance and store it in state
|
|
226
159
|
const [instance] = React.useState(() =>
|
|
227
|
-
createTableInstance<
|
|
228
|
-
TData,
|
|
229
|
-
TValue,
|
|
230
|
-
TFilterFns,
|
|
231
|
-
TSortingFns,
|
|
232
|
-
TAggregationFns
|
|
233
|
-
>(options)
|
|
160
|
+
createTableInstance<TGenerics>(resolvedOptions)
|
|
234
161
|
)
|
|
235
162
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
163
|
+
// By default, manage table state here using the instance's initial state
|
|
164
|
+
const [state, setState] = React.useState(() => instance.initialState)
|
|
165
|
+
|
|
166
|
+
// Compose the default state above with any user state. This will allow the user
|
|
167
|
+
// to only control a subset of the state if desired.
|
|
168
|
+
instance.setOptions(prev => ({
|
|
169
|
+
...prev,
|
|
170
|
+
...options,
|
|
171
|
+
state: {
|
|
172
|
+
...state,
|
|
173
|
+
...options.state,
|
|
174
|
+
},
|
|
175
|
+
// Similarly, we'll maintain both our internal state and any user-provided
|
|
176
|
+
// state.
|
|
177
|
+
onStateChange: updater => {
|
|
178
|
+
setState(updater)
|
|
179
|
+
options.onStateChange?.(updater)
|
|
180
|
+
},
|
|
181
|
+
}))
|
|
239
182
|
|
|
240
183
|
return instance
|
|
241
184
|
},
|
|
242
|
-
|
|
243
|
-
} as TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
185
|
+
}
|
|
244
186
|
}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
ComponentProps,
|
|
1
|
+
import {
|
|
3
2
|
MouseEvent as ReactMouseEvent,
|
|
4
|
-
PropsWithoutRef,
|
|
5
|
-
PropsWithRef,
|
|
6
3
|
TouchEvent as ReactTouchEvent,
|
|
7
4
|
} from 'react'
|
|
8
5
|
import {
|
|
@@ -10,8 +7,9 @@ import {
|
|
|
10
7
|
Getter,
|
|
11
8
|
Header,
|
|
12
9
|
OnChangeFn,
|
|
10
|
+
PartialGenerics,
|
|
13
11
|
PropGetterValue,
|
|
14
|
-
|
|
12
|
+
TableInstance,
|
|
15
13
|
Updater,
|
|
16
14
|
} from '../types'
|
|
17
15
|
import { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'
|
|
@@ -57,13 +55,7 @@ export type ColumnResizerProps = {
|
|
|
57
55
|
role?: string
|
|
58
56
|
}
|
|
59
57
|
|
|
60
|
-
export type ColumnSizingInstance<
|
|
61
|
-
TData,
|
|
62
|
-
TValue,
|
|
63
|
-
TFilterFns,
|
|
64
|
-
TSortingFns,
|
|
65
|
-
TAggregationFns
|
|
66
|
-
> = {
|
|
58
|
+
export type ColumnSizingInstance<TGenerics extends PartialGenerics> = {
|
|
67
59
|
setColumnSizing: (updater: Updater<ColumnSizing>) => void
|
|
68
60
|
setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void
|
|
69
61
|
resetColumnSizing: () => void
|
|
@@ -72,8 +64,8 @@ export type ColumnSizingInstance<
|
|
|
72
64
|
resetHeaderSizeInfo: () => void
|
|
73
65
|
getColumnCanResize: (columnId: string) => boolean
|
|
74
66
|
getHeaderCanResize: (headerId: string) => boolean
|
|
75
|
-
|
|
76
|
-
|
|
67
|
+
getHeaderResizerProps: <TGetter extends Getter<ColumnResizerProps>>(
|
|
68
|
+
headerId: string,
|
|
77
69
|
userProps?: TGetter
|
|
78
70
|
) => undefined | PropGetterValue<ColumnResizerProps, TGetter>
|
|
79
71
|
getColumnIsResizing: (columnId: string) => boolean
|
|
@@ -85,13 +77,13 @@ export type ColumnSizingColumnDef = {
|
|
|
85
77
|
defaultCanResize?: boolean
|
|
86
78
|
}
|
|
87
79
|
|
|
88
|
-
export type ColumnSizingColumn<
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
> = {
|
|
80
|
+
export type ColumnSizingColumn<TGenerics extends PartialGenerics> = {
|
|
81
|
+
getCanResize: () => boolean
|
|
82
|
+
getIsResizing: () => boolean
|
|
83
|
+
resetSize: () => void
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export type ColumnSizingHeader<TGenerics extends PartialGenerics> = {
|
|
95
87
|
getCanResize: () => boolean
|
|
96
88
|
getIsResizing: () => boolean
|
|
97
89
|
getResizerProps: <TGetter extends Getter<ColumnResizerProps>>(
|
|
@@ -122,14 +114,8 @@ export function getInitialState(): ColumnSizingTableState {
|
|
|
122
114
|
}
|
|
123
115
|
}
|
|
124
116
|
|
|
125
|
-
export function getDefaultOptions<
|
|
126
|
-
|
|
127
|
-
TValue,
|
|
128
|
-
TFilterFns,
|
|
129
|
-
TSortingFns,
|
|
130
|
-
TAggregationFns
|
|
131
|
-
>(
|
|
132
|
-
instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
117
|
+
export function getDefaultOptions<TGenerics extends PartialGenerics>(
|
|
118
|
+
instance: TableInstance<TGenerics>
|
|
133
119
|
): ColumnSizingDefaultOptions {
|
|
134
120
|
return {
|
|
135
121
|
columnResizeMode: 'onEnd',
|
|
@@ -138,21 +124,9 @@ export function getDefaultOptions<
|
|
|
138
124
|
}
|
|
139
125
|
}
|
|
140
126
|
|
|
141
|
-
export function getInstance<
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
TFilterFns,
|
|
145
|
-
TSortingFns,
|
|
146
|
-
TAggregationFns
|
|
147
|
-
>(
|
|
148
|
-
instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
149
|
-
): ColumnSizingInstance<
|
|
150
|
-
TData,
|
|
151
|
-
TValue,
|
|
152
|
-
TFilterFns,
|
|
153
|
-
TSortingFns,
|
|
154
|
-
TAggregationFns
|
|
155
|
-
> {
|
|
127
|
+
export function getInstance<TGenerics extends PartialGenerics>(
|
|
128
|
+
instance: TableInstance<TGenerics>
|
|
129
|
+
): ColumnSizingInstance<TGenerics> {
|
|
156
130
|
return {
|
|
157
131
|
setColumnSizing: updater =>
|
|
158
132
|
instance.options.onColumnSizingChange?.(
|
|
@@ -178,10 +152,6 @@ export function getInstance<
|
|
|
178
152
|
resetHeaderSize: headerId => {
|
|
179
153
|
const header = instance.getHeader(headerId)
|
|
180
154
|
|
|
181
|
-
if (!header) {
|
|
182
|
-
return
|
|
183
|
-
}
|
|
184
|
-
|
|
185
155
|
return instance.resetColumnSize(header.column.id)
|
|
186
156
|
},
|
|
187
157
|
getHeaderCanResize: headerId => {
|
|
@@ -225,19 +195,11 @@ export function getInstance<
|
|
|
225
195
|
|
|
226
196
|
return instance.getColumnIsResizing(header.column.id)
|
|
227
197
|
},
|
|
228
|
-
getColumnResizerProps: (headerId, userProps) => {
|
|
229
|
-
const header = instance.getHeader(headerId)
|
|
230
|
-
|
|
231
|
-
if (!header) {
|
|
232
|
-
return
|
|
233
|
-
}
|
|
234
198
|
|
|
199
|
+
getHeaderResizerProps: (headerId, userProps) => {
|
|
200
|
+
const header = instance.getHeader(headerId)
|
|
235
201
|
const column = instance.getColumn(header.column.id)
|
|
236
202
|
|
|
237
|
-
if (!column) {
|
|
238
|
-
return
|
|
239
|
-
}
|
|
240
|
-
|
|
241
203
|
const canResize = column.getCanResize()
|
|
242
204
|
|
|
243
205
|
const onResizeStart = (e: ReactMouseEvent | ReactTouchEvent) => {
|
|
@@ -248,9 +210,13 @@ export function getInstance<
|
|
|
248
210
|
}
|
|
249
211
|
}
|
|
250
212
|
|
|
213
|
+
const header = headerId ? instance.getHeader(headerId) : undefined
|
|
214
|
+
|
|
215
|
+
const startSize = header ? header.getWidth() : column.getWidth()
|
|
216
|
+
|
|
251
217
|
const columnSizingStart: [string, number][] = header
|
|
252
|
-
.getLeafHeaders()
|
|
253
|
-
|
|
218
|
+
? header.getLeafHeaders().map(d => [d.column.id, d.getWidth()])
|
|
219
|
+
: [[column.id, column.getWidth()]]
|
|
254
220
|
|
|
255
221
|
const clientX = isTouchStartEvent(e)
|
|
256
222
|
? Math.round(e.touches[0].clientX)
|
|
@@ -274,10 +240,10 @@ export function getInstance<
|
|
|
274
240
|
)
|
|
275
241
|
|
|
276
242
|
old.columnSizingStart.forEach(([columnId, headerWidth]) => {
|
|
277
|
-
newColumnSizing[columnId] =
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
243
|
+
newColumnSizing[columnId] =
|
|
244
|
+
Math.round(
|
|
245
|
+
Math.max(headerWidth + headerWidth * deltaPercentage, 0) * 100
|
|
246
|
+
) / 100
|
|
281
247
|
})
|
|
282
248
|
|
|
283
249
|
return {
|
|
@@ -374,11 +340,11 @@ export function getInstance<
|
|
|
374
340
|
instance.setColumnSizingInfo(old => ({
|
|
375
341
|
...old,
|
|
376
342
|
startOffset: clientX,
|
|
377
|
-
startSize
|
|
343
|
+
startSize,
|
|
378
344
|
deltaOffset: 0,
|
|
379
345
|
deltaPercentage: 0,
|
|
380
346
|
columnSizingStart,
|
|
381
|
-
isResizingColumn:
|
|
347
|
+
isResizingColumn: column.id,
|
|
382
348
|
}))
|
|
383
349
|
}
|
|
384
350
|
|
|
@@ -403,22 +369,27 @@ export function getInstance<
|
|
|
403
369
|
}
|
|
404
370
|
}
|
|
405
371
|
|
|
406
|
-
export function createColumn<
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
TSortingFns,
|
|
411
|
-
TAggregationFns
|
|
412
|
-
>(
|
|
413
|
-
column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
|
|
414
|
-
instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
415
|
-
): ColumnSizingColumn<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
|
|
372
|
+
export function createColumn<TGenerics extends PartialGenerics>(
|
|
373
|
+
column: Column<TGenerics>,
|
|
374
|
+
instance: TableInstance<TGenerics>
|
|
375
|
+
): ColumnSizingColumn<TGenerics> {
|
|
416
376
|
return {
|
|
417
377
|
getIsResizing: () => instance.getColumnIsResizing(column.id),
|
|
418
378
|
getCanResize: () => instance.getColumnCanResize(column.id),
|
|
419
379
|
resetSize: () => instance.resetColumnSize(column.id),
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
export function createHeader<TGenerics extends PartialGenerics>(
|
|
384
|
+
header: Header<TGenerics>,
|
|
385
|
+
instance: TableInstance<TGenerics>
|
|
386
|
+
): ColumnSizingHeader<TGenerics> {
|
|
387
|
+
return {
|
|
388
|
+
getIsResizing: () => instance.getColumnIsResizing(header.column.id),
|
|
389
|
+
getCanResize: () => instance.getColumnCanResize(header.column.id),
|
|
390
|
+
resetSize: () => instance.resetColumnSize(header.column.id),
|
|
420
391
|
getResizerProps: userProps =>
|
|
421
|
-
instance.
|
|
392
|
+
instance.getHeaderResizerProps(header.id, userProps),
|
|
422
393
|
}
|
|
423
394
|
}
|
|
424
395
|
|