@hi-ui/table 4.3.0 → 4.3.2-alpha.0
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 +11 -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 +42 -73
- 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 +1090 -0
- 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 +65 -0
- package/lib/cjs/packages/ui/scrollbar/lib/esm/Scrollbar.js +147 -0
- package/lib/cjs/packages/ui/scrollbar/lib/esm/styles/index.scss.js +28 -0
- package/lib/cjs/packages/ui/scrollbar/lib/esm/utils/index.js +68 -0
- package/lib/cjs/styles/index.scss.js +1 -4
- package/lib/cjs/use-table.js +276 -361
- 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 +37 -44
- 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 +1084 -0
- 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 +62 -0
- package/lib/esm/packages/ui/scrollbar/lib/esm/Scrollbar.js +145 -0
- package/lib/esm/packages/ui/scrollbar/lib/esm/styles/index.scss.js +23 -0
- package/lib/esm/packages/ui/scrollbar/lib/esm/utils/index.js +66 -0
- package/lib/esm/styles/index.scss.js +1 -3
- package/lib/esm/use-table.js +268 -323
- package/lib/esm/utils/index.js +11 -41
- package/lib/types/context.d.ts +2 -0
- package/lib/types/use-table.d.ts +8 -2
- package/package.json +5 -5
package/lib/esm/use-table.js
CHANGED
|
@@ -8,21 +8,21 @@
|
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
9
|
*/
|
|
10
10
|
import { __rest } from 'tslib';
|
|
11
|
-
import { cloneTree, flattenTree, getLeafChildren, getNodeRootParent, flattedTreeSort } from '@hi-ui/tree-utils';
|
|
12
11
|
import React__default, { useMemo, useState, useRef, useCallback, useEffect } from 'react';
|
|
12
|
+
import { cloneTree, flattenTree, getNodeRootParent, flattedTreeSort, getLeafChildren } from '@hi-ui/tree-utils';
|
|
13
13
|
import { useUncontrolledState } from '@hi-ui/use-uncontrolled-state';
|
|
14
|
-
import { useColWidth } from './hooks/use-col-width.js';
|
|
15
|
-
import { setColumnsDefaultWidth, parseFixedColumns } from './utils/index.js';
|
|
16
14
|
import { isNullish, isArrayNonEmpty } from '@hi-ui/type-assertion';
|
|
17
15
|
import { useCheck, useSelect } from '@hi-ui/use-check';
|
|
18
16
|
import { invariant } from '@hi-ui/env';
|
|
17
|
+
import { setAttrStatus } from '@hi-ui/dom-utils';
|
|
18
|
+
import { useCache } from '@hi-ui/use-cache';
|
|
19
|
+
import { useLatestCallback } from '@hi-ui/use-latest';
|
|
20
|
+
import { setColumnsDefaultWidth, parseFixedColumns } from './utils/index.js';
|
|
19
21
|
import { useAsyncSwitch } from './hooks/use-async-switch.js';
|
|
20
22
|
import { useExpand } from './hooks/use-expand.js';
|
|
23
|
+
import { useColWidth } from './hooks/use-col-width.js';
|
|
21
24
|
import { useColumns } from './hooks/use-colgroup.js';
|
|
22
|
-
import { setAttrStatus } from '@hi-ui/dom-utils';
|
|
23
|
-
import { useCache } from '@hi-ui/use-cache';
|
|
24
25
|
import { useTableDrag } from './hooks/use-drag.js';
|
|
25
|
-
import { useLatestCallback } from '@hi-ui/use-latest';
|
|
26
26
|
var DEFAULT_COLUMNS = [];
|
|
27
27
|
var DEFAULT_DATA = [];
|
|
28
28
|
var DEFAULT_ERROR_ROW_KEYS = [];
|
|
@@ -30,74 +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
|
-
|
|
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"]);
|
|
79
79
|
/**
|
|
80
80
|
* 获取 key 字段值
|
|
81
81
|
*/
|
|
82
|
-
|
|
83
|
-
|
|
84
82
|
var getRowKeyField = React__default.useCallback(function (item) {
|
|
85
83
|
var val = item[fieldKey];
|
|
86
84
|
invariant(!isNullish(val), 'Not found for the unique %s attribute in each row of data prop.', fieldKey);
|
|
87
85
|
return val;
|
|
88
|
-
}, [fieldKey]);
|
|
89
|
-
|
|
86
|
+
}, [fieldKey]);
|
|
87
|
+
// ********************** cache *********************** //
|
|
90
88
|
var _useCache = useCache(data),
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
89
|
+
cacheData = _useCache[0],
|
|
90
|
+
setCacheData = _useCache[1];
|
|
94
91
|
var _useCache2 = useCache(columnsProp),
|
|
95
|
-
|
|
92
|
+
columns = _useCache2[0];
|
|
96
93
|
/**
|
|
97
94
|
* 扁平化数据,支持树形 table
|
|
98
95
|
*/
|
|
99
|
-
|
|
100
|
-
|
|
101
96
|
var flattedData = useMemo(function () {
|
|
102
97
|
var clonedData = cloneTree(cacheData);
|
|
103
98
|
return flattenTree(clonedData, function (node) {
|
|
@@ -105,92 +100,81 @@ var useTable = function useTable(_a) {
|
|
|
105
100
|
id: getRowKeyField(node.raw)
|
|
106
101
|
});
|
|
107
102
|
});
|
|
108
|
-
}, [cacheData, getRowKeyField]);
|
|
109
|
-
|
|
103
|
+
}, [cacheData, getRowKeyField]);
|
|
104
|
+
// ********************** 树形表格 *********************** //
|
|
110
105
|
var _useExpand = useExpand(flattedData, defaultExpandedRowKeys, expandRowKeysProp, onExpand, defaultExpandAll),
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
106
|
+
transitionData = _useExpand[0],
|
|
107
|
+
onExpandTreeRowsChange = _useExpand[1],
|
|
108
|
+
isExpandTreeRows = _useExpand[2];
|
|
109
|
+
// 异步展开子树
|
|
116
110
|
var _useAsyncSwitch = useAsyncSwitch({
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
111
|
+
setCascaderData: setCacheData,
|
|
112
|
+
onExpand: onExpandTreeRowsChange,
|
|
113
|
+
onLoadChildren: onLoadChildren,
|
|
114
|
+
fieldKey: fieldKey
|
|
115
|
+
}),
|
|
116
|
+
isLoadingTreeNodeId = _useAsyncSwitch[0],
|
|
117
|
+
onTreeNodeSwitch = _useAsyncSwitch[1];
|
|
118
|
+
// ************************ 拖拽 ************************ //
|
|
126
119
|
var _useTableDrag = useTableDrag({
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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 ************************ //
|
|
139
131
|
var _useColumns = useColumns({
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
132
|
+
columns: columns
|
|
133
|
+
}),
|
|
134
|
+
flattedColumns = _useColumns.flattedColumns,
|
|
135
|
+
mergedColumns2 = _useColumns.mergedColumns,
|
|
136
|
+
leafColumns = _useColumns.leafColumns;
|
|
137
|
+
// ************************ 列高亮 ************************ //
|
|
146
138
|
/**
|
|
147
139
|
* 控制列高亮,依据 column 中的 dataKey 控制
|
|
148
140
|
*/
|
|
149
|
-
|
|
150
|
-
|
|
151
141
|
var _useUncontrolledState = useUncontrolledState(DEFAULT_HIGHLIGHTED_COL_KEYS, highlightedColKeysProp),
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
142
|
+
highlightedColKeys = _useUncontrolledState[0],
|
|
143
|
+
trySetHighlightedColKeys = _useUncontrolledState[1];
|
|
155
144
|
var _useCheck = useCheck({
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
145
|
+
checkedIds: highlightedColKeys,
|
|
146
|
+
onCheck: trySetHighlightedColKeys,
|
|
147
|
+
idFieldName: 'dataKey'
|
|
148
|
+
}),
|
|
149
|
+
onHighlightedColChange = _useCheck[0],
|
|
150
|
+
isHighlightedCol = _useCheck[1];
|
|
162
151
|
/**
|
|
163
152
|
* 设置列 hover 时高亮,依据 column 中的 dataKey 控制
|
|
164
153
|
* 与 highlightedColKeys 互不影响
|
|
165
154
|
*/
|
|
166
|
-
|
|
167
|
-
|
|
168
155
|
var _useState = useState(''),
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
156
|
+
hoveredColKey = _useState[0],
|
|
157
|
+
setHoveredColKey = _useState[1];
|
|
172
158
|
var _useSelect = useSelect({
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
159
|
+
disabled: !showColHighlight,
|
|
160
|
+
selectedId: hoveredColKey,
|
|
161
|
+
onSelect: setHoveredColKey
|
|
162
|
+
}),
|
|
163
|
+
onHoveredColChange = _useSelect[0],
|
|
164
|
+
isHoveredHighlightCol = _useSelect[1];
|
|
165
|
+
// ************************ 列宽 resizable ************************ //
|
|
181
166
|
var _useColWidth = useColWidth({
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
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
|
+
// ************************ 列冻结 ************************ //
|
|
194
178
|
var bodyTableRef = useRef(null);
|
|
195
179
|
var scrollBodyElementRef = useRef(null);
|
|
196
180
|
/**
|
|
@@ -198,173 +182,155 @@ var useTable = function useTable(_a) {
|
|
|
198
182
|
*
|
|
199
183
|
* TODO: 支持 2 种模式:从左往右冻结到指定列、只抽离并冻结指定列
|
|
200
184
|
*/
|
|
201
|
-
|
|
202
185
|
var _useUncontrolledState2 = useUncontrolledState(defaultFixedToColumn, fixedToColumnProp, onFixedToColumn),
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
186
|
+
fixedToColumn = _useUncontrolledState2[0],
|
|
187
|
+
setFixedToColumn = _useUncontrolledState2[1];
|
|
206
188
|
var leftFreezeColumn = fixedToColumn.left;
|
|
207
189
|
var rightFreezeColumn = fixedToColumn.right;
|
|
208
190
|
var setLeftFreezeColumn = useCallback(function (columnKey) {
|
|
209
191
|
setFixedToColumn(function (prev) {
|
|
210
192
|
var next = Object.assign({}, prev);
|
|
211
193
|
next.left = columnKey;
|
|
212
|
-
|
|
213
194
|
if (next.right === columnKey) {
|
|
214
195
|
next.right = '';
|
|
215
196
|
}
|
|
216
|
-
|
|
217
197
|
return next;
|
|
218
198
|
});
|
|
219
199
|
}, [setFixedToColumn]);
|
|
220
|
-
|
|
221
200
|
var _React$useMemo = React__default.useMemo(function () {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
var leftFrozenColKey = leftFreezeColumn;
|
|
231
|
-
var rightFrozenKey = rightFreezeColumn; // 获取左右冻结列的下标
|
|
232
|
-
// 获取左右冻结列的下标
|
|
233
|
-
|
|
234
|
-
var leftFrozenColIndex;
|
|
235
|
-
var rightFrozenColIndex;
|
|
236
|
-
mergedColumns2.some(function (column, index) {
|
|
237
|
-
if (typeof leftFrozenColKey === 'string' && leftFrozenColKey === column.dataKey) {
|
|
238
|
-
leftFrozenColIndex = index;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
if (typeof rightFrozenKey === 'string' && rightFrozenKey === column.dataKey) {
|
|
242
|
-
rightFrozenColIndex = index;
|
|
201
|
+
if (!leftFreezeColumn && !rightFreezeColumn) {
|
|
202
|
+
return {
|
|
203
|
+
leftFrozenColKeys: [],
|
|
204
|
+
rightFrozenColKeys: [],
|
|
205
|
+
columns: mergedColumns2
|
|
206
|
+
};
|
|
243
207
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
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
|
+
});
|
|
260
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;
|
|
261
256
|
});
|
|
262
257
|
}
|
|
263
|
-
|
|
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
|
-
})).reverse();
|
|
325
|
-
rightColumns.forEach(function (currentItem, index) {
|
|
326
|
-
var item = parseFixedColumns(currentItem, index, nextColumns, rightColumns, 'rightStickyWidth');
|
|
327
|
-
rightColumns[index] = item;
|
|
328
|
-
nextColumns[item.index] = item;
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
var rightLeafNodes = getLeafNodes(rightColumns);
|
|
333
|
-
var rightColIndex = rightLeafNodes.length;
|
|
334
|
-
var rightFixedColumnsWidth = [].concat(colWidths).reverse().reduce(function (acc, width, index) {
|
|
335
|
-
return acc += index < rightColIndex ? width : 0;
|
|
336
|
-
}, 0);
|
|
337
|
-
return {
|
|
338
|
-
leftFrozenColKeys: leftColumns,
|
|
339
|
-
rightFrozenColKeys: rightColumns,
|
|
340
|
-
columns: nextColumns,
|
|
341
|
-
leftFixedColumnsWidth: leftFixedColumnsWidth,
|
|
342
|
-
rightFixedColumnsWidth: rightFixedColumnsWidth
|
|
343
|
-
};
|
|
344
|
-
}, [mergedColumns2, scrollWidth, colWidths, leftFreezeColumn, rightFreezeColumn]),
|
|
345
|
-
leftFrozenColKeys = _React$useMemo.leftFrozenColKeys,
|
|
346
|
-
rightFrozenColKeys = _React$useMemo.rightFrozenColKeys,
|
|
347
|
-
mergedColumns1 = _React$useMemo.columns,
|
|
348
|
-
leftFixedColumnsWidth = _React$useMemo.leftFixedColumnsWidth,
|
|
349
|
-
rightFixedColumnsWidth = _React$useMemo.rightFixedColumnsWidth;
|
|
350
|
-
|
|
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;
|
|
351
319
|
var _useState2 = useState({
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
320
|
+
scrollLeft: 0,
|
|
321
|
+
scrollRight: 1
|
|
322
|
+
}),
|
|
323
|
+
scrollSize = _useState2[0],
|
|
324
|
+
setScrollSize = _useState2[1];
|
|
358
325
|
useEffect(function () {
|
|
359
326
|
var _a, _b, _c, _d, _e, _f;
|
|
360
|
-
|
|
361
327
|
if (leftFrozenColKeys.length > 0 || rightFrozenColKeys.length > 0) {
|
|
362
328
|
// 计算冻结列的宽度
|
|
363
329
|
// mutationObserver
|
|
364
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;
|
|
365
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;
|
|
366
|
-
var scrollRight = tableWidth - tableBodyWidth;
|
|
367
|
-
|
|
332
|
+
var scrollRight = tableWidth - tableBodyWidth;
|
|
333
|
+
// const scrollLeft = 0
|
|
368
334
|
setScrollSize(function (prev) {
|
|
369
335
|
return {
|
|
370
336
|
scrollLeft: prev.scrollLeft,
|
|
@@ -372,31 +338,25 @@ var useTable = function useTable(_a) {
|
|
|
372
338
|
};
|
|
373
339
|
});
|
|
374
340
|
}
|
|
375
|
-
}, [leftFrozenColKeys, rightFrozenColKeys]);
|
|
341
|
+
}, [leftFrozenColKeys, rightFrozenColKeys]);
|
|
342
|
+
// const canScroll = scrollSize.scrollRight > 0
|
|
376
343
|
// 实时计算
|
|
377
|
-
|
|
378
344
|
var canScroll = bodyTableRef.current && scrollBodyElementRef.current ? scrollBodyElementRef.current.clientWidth < bodyTableRef.current.clientWidth : false;
|
|
379
345
|
/**
|
|
380
346
|
* 同步 双 table 左右滚动偏移
|
|
381
347
|
*/
|
|
382
|
-
|
|
383
348
|
var syncScrollLeft = React__default.useCallback(function (scrollLeft, syncTarget) {
|
|
384
349
|
var scrollRight = scrollSize.scrollRight;
|
|
385
|
-
|
|
386
350
|
if (syncTarget && syncTarget.scrollLeft !== scrollLeft) {
|
|
387
351
|
syncTarget.scrollLeft = scrollLeft;
|
|
388
352
|
}
|
|
389
|
-
|
|
390
353
|
if (bodyTableRef && bodyTableRef.current && scrollBodyElementRef && scrollBodyElementRef.current && isArrayNonEmpty(rightFrozenColKeys)) {
|
|
391
354
|
var _bodyTableRef$current = bodyTableRef.current.getBoundingClientRect(),
|
|
392
|
-
|
|
393
|
-
|
|
355
|
+
tableTefRight = _bodyTableRef$current.right;
|
|
394
356
|
var _scrollBodyElementRef = scrollBodyElementRef.current.getBoundingClientRect(),
|
|
395
|
-
|
|
396
|
-
|
|
357
|
+
right = _scrollBodyElementRef.right;
|
|
397
358
|
scrollRight = tableTefRight - right;
|
|
398
359
|
}
|
|
399
|
-
|
|
400
360
|
setScrollSize({
|
|
401
361
|
scrollLeft: scrollLeft,
|
|
402
362
|
scrollRight: scrollRight
|
|
@@ -405,41 +365,37 @@ var useTable = function useTable(_a) {
|
|
|
405
365
|
var scrollHeaderElementRef = useRef(null);
|
|
406
366
|
var onTableBodyScroll = React__default.useCallback(function (evt) {
|
|
407
367
|
evt.stopPropagation();
|
|
408
|
-
|
|
409
368
|
if (scrollBodyElementRef.current) {
|
|
410
369
|
syncScrollLeft(scrollBodyElementRef.current.scrollLeft, scrollHeaderElementRef.current);
|
|
411
370
|
}
|
|
412
|
-
}, [syncScrollLeft]);
|
|
371
|
+
}, [syncScrollLeft]);
|
|
372
|
+
// 1. 对于 sticky 的元素,触发滚轮滚动,需要模拟 onScroll 触发,比如 tableHeader 固定吸顶时
|
|
413
373
|
// 2. 同时不允许其出现滚动条
|
|
414
|
-
|
|
415
374
|
var onTableBodyScrollMock = React__default.useCallback(function (evt) {
|
|
416
375
|
if (!scrollHeaderElementRef.current) return;
|
|
417
376
|
evt.stopPropagation();
|
|
418
377
|
var deltaX = evt.deltaX;
|
|
419
378
|
scrollHeaderElementRef.current.scrollLeft = scrollHeaderElementRef.current.scrollLeft + deltaX;
|
|
420
379
|
syncScrollLeft(scrollHeaderElementRef.current.scrollLeft, scrollBodyElementRef.current);
|
|
421
|
-
}, [syncScrollLeft]);
|
|
422
|
-
|
|
380
|
+
}, [syncScrollLeft]);
|
|
381
|
+
// ************************ 行高亮 ************************ //
|
|
423
382
|
/**
|
|
424
383
|
* 控制行高亮,依据 data 中的 key 控制
|
|
425
384
|
*/
|
|
426
|
-
|
|
427
385
|
var _useUncontrolledState3 = useUncontrolledState(DEFAULT_HIGHLIGHTED_ROW_KEYS, highlightedRowKeysProp),
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
386
|
+
highlightedRowKeys = _useUncontrolledState3[0],
|
|
387
|
+
trySetHighlightedRowKeys = _useUncontrolledState3[1];
|
|
431
388
|
var _useCheck2 = useCheck({
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
389
|
+
disabled: !highlightRowOnDoubleClick,
|
|
390
|
+
checkedIds: highlightedRowKeys,
|
|
391
|
+
onCheck: trySetHighlightedRowKeys
|
|
392
|
+
}),
|
|
393
|
+
onHighlightedRowChange = _useCheck2[0],
|
|
394
|
+
isHighlightedRow = _useCheck2[1];
|
|
439
395
|
var isErrorRow = useCallback(function (key) {
|
|
440
396
|
return errorRowKeys.includes(key);
|
|
441
|
-
}, [errorRowKeys]);
|
|
442
|
-
|
|
397
|
+
}, [errorRowKeys]);
|
|
398
|
+
// 末级 column
|
|
443
399
|
var flattedColumnsWithoutChildren = React__default.useMemo(function () {
|
|
444
400
|
return mergedColumns1.filter(function (col) {
|
|
445
401
|
return !isArrayNonEmpty(col.children);
|
|
@@ -448,32 +404,28 @@ var useTable = function useTable(_a) {
|
|
|
448
404
|
var groupedColumns = React__default.useMemo(function () {
|
|
449
405
|
return mergedColumns1.reduce(function (acc, cur) {
|
|
450
406
|
var depth = cur.depth;
|
|
451
|
-
|
|
452
407
|
if (!acc[depth]) {
|
|
453
408
|
acc[depth] = [];
|
|
454
409
|
}
|
|
455
|
-
|
|
456
410
|
acc[depth].push(cur);
|
|
457
411
|
return acc;
|
|
458
412
|
}, []);
|
|
459
413
|
}, [mergedColumns1]);
|
|
460
414
|
var getStickyColProps = useLatestCallback(function (column) {
|
|
461
415
|
var rightStickyWidth = column.rightStickyWidth,
|
|
462
|
-
|
|
463
|
-
|
|
416
|
+
leftStickyWidth = column.leftStickyWidth,
|
|
417
|
+
align = column.align;
|
|
464
418
|
var sticky = canScroll && (typeof rightStickyWidth !== 'undefined' || typeof leftStickyWidth !== 'undefined');
|
|
465
419
|
var style = {
|
|
466
420
|
textAlign: align
|
|
467
421
|
};
|
|
468
|
-
|
|
469
422
|
if (sticky) {
|
|
470
423
|
style.position = 'sticky';
|
|
471
424
|
style.right = rightStickyWidth + 'px';
|
|
472
|
-
style.left = leftStickyWidth + 'px';
|
|
473
|
-
|
|
425
|
+
style.left = leftStickyWidth + 'px';
|
|
426
|
+
// the value is same with v3
|
|
474
427
|
style.zIndex = 5;
|
|
475
428
|
}
|
|
476
|
-
|
|
477
429
|
return {
|
|
478
430
|
style: style,
|
|
479
431
|
'data-sticky': setAttrStatus(sticky)
|
|
@@ -498,29 +450,23 @@ var useTable = function useTable(_a) {
|
|
|
498
450
|
return row.children && row.children.length || onLoadChildren && !row.isLeaf;
|
|
499
451
|
}) : false;
|
|
500
452
|
}, [data, onLoadChildren]);
|
|
501
|
-
|
|
502
453
|
var _useState3 = useState(null),
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
454
|
+
activeSorterColumn = _useState3[0],
|
|
455
|
+
setActiveSorterColumn = _useState3[1];
|
|
506
456
|
var _useState4 = useState(null),
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
457
|
+
activeSorterType = _useState4[0],
|
|
458
|
+
setActiveSorterType = _useState4[1];
|
|
459
|
+
//* *************** 根据排序列处理数据 ************** *//
|
|
511
460
|
var showData = useMemo(function () {
|
|
512
461
|
var _a;
|
|
513
|
-
|
|
514
462
|
var _data = [].concat(transitionData);
|
|
515
|
-
|
|
516
463
|
if (activeSorterColumn) {
|
|
517
464
|
var sorter = (_a = columns.filter(function (d) {
|
|
518
465
|
return d.dataKey === activeSorterColumn;
|
|
519
466
|
})[0]) === null || _a === void 0 ? void 0 : _a.sorter;
|
|
520
|
-
|
|
521
467
|
if (sorter) {
|
|
522
|
-
activeSorterType === 'ascend' ? _data.sort(sorter) : _data.sort(sorter).reverse();
|
|
523
|
-
|
|
468
|
+
activeSorterType === 'ascend' ? _data.sort(sorter) : _data.sort(sorter).reverse();
|
|
469
|
+
// 平铺的树形结构排序
|
|
524
470
|
if (_data.some(function (d) {
|
|
525
471
|
return d.depth !== 0;
|
|
526
472
|
})) {
|
|
@@ -528,7 +474,6 @@ var useTable = function useTable(_a) {
|
|
|
528
474
|
}
|
|
529
475
|
}
|
|
530
476
|
}
|
|
531
|
-
|
|
532
477
|
return _data;
|
|
533
478
|
}, [activeSorterColumn, activeSorterType, transitionData, columns]);
|
|
534
479
|
return Object.assign(Object.assign({
|
|
@@ -608,8 +553,8 @@ var useTable = function useTable(_a) {
|
|
|
608
553
|
footerRender: footerRender,
|
|
609
554
|
showColMenu: showColMenu,
|
|
610
555
|
onLoadChildren: onLoadChildren,
|
|
611
|
-
setHeaderTableElement: setHeaderTableElement
|
|
556
|
+
setHeaderTableElement: setHeaderTableElement,
|
|
557
|
+
scrollbar: scrollbar
|
|
612
558
|
});
|
|
613
559
|
};
|
|
614
|
-
|
|
615
560
|
export { useTable };
|