@tanstack/react-table 8.0.0-alpha.6 → 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 +66 -73
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +47 -33
- 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 +1388 -1355
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +337 -307
- package/build/types/core.d.ts +63 -67
- 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 +1397 -1354
- 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.tsx +192 -520
- package/src/createTable.tsx +137 -192
- 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,194 +1,124 @@
|
|
|
1
1
|
import * as React from 'react'
|
|
2
|
-
import { Cell, Column, Row } from '.'
|
|
3
2
|
import { createTableInstance } from './core'
|
|
3
|
+
import { CustomFilterTypes } from './features/Filters'
|
|
4
|
+
import { CustomAggregationTypes } from './features/Grouping'
|
|
5
|
+
import { CustomSortingTypes } from './features/Sorting'
|
|
4
6
|
import {
|
|
5
|
-
|
|
7
|
+
TableInstance,
|
|
6
8
|
ColumnDef,
|
|
7
9
|
AccessorFn,
|
|
8
10
|
Options,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
DefaultGenerics,
|
|
12
|
+
PartialGenerics,
|
|
13
|
+
_NonGenerated,
|
|
11
14
|
} from './types'
|
|
12
|
-
import { Overwrite } from './utils'
|
|
15
|
+
import { Overwrite, PartialKeys } from './utils'
|
|
16
|
+
|
|
17
|
+
export type CreatTableFactory<TGenerics extends Partial<DefaultGenerics>> = <
|
|
18
|
+
TRow
|
|
19
|
+
>() => CreateTable<Overwrite<TGenerics, { Row: TRow }>>
|
|
20
|
+
|
|
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
|
+
}
|
|
13
30
|
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
+
}
|
|
21
45
|
>
|
|
46
|
+
> {
|
|
47
|
+
return () => _createTable(undefined, undefined, opts)
|
|
48
|
+
}
|
|
22
49
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
) => TableHelper<TData, TValue, TTFilterFns, TSortingFns, TAggregationFns>
|
|
26
|
-
|
|
27
|
-
SortingFns: <TTSortingFns>(
|
|
28
|
-
sortingFns: TTSortingFns
|
|
29
|
-
) => TableHelper<TData, TValue, TFilterFns, TTSortingFns, TAggregationFns>
|
|
30
|
-
|
|
31
|
-
AggregationFns: <TTAggregationFns>(
|
|
32
|
-
aggregationFns: TTAggregationFns
|
|
33
|
-
) => TableHelper<TData, TValue, TFilterFns, TSortingFns, TTAggregationFns>
|
|
34
|
-
|
|
35
|
-
createColumns: (
|
|
36
|
-
columns: ColumnDef<
|
|
37
|
-
TData,
|
|
38
|
-
TValue,
|
|
39
|
-
TFilterFns,
|
|
40
|
-
TSortingFns,
|
|
41
|
-
TAggregationFns
|
|
42
|
-
>[]
|
|
43
|
-
) => ColumnDef<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
|
|
44
|
-
|
|
50
|
+
export type CreateTable<TGenerics extends Partial<DefaultGenerics>> = {
|
|
51
|
+
createColumns: (columns: ColumnDef<TGenerics>[]) => ColumnDef<TGenerics>[]
|
|
45
52
|
createGroup: (
|
|
46
53
|
column: Overwrite<
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
__generated?: never
|
|
50
|
-
accessorFn?: never
|
|
51
|
-
accessorKey?: never
|
|
52
|
-
header: string
|
|
53
|
-
id?: string
|
|
54
|
-
}
|
|
55
|
-
| {
|
|
56
|
-
__generated?: never
|
|
57
|
-
accessorFn?: never
|
|
58
|
-
accessorKey?: never
|
|
59
|
-
id: string
|
|
60
|
-
header?:
|
|
61
|
-
| string
|
|
62
|
-
| Renderable<{
|
|
63
|
-
instance: ReactTable<
|
|
64
|
-
TData,
|
|
65
|
-
TValue,
|
|
66
|
-
TFilterFns,
|
|
67
|
-
TSortingFns,
|
|
68
|
-
TAggregationFns
|
|
69
|
-
>
|
|
70
|
-
header: Header<
|
|
71
|
-
TData,
|
|
72
|
-
TValue,
|
|
73
|
-
TFilterFns,
|
|
74
|
-
TSortingFns,
|
|
75
|
-
TAggregationFns
|
|
76
|
-
>
|
|
77
|
-
column: Column<
|
|
78
|
-
TData,
|
|
79
|
-
TValue,
|
|
80
|
-
TFilterFns,
|
|
81
|
-
TSortingFns,
|
|
82
|
-
TAggregationFns
|
|
83
|
-
>
|
|
84
|
-
}>
|
|
85
|
-
}
|
|
86
|
-
>
|
|
87
|
-
) => ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>
|
|
88
|
-
|
|
89
|
-
createDisplayColumn: (
|
|
90
|
-
column: Overwrite<
|
|
91
|
-
ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>,
|
|
92
|
-
{ __generated?: never; accessorFn?: never; accessorKey?: never }
|
|
93
|
-
>
|
|
94
|
-
) => ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>
|
|
95
|
-
|
|
96
|
-
createDataColumn: <TAccessor extends AccessorFn<TData> | keyof TData>(
|
|
97
|
-
accessor: TAccessor,
|
|
98
|
-
column: TAccessor extends (...args: any[]) => any
|
|
99
|
-
? // Accessor Fn
|
|
100
|
-
Overwrite<
|
|
101
|
-
ColumnDef<
|
|
102
|
-
TData,
|
|
103
|
-
ReturnType<TAccessor>,
|
|
104
|
-
TFilterFns,
|
|
105
|
-
TSortingFns,
|
|
106
|
-
TAggregationFns
|
|
107
|
-
>,
|
|
54
|
+
| Overwrite<
|
|
55
|
+
_NonGenerated<ColumnDef<TGenerics>>,
|
|
108
56
|
{
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
accessorKey?: never
|
|
112
|
-
id: string
|
|
57
|
+
header: string
|
|
58
|
+
id?: string
|
|
113
59
|
}
|
|
114
60
|
>
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
Overwrite<
|
|
118
|
-
ColumnDef<
|
|
119
|
-
TData,
|
|
120
|
-
TData[TAccessor],
|
|
121
|
-
TFilterFns,
|
|
122
|
-
TSortingFns,
|
|
123
|
-
TAggregationFns
|
|
124
|
-
>,
|
|
61
|
+
| Overwrite<
|
|
62
|
+
_NonGenerated<ColumnDef<TGenerics>>,
|
|
125
63
|
{
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
accessorKey?: never
|
|
129
|
-
id?: string
|
|
64
|
+
id: string
|
|
65
|
+
header?: string | ColumnDef<TGenerics>['header']
|
|
130
66
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
) => ColumnDef<
|
|
134
|
-
TData,
|
|
135
|
-
TAccessor extends (...args: any[]) => any
|
|
136
|
-
? ReturnType<TAccessor>
|
|
137
|
-
: TAccessor extends keyof TData
|
|
138
|
-
? TData[TAccessor]
|
|
139
|
-
: never,
|
|
140
|
-
TFilterFns,
|
|
141
|
-
TSortingFns,
|
|
142
|
-
TAggregationFns
|
|
143
|
-
>
|
|
144
|
-
|
|
145
|
-
useTable: <TData, TValue, TFilterFns, TSortingFns, TAggregationFns>(
|
|
146
|
-
options: Options<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
147
|
-
) => ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
148
|
-
|
|
149
|
-
types: {
|
|
150
|
-
instance: ReactTable<
|
|
151
|
-
TData,
|
|
152
|
-
TValue,
|
|
153
|
-
TFilterFns,
|
|
154
|
-
TSortingFns,
|
|
155
|
-
TAggregationFns
|
|
67
|
+
>,
|
|
68
|
+
{ accessorFn?: never; accessorKey?: never }
|
|
156
69
|
>
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
TAggregationFns
|
|
70
|
+
) => ColumnDef<TGenerics>
|
|
71
|
+
createDisplayColumn: (
|
|
72
|
+
column: PartialKeys<
|
|
73
|
+
_NonGenerated<ColumnDef<TGenerics>>,
|
|
74
|
+
'accessorFn' | 'accessorKey'
|
|
163
75
|
>
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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 }>>()
|
|
168
110
|
}
|
|
169
111
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
TAggregationFns
|
|
176
|
-
>(): 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> {
|
|
177
117
|
return {
|
|
178
|
-
RowType: () => createTable(),
|
|
179
|
-
FilterFns: () => createTable(),
|
|
180
|
-
SortingFns: () => createTable(),
|
|
181
|
-
AggregationFns: () => createTable(),
|
|
182
118
|
createColumns: columns => columns,
|
|
183
|
-
createDisplayColumn: column =>
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}),
|
|
187
|
-
createGroup: column => ({
|
|
188
|
-
...column,
|
|
189
|
-
__generated: true,
|
|
190
|
-
}),
|
|
191
|
-
createDataColumn: (accessor, column) => {
|
|
119
|
+
createDisplayColumn: column => column as any,
|
|
120
|
+
createGroup: column => column as any,
|
|
121
|
+
createDataColumn: (accessor, column): any => {
|
|
192
122
|
column = {
|
|
193
123
|
...column,
|
|
194
124
|
id: column.id,
|
|
@@ -199,7 +129,6 @@ export function createTable<
|
|
|
199
129
|
...column,
|
|
200
130
|
id: column.id ?? accessor,
|
|
201
131
|
accessorKey: accessor,
|
|
202
|
-
__generated: true,
|
|
203
132
|
}
|
|
204
133
|
}
|
|
205
134
|
|
|
@@ -207,35 +136,51 @@ export function createTable<
|
|
|
207
136
|
return {
|
|
208
137
|
...column,
|
|
209
138
|
accessorFn: accessor,
|
|
210
|
-
__generated: true,
|
|
211
139
|
}
|
|
212
140
|
}
|
|
213
141
|
|
|
214
142
|
throw new Error('Invalid accessor')
|
|
215
143
|
},
|
|
216
|
-
useTable:
|
|
217
|
-
options:
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
const
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
TValue,
|
|
229
|
-
TFilterFns,
|
|
230
|
-
TSortingFns,
|
|
231
|
-
TAggregationFns
|
|
232
|
-
>(options, rerender)
|
|
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,
|
|
233
156
|
}
|
|
234
157
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
158
|
+
// Create a new table instance and store it in state
|
|
159
|
+
const [instance] = React.useState(() =>
|
|
160
|
+
createTableInstance<TGenerics>(resolvedOptions)
|
|
161
|
+
)
|
|
162
|
+
|
|
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
|
+
}))
|
|
182
|
+
|
|
183
|
+
return instance
|
|
238
184
|
},
|
|
239
|
-
|
|
240
|
-
} as TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
|
|
185
|
+
}
|
|
241
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
|
|