@tanstack/table-core 8.0.0-alpha.58 → 8.0.0-alpha.61
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 +10 -21
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +3 -3
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/Cells.js +0 -15
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +8 -19
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +12 -22
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +0 -23
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +6 -27
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +1 -67
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Pagination.js +4 -4
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +15 -79
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Rows.js +0 -15
- package/build/cjs/features/Rows.js.map +1 -1
- package/build/cjs/features/Sorting.js +7 -28
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +8 -21
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +16 -0
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/index.js +0 -1
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/utils/getColumnFilteredRowModelSync.js +1 -1
- package/build/cjs/utils/getColumnFilteredRowModelSync.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelAsync.js +1 -2
- package/build/cjs/utils/getCoreRowModelAsync.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelSync.js +1 -2
- package/build/cjs/utils/getCoreRowModelSync.js.map +1 -1
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js +1 -1
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js.map +1 -1
- package/build/cjs/utils/getGroupedRowModel.js +3 -1
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModelSync.js +1 -1
- package/build/cjs/utils/getSortedRowModelSync.js.map +1 -1
- package/build/cjs/utils.js +0 -16
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +100 -369
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +360 -360
- package/build/types/core.d.ts +8 -10
- package/build/types/createTable.d.ts +10 -11
- package/build/types/features/Cells.d.ts +1 -2
- package/build/types/features/ColumnSizing.d.ts +4 -18
- package/build/types/features/Expanding.d.ts +5 -9
- package/build/types/features/Filters.d.ts +0 -3
- package/build/types/features/Grouping.d.ts +4 -11
- package/build/types/features/Headers.d.ts +1 -5
- package/build/types/features/Pagination.d.ts +6 -7
- package/build/types/features/RowSelection.d.ts +5 -14
- package/build/types/features/Rows.d.ts +2 -4
- package/build/types/features/Sorting.d.ts +3 -9
- package/build/types/features/Visibility.d.ts +3 -6
- package/build/types/filterFns.d.ts +5 -0
- package/build/types/types.d.ts +10 -60
- package/build/types/utils.d.ts +1 -4
- package/build/umd/index.development.js +99 -369
- 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.ts +29 -53
- package/src/createTable.ts +13 -17
- package/src/features/Cells.ts +1 -27
- package/src/features/ColumnSizing.ts +14 -44
- package/src/features/Columns.ts +0 -2
- package/src/features/Expanding.ts +16 -44
- package/src/features/Filters.ts +0 -33
- package/src/features/Grouping.ts +10 -62
- package/src/features/Headers.ts +1 -95
- package/src/features/Pagination.ts +11 -4
- package/src/features/Pinning.ts +1 -1
- package/src/features/RowSelection.ts +25 -116
- package/src/features/Rows.ts +2 -30
- package/src/features/Sorting.ts +17 -63
- package/src/features/Visibility.ts +15 -43
- package/src/filterFns.ts +20 -0
- package/src/types.ts +36 -98
- package/src/utils/getColumnFilteredRowModelAsync.ts +2 -6
- package/src/utils/getColumnFilteredRowModelSync.ts +1 -1
- package/src/utils/getCoreRowModelAsync.ts +1 -2
- package/src/utils/getCoreRowModelSync.ts +1 -2
- package/src/utils/getGlobalFilteredRowModelAsync.ts +3 -7
- package/src/utils/getGlobalFilteredRowModelSync.ts +1 -1
- package/src/utils/getGroupedRowModel.ts +2 -1
- package/src/utils/getSortedRowModelAsync.ts +1 -2
- package/src/utils/getSortedRowModelSync.ts +1 -1
- package/src/utils.ts +1 -28
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/table-core",
|
|
3
3
|
"author": "Tanner Linsley",
|
|
4
|
-
"version": "8.0.0-alpha.
|
|
4
|
+
"version": "8.0.0-alpha.61",
|
|
5
5
|
"description": "Hooks for building lightweight, fast and extendable datagrids for React",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/tanstack/react-table#readme",
|
package/src/core.ts
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import { functionalUpdate,
|
|
1
|
+
import { functionalUpdate, RequiredKeys } from './utils'
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
Updater,
|
|
5
|
-
|
|
5
|
+
TableOptions,
|
|
6
6
|
TableState,
|
|
7
|
-
ColumnDef,
|
|
8
|
-
TableProps,
|
|
9
|
-
TableBodyProps,
|
|
10
|
-
PropGetter,
|
|
11
7
|
TableInstance,
|
|
12
8
|
Renderable,
|
|
13
|
-
UseRenderer,
|
|
14
9
|
TableFeature,
|
|
15
10
|
TableGenerics,
|
|
11
|
+
InitialTableState,
|
|
16
12
|
} from './types'
|
|
17
13
|
|
|
18
14
|
import { Columns } from './features/Columns'
|
|
@@ -40,42 +36,38 @@ export type CoreOptions<TGenerics extends TableGenerics> = {
|
|
|
40
36
|
data: TGenerics['Row'][]
|
|
41
37
|
state: Partial<TableState>
|
|
42
38
|
onStateChange: (updater: Updater<TableState>) => void
|
|
43
|
-
render: TGenerics['
|
|
39
|
+
render: TGenerics['Renderer']
|
|
44
40
|
debugAll?: boolean
|
|
45
41
|
debugTable?: boolean
|
|
46
42
|
debugHeaders?: boolean
|
|
47
43
|
debugColumns?: boolean
|
|
48
44
|
debugRows?: boolean
|
|
49
|
-
initialState?:
|
|
45
|
+
initialState?: InitialTableState
|
|
50
46
|
autoResetAll?: boolean
|
|
51
|
-
mergeOptions?: (
|
|
52
|
-
defaultOptions: TableFeature,
|
|
53
|
-
options: Partial<Options<TGenerics>>
|
|
54
|
-
) => Options<TGenerics>
|
|
47
|
+
mergeOptions?: <T>(defaultOptions: T, options: Partial<T>) => T
|
|
55
48
|
meta?: TGenerics['TableMeta']
|
|
56
49
|
}
|
|
57
50
|
|
|
58
51
|
export type TableCore<TGenerics extends TableGenerics> = {
|
|
52
|
+
// generics: TGenerics
|
|
59
53
|
initialState: TableState
|
|
60
54
|
reset: () => void
|
|
61
|
-
options: RequiredKeys<
|
|
62
|
-
setOptions: (newOptions: Updater<
|
|
55
|
+
options: RequiredKeys<TableOptions<TGenerics>, 'state'>
|
|
56
|
+
setOptions: (newOptions: Updater<TableOptions<TGenerics>>) => void
|
|
63
57
|
queue: (cb: () => void) => void
|
|
64
58
|
willUpdate: () => void
|
|
65
59
|
getState: () => TableState
|
|
66
60
|
setState: (updater: Updater<TableState>) => void
|
|
67
|
-
getTableProps: PropGetter<TableProps>
|
|
68
|
-
getTableBodyProps: PropGetter<TableBodyProps>
|
|
69
61
|
render: <TProps>(
|
|
70
62
|
template: Renderable<TGenerics, TProps>,
|
|
71
63
|
props: TProps
|
|
72
|
-
) => string | null |
|
|
64
|
+
) => string | null | TGenerics['Rendered']
|
|
73
65
|
getOverallProgress: () => number
|
|
74
66
|
_features: readonly TableFeature[]
|
|
75
67
|
}
|
|
76
68
|
|
|
77
69
|
export function createTableInstance<TGenerics extends TableGenerics>(
|
|
78
|
-
options:
|
|
70
|
+
options: TableOptions<TGenerics>
|
|
79
71
|
): TableInstance<TGenerics> {
|
|
80
72
|
if (options.debugAll || options.debugTable) {
|
|
81
73
|
console.info('Creating Table Instance...')
|
|
@@ -102,14 +94,23 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
102
94
|
|
|
103
95
|
const defaultOptions = instance._features.reduce((obj, feature) => {
|
|
104
96
|
return Object.assign(obj, feature.getDefaultOptions?.(instance))
|
|
105
|
-
}, {})
|
|
97
|
+
}, {}) as TableOptions<TGenerics>
|
|
106
98
|
|
|
107
|
-
const
|
|
99
|
+
const mergeOptions = (options: TableOptions<TGenerics>) => {
|
|
100
|
+
if (instance.options.mergeOptions) {
|
|
101
|
+
return instance.options.mergeOptions(defaultOptions, options)
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return {
|
|
105
|
+
...defaultOptions,
|
|
106
|
+
...options,
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
instance.options = {
|
|
108
111
|
...defaultOptions,
|
|
109
112
|
...options,
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
instance.options = buildOptions(options)
|
|
113
|
+
}
|
|
113
114
|
|
|
114
115
|
const coreInitialState: CoreTableState = {
|
|
115
116
|
coreProgress: 1,
|
|
@@ -117,14 +118,14 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
117
118
|
|
|
118
119
|
const initialState = {
|
|
119
120
|
...coreInitialState,
|
|
121
|
+
...(options.initialState ?? {}),
|
|
120
122
|
...instance._features.reduce((obj, feature) => {
|
|
121
|
-
return Object.assign(obj, feature.getInitialState?.())
|
|
123
|
+
return Object.assign(obj, feature.getInitialState?.(options.initialState))
|
|
122
124
|
}, {}),
|
|
123
|
-
...(options.initialState ?? {}),
|
|
124
125
|
} as TableState
|
|
125
126
|
|
|
126
127
|
const queued: (() => void)[] = []
|
|
127
|
-
let queuedTimeout:
|
|
128
|
+
let queuedTimeout: ReturnType<typeof setTimeout>
|
|
128
129
|
|
|
129
130
|
const finalInstance: TableInstance<TGenerics> = {
|
|
130
131
|
...instance,
|
|
@@ -151,14 +152,7 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
151
152
|
},
|
|
152
153
|
setOptions: updater => {
|
|
153
154
|
const newOptions = functionalUpdate(updater, instance.options)
|
|
154
|
-
|
|
155
|
-
instance.options = instance.options.mergeOptions(
|
|
156
|
-
defaultOptions,
|
|
157
|
-
newOptions
|
|
158
|
-
)
|
|
159
|
-
} else {
|
|
160
|
-
instance.options = buildOptions(newOptions)
|
|
161
|
-
}
|
|
155
|
+
instance.options = mergeOptions(newOptions)
|
|
162
156
|
},
|
|
163
157
|
render: (template, props) => {
|
|
164
158
|
if (typeof instance.options.render === 'function') {
|
|
@@ -180,24 +174,6 @@ export function createTableInstance<TGenerics extends TableGenerics>(
|
|
|
180
174
|
instance.options.onStateChange?.(updater)
|
|
181
175
|
},
|
|
182
176
|
|
|
183
|
-
getTableProps: userProps => {
|
|
184
|
-
return propGetter(
|
|
185
|
-
{
|
|
186
|
-
role: 'table',
|
|
187
|
-
},
|
|
188
|
-
userProps
|
|
189
|
-
)
|
|
190
|
-
},
|
|
191
|
-
|
|
192
|
-
getTableBodyProps: userProps => {
|
|
193
|
-
return propGetter(
|
|
194
|
-
{
|
|
195
|
-
role: 'rowgroup',
|
|
196
|
-
},
|
|
197
|
-
userProps
|
|
198
|
-
)
|
|
199
|
-
},
|
|
200
|
-
|
|
201
177
|
getOverallProgress: () => {
|
|
202
178
|
const { coreProgress, columnFiltersProgress, globalFilterProgress } =
|
|
203
179
|
instance.getState()
|
package/src/createTable.ts
CHANGED
|
@@ -6,9 +6,9 @@ import {
|
|
|
6
6
|
AccessorFn,
|
|
7
7
|
AnyRender,
|
|
8
8
|
TableGenerics,
|
|
9
|
-
|
|
9
|
+
TableOptions,
|
|
10
10
|
} from './types'
|
|
11
|
-
import { IfDefined, Overwrite
|
|
11
|
+
import { IfDefined, Overwrite } from './utils'
|
|
12
12
|
|
|
13
13
|
export type TableFactory<TGenerics extends TableGenerics> =
|
|
14
14
|
() => Table<TGenerics>
|
|
@@ -25,12 +25,16 @@ export type CreateTableOptions<
|
|
|
25
25
|
filterFns?: TFilterFns
|
|
26
26
|
sortingFns?: TSortingFns
|
|
27
27
|
aggregationFns?: TAggregationFns
|
|
28
|
-
} & Omit<
|
|
28
|
+
} & Omit<
|
|
29
|
+
TableOptions<TGenerics>,
|
|
30
|
+
'filterFns' | 'sortingFns' | 'aggregationFns'
|
|
31
|
+
>
|
|
29
32
|
>
|
|
30
33
|
|
|
31
34
|
export type Table<TGenerics extends TableGenerics> = {
|
|
32
35
|
generics: TGenerics
|
|
33
|
-
options: Partial<
|
|
36
|
+
options: Partial<TableOptions<TGenerics>>
|
|
37
|
+
setGenerics: <T extends TableGenerics>() => Table<T>
|
|
34
38
|
setRowType: <TRow>() => Table<Overwrite<TGenerics, { Row: TRow }>>
|
|
35
39
|
setTableMetaType: <TTableMeta>() => Table<
|
|
36
40
|
Overwrite<TGenerics, { TableMeta: TTableMeta }>
|
|
@@ -60,9 +64,6 @@ export type Table<TGenerics extends TableGenerics> = {
|
|
|
60
64
|
}
|
|
61
65
|
>
|
|
62
66
|
>
|
|
63
|
-
createColumns: <TColumnDef extends ColumnDef<any>>(
|
|
64
|
-
columns: TColumnDef[]
|
|
65
|
-
) => TColumnDef[]
|
|
66
67
|
createGroup: (
|
|
67
68
|
column: Overwrite<
|
|
68
69
|
| Overwrite<
|
|
@@ -87,12 +88,7 @@ export type Table<TGenerics extends TableGenerics> = {
|
|
|
87
88
|
>
|
|
88
89
|
) => ColumnDef<TGenerics>
|
|
89
90
|
createDisplayColumn: (
|
|
90
|
-
column:
|
|
91
|
-
PartialKeys<ColumnDef<TGenerics>, 'accessorFn' | 'accessorKey'>,
|
|
92
|
-
{
|
|
93
|
-
columns?: ColumnDef<any>[]
|
|
94
|
-
}
|
|
95
|
-
>
|
|
91
|
+
column: Omit<ColumnDef<TGenerics>, 'columns'>
|
|
96
92
|
) => ColumnDef<TGenerics>
|
|
97
93
|
createDataColumn: <
|
|
98
94
|
TAccessor extends AccessorFn<TGenerics['Row']> | keyof TGenerics['Row']
|
|
@@ -124,9 +120,9 @@ export type Table<TGenerics extends TableGenerics> = {
|
|
|
124
120
|
|
|
125
121
|
//
|
|
126
122
|
|
|
127
|
-
export function createTableFactory<
|
|
128
|
-
render:
|
|
129
|
-
}): () => Table<{
|
|
123
|
+
export function createTableFactory<TRenderer extends AnyRender>(opts: {
|
|
124
|
+
render: TRenderer
|
|
125
|
+
}): () => Table<{ Renderer: TRenderer; Rendered: ReturnType<TRenderer> }> {
|
|
130
126
|
return () => createTable(undefined, undefined, opts)
|
|
131
127
|
}
|
|
132
128
|
|
|
@@ -144,6 +140,7 @@ function createTable<TGenerics extends TableGenerics>(
|
|
|
144
140
|
throw new Error('')
|
|
145
141
|
})(),
|
|
146
142
|
},
|
|
143
|
+
setGenerics: () => table as any,
|
|
147
144
|
setRowType: () => table as any,
|
|
148
145
|
setTableMetaType: () => table as any,
|
|
149
146
|
setColumnMetaType: () => table as any,
|
|
@@ -152,7 +149,6 @@ function createTable<TGenerics extends TableGenerics>(
|
|
|
152
149
|
...options,
|
|
153
150
|
...newOptions,
|
|
154
151
|
} as any),
|
|
155
|
-
createColumns: columns => columns,
|
|
156
152
|
createDisplayColumn: column => ({ ...column, columnDefType: 'display' }),
|
|
157
153
|
createGroup: column => ({ ...column, columnDefType: 'group' } as any),
|
|
158
154
|
createDataColumn: (accessor, column): any => {
|
package/src/features/Cells.ts
CHANGED
|
@@ -5,11 +5,8 @@ import {
|
|
|
5
5
|
Row,
|
|
6
6
|
Column,
|
|
7
7
|
CoreCell,
|
|
8
|
-
Getter,
|
|
9
|
-
CellProps,
|
|
10
|
-
PropGetterValue,
|
|
11
8
|
} from '../types'
|
|
12
|
-
import { memo
|
|
9
|
+
import { memo } from '../utils'
|
|
13
10
|
|
|
14
11
|
export type CellsRow<TGenerics extends TableGenerics> = {
|
|
15
12
|
getAllCells: () => Cell<TGenerics>[]
|
|
@@ -23,11 +20,6 @@ export type CellsInstance<TGenerics extends TableGenerics> = {
|
|
|
23
20
|
value: any
|
|
24
21
|
) => Cell<TGenerics>
|
|
25
22
|
getCell: (rowId: string, columnId: string) => Cell<TGenerics>
|
|
26
|
-
getCellProps: <TGetter extends Getter<CellProps>>(
|
|
27
|
-
rowId: string,
|
|
28
|
-
columnId: string,
|
|
29
|
-
userProps?: TGetter
|
|
30
|
-
) => undefined | PropGetterValue<CellProps, TGetter>
|
|
31
23
|
}
|
|
32
24
|
|
|
33
25
|
//
|
|
@@ -83,8 +75,6 @@ export const Cells = {
|
|
|
83
75
|
row,
|
|
84
76
|
column,
|
|
85
77
|
value,
|
|
86
|
-
getCellProps: userProps =>
|
|
87
|
-
instance.getCellProps(row.id, column.id, userProps)!,
|
|
88
78
|
renderCell: () =>
|
|
89
79
|
column.cell
|
|
90
80
|
? instance.render(column.cell, {
|
|
@@ -135,22 +125,6 @@ export const Cells = {
|
|
|
135
125
|
|
|
136
126
|
return cell
|
|
137
127
|
},
|
|
138
|
-
|
|
139
|
-
getCellProps: (rowId, columnId, userProps) => {
|
|
140
|
-
const cell = instance.getCell(rowId, columnId)
|
|
141
|
-
|
|
142
|
-
if (!cell) {
|
|
143
|
-
return
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
return propGetter(
|
|
147
|
-
{
|
|
148
|
-
key: cell.id,
|
|
149
|
-
role: 'gridcell',
|
|
150
|
-
},
|
|
151
|
-
userProps
|
|
152
|
-
)
|
|
153
|
-
},
|
|
154
128
|
}
|
|
155
129
|
},
|
|
156
130
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Column,
|
|
3
|
-
Getter,
|
|
4
3
|
Header,
|
|
5
4
|
OnChangeFn,
|
|
6
5
|
TableGenerics,
|
|
7
|
-
PropGetterValue,
|
|
8
6
|
TableInstance,
|
|
9
7
|
Updater,
|
|
8
|
+
TableFeature,
|
|
10
9
|
} from '../types'
|
|
11
|
-
import { makeStateUpdater
|
|
10
|
+
import { makeStateUpdater } from '../utils'
|
|
12
11
|
import { ColumnPinningPosition } from './Pinning'
|
|
13
12
|
|
|
14
13
|
//
|
|
@@ -44,14 +43,6 @@ export type ColumnSizingDefaultOptions = {
|
|
|
44
43
|
onColumnSizingInfoChange: OnChangeFn<ColumnSizingInfoState>
|
|
45
44
|
}
|
|
46
45
|
|
|
47
|
-
export type ColumnResizerProps = {
|
|
48
|
-
title?: string
|
|
49
|
-
onMouseDown?: (e: MouseEvent) => void
|
|
50
|
-
onTouchStart?: (e: TouchEvent) => void
|
|
51
|
-
draggable?: boolean
|
|
52
|
-
role?: string
|
|
53
|
-
}
|
|
54
|
-
|
|
55
46
|
export type ColumnSizingInstance<TGenerics extends TableGenerics> = {
|
|
56
47
|
getColumnSize: (columnId: string) => number
|
|
57
48
|
getColumnStart: (columnId: string, position?: ColumnPinningPosition) => number
|
|
@@ -63,10 +54,7 @@ export type ColumnSizingInstance<TGenerics extends TableGenerics> = {
|
|
|
63
54
|
resetHeaderSizeInfo: () => void
|
|
64
55
|
getColumnCanResize: (columnId: string) => boolean
|
|
65
56
|
getHeaderCanResize: (headerId: string) => boolean
|
|
66
|
-
|
|
67
|
-
headerId: string,
|
|
68
|
-
userProps?: TGetter
|
|
69
|
-
) => undefined | PropGetterValue<ColumnResizerProps, TGetter>
|
|
57
|
+
getResizeHandler: (headerId: string) => (event: unknown) => void
|
|
70
58
|
getColumnIsResizing: (columnId: string) => boolean
|
|
71
59
|
getHeaderIsResizing: (headerId: string) => boolean
|
|
72
60
|
getTotalSize: () => number
|
|
@@ -94,9 +82,7 @@ export type ColumnSizingColumn<TGenerics extends TableGenerics> = {
|
|
|
94
82
|
export type ColumnSizingHeader<TGenerics extends TableGenerics> = {
|
|
95
83
|
getCanResize: () => boolean
|
|
96
84
|
getIsResizing: () => boolean
|
|
97
|
-
|
|
98
|
-
userProps?: TGetter
|
|
99
|
-
) => undefined | PropGetterValue<ColumnResizerProps, TGetter>
|
|
85
|
+
getResizeHandler: () => (event: unknown) => void
|
|
100
86
|
resetSize: () => void
|
|
101
87
|
}
|
|
102
88
|
|
|
@@ -108,7 +94,7 @@ export const defaultColumnSizing = {
|
|
|
108
94
|
maxSize: Number.MAX_SAFE_INTEGER,
|
|
109
95
|
}
|
|
110
96
|
|
|
111
|
-
export const ColumnSizing = {
|
|
97
|
+
export const ColumnSizing: TableFeature = {
|
|
112
98
|
getDefaultColumn: (): ColumnSizingColumnDef => {
|
|
113
99
|
return defaultColumnSizing
|
|
114
100
|
},
|
|
@@ -157,8 +143,7 @@ export const ColumnSizing = {
|
|
|
157
143
|
getIsResizing: () => instance.getColumnIsResizing(header.column.id),
|
|
158
144
|
getCanResize: () => instance.getColumnCanResize(header.column.id),
|
|
159
145
|
resetSize: () => instance.resetColumnSize(header.column.id),
|
|
160
|
-
|
|
161
|
-
instance.getHeaderResizerProps(header.id, userProps),
|
|
146
|
+
getResizeHandler: () => instance.getResizeHandler(header.id),
|
|
162
147
|
}
|
|
163
148
|
},
|
|
164
149
|
|
|
@@ -274,14 +259,18 @@ export const ColumnSizing = {
|
|
|
274
259
|
|
|
275
260
|
return instance.getColumnIsResizing(header.column.id)
|
|
276
261
|
},
|
|
277
|
-
|
|
278
|
-
getHeaderResizerProps: (headerId, userProps) => {
|
|
262
|
+
getResizeHandler: (headerId: string) => {
|
|
279
263
|
const header = instance.getHeader(headerId)
|
|
280
264
|
const column = instance.getColumn(header.column.id)
|
|
281
|
-
|
|
282
265
|
const canResize = column.getCanResize()
|
|
283
266
|
|
|
284
|
-
|
|
267
|
+
return (e: unknown) => {
|
|
268
|
+
if (!canResize) {
|
|
269
|
+
return
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
;(e as any).persist?.()
|
|
273
|
+
|
|
285
274
|
if (isTouchStartEvent(e)) {
|
|
286
275
|
// lets not respond to multiple touches (e.g. 2 or 3 fingers)
|
|
287
276
|
if (e.touches && e.touches.length > 1) {
|
|
@@ -427,26 +416,7 @@ export const ColumnSizing = {
|
|
|
427
416
|
isResizingColumn: column.id,
|
|
428
417
|
}))
|
|
429
418
|
}
|
|
430
|
-
|
|
431
|
-
const initialProps: ColumnResizerProps = canResize
|
|
432
|
-
? {
|
|
433
|
-
title: 'Toggle Grouping',
|
|
434
|
-
draggable: false,
|
|
435
|
-
role: 'separator',
|
|
436
|
-
onMouseDown: (e: MouseEvent) => {
|
|
437
|
-
;(e as any).persist?.()
|
|
438
|
-
onResizeStart(e)
|
|
439
|
-
},
|
|
440
|
-
onTouchStart: (e: TouchEvent) => {
|
|
441
|
-
;(e as any).persist?.()
|
|
442
|
-
onResizeStart(e)
|
|
443
|
-
},
|
|
444
|
-
}
|
|
445
|
-
: {}
|
|
446
|
-
|
|
447
|
-
return propGetter(initialProps, userProps)
|
|
448
419
|
},
|
|
449
|
-
|
|
450
420
|
getTotalSize: () =>
|
|
451
421
|
instance.getHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
452
422
|
return sum + header.getSize()
|
package/src/features/Columns.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { features } from 'process'
|
|
2
1
|
import {
|
|
3
2
|
Cell,
|
|
4
3
|
Column,
|
|
@@ -12,7 +11,6 @@ import {
|
|
|
12
11
|
HeaderRenderProps,
|
|
13
12
|
} from '../types'
|
|
14
13
|
import { memo } from '../utils'
|
|
15
|
-
import { ColumnPinningPosition } from './Pinning'
|
|
16
14
|
|
|
17
15
|
export type CoreColumnDefType = 'data' | 'display' | 'group'
|
|
18
16
|
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { RowModel } from '..'
|
|
2
2
|
import {
|
|
3
|
-
Getter,
|
|
4
3
|
OnChangeFn,
|
|
5
4
|
TableGenerics,
|
|
6
|
-
PropGetterValue,
|
|
7
5
|
TableInstance,
|
|
8
6
|
Row,
|
|
9
7
|
Updater,
|
|
10
8
|
} from '../types'
|
|
11
|
-
import { makeStateUpdater
|
|
9
|
+
import { makeStateUpdater } from '../utils'
|
|
12
10
|
|
|
13
11
|
export type ExpandedStateList = Record<string, boolean>
|
|
14
12
|
export type ExpandedState = true | Record<string, boolean>
|
|
@@ -20,9 +18,7 @@ export type ExpandedRow = {
|
|
|
20
18
|
toggleExpanded: (expanded?: boolean) => void
|
|
21
19
|
getIsExpanded: () => boolean
|
|
22
20
|
getCanExpand: () => boolean
|
|
23
|
-
|
|
24
|
-
userProps?: TGetter
|
|
25
|
-
) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>
|
|
21
|
+
getToggleExpandedHandler: () => () => void
|
|
26
22
|
}
|
|
27
23
|
|
|
28
24
|
export type ExpandedOptions<TGenerics extends TableGenerics> = {
|
|
@@ -40,13 +36,8 @@ export type ExpandedOptions<TGenerics extends TableGenerics> = {
|
|
|
40
36
|
paginateExpandedRows?: boolean
|
|
41
37
|
}
|
|
42
38
|
|
|
43
|
-
export type ToggleExpandedProps = {
|
|
44
|
-
title?: string
|
|
45
|
-
onClick?: (event: unknown) => void
|
|
46
|
-
}
|
|
47
|
-
|
|
48
39
|
export type ExpandedInstance<TGenerics extends TableGenerics> = {
|
|
49
|
-
|
|
40
|
+
_autoResetExpanded: () => void
|
|
50
41
|
setExpanded: (updater: Updater<ExpandedState>) => void
|
|
51
42
|
toggleRowExpanded: (rowId: string, expanded?: boolean) => void
|
|
52
43
|
toggleAllRowsExpanded: (expanded?: boolean) => void
|
|
@@ -54,13 +45,8 @@ export type ExpandedInstance<TGenerics extends TableGenerics> = {
|
|
|
54
45
|
getRowCanExpand: (rowId: string) => boolean
|
|
55
46
|
getCanSomeRowsExpand: () => boolean
|
|
56
47
|
getIsRowExpanded: (rowId: string) => boolean
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
userProps?: TGetter
|
|
60
|
-
) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>
|
|
61
|
-
getToggleAllRowsExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(
|
|
62
|
-
userProps?: TGetter
|
|
63
|
-
) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>
|
|
48
|
+
getToggleExpandedHandler: (rowId: string) => undefined | (() => void)
|
|
49
|
+
getToggleAllRowsExpandedHandler: () => (event: unknown) => void
|
|
64
50
|
getIsSomeRowsExpanded: () => boolean
|
|
65
51
|
getIsAllRowsExpanded: () => boolean
|
|
66
52
|
getExpandedDepth: () => number
|
|
@@ -95,9 +81,7 @@ export const Expanding = {
|
|
|
95
81
|
let registered = false
|
|
96
82
|
|
|
97
83
|
return {
|
|
98
|
-
|
|
99
|
-
instance.queueResetPageIndex()
|
|
100
|
-
|
|
84
|
+
_autoResetExpanded: () => {
|
|
101
85
|
if (!registered) {
|
|
102
86
|
registered = true
|
|
103
87
|
return
|
|
@@ -201,7 +185,7 @@ export const Expanding = {
|
|
|
201
185
|
instance.getRowCanExpand(id)
|
|
202
186
|
)
|
|
203
187
|
},
|
|
204
|
-
|
|
188
|
+
getToggleExpandedHandler: rowId => {
|
|
205
189
|
const row = instance.getRow(rowId)
|
|
206
190
|
|
|
207
191
|
if (!row) {
|
|
@@ -210,28 +194,16 @@ export const Expanding = {
|
|
|
210
194
|
|
|
211
195
|
const canExpand = instance.getRowCanExpand(rowId)
|
|
212
196
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
? (e: unknown) => {
|
|
217
|
-
;(e as any).persist?.()
|
|
218
|
-
instance.toggleRowExpanded(rowId)
|
|
219
|
-
}
|
|
220
|
-
: undefined,
|
|
197
|
+
return () => {
|
|
198
|
+
if (!canExpand) return
|
|
199
|
+
instance.toggleRowExpanded(rowId)
|
|
221
200
|
}
|
|
222
|
-
|
|
223
|
-
return propGetter(initialProps, userProps)
|
|
224
201
|
},
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
;(e as any).persist?.()
|
|
230
|
-
instance.toggleAllRowsExpanded()
|
|
231
|
-
},
|
|
202
|
+
getToggleAllRowsExpandedHandler: () => {
|
|
203
|
+
return (e: unknown) => {
|
|
204
|
+
;(e as any).persist?.()
|
|
205
|
+
instance.toggleAllRowsExpanded()
|
|
232
206
|
}
|
|
233
|
-
|
|
234
|
-
return propGetter(initialProps, userProps)
|
|
235
207
|
},
|
|
236
208
|
getIsSomeRowsExpanded: () => {
|
|
237
209
|
const expanded = instance.getState().expanded
|
|
@@ -303,8 +275,8 @@ export const Expanding = {
|
|
|
303
275
|
void instance.toggleRowExpanded(row.id, expanded),
|
|
304
276
|
getIsExpanded: () => instance.getIsRowExpanded(row.id),
|
|
305
277
|
getCanExpand: () => row.subRows && !!row.subRows.length,
|
|
306
|
-
|
|
307
|
-
instance.
|
|
278
|
+
getToggleExpandedHandler: () =>
|
|
279
|
+
instance.getToggleExpandedHandler(row.id)!,
|
|
308
280
|
}
|
|
309
281
|
},
|
|
310
282
|
}
|
package/src/features/Filters.ts
CHANGED
|
@@ -85,7 +85,6 @@ export type FiltersOptions<TGenerics extends TableGenerics> = {
|
|
|
85
85
|
// Column
|
|
86
86
|
manualColumnFiltering?: boolean
|
|
87
87
|
onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>
|
|
88
|
-
autoResetColumnFilters?: boolean
|
|
89
88
|
enableColumnFilters?: boolean
|
|
90
89
|
getColumnFilteredRowModel?: (
|
|
91
90
|
instance: TableInstance<TGenerics>
|
|
@@ -94,7 +93,6 @@ export type FiltersOptions<TGenerics extends TableGenerics> = {
|
|
|
94
93
|
manualGlobalFiltering?: boolean
|
|
95
94
|
globalFilterFn?: FilterFnOption<TGenerics>
|
|
96
95
|
onGlobalFilterChange?: OnChangeFn<any>
|
|
97
|
-
autoResetGlobalFilter?: boolean
|
|
98
96
|
enableGlobalFilter?: boolean
|
|
99
97
|
getGlobalFilteredRowModel?: (
|
|
100
98
|
instance: TableInstance<TGenerics>
|
|
@@ -103,7 +101,6 @@ export type FiltersOptions<TGenerics extends TableGenerics> = {
|
|
|
103
101
|
}
|
|
104
102
|
|
|
105
103
|
export type FiltersInstance<TGenerics extends TableGenerics> = {
|
|
106
|
-
queueResetFilters: () => void
|
|
107
104
|
getColumnAutoFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined
|
|
108
105
|
|
|
109
106
|
getColumnFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined
|
|
@@ -159,9 +156,7 @@ export const Filters = {
|
|
|
159
156
|
return {
|
|
160
157
|
onColumnFiltersChange: makeStateUpdater('columnFilters', instance),
|
|
161
158
|
onGlobalFilterChange: makeStateUpdater('globalFilter', instance),
|
|
162
|
-
autoResetColumnFilters: true,
|
|
163
159
|
filterFromLeafRows: true,
|
|
164
|
-
autoResetGlobalFilter: true,
|
|
165
160
|
globalFilterFn: 'auto',
|
|
166
161
|
getColumnCanGlobalFilterFn: column => {
|
|
167
162
|
const value = instance
|
|
@@ -235,35 +230,7 @@ export const Filters = {
|
|
|
235
230
|
createInstance: <TGenerics extends TableGenerics>(
|
|
236
231
|
instance: TableInstance<TGenerics>
|
|
237
232
|
): FiltersInstance<TGenerics> => {
|
|
238
|
-
let registered = false
|
|
239
|
-
|
|
240
233
|
return {
|
|
241
|
-
queueResetFilters: () => {
|
|
242
|
-
instance.queueResetSorting()
|
|
243
|
-
|
|
244
|
-
if (!registered) {
|
|
245
|
-
registered = true
|
|
246
|
-
return
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
if (instance.options.autoResetAll === false) {
|
|
250
|
-
return
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
if (
|
|
254
|
-
instance.options.autoResetAll === true ||
|
|
255
|
-
instance.options.autoResetColumnFilters
|
|
256
|
-
) {
|
|
257
|
-
instance.resetColumnFilters()
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
if (
|
|
261
|
-
instance.options.autoResetAll === true ||
|
|
262
|
-
instance.options.autoResetGlobalFilter
|
|
263
|
-
) {
|
|
264
|
-
instance.resetGlobalFilter()
|
|
265
|
-
}
|
|
266
|
-
},
|
|
267
234
|
getColumnAutoFilterFn: columnId => {
|
|
268
235
|
const firstRow = instance.getCoreRowModel().flatRows[0]
|
|
269
236
|
|