@hi-ui/table 4.3.1 → 4.3.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/CHANGELOG.md +40 -0
- package/lib/cjs/BaseTable.js +136 -189
- package/lib/cjs/ColGroupContent.js +5 -28
- package/lib/cjs/SettingDrawer.js +76 -127
- package/lib/cjs/Table.js +107 -171
- package/lib/cjs/TableAdvancedFilter.js +49 -85
- package/lib/cjs/TableBody.js +33 -69
- package/lib/cjs/TableCell.js +56 -102
- package/lib/cjs/TableColumnMenu.js +39 -77
- package/lib/cjs/TableEmbedRow.js +11 -38
- package/lib/cjs/TableHeader.js +8 -33
- package/lib/cjs/TableRow.js +48 -88
- package/lib/cjs/TableSettingMenu.js +48 -94
- package/lib/cjs/TbodyContent.js +28 -56
- package/lib/cjs/TheadContent.js +20 -49
- package/lib/cjs/_virtual/index.js +0 -3
- package/lib/cjs/_virtual/index2.js +0 -3
- package/lib/cjs/_virtual/react-is.development.js +0 -3
- package/lib/cjs/_virtual/react-is.production.min.js +0 -3
- package/lib/cjs/context.js +0 -9
- package/lib/cjs/hooks/use-async-switch.js +13 -51
- package/lib/cjs/hooks/use-check.js +47 -77
- package/lib/cjs/hooks/use-col-hidden.js +16 -28
- package/lib/cjs/hooks/use-col-set.js +5 -18
- package/lib/cjs/hooks/use-col-sorter.js +18 -32
- package/lib/cjs/hooks/use-col-width.js +21 -57
- package/lib/cjs/hooks/use-colgroup.js +63 -85
- package/lib/cjs/hooks/use-drag.js +10 -31
- package/lib/cjs/hooks/use-embed-expand.js +23 -68
- package/lib/cjs/hooks/use-expand.js +32 -64
- package/lib/cjs/hooks/use-pagination.js +19 -50
- package/lib/cjs/hooks/use-queue.js +2 -14
- package/lib/cjs/icons/index.js +4 -21
- package/lib/cjs/index.js +0 -4
- package/lib/cjs/node_modules/classnames/index.js +2 -11
- package/lib/cjs/node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js +31 -227
- package/lib/cjs/node_modules/rc-resize-observer/es/index.js +10 -68
- package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/Children/toArray.js +1 -17
- package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/Dom/findDOMNode.js +1 -14
- package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/ref.js +1 -25
- package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/warning.js +1 -5
- package/lib/cjs/node_modules/rc-util/es/Dom/canUseDom.js +0 -2
- package/lib/cjs/node_modules/rc-util/es/Dom/findDOMNode.js +1 -14
- package/lib/cjs/node_modules/rc-util/es/hooks/useLayoutEffect.js +2 -9
- package/lib/cjs/node_modules/rc-util/es/raf.js +0 -11
- package/lib/cjs/node_modules/rc-virtual-list/es/Filler.js +6 -25
- package/lib/cjs/node_modules/rc-virtual-list/es/Item.js +3 -14
- package/lib/cjs/node_modules/rc-virtual-list/es/List.js +103 -194
- package/lib/cjs/node_modules/rc-virtual-list/es/ScrollBar.js +16 -96
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useChildren.js +2 -11
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useDiffItem.js +8 -34
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useFrameWheel.js +0 -10
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useHeights.js +6 -39
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js +0 -16
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useOriginScroll.js +4 -9
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useScrollTo.js +3 -28
- package/lib/cjs/node_modules/rc-virtual-list/es/index.js +0 -2
- package/lib/cjs/node_modules/rc-virtual-list/es/utils/CacheMap.js +2 -9
- package/lib/cjs/node_modules/rc-virtual-list/es/utils/algorithmUtil.js +0 -15
- package/lib/cjs/node_modules/rc-virtual-list/es/utils/isFirefox.js +0 -2
- package/lib/cjs/node_modules/react-is/cjs/react-is.development.js +3 -29
- package/lib/cjs/node_modules/react-is/cjs/react-is.production.min.js +19 -45
- package/lib/cjs/node_modules/react-is/index.js +0 -5
- package/lib/cjs/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js +83 -248
- package/lib/cjs/packages/hooks/use-merge-refs/lib/esm/index.js +3 -14
- package/lib/cjs/packages/ui/scrollbar/lib/esm/Scrollbar.js +48 -86
- package/lib/cjs/packages/ui/scrollbar/lib/esm/styles/index.scss.js +1 -15
- package/lib/cjs/packages/ui/scrollbar/lib/esm/utils/index.js +0 -13
- package/lib/cjs/styles/index.scss.js +1 -4
- package/lib/cjs/use-table.js +268 -355
- package/lib/cjs/utils/index.js +11 -45
- package/lib/esm/BaseTable.js +117 -138
- package/lib/esm/ColGroupContent.js +3 -9
- package/lib/esm/SettingDrawer.js +64 -83
- package/lib/esm/Table.js +97 -124
- package/lib/esm/TableAdvancedFilter.js +37 -47
- package/lib/esm/TableBody.js +24 -34
- package/lib/esm/TableCell.js +48 -72
- package/lib/esm/TableColumnMenu.js +24 -38
- package/lib/esm/TableEmbedRow.js +8 -15
- package/lib/esm/TableHeader.js +5 -11
- package/lib/esm/TableRow.js +36 -51
- package/lib/esm/TableSettingMenu.js +33 -49
- package/lib/esm/TbodyContent.js +20 -27
- package/lib/esm/TheadContent.js +14 -21
- package/lib/esm/context.js +0 -4
- package/lib/esm/hooks/use-async-switch.js +9 -28
- package/lib/esm/hooks/use-check.js +42 -55
- package/lib/esm/hooks/use-col-hidden.js +16 -21
- package/lib/esm/hooks/use-col-set.js +5 -13
- package/lib/esm/hooks/use-col-sorter.js +18 -23
- package/lib/esm/hooks/use-col-width.js +14 -34
- package/lib/esm/hooks/use-colgroup.js +60 -66
- package/lib/esm/hooks/use-drag.js +9 -13
- package/lib/esm/hooks/use-embed-expand.js +20 -42
- package/lib/esm/hooks/use-expand.js +32 -56
- package/lib/esm/hooks/use-pagination.js +13 -25
- package/lib/esm/hooks/use-queue.js +2 -10
- package/lib/esm/node_modules/classnames/index.js +2 -9
- package/lib/esm/node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js +31 -228
- package/lib/esm/node_modules/rc-resize-observer/es/index.js +3 -26
- package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/Children/toArray.js +0 -3
- package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/Dom/findDOMNode.js +1 -2
- package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/ref.js +0 -8
- package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/warning.js +0 -5
- package/lib/esm/node_modules/rc-util/es/Dom/canUseDom.js +0 -1
- package/lib/esm/node_modules/rc-util/es/Dom/findDOMNode.js +1 -2
- package/lib/esm/node_modules/rc-util/es/hooks/useLayoutEffect.js +1 -0
- package/lib/esm/node_modules/rc-util/es/raf.js +0 -10
- package/lib/esm/node_modules/rc-virtual-list/es/Filler.js +4 -15
- package/lib/esm/node_modules/rc-virtual-list/es/Item.js +1 -3
- package/lib/esm/node_modules/rc-virtual-list/es/List.js +101 -174
- package/lib/esm/node_modules/rc-virtual-list/es/ScrollBar.js +14 -86
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useChildren.js +0 -2
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useDiffItem.js +6 -25
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useFrameWheel.js +0 -6
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useHeights.js +4 -28
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js +0 -13
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useOriginScroll.js +4 -8
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useScrollTo.js +1 -19
- package/lib/esm/node_modules/rc-virtual-list/es/index.js +1 -1
- package/lib/esm/node_modules/rc-virtual-list/es/utils/CacheMap.js +2 -8
- package/lib/esm/node_modules/rc-virtual-list/es/utils/algorithmUtil.js +1 -12
- package/lib/esm/node_modules/rc-virtual-list/es/utils/isFirefox.js +0 -1
- package/lib/esm/node_modules/react-is/cjs/react-is.development.js +4 -27
- package/lib/esm/node_modules/react-is/cjs/react-is.production.min.js +20 -44
- package/lib/esm/node_modules/react-is/index.js +0 -1
- package/lib/esm/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js +82 -248
- package/lib/esm/packages/hooks/use-merge-refs/lib/esm/index.js +3 -9
- package/lib/esm/packages/ui/scrollbar/lib/esm/Scrollbar.js +47 -64
- package/lib/esm/packages/ui/scrollbar/lib/esm/styles/index.scss.js +1 -3
- package/lib/esm/packages/ui/scrollbar/lib/esm/utils/index.js +0 -10
- package/lib/esm/styles/index.scss.js +1 -3
- package/lib/esm/use-table.js +261 -318
- package/lib/esm/utils/index.js +11 -41
- package/lib/types/BaseTable.d.ts +2 -2
- package/package.json +33 -33
package/lib/esm/use-table.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { __rest } from 'tslib';
|
|
11
11
|
import React__default, { useMemo, useState, useRef, useCallback, useEffect } from 'react';
|
|
12
|
-
import { cloneTree, flattenTree,
|
|
12
|
+
import { cloneTree, flattenTree, getNodeRootParent, flattedTreeSort, getLeafChildren } from '@hi-ui/tree-utils';
|
|
13
13
|
import { useUncontrolledState } from '@hi-ui/use-uncontrolled-state';
|
|
14
14
|
import { isNullish, isArrayNonEmpty } from '@hi-ui/type-assertion';
|
|
15
15
|
import { useCheck, useSelect } from '@hi-ui/use-check';
|
|
@@ -30,75 +30,69 @@ var DEFAULT_HIGHLIGHTED_ROW_KEYS = [];
|
|
|
30
30
|
var DEFAULT_HIGHLIGHTED_COL_KEYS = [];
|
|
31
31
|
var DEFAULT_EXPAND_ROW_KEYS = [];
|
|
32
32
|
var DEFAULT_FIXED_TO_COLUMN = {};
|
|
33
|
-
|
|
34
33
|
var useTable = function useTable(_a) {
|
|
35
34
|
var _a$data = _a.data,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
35
|
+
data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
|
|
36
|
+
_a$columns = _a.columns,
|
|
37
|
+
columnsProp = _a$columns === void 0 ? DEFAULT_COLUMNS : _a$columns,
|
|
38
|
+
_a$defaultFixedToColu = _a.defaultFixedToColumn,
|
|
39
|
+
defaultFixedToColumn = _a$defaultFixedToColu === void 0 ? DEFAULT_FIXED_TO_COLUMN : _a$defaultFixedToColu,
|
|
40
|
+
fixedToColumnProp = _a.fixedToColumn,
|
|
41
|
+
onFixedToColumn = _a.onFixedToColumn,
|
|
42
|
+
scrollWidth = _a.scrollWidth,
|
|
43
|
+
_a$resizable = _a.resizable,
|
|
44
|
+
resizable = _a$resizable === void 0 ? false : _a$resizable,
|
|
45
|
+
_a$errorRowKeys = _a.errorRowKeys,
|
|
46
|
+
errorRowKeys = _a$errorRowKeys === void 0 ? DEFAULT_ERROR_ROW_KEYS : _a$errorRowKeys,
|
|
47
|
+
highlightedColKeysProp = _a.highlightedColKeys,
|
|
48
|
+
highlightedRowKeysProp = _a.highlightedRowKeys,
|
|
49
|
+
_a$showColHighlight = _a.showColHighlight,
|
|
50
|
+
showColHighlight = _a$showColHighlight === void 0 ? false : _a$showColHighlight,
|
|
51
|
+
_a$showRowHighlight = _a.showRowHighlight,
|
|
52
|
+
showRowHighlight = _a$showRowHighlight === void 0 ? true : _a$showRowHighlight,
|
|
53
|
+
_a$highlightRowOnDoub = _a.highlightRowOnDoubleClick,
|
|
54
|
+
highlightRowOnDoubleClick = _a$highlightRowOnDoub === void 0 ? true : _a$highlightRowOnDoub,
|
|
55
|
+
_a$defaultExpandedRow = _a.defaultExpandedRowKeys,
|
|
56
|
+
defaultExpandedRowKeys = _a$defaultExpandedRow === void 0 ? DEFAULT_EXPAND_ROW_KEYS : _a$defaultExpandedRow,
|
|
57
|
+
expandRowKeysProp = _a.expandedRowKeys,
|
|
58
|
+
onExpand = _a.onExpand,
|
|
59
|
+
_a$defaultExpandAll = _a.defaultExpandAll,
|
|
60
|
+
defaultExpandAll = _a$defaultExpandAll === void 0 ? false : _a$defaultExpandAll,
|
|
61
|
+
onLoadChildren = _a.onLoadChildren,
|
|
62
|
+
maxHeight = _a.maxHeight,
|
|
63
|
+
sticky = _a.sticky,
|
|
64
|
+
_a$stickyTop = _a.stickyTop,
|
|
65
|
+
stickyTop = _a$stickyTop === void 0 ? 0 : _a$stickyTop,
|
|
66
|
+
_a$draggable = _a.draggable,
|
|
67
|
+
draggable = _a$draggable === void 0 ? false : _a$draggable,
|
|
68
|
+
onDropProp = _a.onDrop,
|
|
69
|
+
onDropEnd = _a.onDropEnd,
|
|
70
|
+
showColMenu = _a.showColMenu,
|
|
71
|
+
rowSelection = _a.rowSelection,
|
|
72
|
+
cellRender = _a.cellRender,
|
|
73
|
+
footerRender = _a.footerRender,
|
|
74
|
+
_a$fieldKey = _a.fieldKey,
|
|
75
|
+
fieldKey = _a$fieldKey === void 0 ? 'key' : _a$fieldKey,
|
|
76
|
+
virtual = _a.virtual,
|
|
77
|
+
scrollbar = _a.scrollbar,
|
|
78
|
+
rootProps = __rest(_a, ["data", "columns", "defaultFixedToColumn", "fixedToColumn", "onFixedToColumn", "scrollWidth", "resizable", "errorRowKeys", "highlightedColKeys", "highlightedRowKeys", "showColHighlight", "showRowHighlight", "highlightRowOnDoubleClick", "defaultExpandedRowKeys", "expandedRowKeys", "onExpand", "defaultExpandAll", "onLoadChildren", "maxHeight", "sticky", "stickyTop", "draggable", "onDragStart", "onDrop", "onDropEnd", "showColMenu", "rowSelection", "cellRender", "footerRender", "fieldKey", "virtual", "scrollbar"]);
|
|
80
79
|
/**
|
|
81
80
|
* 获取 key 字段值
|
|
82
81
|
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
82
|
var getRowKeyField = React__default.useCallback(function (item) {
|
|
86
83
|
var val = item[fieldKey];
|
|
87
84
|
invariant(!isNullish(val), 'Not found for the unique %s attribute in each row of data prop.', fieldKey);
|
|
88
85
|
return val;
|
|
89
|
-
}, [fieldKey]);
|
|
90
|
-
|
|
86
|
+
}, [fieldKey]);
|
|
87
|
+
// ********************** cache *********************** //
|
|
91
88
|
var _useCache = useCache(data),
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
89
|
+
cacheData = _useCache[0],
|
|
90
|
+
setCacheData = _useCache[1];
|
|
95
91
|
var _useCache2 = useCache(columnsProp),
|
|
96
|
-
|
|
92
|
+
columns = _useCache2[0];
|
|
97
93
|
/**
|
|
98
94
|
* 扁平化数据,支持树形 table
|
|
99
95
|
*/
|
|
100
|
-
|
|
101
|
-
|
|
102
96
|
var flattedData = useMemo(function () {
|
|
103
97
|
var clonedData = cloneTree(cacheData);
|
|
104
98
|
return flattenTree(clonedData, function (node) {
|
|
@@ -106,92 +100,81 @@ var useTable = function useTable(_a) {
|
|
|
106
100
|
id: getRowKeyField(node.raw)
|
|
107
101
|
});
|
|
108
102
|
});
|
|
109
|
-
}, [cacheData, getRowKeyField]);
|
|
110
|
-
|
|
103
|
+
}, [cacheData, getRowKeyField]);
|
|
104
|
+
// ********************** 树形表格 *********************** //
|
|
111
105
|
var _useExpand = useExpand(flattedData, defaultExpandedRowKeys, expandRowKeysProp, onExpand, defaultExpandAll),
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
106
|
+
transitionData = _useExpand[0],
|
|
107
|
+
onExpandTreeRowsChange = _useExpand[1],
|
|
108
|
+
isExpandTreeRows = _useExpand[2];
|
|
109
|
+
// 异步展开子树
|
|
117
110
|
var _useAsyncSwitch = useAsyncSwitch({
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
111
|
+
setCascaderData: setCacheData,
|
|
112
|
+
onExpand: onExpandTreeRowsChange,
|
|
113
|
+
onLoadChildren: onLoadChildren,
|
|
114
|
+
fieldKey: fieldKey
|
|
115
|
+
}),
|
|
116
|
+
isLoadingTreeNodeId = _useAsyncSwitch[0],
|
|
117
|
+
onTreeNodeSwitch = _useAsyncSwitch[1];
|
|
118
|
+
// ************************ 拖拽 ************************ //
|
|
127
119
|
var _useTableDrag = useTableDrag({
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
120
|
+
cacheData: cacheData,
|
|
121
|
+
setCacheData: setCacheData,
|
|
122
|
+
draggable: draggable,
|
|
123
|
+
flattedData: flattedData,
|
|
124
|
+
onDropEnd: onDropEnd,
|
|
125
|
+
onDrop: onDropProp,
|
|
126
|
+
fieldKey: fieldKey
|
|
127
|
+
}),
|
|
128
|
+
onDrop = _useTableDrag.onDrop,
|
|
129
|
+
dragRowRef = _useTableDrag.dragRowRef;
|
|
130
|
+
// ************************ colgroup ************************ //
|
|
140
131
|
var _useColumns = useColumns({
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
132
|
+
columns: columns
|
|
133
|
+
}),
|
|
134
|
+
flattedColumns = _useColumns.flattedColumns,
|
|
135
|
+
mergedColumns2 = _useColumns.mergedColumns,
|
|
136
|
+
leafColumns = _useColumns.leafColumns;
|
|
137
|
+
// ************************ 列高亮 ************************ //
|
|
147
138
|
/**
|
|
148
139
|
* 控制列高亮,依据 column 中的 dataKey 控制
|
|
149
140
|
*/
|
|
150
|
-
|
|
151
|
-
|
|
152
141
|
var _useUncontrolledState = useUncontrolledState(DEFAULT_HIGHLIGHTED_COL_KEYS, highlightedColKeysProp),
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
142
|
+
highlightedColKeys = _useUncontrolledState[0],
|
|
143
|
+
trySetHighlightedColKeys = _useUncontrolledState[1];
|
|
156
144
|
var _useCheck = useCheck({
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
145
|
+
checkedIds: highlightedColKeys,
|
|
146
|
+
onCheck: trySetHighlightedColKeys,
|
|
147
|
+
idFieldName: 'dataKey'
|
|
148
|
+
}),
|
|
149
|
+
onHighlightedColChange = _useCheck[0],
|
|
150
|
+
isHighlightedCol = _useCheck[1];
|
|
163
151
|
/**
|
|
164
152
|
* 设置列 hover 时高亮,依据 column 中的 dataKey 控制
|
|
165
153
|
* 与 highlightedColKeys 互不影响
|
|
166
154
|
*/
|
|
167
|
-
|
|
168
|
-
|
|
169
155
|
var _useState = useState(''),
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
156
|
+
hoveredColKey = _useState[0],
|
|
157
|
+
setHoveredColKey = _useState[1];
|
|
173
158
|
var _useSelect = useSelect({
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
159
|
+
disabled: !showColHighlight,
|
|
160
|
+
selectedId: hoveredColKey,
|
|
161
|
+
onSelect: setHoveredColKey
|
|
162
|
+
}),
|
|
163
|
+
onHoveredColChange = _useSelect[0],
|
|
164
|
+
isHoveredHighlightCol = _useSelect[1];
|
|
165
|
+
// ************************ 列宽 resizable ************************ //
|
|
182
166
|
var _useColWidth = useColWidth({
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
167
|
+
data: data,
|
|
168
|
+
columns: columns,
|
|
169
|
+
resizable: resizable,
|
|
170
|
+
virtual: virtual
|
|
171
|
+
}),
|
|
172
|
+
measureRowElementRef = _useColWidth.measureRowElementRef,
|
|
173
|
+
getColgroupProps = _useColWidth.getColgroupProps,
|
|
174
|
+
onColumnResizable = _useColWidth.onColumnResizable,
|
|
175
|
+
colWidths = _useColWidth.colWidths,
|
|
176
|
+
setHeaderTableElement = _useColWidth.setHeaderTableElement;
|
|
177
|
+
// ************************ 列冻结 ************************ //
|
|
195
178
|
var bodyTableRef = useRef(null);
|
|
196
179
|
var scrollBodyElementRef = useRef(null);
|
|
197
180
|
/**
|
|
@@ -199,173 +182,155 @@ var useTable = function useTable(_a) {
|
|
|
199
182
|
*
|
|
200
183
|
* TODO: 支持 2 种模式:从左往右冻结到指定列、只抽离并冻结指定列
|
|
201
184
|
*/
|
|
202
|
-
|
|
203
185
|
var _useUncontrolledState2 = useUncontrolledState(defaultFixedToColumn, fixedToColumnProp, onFixedToColumn),
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
186
|
+
fixedToColumn = _useUncontrolledState2[0],
|
|
187
|
+
setFixedToColumn = _useUncontrolledState2[1];
|
|
207
188
|
var leftFreezeColumn = fixedToColumn.left;
|
|
208
189
|
var rightFreezeColumn = fixedToColumn.right;
|
|
209
190
|
var setLeftFreezeColumn = useCallback(function (columnKey) {
|
|
210
191
|
setFixedToColumn(function (prev) {
|
|
211
192
|
var next = Object.assign({}, prev);
|
|
212
193
|
next.left = columnKey;
|
|
213
|
-
|
|
214
194
|
if (next.right === columnKey) {
|
|
215
195
|
next.right = '';
|
|
216
196
|
}
|
|
217
|
-
|
|
218
197
|
return next;
|
|
219
198
|
});
|
|
220
199
|
}, [setFixedToColumn]);
|
|
221
|
-
|
|
222
200
|
var _React$useMemo = React__default.useMemo(function () {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
var leftFrozenColKey = leftFreezeColumn;
|
|
232
|
-
var rightFrozenKey = rightFreezeColumn; // 获取左右冻结列的下标
|
|
233
|
-
// 获取左右冻结列的下标
|
|
234
|
-
|
|
235
|
-
var leftFrozenColIndex;
|
|
236
|
-
var rightFrozenColIndex;
|
|
237
|
-
mergedColumns2.some(function (column, index) {
|
|
238
|
-
if (typeof leftFrozenColKey === 'string' && leftFrozenColKey === column.dataKey) {
|
|
239
|
-
leftFrozenColIndex = index;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
if (typeof rightFrozenKey === 'string' && rightFrozenKey === column.dataKey) {
|
|
243
|
-
rightFrozenColIndex = index;
|
|
201
|
+
if (!leftFreezeColumn && !rightFreezeColumn) {
|
|
202
|
+
return {
|
|
203
|
+
leftFrozenColKeys: [],
|
|
204
|
+
rightFrozenColKeys: [],
|
|
205
|
+
columns: mergedColumns2
|
|
206
|
+
};
|
|
244
207
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
208
|
+
var leftFrozenColKey = leftFreezeColumn;
|
|
209
|
+
var rightFrozenKey = rightFreezeColumn;
|
|
210
|
+
// 获取左右冻结列的下标
|
|
211
|
+
// 获取左右冻结列的下标
|
|
212
|
+
var leftFrozenColIndex;
|
|
213
|
+
var rightFrozenColIndex;
|
|
214
|
+
mergedColumns2.some(function (column, index) {
|
|
215
|
+
if (typeof leftFrozenColKey === 'string' && leftFrozenColKey === column.dataKey) {
|
|
216
|
+
leftFrozenColIndex = index;
|
|
217
|
+
}
|
|
218
|
+
if (typeof rightFrozenKey === 'string' && rightFrozenKey === column.dataKey) {
|
|
219
|
+
rightFrozenColIndex = index;
|
|
220
|
+
}
|
|
221
|
+
return leftFrozenColIndex !== undefined && rightFrozenColIndex !== undefined;
|
|
222
|
+
});
|
|
223
|
+
// 保持内部循环引用关系,如果 cloneTree,将破坏关系
|
|
224
|
+
// 保持内部循环引用关系,如果 cloneTree,将破坏关系
|
|
225
|
+
var nextColumns = [].concat(mergedColumns2);
|
|
226
|
+
if (typeof leftFrozenColIndex === 'number' || typeof rightFrozenColIndex === 'number' || scrollWidth) {
|
|
227
|
+
var lastColumns = mergedColumns2;
|
|
228
|
+
nextColumns = setColumnsDefaultWidth(nextColumns, scrollWidth ? scrollWidth / lastColumns.length : 100);
|
|
229
|
+
if (colWidths) {
|
|
230
|
+
// colWidths 记录的是最新的列宽,当它有值时,重置一下列宽,否则会导致冻结列动态调整宽度后定位不准
|
|
231
|
+
nextColumns = nextColumns.map(function (item, index) {
|
|
232
|
+
return Object.assign(Object.assign({}, item), {
|
|
233
|
+
width: colWidths[index]
|
|
234
|
+
});
|
|
261
235
|
});
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
var leftColumns = [];
|
|
239
|
+
// 左侧
|
|
240
|
+
// 左侧
|
|
241
|
+
if (typeof leftFrozenColIndex === 'number') {
|
|
242
|
+
// TODO: 支持嵌套冻结列
|
|
243
|
+
// const targetColumn = nextColumns[leftFrozenColIndex]
|
|
244
|
+
// const beforeColumns = nextColumns.filter((_, idx) => idx < leftFrozenColIndex!)
|
|
245
|
+
// // @ts-ignore
|
|
246
|
+
// const afterColumns = fFindNestedChildNodesByIndex(nextColumns, leftFrozenColIndex)
|
|
247
|
+
// // @ts-ignore
|
|
248
|
+
// leftColumns = beforeColumns.concat(targetColumn).concat(afterColumns)
|
|
249
|
+
leftColumns = nextColumns.filter(function (item, index) {
|
|
250
|
+
return index <= leftFrozenColIndex && item.depth === 0;
|
|
251
|
+
});
|
|
252
|
+
leftColumns.forEach(function (currentItem, index) {
|
|
253
|
+
var item = parseFixedColumns(currentItem, index, nextColumns, leftColumns, 'leftStickyWidth');
|
|
254
|
+
leftColumns[index] = item;
|
|
255
|
+
nextColumns[item.index] = item;
|
|
262
256
|
});
|
|
263
257
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
//
|
|
271
|
-
//
|
|
272
|
-
//
|
|
273
|
-
//
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
})).reverse();
|
|
326
|
-
rightColumns.forEach(function (currentItem, index) {
|
|
327
|
-
var item = parseFixedColumns(currentItem, index, nextColumns, rightColumns, 'rightStickyWidth');
|
|
328
|
-
rightColumns[index] = item;
|
|
329
|
-
nextColumns[item.index] = item;
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
var rightLeafNodes = getLeafNodes(rightColumns);
|
|
334
|
-
var rightColIndex = rightLeafNodes.length;
|
|
335
|
-
var rightFixedColumnsWidth = [].concat(colWidths).reverse().reduce(function (acc, width, index) {
|
|
336
|
-
return acc += index < rightColIndex ? width : 0;
|
|
337
|
-
}, 0);
|
|
338
|
-
return {
|
|
339
|
-
leftFrozenColKeys: leftColumns,
|
|
340
|
-
rightFrozenColKeys: rightColumns,
|
|
341
|
-
columns: nextColumns,
|
|
342
|
-
leftFixedColumnsWidth: leftFixedColumnsWidth,
|
|
343
|
-
rightFixedColumnsWidth: rightFixedColumnsWidth
|
|
344
|
-
};
|
|
345
|
-
}, [mergedColumns2, scrollWidth, colWidths, leftFreezeColumn, rightFreezeColumn]),
|
|
346
|
-
leftFrozenColKeys = _React$useMemo.leftFrozenColKeys,
|
|
347
|
-
rightFrozenColKeys = _React$useMemo.rightFrozenColKeys,
|
|
348
|
-
mergedColumns1 = _React$useMemo.columns,
|
|
349
|
-
leftFixedColumnsWidth = _React$useMemo.leftFixedColumnsWidth,
|
|
350
|
-
rightFixedColumnsWidth = _React$useMemo.rightFixedColumnsWidth;
|
|
351
|
-
|
|
258
|
+
// @TODO: resizable 和 列冻结宽兼容,统一宽度设置来源
|
|
259
|
+
// const leftFixedColumnsWidth = colWidths.reduce(
|
|
260
|
+
// (acc, width, index) => (acc += index <= leftFrozenColIndex! ? width : 0),
|
|
261
|
+
// 0
|
|
262
|
+
// )
|
|
263
|
+
// @TODO: resizable 和 列冻结宽兼容,统一宽度设置来源
|
|
264
|
+
// const leftFixedColumnsWidth = colWidths.reduce(
|
|
265
|
+
// (acc, width, index) => (acc += index <= leftFrozenColIndex! ? width : 0),
|
|
266
|
+
// 0
|
|
267
|
+
// )
|
|
268
|
+
var getLeafNodes = function getLeafNodes(columns) {
|
|
269
|
+
return columns.reduce(function (acc, column) {
|
|
270
|
+
return acc.concat(getLeafChildren(column));
|
|
271
|
+
}, []);
|
|
272
|
+
};
|
|
273
|
+
var leftLeafNodes = getLeafNodes(leftColumns);
|
|
274
|
+
var leftColIndex = leftLeafNodes.length;
|
|
275
|
+
var leftFixedColumnsWidth = colWidths.reduce(function (acc, width, index) {
|
|
276
|
+
return acc += index < leftColIndex ? width : 0;
|
|
277
|
+
}, 0);
|
|
278
|
+
// 右侧
|
|
279
|
+
// 右侧
|
|
280
|
+
var rightColumns = [];
|
|
281
|
+
if (typeof rightFrozenColIndex === 'number') {
|
|
282
|
+
var targetColumn = nextColumns[rightFrozenColIndex];
|
|
283
|
+
// const beforeColumns = getNodeAncestors(targetColumn)
|
|
284
|
+
// const afterColumns = nextColumns.filter((_, idx) => idx > rightFrozenColIndex!)
|
|
285
|
+
// // @ts-ignore
|
|
286
|
+
// rightColumns = beforeColumns.concat(targetColumn).concat(afterColumns)
|
|
287
|
+
// const beforeColumns = getNodeAncestors(targetColumn)
|
|
288
|
+
// const afterColumns = nextColumns.filter((_, idx) => idx > rightFrozenColIndex!)
|
|
289
|
+
// // @ts-ignore
|
|
290
|
+
// rightColumns = beforeColumns.concat(targetColumn).concat(afterColumns)
|
|
291
|
+
var root = getNodeRootParent(targetColumn);
|
|
292
|
+
rightColumns = [root].concat(nextColumns.filter(function (item, index) {
|
|
293
|
+
return index > rightFrozenColIndex && item.depth === 0;
|
|
294
|
+
})).reverse();
|
|
295
|
+
rightColumns.forEach(function (currentItem, index) {
|
|
296
|
+
var item = parseFixedColumns(currentItem, index, nextColumns, rightColumns, 'rightStickyWidth');
|
|
297
|
+
rightColumns[index] = item;
|
|
298
|
+
nextColumns[item.index] = item;
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
var rightLeafNodes = getLeafNodes(rightColumns);
|
|
302
|
+
var rightColIndex = rightLeafNodes.length;
|
|
303
|
+
var rightFixedColumnsWidth = [].concat(colWidths).reverse().reduce(function (acc, width, index) {
|
|
304
|
+
return acc += index < rightColIndex ? width : 0;
|
|
305
|
+
}, 0);
|
|
306
|
+
return {
|
|
307
|
+
leftFrozenColKeys: leftColumns,
|
|
308
|
+
rightFrozenColKeys: rightColumns,
|
|
309
|
+
columns: nextColumns,
|
|
310
|
+
leftFixedColumnsWidth: leftFixedColumnsWidth,
|
|
311
|
+
rightFixedColumnsWidth: rightFixedColumnsWidth
|
|
312
|
+
};
|
|
313
|
+
}, [mergedColumns2, scrollWidth, colWidths, leftFreezeColumn, rightFreezeColumn]),
|
|
314
|
+
leftFrozenColKeys = _React$useMemo.leftFrozenColKeys,
|
|
315
|
+
rightFrozenColKeys = _React$useMemo.rightFrozenColKeys,
|
|
316
|
+
mergedColumns1 = _React$useMemo.columns,
|
|
317
|
+
leftFixedColumnsWidth = _React$useMemo.leftFixedColumnsWidth,
|
|
318
|
+
rightFixedColumnsWidth = _React$useMemo.rightFixedColumnsWidth;
|
|
352
319
|
var _useState2 = useState({
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
320
|
+
scrollLeft: 0,
|
|
321
|
+
scrollRight: 1
|
|
322
|
+
}),
|
|
323
|
+
scrollSize = _useState2[0],
|
|
324
|
+
setScrollSize = _useState2[1];
|
|
359
325
|
useEffect(function () {
|
|
360
326
|
var _a, _b, _c, _d, _e, _f;
|
|
361
|
-
|
|
362
327
|
if (leftFrozenColKeys.length > 0 || rightFrozenColKeys.length > 0) {
|
|
363
328
|
// 计算冻结列的宽度
|
|
364
329
|
// mutationObserver
|
|
365
330
|
var tableWidth = (_c = (_b = (_a = bodyTableRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect) === null || _b === void 0 ? void 0 : _b.call(_a).width) !== null && _c !== void 0 ? _c : 0;
|
|
366
331
|
var tableBodyWidth = (_f = (_e = (_d = scrollBodyElementRef.current) === null || _d === void 0 ? void 0 : _d.getBoundingClientRect) === null || _e === void 0 ? void 0 : _e.call(_d).width) !== null && _f !== void 0 ? _f : 0;
|
|
367
|
-
var scrollRight = tableWidth - tableBodyWidth;
|
|
368
|
-
|
|
332
|
+
var scrollRight = tableWidth - tableBodyWidth;
|
|
333
|
+
// const scrollLeft = 0
|
|
369
334
|
setScrollSize(function (prev) {
|
|
370
335
|
return {
|
|
371
336
|
scrollLeft: prev.scrollLeft,
|
|
@@ -373,31 +338,25 @@ var useTable = function useTable(_a) {
|
|
|
373
338
|
};
|
|
374
339
|
});
|
|
375
340
|
}
|
|
376
|
-
}, [leftFrozenColKeys, rightFrozenColKeys]);
|
|
341
|
+
}, [leftFrozenColKeys, rightFrozenColKeys]);
|
|
342
|
+
// const canScroll = scrollSize.scrollRight > 0
|
|
377
343
|
// 实时计算
|
|
378
|
-
|
|
379
344
|
var canScroll = bodyTableRef.current && scrollBodyElementRef.current ? scrollBodyElementRef.current.clientWidth < bodyTableRef.current.clientWidth : false;
|
|
380
345
|
/**
|
|
381
346
|
* 同步 双 table 左右滚动偏移
|
|
382
347
|
*/
|
|
383
|
-
|
|
384
348
|
var syncScrollLeft = React__default.useCallback(function (scrollLeft, syncTarget) {
|
|
385
349
|
var scrollRight = scrollSize.scrollRight;
|
|
386
|
-
|
|
387
350
|
if (syncTarget && syncTarget.scrollLeft !== scrollLeft) {
|
|
388
351
|
syncTarget.scrollLeft = scrollLeft;
|
|
389
352
|
}
|
|
390
|
-
|
|
391
353
|
if (bodyTableRef && bodyTableRef.current && scrollBodyElementRef && scrollBodyElementRef.current && isArrayNonEmpty(rightFrozenColKeys)) {
|
|
392
354
|
var _bodyTableRef$current = bodyTableRef.current.getBoundingClientRect(),
|
|
393
|
-
|
|
394
|
-
|
|
355
|
+
tableTefRight = _bodyTableRef$current.right;
|
|
395
356
|
var _scrollBodyElementRef = scrollBodyElementRef.current.getBoundingClientRect(),
|
|
396
|
-
|
|
397
|
-
|
|
357
|
+
right = _scrollBodyElementRef.right;
|
|
398
358
|
scrollRight = tableTefRight - right;
|
|
399
359
|
}
|
|
400
|
-
|
|
401
360
|
setScrollSize({
|
|
402
361
|
scrollLeft: scrollLeft,
|
|
403
362
|
scrollRight: scrollRight
|
|
@@ -406,41 +365,37 @@ var useTable = function useTable(_a) {
|
|
|
406
365
|
var scrollHeaderElementRef = useRef(null);
|
|
407
366
|
var onTableBodyScroll = React__default.useCallback(function (evt) {
|
|
408
367
|
evt.stopPropagation();
|
|
409
|
-
|
|
410
368
|
if (scrollBodyElementRef.current) {
|
|
411
369
|
syncScrollLeft(scrollBodyElementRef.current.scrollLeft, scrollHeaderElementRef.current);
|
|
412
370
|
}
|
|
413
|
-
}, [syncScrollLeft]);
|
|
371
|
+
}, [syncScrollLeft]);
|
|
372
|
+
// 1. 对于 sticky 的元素,触发滚轮滚动,需要模拟 onScroll 触发,比如 tableHeader 固定吸顶时
|
|
414
373
|
// 2. 同时不允许其出现滚动条
|
|
415
|
-
|
|
416
374
|
var onTableBodyScrollMock = React__default.useCallback(function (evt) {
|
|
417
375
|
if (!scrollHeaderElementRef.current) return;
|
|
418
376
|
evt.stopPropagation();
|
|
419
377
|
var deltaX = evt.deltaX;
|
|
420
378
|
scrollHeaderElementRef.current.scrollLeft = scrollHeaderElementRef.current.scrollLeft + deltaX;
|
|
421
379
|
syncScrollLeft(scrollHeaderElementRef.current.scrollLeft, scrollBodyElementRef.current);
|
|
422
|
-
}, [syncScrollLeft]);
|
|
423
|
-
|
|
380
|
+
}, [syncScrollLeft]);
|
|
381
|
+
// ************************ 行高亮 ************************ //
|
|
424
382
|
/**
|
|
425
383
|
* 控制行高亮,依据 data 中的 key 控制
|
|
426
384
|
*/
|
|
427
|
-
|
|
428
385
|
var _useUncontrolledState3 = useUncontrolledState(DEFAULT_HIGHLIGHTED_ROW_KEYS, highlightedRowKeysProp),
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
386
|
+
highlightedRowKeys = _useUncontrolledState3[0],
|
|
387
|
+
trySetHighlightedRowKeys = _useUncontrolledState3[1];
|
|
432
388
|
var _useCheck2 = useCheck({
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
389
|
+
disabled: !highlightRowOnDoubleClick,
|
|
390
|
+
checkedIds: highlightedRowKeys,
|
|
391
|
+
onCheck: trySetHighlightedRowKeys
|
|
392
|
+
}),
|
|
393
|
+
onHighlightedRowChange = _useCheck2[0],
|
|
394
|
+
isHighlightedRow = _useCheck2[1];
|
|
440
395
|
var isErrorRow = useCallback(function (key) {
|
|
441
396
|
return errorRowKeys.includes(key);
|
|
442
|
-
}, [errorRowKeys]);
|
|
443
|
-
|
|
397
|
+
}, [errorRowKeys]);
|
|
398
|
+
// 末级 column
|
|
444
399
|
var flattedColumnsWithoutChildren = React__default.useMemo(function () {
|
|
445
400
|
return mergedColumns1.filter(function (col) {
|
|
446
401
|
return !isArrayNonEmpty(col.children);
|
|
@@ -449,32 +404,28 @@ var useTable = function useTable(_a) {
|
|
|
449
404
|
var groupedColumns = React__default.useMemo(function () {
|
|
450
405
|
return mergedColumns1.reduce(function (acc, cur) {
|
|
451
406
|
var depth = cur.depth;
|
|
452
|
-
|
|
453
407
|
if (!acc[depth]) {
|
|
454
408
|
acc[depth] = [];
|
|
455
409
|
}
|
|
456
|
-
|
|
457
410
|
acc[depth].push(cur);
|
|
458
411
|
return acc;
|
|
459
412
|
}, []);
|
|
460
413
|
}, [mergedColumns1]);
|
|
461
414
|
var getStickyColProps = useLatestCallback(function (column) {
|
|
462
415
|
var rightStickyWidth = column.rightStickyWidth,
|
|
463
|
-
|
|
464
|
-
|
|
416
|
+
leftStickyWidth = column.leftStickyWidth,
|
|
417
|
+
align = column.align;
|
|
465
418
|
var sticky = canScroll && (typeof rightStickyWidth !== 'undefined' || typeof leftStickyWidth !== 'undefined');
|
|
466
419
|
var style = {
|
|
467
420
|
textAlign: align
|
|
468
421
|
};
|
|
469
|
-
|
|
470
422
|
if (sticky) {
|
|
471
423
|
style.position = 'sticky';
|
|
472
424
|
style.right = rightStickyWidth + 'px';
|
|
473
|
-
style.left = leftStickyWidth + 'px';
|
|
474
|
-
|
|
425
|
+
style.left = leftStickyWidth + 'px';
|
|
426
|
+
// the value is same with v3
|
|
475
427
|
style.zIndex = 5;
|
|
476
428
|
}
|
|
477
|
-
|
|
478
429
|
return {
|
|
479
430
|
style: style,
|
|
480
431
|
'data-sticky': setAttrStatus(sticky)
|
|
@@ -499,29 +450,23 @@ var useTable = function useTable(_a) {
|
|
|
499
450
|
return row.children && row.children.length || onLoadChildren && !row.isLeaf;
|
|
500
451
|
}) : false;
|
|
501
452
|
}, [data, onLoadChildren]);
|
|
502
|
-
|
|
503
453
|
var _useState3 = useState(null),
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
454
|
+
activeSorterColumn = _useState3[0],
|
|
455
|
+
setActiveSorterColumn = _useState3[1];
|
|
507
456
|
var _useState4 = useState(null),
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
457
|
+
activeSorterType = _useState4[0],
|
|
458
|
+
setActiveSorterType = _useState4[1];
|
|
459
|
+
//* *************** 根据排序列处理数据 ************** *//
|
|
512
460
|
var showData = useMemo(function () {
|
|
513
461
|
var _a;
|
|
514
|
-
|
|
515
462
|
var _data = [].concat(transitionData);
|
|
516
|
-
|
|
517
463
|
if (activeSorterColumn) {
|
|
518
464
|
var sorter = (_a = columns.filter(function (d) {
|
|
519
465
|
return d.dataKey === activeSorterColumn;
|
|
520
466
|
})[0]) === null || _a === void 0 ? void 0 : _a.sorter;
|
|
521
|
-
|
|
522
467
|
if (sorter) {
|
|
523
|
-
activeSorterType === 'ascend' ? _data.sort(sorter) : _data.sort(sorter).reverse();
|
|
524
|
-
|
|
468
|
+
activeSorterType === 'ascend' ? _data.sort(sorter) : _data.sort(sorter).reverse();
|
|
469
|
+
// 平铺的树形结构排序
|
|
525
470
|
if (_data.some(function (d) {
|
|
526
471
|
return d.depth !== 0;
|
|
527
472
|
})) {
|
|
@@ -529,7 +474,6 @@ var useTable = function useTable(_a) {
|
|
|
529
474
|
}
|
|
530
475
|
}
|
|
531
476
|
}
|
|
532
|
-
|
|
533
477
|
return _data;
|
|
534
478
|
}, [activeSorterColumn, activeSorterType, transitionData, columns]);
|
|
535
479
|
return Object.assign(Object.assign({
|
|
@@ -613,5 +557,4 @@ var useTable = function useTable(_a) {
|
|
|
613
557
|
scrollbar: scrollbar
|
|
614
558
|
});
|
|
615
559
|
};
|
|
616
|
-
|
|
617
560
|
export { useTable };
|