@tanstack/table-core 8.0.0-alpha.9 → 8.0.0-beta.2
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/aggregationFns.js +120 -0
- package/build/cjs/aggregationFns.js.map +1 -0
- package/build/cjs/core/cell.js +40 -0
- package/build/cjs/core/cell.js.map +1 -0
- package/build/cjs/core/column.js +88 -0
- package/build/cjs/core/column.js.map +1 -0
- package/build/cjs/core/headers.js +403 -0
- package/build/cjs/core/headers.js.map +1 -0
- package/build/cjs/core/instance.js +255 -0
- package/build/cjs/core/instance.js.map +1 -0
- package/build/cjs/core/row.js +77 -0
- package/build/cjs/core/row.js.map +1 -0
- package/build/cjs/createTable.js +36 -29
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +157 -189
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Expanding.js +103 -155
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +155 -304
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +97 -157
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Ordering.js +30 -41
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +102 -105
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +131 -89
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +138 -267
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Sorting.js +82 -167
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +69 -115
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +107 -0
- package/build/cjs/filterFns.js.map +1 -0
- package/build/cjs/index.js +36 -23
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/sortingFns.js +124 -0
- package/build/cjs/sortingFns.js.map +1 -0
- package/build/cjs/utils/filterRowsUtils.js +117 -0
- package/build/cjs/utils/filterRowsUtils.js.map +1 -0
- package/build/cjs/utils/getCoreRowModel.js +79 -0
- package/build/cjs/utils/getCoreRowModel.js.map +1 -0
- package/build/cjs/utils/getExpandedRowModel.js +57 -0
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -0
- package/build/cjs/utils/getFacetedMinMaxValues.js +54 -0
- package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -0
- package/build/cjs/utils/getFacetedRowModel.js +50 -0
- package/build/cjs/utils/getFacetedRowModel.js.map +1 -0
- package/build/cjs/utils/getFacetedUniqueValues.js +48 -0
- package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -0
- package/build/cjs/utils/getFilteredRowModel.js +139 -0
- package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
- package/build/cjs/utils/getGroupedRowModel.js +161 -0
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -0
- package/build/cjs/utils/getPaginationRowModel.js +61 -0
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -0
- package/build/cjs/utils/getSortedRowModel.js +110 -0
- package/build/cjs/utils/getSortedRowModel.js.map +1 -0
- package/build/cjs/utils.js +38 -107
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +2976 -3853
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +586 -408
- package/build/types/aggregationFns.d.ts +13 -0
- package/build/types/core/cell.d.ts +9 -0
- package/build/types/core/column.d.ts +40 -0
- package/build/types/core/headers.d.ts +46 -0
- package/build/types/core/instance.d.ts +57 -0
- package/build/types/core/row.d.ts +15 -0
- package/build/types/createTable.d.ts +47 -26
- package/build/types/features/ColumnSizing.d.ts +32 -44
- package/build/types/features/Expanding.d.ts +15 -26
- package/build/types/features/Filters.d.ts +64 -63
- package/build/types/features/Grouping.d.ts +32 -46
- package/build/types/features/Ordering.d.ts +7 -10
- package/build/types/features/Pagination.d.ts +16 -15
- package/build/types/features/Pinning.d.ts +16 -17
- package/build/types/features/RowSelection.d.ts +13 -33
- package/build/types/features/Sorting.d.ts +25 -44
- package/build/types/features/Visibility.d.ts +16 -25
- package/build/types/filterFns.d.ts +13 -0
- package/build/types/index.d.ts +16 -10
- package/build/types/sortingFns.d.ts +11 -0
- package/build/types/types.d.ts +37 -122
- package/build/types/utils/filterRowsUtils.d.ts +4 -0
- package/build/types/utils/getCoreRowModel.d.ts +2 -0
- package/build/types/utils/getExpandedRowModel.d.ts +7 -0
- package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
- package/build/types/utils/getFacetedRowModel.d.ts +2 -0
- package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
- package/build/types/utils/getFilteredRowModel.d.ts +2 -0
- package/build/types/utils/getGroupedRowModel.d.ts +2 -0
- package/build/types/utils/getPaginationRowModel.d.ts +4 -0
- package/build/types/utils/getSortedRowModel.d.ts +2 -0
- package/build/types/utils.d.ts +7 -11
- package/build/umd/index.development.js +3024 -3893
- 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 +9 -10
- package/src/aggregationFns.ts +123 -0
- package/src/core/cell.ts +48 -0
- package/src/core/column.ts +147 -0
- package/src/core/headers.ts +575 -0
- package/src/core/instance.ts +359 -0
- package/src/core/row.ts +85 -0
- package/src/createTable.ts +188 -0
- package/src/features/ColumnSizing.ts +170 -185
- package/src/features/Expanding.ts +120 -194
- package/src/features/Filters.ts +299 -381
- package/src/features/Grouping.ts +158 -220
- package/src/features/Ordering.ts +24 -25
- package/src/features/Pagination.ts +88 -73
- package/src/features/Pinning.ts +186 -63
- package/src/features/RowSelection.ts +107 -245
- package/src/features/Sorting.ts +125 -225
- package/src/features/Visibility.ts +116 -132
- package/src/filterFns.ts +135 -0
- package/src/index.ts +29 -0
- package/src/{sortTypes.ts → sortingFns.ts} +63 -85
- package/src/types.ts +62 -168
- package/src/utils/filterRowsUtils.ts +112 -0
- package/src/utils/getCoreRowModel.ts +84 -0
- package/src/utils/getExpandedRowModel.ts +54 -0
- package/src/utils/getFacetedMinMaxValues.ts +40 -0
- package/src/utils/getFacetedRowModel.ts +50 -0
- package/src/utils/getFacetedUniqueValues.ts +37 -0
- package/src/utils/getFilteredRowModel.ts +159 -0
- package/src/utils/getGroupedRowModel.ts +175 -0
- package/src/utils/getPaginationRowModel.ts +48 -0
- package/src/utils/getSortedRowModel.ts +116 -0
- package/src/utils.ts +126 -0
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
- package/build/cjs/aggregationTypes.js +0 -130
- package/build/cjs/aggregationTypes.js.map +0 -1
- package/build/cjs/core.js +0 -545
- package/build/cjs/core.js.map +0 -1
- package/build/cjs/features/Headers.js +0 -630
- package/build/cjs/features/Headers.js.map +0 -1
- package/build/cjs/filterTypes.js +0 -172
- package/build/cjs/filterTypes.js.map +0 -1
- package/build/cjs/sortTypes.js +0 -122
- package/build/cjs/sortTypes.js.map +0 -1
- package/build/cjs/types.js +0 -22
- package/build/cjs/types.js.map +0 -1
- package/build/cjs/utils/columnFilterRowsFn.js +0 -131
- package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
- package/build/cjs/utils/expandRowsFn.js +0 -38
- package/build/cjs/utils/expandRowsFn.js.map +0 -1
- package/build/cjs/utils/globalFilterRowsFn.js +0 -101
- package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
- package/build/cjs/utils/groupRowsFn.js +0 -155
- package/build/cjs/utils/groupRowsFn.js.map +0 -1
- package/build/cjs/utils/paginateRowsFn.js +0 -44
- package/build/cjs/utils/paginateRowsFn.js.map +0 -1
- package/build/cjs/utils/sortRowsFn.js +0 -94
- package/build/cjs/utils/sortRowsFn.js.map +0 -1
- package/build/types/aggregationTypes.d.ts +0 -22
- package/build/types/core.d.ts +0 -105
- package/build/types/features/Headers.d.ts +0 -43
- package/build/types/filterTypes.d.ts +0 -50
- package/build/types/sortTypes.d.ts +0 -18
- package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
- package/build/types/utils/expandRowsFn.d.ts +0 -2
- package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
- package/build/types/utils/groupRowsFn.d.ts +0 -2
- package/build/types/utils/paginateRowsFn.d.ts +0 -2
- package/build/types/utils/sortRowsFn.d.ts +0 -2
- package/src/.DS_Store +0 -0
- package/src/aggregationTypes.ts +0 -115
- package/src/core.tsx +0 -763
- package/src/createTable.tsx +0 -137
- package/src/features/Headers.ts +0 -747
- package/src/filterTypes.ts +0 -188
- package/src/index.tsx +0 -23
- package/src/utils/columnFilterRowsFn.ts +0 -113
- package/src/utils/expandRowsFn.ts +0 -30
- package/src/utils/globalFilterRowsFn.ts +0 -89
- package/src/utils/groupRowsFn.ts +0 -170
- package/src/utils/paginateRowsFn.ts +0 -28
- package/src/utils/sortRowsFn.ts +0 -95
- package/src/utils.tsx +0 -221
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
MouseEvent as ReactMouseEvent,
|
|
3
|
-
TouchEvent as ReactTouchEvent,
|
|
4
|
-
} from 'react'
|
|
1
|
+
import { TableFeature } from '../core/instance'
|
|
5
2
|
import {
|
|
6
3
|
Column,
|
|
7
|
-
Getter,
|
|
8
4
|
Header,
|
|
9
5
|
OnChangeFn,
|
|
10
|
-
|
|
11
|
-
PropGetterValue,
|
|
6
|
+
TableGenerics,
|
|
12
7
|
TableInstance,
|
|
13
8
|
Updater,
|
|
14
9
|
} from '../types'
|
|
15
|
-
import {
|
|
10
|
+
import { makeStateUpdater } from '../utils'
|
|
11
|
+
import { ColumnPinningPosition } from './Pinning'
|
|
16
12
|
|
|
17
13
|
//
|
|
18
14
|
|
|
19
|
-
export type
|
|
15
|
+
export type ColumnSizingTableState = {
|
|
16
|
+
columnSizing: ColumnSizingState
|
|
17
|
+
columnSizingInfo: ColumnSizingInfoState
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type ColumnSizingState = Record<string, number>
|
|
20
21
|
|
|
21
22
|
export type ColumnSizingInfoState = {
|
|
22
23
|
startOffset: null | number
|
|
@@ -27,95 +28,83 @@ export type ColumnSizingInfoState = {
|
|
|
27
28
|
columnSizingStart: [string, number][]
|
|
28
29
|
}
|
|
29
30
|
|
|
30
|
-
export type ColumnSizingTableState = {
|
|
31
|
-
columnSizing: ColumnSizing
|
|
32
|
-
columnSizingInfo: ColumnSizingInfoState
|
|
33
|
-
}
|
|
34
|
-
|
|
35
31
|
export type ColumnResizeMode = 'onChange' | 'onEnd'
|
|
36
32
|
|
|
37
33
|
export type ColumnSizingOptions = {
|
|
38
34
|
enableColumnResizing?: boolean
|
|
39
35
|
columnResizeMode?: ColumnResizeMode
|
|
40
|
-
onColumnSizingChange?: OnChangeFn<
|
|
36
|
+
onColumnSizingChange?: OnChangeFn<ColumnSizingState>
|
|
41
37
|
onColumnSizingInfoChange?: OnChangeFn<ColumnSizingInfoState>
|
|
42
38
|
}
|
|
43
39
|
|
|
44
40
|
export type ColumnSizingDefaultOptions = {
|
|
45
41
|
columnResizeMode: ColumnResizeMode
|
|
46
|
-
onColumnSizingChange: OnChangeFn<
|
|
42
|
+
onColumnSizingChange: OnChangeFn<ColumnSizingState>
|
|
47
43
|
onColumnSizingInfoChange: OnChangeFn<ColumnSizingInfoState>
|
|
48
44
|
}
|
|
49
45
|
|
|
50
|
-
export type
|
|
51
|
-
|
|
52
|
-
onMouseDown?: (e: ReactMouseEvent) => void
|
|
53
|
-
onTouchStart?: (e: ReactTouchEvent) => void
|
|
54
|
-
draggable?: boolean
|
|
55
|
-
role?: string
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export type ColumnSizingInstance<TGenerics extends PartialGenerics> = {
|
|
59
|
-
setColumnSizing: (updater: Updater<ColumnSizing>) => void
|
|
46
|
+
export type ColumnSizingInstance<TGenerics extends TableGenerics> = {
|
|
47
|
+
setColumnSizing: (updater: Updater<ColumnSizingState>) => void
|
|
60
48
|
setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void
|
|
61
|
-
resetColumnSizing: () => void
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
getHeaderResizerProps: <TGetter extends Getter<ColumnResizerProps>>(
|
|
68
|
-
headerId: string,
|
|
69
|
-
userProps?: TGetter
|
|
70
|
-
) => undefined | PropGetterValue<ColumnResizerProps, TGetter>
|
|
71
|
-
getColumnIsResizing: (columnId: string) => boolean
|
|
72
|
-
getHeaderIsResizing: (headerId: string) => boolean
|
|
49
|
+
resetColumnSizing: (defaultState?: boolean) => void
|
|
50
|
+
resetHeaderSizeInfo: (defaultState?: boolean) => void
|
|
51
|
+
getTotalSize: () => number
|
|
52
|
+
getLeftTotalSize: () => number
|
|
53
|
+
getCenterTotalSize: () => number
|
|
54
|
+
getRightTotalSize: () => number
|
|
73
55
|
}
|
|
74
56
|
|
|
75
57
|
export type ColumnSizingColumnDef = {
|
|
76
58
|
enableResizing?: boolean
|
|
77
|
-
|
|
59
|
+
size?: number
|
|
60
|
+
minSize?: number
|
|
61
|
+
maxSize?: number
|
|
78
62
|
}
|
|
79
63
|
|
|
80
|
-
export type ColumnSizingColumn<TGenerics extends
|
|
64
|
+
export type ColumnSizingColumn<TGenerics extends TableGenerics> = {
|
|
65
|
+
getSize: () => number
|
|
66
|
+
getStart: (position?: ColumnPinningPosition) => number
|
|
81
67
|
getCanResize: () => boolean
|
|
82
68
|
getIsResizing: () => boolean
|
|
83
69
|
resetSize: () => void
|
|
84
70
|
}
|
|
85
71
|
|
|
86
|
-
export type ColumnSizingHeader<TGenerics extends
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
userProps?: TGetter
|
|
91
|
-
) => undefined | PropGetterValue<ColumnResizerProps, TGetter>
|
|
92
|
-
resetSize: () => void
|
|
72
|
+
export type ColumnSizingHeader<TGenerics extends TableGenerics> = {
|
|
73
|
+
getSize: () => number
|
|
74
|
+
getStart: (position?: ColumnPinningPosition) => number
|
|
75
|
+
getResizeHandler: () => (event: unknown) => void
|
|
93
76
|
}
|
|
94
77
|
|
|
95
78
|
//
|
|
96
79
|
|
|
97
80
|
export const defaultColumnSizing = {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
81
|
+
size: 150,
|
|
82
|
+
minSize: 20,
|
|
83
|
+
maxSize: Number.MAX_SAFE_INTEGER,
|
|
101
84
|
}
|
|
102
85
|
|
|
103
|
-
|
|
104
|
-
|
|
86
|
+
const getDefaultColumnSizingInfoState = (): ColumnSizingInfoState => ({
|
|
87
|
+
startOffset: null,
|
|
88
|
+
startSize: null,
|
|
89
|
+
deltaOffset: null,
|
|
90
|
+
deltaPercentage: null,
|
|
91
|
+
isResizingColumn: false,
|
|
92
|
+
columnSizingStart: [],
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
export const ColumnSizing: TableFeature = {
|
|
96
|
+
getDefaultColumnDef: (): ColumnSizingColumnDef => {
|
|
97
|
+
return defaultColumnSizing
|
|
98
|
+
},
|
|
99
|
+
getInitialState: (state): ColumnSizingTableState => {
|
|
105
100
|
return {
|
|
106
101
|
columnSizing: {},
|
|
107
|
-
columnSizingInfo:
|
|
108
|
-
|
|
109
|
-
startSize: null,
|
|
110
|
-
deltaOffset: null,
|
|
111
|
-
deltaPercentage: null,
|
|
112
|
-
isResizingColumn: false,
|
|
113
|
-
columnSizingStart: [],
|
|
114
|
-
},
|
|
102
|
+
columnSizingInfo: getDefaultColumnSizingInfoState(),
|
|
103
|
+
...state,
|
|
115
104
|
}
|
|
116
105
|
},
|
|
117
106
|
|
|
118
|
-
getDefaultOptions: <TGenerics extends
|
|
107
|
+
getDefaultOptions: <TGenerics extends TableGenerics>(
|
|
119
108
|
instance: TableInstance<TGenerics>
|
|
120
109
|
): ColumnSizingDefaultOptions => {
|
|
121
110
|
return {
|
|
@@ -125,89 +114,100 @@ export const ColumnSizing = {
|
|
|
125
114
|
}
|
|
126
115
|
},
|
|
127
116
|
|
|
128
|
-
|
|
117
|
+
createColumn: <TGenerics extends TableGenerics>(
|
|
118
|
+
column: Column<TGenerics>,
|
|
129
119
|
instance: TableInstance<TGenerics>
|
|
130
|
-
):
|
|
120
|
+
): ColumnSizingColumn<TGenerics> => {
|
|
131
121
|
return {
|
|
132
|
-
|
|
133
|
-
instance.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
),
|
|
142
|
-
resetColumnSizing: () => {
|
|
143
|
-
instance.setColumnSizing(instance.initialState.columnSizing ?? {})
|
|
144
|
-
},
|
|
145
|
-
resetHeaderSizeInfo: () => {
|
|
146
|
-
instance.setColumnSizingInfo(
|
|
147
|
-
instance.initialState.columnSizingInfo ?? {}
|
|
122
|
+
getSize: () => {
|
|
123
|
+
const columnSize = instance.getState().columnSizing[column.id]
|
|
124
|
+
|
|
125
|
+
return Math.min(
|
|
126
|
+
Math.max(
|
|
127
|
+
column.columnDef.minSize ?? defaultColumnSizing.minSize,
|
|
128
|
+
columnSize ?? column.columnDef.size ?? defaultColumnSizing.size
|
|
129
|
+
),
|
|
130
|
+
column.columnDef.maxSize ?? defaultColumnSizing.maxSize
|
|
148
131
|
)
|
|
149
132
|
},
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
const header = instance.getHeader(headerId)
|
|
133
|
+
getStart: position => {
|
|
134
|
+
const columns = !position
|
|
135
|
+
? instance.getVisibleLeafColumns()
|
|
136
|
+
: position === 'left'
|
|
137
|
+
? instance.getLeftVisibleLeafColumns()
|
|
138
|
+
: instance.getRightVisibleLeafColumns()
|
|
157
139
|
|
|
158
|
-
|
|
159
|
-
},
|
|
160
|
-
getHeaderCanResize: headerId => {
|
|
161
|
-
const header = instance.getHeader(headerId)
|
|
140
|
+
const index = columns.findIndex(d => d.id === column.id)
|
|
162
141
|
|
|
163
|
-
if (
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return instance.getColumnCanResize(header.column.id)
|
|
168
|
-
},
|
|
169
|
-
getColumnCanResize: columnId => {
|
|
170
|
-
const column = instance.getColumn(columnId)
|
|
142
|
+
if (index > 0) {
|
|
143
|
+
const prevSiblingColumn = columns[index - 1]!
|
|
171
144
|
|
|
172
|
-
|
|
173
|
-
|
|
145
|
+
return (
|
|
146
|
+
prevSiblingColumn.getStart(position) + prevSiblingColumn.getSize()
|
|
147
|
+
)
|
|
174
148
|
}
|
|
175
149
|
|
|
150
|
+
return 0
|
|
151
|
+
},
|
|
152
|
+
resetSize: () => {
|
|
153
|
+
instance.setColumnSizing(({ [column.id]: _, ...rest }) => {
|
|
154
|
+
return rest
|
|
155
|
+
})
|
|
156
|
+
},
|
|
157
|
+
getCanResize: () => {
|
|
176
158
|
return (
|
|
177
|
-
column.enableResizing ??
|
|
178
|
-
instance.options.enableColumnResizing ??
|
|
179
|
-
column.defaultCanResize ??
|
|
180
|
-
true
|
|
159
|
+
(column.columnDef.enableResizing ?? true) &&
|
|
160
|
+
(instance.options.enableColumnResizing ?? true)
|
|
181
161
|
)
|
|
182
162
|
},
|
|
183
|
-
|
|
184
|
-
const column = instance.getColumn(columnId)
|
|
185
|
-
|
|
186
|
-
if (!column) {
|
|
187
|
-
throw new Error()
|
|
188
|
-
}
|
|
189
|
-
|
|
163
|
+
getIsResizing: () => {
|
|
190
164
|
return (
|
|
191
|
-
instance.getState().columnSizingInfo.isResizingColumn ===
|
|
165
|
+
instance.getState().columnSizingInfo.isResizingColumn === column.id
|
|
192
166
|
)
|
|
193
167
|
},
|
|
194
|
-
|
|
195
|
-
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
createHeader: <TGenerics extends TableGenerics>(
|
|
172
|
+
header: Header<TGenerics>,
|
|
173
|
+
instance: TableInstance<TGenerics>
|
|
174
|
+
): ColumnSizingHeader<TGenerics> => {
|
|
175
|
+
return {
|
|
176
|
+
getSize: () => {
|
|
177
|
+
let sum = 0
|
|
196
178
|
|
|
197
|
-
|
|
198
|
-
|
|
179
|
+
const recurse = (header: Header<TGenerics>) => {
|
|
180
|
+
if (header.subHeaders.length) {
|
|
181
|
+
header.subHeaders.forEach(recurse)
|
|
182
|
+
} else {
|
|
183
|
+
sum += header.column.getSize() ?? 0
|
|
184
|
+
}
|
|
199
185
|
}
|
|
200
186
|
|
|
201
|
-
|
|
187
|
+
recurse(header)
|
|
188
|
+
|
|
189
|
+
return sum
|
|
202
190
|
},
|
|
191
|
+
getStart: () => {
|
|
192
|
+
if (header.index > 0) {
|
|
193
|
+
const prevSiblingHeader =
|
|
194
|
+
header.headerGroup.headers[header.index - 1]!
|
|
195
|
+
return prevSiblingHeader.getStart() + prevSiblingHeader.getSize()
|
|
196
|
+
}
|
|
203
197
|
|
|
204
|
-
|
|
205
|
-
|
|
198
|
+
return 0
|
|
199
|
+
},
|
|
200
|
+
getResizeHandler: () => {
|
|
206
201
|
const column = instance.getColumn(header.column.id)
|
|
207
|
-
|
|
208
202
|
const canResize = column.getCanResize()
|
|
209
203
|
|
|
210
|
-
|
|
204
|
+
return (e: unknown) => {
|
|
205
|
+
if (!canResize) {
|
|
206
|
+
return
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
;(e as any).persist?.()
|
|
210
|
+
|
|
211
211
|
if (isTouchStartEvent(e)) {
|
|
212
212
|
// lets not respond to multiple touches (e.g. 2 or 3 fingers)
|
|
213
213
|
if (e.touches && e.touches.length > 1) {
|
|
@@ -215,17 +215,17 @@ export const ColumnSizing = {
|
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
const startSize = header ? header.getWidth() : column.getWidth()
|
|
218
|
+
const startSize = header.getSize()
|
|
221
219
|
|
|
222
220
|
const columnSizingStart: [string, number][] = header
|
|
223
|
-
? header
|
|
224
|
-
|
|
221
|
+
? header
|
|
222
|
+
.getLeafHeaders()
|
|
223
|
+
.map(d => [d.column.id, d.column.getSize()])
|
|
224
|
+
: [[column.id, column.getSize()]]
|
|
225
225
|
|
|
226
226
|
const clientX = isTouchStartEvent(e)
|
|
227
|
-
? Math.round(e.touches[0]
|
|
228
|
-
: e.clientX
|
|
227
|
+
? Math.round(e.touches[0]!.clientX)
|
|
228
|
+
: (e as MouseEvent).clientX
|
|
229
229
|
|
|
230
230
|
const updateOffset = (
|
|
231
231
|
eventType: 'move' | 'end',
|
|
@@ -235,7 +235,7 @@ export const ColumnSizing = {
|
|
|
235
235
|
return
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
-
let newColumnSizing:
|
|
238
|
+
let newColumnSizing: ColumnSizingState = {}
|
|
239
239
|
|
|
240
240
|
instance.setColumnSizingInfo(old => {
|
|
241
241
|
const deltaOffset = clientXPos - (old?.startOffset ?? 0)
|
|
@@ -244,11 +244,10 @@ export const ColumnSizing = {
|
|
|
244
244
|
-0.999999
|
|
245
245
|
)
|
|
246
246
|
|
|
247
|
-
old.columnSizingStart.forEach(([columnId,
|
|
247
|
+
old.columnSizingStart.forEach(([columnId, headerSize]) => {
|
|
248
248
|
newColumnSizing[columnId] =
|
|
249
249
|
Math.round(
|
|
250
|
-
Math.max(
|
|
251
|
-
100
|
|
250
|
+
Math.max(headerSize + headerSize * deltaPercentage, 0) * 100
|
|
252
251
|
) / 100
|
|
253
252
|
})
|
|
254
253
|
|
|
@@ -302,7 +301,7 @@ export const ColumnSizing = {
|
|
|
302
301
|
e.preventDefault()
|
|
303
302
|
e.stopPropagation()
|
|
304
303
|
}
|
|
305
|
-
onMove(e.touches[0]
|
|
304
|
+
onMove(e.touches[0]!.clientX)
|
|
306
305
|
return false
|
|
307
306
|
},
|
|
308
307
|
upHandler: (e: TouchEvent) => {
|
|
@@ -312,7 +311,7 @@ export const ColumnSizing = {
|
|
|
312
311
|
e.preventDefault()
|
|
313
312
|
e.stopPropagation()
|
|
314
313
|
}
|
|
315
|
-
onEnd(e.touches[0]
|
|
314
|
+
onEnd(e.touches[0]!.clientX)
|
|
316
315
|
},
|
|
317
316
|
}
|
|
318
317
|
|
|
@@ -321,16 +320,6 @@ export const ColumnSizing = {
|
|
|
321
320
|
: false
|
|
322
321
|
|
|
323
322
|
if (isTouchStartEvent(e)) {
|
|
324
|
-
document.addEventListener(
|
|
325
|
-
'touchmove',
|
|
326
|
-
touchEvents.moveHandler,
|
|
327
|
-
passiveIfSupported
|
|
328
|
-
)
|
|
329
|
-
document.addEventListener(
|
|
330
|
-
'touchend',
|
|
331
|
-
touchEvents.upHandler,
|
|
332
|
-
passiveIfSupported
|
|
333
|
-
)
|
|
334
323
|
} else {
|
|
335
324
|
document.addEventListener(
|
|
336
325
|
'mousemove',
|
|
@@ -354,49 +343,47 @@ export const ColumnSizing = {
|
|
|
354
343
|
isResizingColumn: column.id,
|
|
355
344
|
}))
|
|
356
345
|
}
|
|
357
|
-
|
|
358
|
-
const initialProps: ColumnResizerProps = canResize
|
|
359
|
-
? {
|
|
360
|
-
title: 'Toggle Grouping',
|
|
361
|
-
draggable: false,
|
|
362
|
-
role: 'separator',
|
|
363
|
-
onMouseDown: (e: ReactMouseEvent) => {
|
|
364
|
-
e.persist()
|
|
365
|
-
onResizeStart(e)
|
|
366
|
-
},
|
|
367
|
-
onTouchStart: (e: ReactTouchEvent) => {
|
|
368
|
-
e.persist()
|
|
369
|
-
onResizeStart(e)
|
|
370
|
-
},
|
|
371
|
-
}
|
|
372
|
-
: {}
|
|
373
|
-
|
|
374
|
-
return propGetter(initialProps, userProps)
|
|
375
346
|
},
|
|
376
347
|
}
|
|
377
348
|
},
|
|
378
349
|
|
|
379
|
-
|
|
380
|
-
column: Column<TGenerics>,
|
|
381
|
-
instance: TableInstance<TGenerics>
|
|
382
|
-
): ColumnSizingColumn<TGenerics> => {
|
|
383
|
-
return {
|
|
384
|
-
getIsResizing: () => instance.getColumnIsResizing(column.id),
|
|
385
|
-
getCanResize: () => instance.getColumnCanResize(column.id),
|
|
386
|
-
resetSize: () => instance.resetColumnSize(column.id),
|
|
387
|
-
}
|
|
388
|
-
},
|
|
389
|
-
|
|
390
|
-
createHeader: <TGenerics extends PartialGenerics>(
|
|
391
|
-
header: Header<TGenerics>,
|
|
350
|
+
createInstance: <TGenerics extends TableGenerics>(
|
|
392
351
|
instance: TableInstance<TGenerics>
|
|
393
|
-
):
|
|
352
|
+
): ColumnSizingInstance<TGenerics> => {
|
|
394
353
|
return {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
354
|
+
setColumnSizing: updater =>
|
|
355
|
+
instance.options.onColumnSizingChange?.(updater),
|
|
356
|
+
setColumnSizingInfo: updater =>
|
|
357
|
+
instance.options.onColumnSizingInfoChange?.(updater),
|
|
358
|
+
resetColumnSizing: defaultState => {
|
|
359
|
+
instance.setColumnSizing(
|
|
360
|
+
defaultState ? {} : instance.initialState.columnSizing ?? {}
|
|
361
|
+
)
|
|
362
|
+
},
|
|
363
|
+
resetHeaderSizeInfo: defaultState => {
|
|
364
|
+
instance.setColumnSizingInfo(
|
|
365
|
+
defaultState
|
|
366
|
+
? getDefaultColumnSizingInfoState()
|
|
367
|
+
: instance.initialState.columnSizingInfo ??
|
|
368
|
+
getDefaultColumnSizingInfoState()
|
|
369
|
+
)
|
|
370
|
+
},
|
|
371
|
+
getTotalSize: () =>
|
|
372
|
+
instance.getHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
373
|
+
return sum + header.getSize()
|
|
374
|
+
}, 0) ?? 0,
|
|
375
|
+
getLeftTotalSize: () =>
|
|
376
|
+
instance.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
377
|
+
return sum + header.getSize()
|
|
378
|
+
}, 0) ?? 0,
|
|
379
|
+
getCenterTotalSize: () =>
|
|
380
|
+
instance.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
381
|
+
return sum + header.getSize()
|
|
382
|
+
}, 0) ?? 0,
|
|
383
|
+
getRightTotalSize: () =>
|
|
384
|
+
instance.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {
|
|
385
|
+
return sum + header.getSize()
|
|
386
|
+
}, 0) ?? 0,
|
|
400
387
|
}
|
|
401
388
|
},
|
|
402
389
|
}
|
|
@@ -425,8 +412,6 @@ export function passiveEventSupported() {
|
|
|
425
412
|
return passiveSupported
|
|
426
413
|
}
|
|
427
414
|
|
|
428
|
-
function isTouchStartEvent(
|
|
429
|
-
e
|
|
430
|
-
): e is ReactTouchEvent {
|
|
431
|
-
return e.type === 'touchstart'
|
|
415
|
+
function isTouchStartEvent(e: unknown): e is TouchEvent {
|
|
416
|
+
return (e as TouchEvent).type === 'touchstart'
|
|
432
417
|
}
|