@kdcloudjs/table 1.2.0-canary.16 → 1.2.0-canary.16-hotfix
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/dist/@kdcloudjs/table.css +1 -1
- package/dist/@kdcloudjs/table.js +2047 -3489
- package/dist/@kdcloudjs/table.js.map +1 -1
- package/dist/@kdcloudjs/table.min.css +1 -1
- package/dist/@kdcloudjs/table.min.js +16 -16
- package/dist/@kdcloudjs/table.min.js.map +1 -1
- package/es/_utils/arrayUtil.js +0 -3
- package/es/_utils/devwarning.js +0 -1
- package/es/_utils/formatUtil.js +35 -96
- package/es/_utils/hooks.js +18 -42
- package/es/_utils/index.js +0 -2
- package/es/_utils/numberUtil.js +32 -55
- package/es/_utils/omit.js +0 -2
- package/es/_utils/type.js +0 -2
- package/es/_utils/usePopper.js +74 -137
- package/es/config-provider/compDefaultProps.js +0 -1
- package/es/config-provider/configProvider.js +2 -7
- package/es/config-provider/defaultConfig.js +0 -1
- package/es/index.js +0 -2
- package/es/locale/locale.js +5 -43
- package/es/table/base/calculations.js +22 -72
- package/es/table/base/colgroup.js +0 -1
- package/es/table/base/empty.js +4 -4
- package/es/table/base/header.js +14 -67
- package/es/table/base/helpers/SpanManager.js +3 -9
- package/es/table/base/helpers/TableDOMUtils.js +4 -27
- package/es/table/base/helpers/__test__/SpanManager.test.js +2 -2
- package/es/table/base/helpers/__test__/TableDOMUtils.test.js +0 -1
- package/es/table/base/helpers/getRichVisibleRectsStream.js +11 -44
- package/es/table/base/helpers/rowHeightManager.js +0 -28
- package/es/table/base/html-table.js +14 -35
- package/es/table/base/loading.js +6 -8
- package/es/table/base/renderTemplates.js +26 -44
- package/es/table/base/styles.js +0 -9
- package/es/table/base/table.js +95 -181
- package/es/table/base/utils.js +14 -54
- package/es/table/common-views.js +0 -7
- package/es/table/internals.js +0 -13
- package/es/table/pipeline/features/autoFill.js +11 -40
- package/es/table/pipeline/features/autoRowSpan.js +1 -14
- package/es/table/pipeline/features/colGroupExtendable.js +4 -19
- package/es/table/pipeline/features/columnDrag.d.ts +1 -0
- package/es/table/pipeline/features/columnDrag.js +236 -303
- package/es/table/pipeline/features/columnFilter.js +11 -48
- package/es/table/pipeline/features/columnHover.js +1 -7
- package/es/table/pipeline/features/columnRangeHover.js +1 -8
- package/es/table/pipeline/features/columnResizeWidth.js +51 -42
- package/es/table/pipeline/features/contextMenu.js +18 -89
- package/es/table/pipeline/features/filter/DefaultFilterContent.js +10 -25
- package/es/table/pipeline/features/filter/DefaultFilterIcon.js +1 -1
- package/es/table/pipeline/features/filter/Filter.js +25 -48
- package/es/table/pipeline/features/filter/FilterPanel.js +11 -25
- package/es/table/pipeline/features/filter/util.js +0 -4
- package/es/table/pipeline/features/footerDataSource.js +0 -3
- package/es/table/pipeline/features/mergeCellHover.js +0 -1
- package/es/table/pipeline/features/multiSelect.js +15 -57
- package/es/table/pipeline/features/rangeSelection.js +63 -142
- package/es/table/pipeline/features/rowDetail.js +2 -41
- package/es/table/pipeline/features/rowDrag.js +36 -71
- package/es/table/pipeline/features/rowGrouping.js +2 -35
- package/es/table/pipeline/features/singleSelect.js +0 -24
- package/es/table/pipeline/features/sort.js +31 -83
- package/es/table/pipeline/features/tips.js +0 -6
- package/es/table/pipeline/features/treeMode.js +9 -44
- package/es/table/pipeline/features/treeSelect.js +0 -26
- package/es/table/pipeline/features/utils/touchEventUtils.d.ts +15 -0
- package/es/table/pipeline/features/utils/touchEventUtils.js +65 -0
- package/es/table/pipeline/pipeline.js +11 -51
- package/es/table/pivot/cross-table/buildCrossTable.js +15 -64
- package/es/table/pivot/cross-table/cross-table.js +22 -28
- package/es/table/pivot/cross-tree-table/buildCrossTreeTable.js +14 -47
- package/es/table/pivot/cross-tree-table/cross-tree-table.js +28 -50
- package/es/table/pivot/pivot-utils/buildDrillTree.js +10 -23
- package/es/table/pivot/pivot-utils/builders.js +31 -71
- package/es/table/pivot/pivot-utils/convert-utils.js +13 -39
- package/es/table/pivot/pivot-utils/simpleEncode.js +0 -1
- package/es/table/transforms/autoRowSpan.js +1 -15
- package/es/table/transforms/autoWidth.js +10 -32
- package/es/table/transforms/buildTree.js +1 -2
- package/es/table/transforms/columnHover.js +9 -15
- package/es/table/transforms/columnRangeHover.js +12 -19
- package/es/table/transforms/columnResize.js +15 -37
- package/es/table/transforms/flatten.js +0 -3
- package/es/table/transforms/orderField.js +0 -3
- package/es/table/transforms/sort.js +36 -88
- package/es/table/transforms/tips.js +1 -6
- package/es/table/transforms/treeMode.js +30 -69
- package/es/table/transforms/visible.js +0 -2
- package/es/table/use/useResizeObserver.js +1 -4
- package/es/table/utils/applyTransforms.js +0 -1
- package/es/table/utils/buildTree.js +4 -19
- package/es/table/utils/collectNodes.js +1 -10
- package/es/table/utils/console.js +0 -14
- package/es/table/utils/copyToClipboard.js +0 -4
- package/es/table/utils/element.js +14 -41
- package/es/table/utils/exportTableAsExcel.js +4 -40
- package/es/table/utils/getTreeDepth.js +1 -9
- package/es/table/utils/groupBy.js +1 -10
- package/es/table/utils/layeredFilter.js +0 -4
- package/es/table/utils/layeredSort.js +0 -5
- package/es/table/utils/makeRecursiveMapper.js +1 -12
- package/es/table/utils/mergeCellProps.js +6 -13
- package/es/table/utils/others.js +3 -16
- package/es/table/utils/proto.js +2 -30
- package/es/table/utils/smartCompare.js +4 -12
- package/es/table/utils/traverseColumn.js +2 -15
- package/es/table/utils/tree-data-helpers/StrictTreeDataHelper.js +1 -22
- package/es/table/utils/tree-data-helpers/TreeDataHelper.js +15 -69
- package/lib/_utils/arrayUtil.js +0 -5
- package/lib/_utils/devwarning.js +0 -5
- package/lib/_utils/formatUtil.js +35 -100
- package/lib/_utils/hooks.js +18 -53
- package/lib/_utils/index.js +0 -6
- package/lib/_utils/numberUtil.js +32 -63
- package/lib/_utils/omit.js +0 -5
- package/lib/_utils/react-children.js +0 -5
- package/lib/_utils/type.js +0 -6
- package/lib/_utils/usePopper.js +74 -158
- package/lib/config-provider/ConfigContext.js +1 -4
- package/lib/config-provider/compDefaultProps.js +0 -1
- package/lib/config-provider/configProvider.js +3 -18
- package/lib/config-provider/defaultConfig.js +0 -5
- package/lib/config-provider/index.js +0 -6
- package/lib/index.js +2 -8
- package/lib/locale/index.js +0 -7
- package/lib/locale/locale.js +5 -57
- package/lib/table/base/calculations.js +22 -83
- package/lib/table/base/colgroup.js +0 -5
- package/lib/table/base/empty.js +4 -16
- package/lib/table/base/header.js +14 -77
- package/lib/table/base/helpers/SpanManager.js +3 -11
- package/lib/table/base/helpers/TableDOMUtils.js +2 -27
- package/lib/table/base/helpers/__test__/SpanManager.test.js +2 -4
- package/lib/table/base/helpers/__test__/TableDOMUtils.test.js +0 -5
- package/lib/table/base/helpers/__test__/rowHeightManager.test.js +0 -1
- package/lib/table/base/helpers/getRichVisibleRectsStream.js +11 -62
- package/lib/table/base/helpers/rowHeightManager.js +0 -33
- package/lib/table/base/html-table.js +14 -45
- package/lib/table/base/index.js +0 -2
- package/lib/table/base/loading.js +6 -12
- package/lib/table/base/renderTemplates.js +27 -58
- package/lib/table/base/styles.js +0 -21
- package/lib/table/base/table.js +95 -214
- package/lib/table/base/utils.js +14 -89
- package/lib/table/common-views.js +0 -16
- package/lib/table/index.js +0 -13
- package/lib/table/internals.js +0 -14
- package/lib/table/pipeline/features/autoFill.js +11 -47
- package/lib/table/pipeline/features/autoRowSpan.js +1 -19
- package/lib/table/pipeline/features/buildTree.js +0 -2
- package/lib/table/pipeline/features/colGroupExtendable.js +4 -32
- package/lib/table/pipeline/features/columnDrag.d.ts +1 -0
- package/lib/table/pipeline/features/columnDrag.js +236 -309
- package/lib/table/pipeline/features/columnFilter.js +11 -62
- package/lib/table/pipeline/features/columnHover.js +1 -11
- package/lib/table/pipeline/features/columnRangeHover.js +1 -13
- package/lib/table/pipeline/features/columnResizeWidth.js +51 -58
- package/lib/table/pipeline/features/contextMenu.js +18 -113
- package/lib/table/pipeline/features/filter/DefaultFilterContent.js +10 -43
- package/lib/table/pipeline/features/filter/DefaultFilterIcon.js +1 -4
- package/lib/table/pipeline/features/filter/Filter.js +25 -70
- package/lib/table/pipeline/features/filter/FilterPanel.js +11 -40
- package/lib/table/pipeline/features/filter/index.js +0 -5
- package/lib/table/pipeline/features/filter/util.js +0 -7
- package/lib/table/pipeline/features/footerDataSource.js +0 -10
- package/lib/table/pipeline/features/index.js +0 -23
- package/lib/table/pipeline/features/mergeCellHover.js +0 -5
- package/lib/table/pipeline/features/multiSelect.js +15 -71
- package/lib/table/pipeline/features/rangeSelection.js +63 -159
- package/lib/table/pipeline/features/rowDetail.js +2 -65
- package/lib/table/pipeline/features/rowDrag.js +36 -81
- package/lib/table/pipeline/features/rowGrouping.js +2 -55
- package/lib/table/pipeline/features/singleSelect.js +0 -34
- package/lib/table/pipeline/features/sort.js +31 -103
- package/lib/table/pipeline/features/tips.js +0 -15
- package/lib/table/pipeline/features/treeMode.js +9 -65
- package/lib/table/pipeline/features/treeSelect.js +0 -34
- package/lib/table/pipeline/features/utils/touchEventUtils.d.ts +15 -0
- package/lib/table/pipeline/features/utils/touchEventUtils.js +76 -0
- package/lib/table/pipeline/index.js +0 -8
- package/lib/table/pipeline/pipeline.js +11 -60
- package/lib/table/pivot/cross-table/buildCrossTable.js +15 -75
- package/lib/table/pivot/cross-table/cross-table.js +22 -36
- package/lib/table/pivot/cross-table/index.js +0 -4
- package/lib/table/pivot/cross-tree-table/buildCrossTreeTable.js +14 -60
- package/lib/table/pivot/cross-tree-table/cross-tree-table.js +28 -60
- package/lib/table/pivot/cross-tree-table/index.js +0 -3
- package/lib/table/pivot/pivot-utils/buildDrillTree.js +10 -29
- package/lib/table/pivot/pivot-utils/builders.js +31 -82
- package/lib/table/pivot/pivot-utils/convert-utils.js +13 -57
- package/lib/table/pivot/pivot-utils/index.js +0 -7
- package/lib/table/pivot/pivot-utils/simpleEncode.js +0 -2
- package/lib/table/style/css.js +0 -1
- package/lib/table/style/index.js +0 -1
- package/lib/table/transforms/autoRowSpan.js +1 -21
- package/lib/table/transforms/autoWidth.js +10 -53
- package/lib/table/transforms/buildTree.js +1 -4
- package/lib/table/transforms/columnHover.js +9 -22
- package/lib/table/transforms/columnRangeHover.js +12 -27
- package/lib/table/transforms/columnResize.js +15 -56
- package/lib/table/transforms/flatten.js +0 -5
- package/lib/table/transforms/index.js +0 -12
- package/lib/table/transforms/orderField.js +0 -7
- package/lib/table/transforms/sort.js +36 -112
- package/lib/table/transforms/tips.js +1 -16
- package/lib/table/transforms/treeMode.js +30 -96
- package/lib/table/transforms/visible.js +0 -7
- package/lib/table/transforms/warnTransformsDeprecated.js +0 -4
- package/lib/table/use/useResizeObserver.js +1 -8
- package/lib/table/utils/applyTransforms.js +0 -2
- package/lib/table/utils/buildTree.js +4 -30
- package/lib/table/utils/collectNodes.js +1 -15
- package/lib/table/utils/console.js +0 -16
- package/lib/table/utils/copyToClipboard.js +0 -6
- package/lib/table/utils/element.js +14 -46
- package/lib/table/utils/exportTableAsExcel.js +4 -49
- package/lib/table/utils/getTreeDepth.js +1 -14
- package/lib/table/utils/groupBy.js +1 -14
- package/lib/table/utils/index.js +0 -21
- package/lib/table/utils/isGroupColumn.js +0 -3
- package/lib/table/utils/isLeafNode.js +0 -1
- package/lib/table/utils/layeredFilter.js +0 -10
- package/lib/table/utils/layeredSort.js +0 -10
- package/lib/table/utils/makeRecursiveMapper.js +1 -21
- package/lib/table/utils/mergeCellProps.js +6 -17
- package/lib/table/utils/others.js +3 -31
- package/lib/table/utils/proto.js +2 -33
- package/lib/table/utils/selectColumn.js +0 -1
- package/lib/table/utils/smartCompare.js +4 -13
- package/lib/table/utils/traverseColumn.js +2 -22
- package/lib/table/utils/tree-data-helpers/StrictTreeDataHelper.js +1 -30
- package/lib/table/utils/tree-data-helpers/TreeDataHelper.js +15 -82
- package/package.json +2 -1
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _mapInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/map");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
@@ -11,75 +9,51 @@ exports.getCellRangeId = getCellRangeId;
|
|
|
11
9
|
exports.lastClickCellKey = void 0;
|
|
12
10
|
exports.rangeSelection = rangeSelection;
|
|
13
11
|
exports.rangeSelectionKey = void 0;
|
|
14
|
-
|
|
15
12
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
16
|
-
|
|
17
13
|
var _findIndex = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find-index"));
|
|
18
|
-
|
|
19
14
|
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
20
|
-
|
|
21
15
|
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
22
|
-
|
|
23
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
24
|
-
|
|
25
17
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/typeof"));
|
|
26
|
-
|
|
27
18
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
28
|
-
|
|
29
19
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
|
|
30
|
-
|
|
31
20
|
var _utils = require("../../utils");
|
|
32
|
-
|
|
33
21
|
var _others = require("../../utils/others");
|
|
34
|
-
|
|
35
22
|
var _rxjs = require("rxjs");
|
|
36
|
-
|
|
37
23
|
var _operators = require("rxjs/operators");
|
|
38
|
-
|
|
39
24
|
var _styles = require("../../base/styles");
|
|
40
|
-
|
|
41
25
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
42
|
-
|
|
43
26
|
var rangeSelectionKey = 'rangeSelection';
|
|
44
27
|
exports.rangeSelectionKey = rangeSelectionKey;
|
|
45
28
|
var lastClickCellKey = 'lastClickCell';
|
|
46
29
|
exports.lastClickCellKey = lastClickCellKey;
|
|
47
30
|
var startSelectedCellRangesKey = 'startSelectedCellRanges';
|
|
48
31
|
var SCROLL_OFFSET = 30;
|
|
49
|
-
|
|
50
32
|
function rangeSelection(opts) {
|
|
51
33
|
return function step(pipeline) {
|
|
52
34
|
var tableBody = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.tableBody;
|
|
53
35
|
var tableFooter = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.tableFooter;
|
|
54
36
|
var artTable = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.artTable;
|
|
55
|
-
|
|
56
37
|
if (!tableBody) {
|
|
57
38
|
return pipeline;
|
|
58
39
|
}
|
|
59
|
-
|
|
60
40
|
var columns = pipeline.getColumns();
|
|
61
41
|
var dataSource = pipeline.getDataSource();
|
|
62
|
-
|
|
63
42
|
var rangeSelectedChange = function rangeSelectedChange(rangeSelection, isFinished) {
|
|
64
43
|
var _a;
|
|
65
|
-
|
|
66
44
|
if (isFinished) {
|
|
67
45
|
pipeline.setFeatureOptions(startSelectedCellRangesKey, rangeSelection);
|
|
68
46
|
}
|
|
69
|
-
|
|
70
47
|
pipeline.setStateAtKey(rangeSelectionKey, rangeSelection);
|
|
71
48
|
(_a = opts === null || opts === void 0 ? void 0 : opts.rangeSelectedChange) === null || _a === void 0 ? void 0 : _a.call(opts, rangeSelection, isFinished);
|
|
72
49
|
};
|
|
73
|
-
|
|
74
50
|
var setRangeSelection = function setRangeSelection(startDragCell, draggingCell, isFinished) {
|
|
75
51
|
if (!startDragCell || !draggingCell) return;
|
|
76
52
|
var rangeColumns = getRangeColumns(startDragCell, draggingCell, columns);
|
|
77
|
-
|
|
78
53
|
var _getRangeSelectionRow = getRangeSelectionRowInfo(startDragCell, draggingCell, dataSource),
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
54
|
+
startRow = _getRangeSelectionRow.startRow,
|
|
55
|
+
endRow = _getRangeSelectionRow.endRow,
|
|
56
|
+
footerRowRange = _getRangeSelectionRow.footerRowRange;
|
|
83
57
|
var cellRange = {
|
|
84
58
|
startRow: startRow,
|
|
85
59
|
endRow: endRow,
|
|
@@ -88,32 +62,25 @@ function rangeSelection(opts) {
|
|
|
88
62
|
footerRowRange: footerRowRange
|
|
89
63
|
};
|
|
90
64
|
var cellRanges = pipeline.getFeatureOptions(startSelectedCellRangesKey) ? (0, _toConsumableArray2.default)(pipeline.getFeatureOptions(startSelectedCellRangesKey)) : [];
|
|
91
|
-
|
|
92
65
|
if (isCellRangeSingleCell([cellRange])) {
|
|
93
66
|
var singleCellRangeId = getCellRangeId(cellRange);
|
|
94
67
|
cellRanges = (0, _filter.default)(cellRanges).call(cellRanges, function (item) {
|
|
95
68
|
return getCellRangeId(item) !== singleCellRangeId;
|
|
96
69
|
});
|
|
97
70
|
}
|
|
98
|
-
|
|
99
71
|
cellRanges.push(cellRange);
|
|
100
|
-
|
|
101
72
|
if (isCellRangeSingleCell(cellRanges)) {
|
|
102
73
|
artTable.classList.remove((0, _classnames.default)(_styles.Classes.rangeSelection));
|
|
103
74
|
} else {
|
|
104
75
|
artTable.classList.add((0, _classnames.default)(_styles.Classes.rangeSelection));
|
|
105
76
|
}
|
|
106
|
-
|
|
107
77
|
rangeSelectedChange(cellRanges, isFinished);
|
|
108
78
|
};
|
|
109
|
-
|
|
110
79
|
var shiftKeySelect = function shiftKeySelect(event) {
|
|
111
80
|
var target = event.target;
|
|
112
81
|
var clickCell = getTargetCell(target, columns);
|
|
113
|
-
|
|
114
82
|
if (clickCell) {
|
|
115
83
|
var _lastClickCell = pipeline.getFeatureOptions(lastClickCellKey);
|
|
116
|
-
|
|
117
84
|
if (_lastClickCell) {
|
|
118
85
|
setRangeSelection(_lastClickCell, clickCell, true);
|
|
119
86
|
} else {
|
|
@@ -122,71 +89,58 @@ function rangeSelection(opts) {
|
|
|
122
89
|
}
|
|
123
90
|
}
|
|
124
91
|
};
|
|
125
|
-
|
|
126
92
|
var updateScrollPosition = function updateScrollPosition(client) {
|
|
127
93
|
var clientX = client.clientX,
|
|
128
|
-
|
|
94
|
+
clientY = client.clientY;
|
|
129
95
|
var tableBodyClientRect = tableBody.getBoundingClientRect();
|
|
130
96
|
var left = tableBodyClientRect.left,
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
97
|
+
top = tableBodyClientRect.top,
|
|
98
|
+
height = tableBodyClientRect.height,
|
|
99
|
+
width = tableBodyClientRect.width;
|
|
135
100
|
if (clientX + SCROLL_OFFSET >= left + width) {
|
|
136
101
|
pipeline.ref.current.domHelper.virtual.scrollLeft += SCROLL_OFFSET;
|
|
137
102
|
}
|
|
138
|
-
|
|
139
103
|
if (clientX - SCROLL_OFFSET <= left) {
|
|
140
104
|
pipeline.ref.current.domHelper.virtual.scrollLeft -= SCROLL_OFFSET;
|
|
141
105
|
}
|
|
142
|
-
|
|
143
106
|
if (clientY + SCROLL_OFFSET >= top + height) {
|
|
144
107
|
pipeline.ref.current.domHelper.tableBody.scrollTop += SCROLL_OFFSET;
|
|
145
108
|
}
|
|
146
|
-
|
|
147
109
|
if (clientY + SCROLL_OFFSET <= top) {
|
|
148
110
|
pipeline.ref.current.domHelper.tableBody.scrollTop -= SCROLL_OFFSET;
|
|
149
111
|
}
|
|
150
112
|
};
|
|
151
|
-
|
|
152
113
|
var setStartSelectedCellRanges = function setStartSelectedCellRanges(isCtrlKey, isShiftKey) {
|
|
153
114
|
if (opts === null || opts === void 0 ? void 0 : opts.suppressMultiRangeSelection) {
|
|
154
115
|
pipeline.setFeatureOptions(startSelectedCellRangesKey, []);
|
|
155
116
|
return;
|
|
156
|
-
}
|
|
117
|
+
}
|
|
118
|
+
// ctrl 和shift 同时按时,优先生效shift
|
|
157
119
|
// 没有点击ctrl 或者shift时,每次点击开始时都清空选中范围
|
|
158
|
-
|
|
159
|
-
|
|
160
120
|
if (!isCtrlKey && !isShiftKey) {
|
|
161
121
|
pipeline.setFeatureOptions(startSelectedCellRangesKey, []);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
|
|
122
|
+
}
|
|
123
|
+
// shift 点击框选,要保留之前的选中结果。最新的框选范围覆盖最后一次的框选范围
|
|
165
124
|
if (isShiftKey) {
|
|
166
125
|
var _startDragCellRanges = pipeline.getFeatureOptions(startSelectedCellRangesKey) ? (0, _toConsumableArray2.default)(pipeline.getFeatureOptions(startSelectedCellRangesKey)) : [];
|
|
167
|
-
|
|
168
126
|
_startDragCellRanges.pop();
|
|
169
|
-
|
|
170
127
|
pipeline.setFeatureOptions(startSelectedCellRangesKey, _startDragCellRanges);
|
|
171
128
|
}
|
|
172
129
|
};
|
|
173
|
-
|
|
174
130
|
var onMouseDown = function onMouseDown(mouseDownEvent) {
|
|
175
|
-
if (mouseDownEvent.button !== 0 || !((0, _utils.isElementInEventPath)(tableBody, mouseDownEvent.nativeEvent) || (0, _utils.isElementInEventPath)(tableFooter, mouseDownEvent.nativeEvent))) return;
|
|
176
|
-
|
|
131
|
+
if (mouseDownEvent.button !== 0 || !((0, _utils.isElementInEventPath)(tableBody, mouseDownEvent.nativeEvent) || (0, _utils.isElementInEventPath)(tableFooter, mouseDownEvent.nativeEvent))) return;
|
|
132
|
+
// mouseDownEvent.preventDefault()
|
|
177
133
|
var isCtrlKey = mouseDownEvent.ctrlKey || mouseDownEvent.metaKey;
|
|
178
134
|
var isShiftKey = mouseDownEvent.shiftKey;
|
|
179
135
|
var target = mouseDownEvent.target;
|
|
180
136
|
var startDragCell = getTargetCell(target, columns);
|
|
181
|
-
if (!startDragCell) return;
|
|
182
|
-
|
|
137
|
+
if (!startDragCell) return;
|
|
138
|
+
// 每次点击时先确认初始生效的框选范围
|
|
183
139
|
setStartSelectedCellRanges(isCtrlKey, isShiftKey);
|
|
184
|
-
|
|
185
140
|
if (isShiftKey) {
|
|
186
141
|
shiftKeySelect(mouseDownEvent);
|
|
187
142
|
return;
|
|
188
143
|
}
|
|
189
|
-
|
|
190
144
|
pipeline.setFeatureOptions(lastClickCellKey, startDragCell);
|
|
191
145
|
var draggingCell = startDragCell;
|
|
192
146
|
var mousemove$ = (0, _rxjs.fromEvent)(window, 'mousemove');
|
|
@@ -198,11 +152,9 @@ function rangeSelection(opts) {
|
|
|
198
152
|
clientX: mouseMoveEvent.clientX,
|
|
199
153
|
clientY: mouseMoveEvent.clientY
|
|
200
154
|
};
|
|
201
|
-
|
|
202
155
|
if (!(draggingCell === null || draggingCell === void 0 ? void 0 : draggingCell.isFooterCell)) {
|
|
203
156
|
updateScrollPosition(client);
|
|
204
157
|
}
|
|
205
|
-
|
|
206
158
|
return {
|
|
207
159
|
startDragCell: startDragCell,
|
|
208
160
|
draggingCell: draggingCell
|
|
@@ -211,7 +163,7 @@ function rangeSelection(opts) {
|
|
|
211
163
|
rangeSelected$.subscribe({
|
|
212
164
|
next: function next(_ref) {
|
|
213
165
|
var startDragCell = _ref.startDragCell,
|
|
214
|
-
|
|
166
|
+
draggingCell = _ref.draggingCell;
|
|
215
167
|
setRangeSelection(startDragCell, draggingCell, false);
|
|
216
168
|
},
|
|
217
169
|
complete: function complete() {
|
|
@@ -219,14 +171,12 @@ function rangeSelection(opts) {
|
|
|
219
171
|
}
|
|
220
172
|
});
|
|
221
173
|
};
|
|
222
|
-
|
|
223
174
|
var onKeyDown = function onKeyDown(e) {
|
|
224
175
|
if (!((0, _utils.isElementInEventPath)(tableBody, e.nativeEvent) || (0, _utils.isElementInEventPath)(tableFooter, e.nativeEvent))) return;
|
|
225
|
-
|
|
226
176
|
if ((e.ctrlKey || e.metaKey) && e.key === 'a') {
|
|
227
177
|
var rowLen = pipeline.getDataSource().length;
|
|
228
|
-
var footerDataSource = pipeline.getFooterDataSource() || [];
|
|
229
|
-
|
|
178
|
+
var footerDataSource = pipeline.getFooterDataSource() || [];
|
|
179
|
+
// 焦点位于可编辑的单元格内不做全选
|
|
230
180
|
if (columns.length && rowLen && !getElementEditable(e.target)) {
|
|
231
181
|
opts.preventkDefaultOfKeyDownEvent !== false && e.preventDefault();
|
|
232
182
|
artTable.classList.add((0, _classnames.default)(_styles.Classes.rangeSelection));
|
|
@@ -243,14 +193,12 @@ function rangeSelection(opts) {
|
|
|
243
193
|
}
|
|
244
194
|
}
|
|
245
195
|
};
|
|
246
|
-
|
|
247
196
|
pipeline.addTableProps({
|
|
248
197
|
onMouseDown: onMouseDown,
|
|
249
198
|
onKeyDown: onKeyDown,
|
|
250
199
|
tabIndex: -1,
|
|
251
200
|
className: (0, _classnames.default)([_styles.Classes.rangeSelection])
|
|
252
201
|
}); // todo: 后面可以把mousedown放到一个流里面
|
|
253
|
-
|
|
254
202
|
return pipeline.mapColumns((0, _utils.makeRecursiveMapper)(function (col) {
|
|
255
203
|
var cellRanges = pipeline.getStateAtKey(rangeSelectionKey) || [];
|
|
256
204
|
var prevGetCellProps = col.getCellProps;
|
|
@@ -275,7 +223,6 @@ function rangeSelection(opts) {
|
|
|
275
223
|
}));
|
|
276
224
|
};
|
|
277
225
|
}
|
|
278
|
-
|
|
279
226
|
function getTargetCell(target, columns) {
|
|
280
227
|
while (target) {
|
|
281
228
|
if (target.getAttribute('data-role') === 'table-cell') {
|
|
@@ -297,32 +244,24 @@ function getTargetCell(target, columns) {
|
|
|
297
244
|
}
|
|
298
245
|
};
|
|
299
246
|
}();
|
|
300
|
-
|
|
301
247
|
if ((0, _typeof2.default)(_ret) === "object") return _ret.v;
|
|
302
248
|
}
|
|
303
|
-
|
|
304
249
|
target = target.parentElement;
|
|
305
250
|
}
|
|
306
|
-
|
|
307
251
|
return null;
|
|
308
252
|
}
|
|
309
|
-
|
|
310
253
|
function isSameCell(cell1, cell2) {
|
|
311
254
|
return cell1.rowIndex === cell2.rowIndex && cell1.code === cell2.code && cell1.isFooterCell === cell2.isFooterCell;
|
|
312
255
|
}
|
|
313
|
-
|
|
314
256
|
function isEleInFooter(target) {
|
|
315
257
|
while (target && !target.classList.contains(_styles.Classes.artTable)) {
|
|
316
258
|
if (target.classList.contains(_styles.Classes.tableFooter)) {
|
|
317
259
|
return true;
|
|
318
260
|
}
|
|
319
|
-
|
|
320
261
|
target = target.parentElement;
|
|
321
262
|
}
|
|
322
|
-
|
|
323
263
|
return false;
|
|
324
264
|
}
|
|
325
|
-
|
|
326
265
|
function getRangeColumns(startCell, endCell, columns) {
|
|
327
266
|
var flatColumns = (0, _utils.collectNodes)(columns, 'leaf-only');
|
|
328
267
|
var startIndex = (0, _findIndex.default)(flatColumns).call(flatColumns, function (col) {
|
|
@@ -331,24 +270,20 @@ function getRangeColumns(startCell, endCell, columns) {
|
|
|
331
270
|
var endIndex = (0, _findIndex.default)(flatColumns).call(flatColumns, function (col) {
|
|
332
271
|
return col.code === endCell.code;
|
|
333
272
|
});
|
|
334
|
-
|
|
335
273
|
if (startIndex < endIndex) {
|
|
336
274
|
return (0, _slice.default)(flatColumns).call(flatColumns, startIndex, endIndex + 1);
|
|
337
275
|
} else {
|
|
338
276
|
return (0, _slice.default)(flatColumns).call(flatColumns, endIndex, startIndex + 1);
|
|
339
277
|
}
|
|
340
278
|
}
|
|
341
|
-
|
|
342
279
|
function getRangeSelectionRowInfo(startCell, endCell, dataSource) {
|
|
343
280
|
var footerRowRange = null;
|
|
344
281
|
var startRow = -1;
|
|
345
282
|
var endRow = -1;
|
|
346
|
-
|
|
347
283
|
var _getCellRangeRow = getCellRangeRow(startCell, endCell),
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
284
|
+
_startRow = _getCellRangeRow.startRow,
|
|
285
|
+
_endRow = _getCellRangeRow.endRow;
|
|
286
|
+
// 两个单元格都在表体
|
|
352
287
|
if (!startCell.isFooterCell && !endCell.isFooterCell) {
|
|
353
288
|
startRow = _startRow;
|
|
354
289
|
endRow = _endRow;
|
|
@@ -376,7 +311,6 @@ function getRangeSelectionRowInfo(startCell, endCell, dataSource) {
|
|
|
376
311
|
};
|
|
377
312
|
}
|
|
378
313
|
}
|
|
379
|
-
|
|
380
314
|
return {
|
|
381
315
|
startRow: startRow,
|
|
382
316
|
endRow: endRow,
|
|
@@ -389,8 +323,6 @@ function getRangeSelectionRowInfo(startCell, endCell, dataSource) {
|
|
|
389
323
|
* @param endCell 结束单元格
|
|
390
324
|
* @returns
|
|
391
325
|
*/
|
|
392
|
-
|
|
393
|
-
|
|
394
326
|
function getCellRangeRow(startCell, endCell) {
|
|
395
327
|
if (isSameCell(startCell, endCell)) {
|
|
396
328
|
return {
|
|
@@ -398,7 +330,6 @@ function getCellRangeRow(startCell, endCell) {
|
|
|
398
330
|
endRow: startCell.rowIndex
|
|
399
331
|
};
|
|
400
332
|
}
|
|
401
|
-
|
|
402
333
|
var isTopToBottom = startCell.rowIndex <= endCell.rowIndex;
|
|
403
334
|
var startRow = isTopToBottom ? startCell.rowIndex : startCell.rowIndex + startCell.rowSpan - 1;
|
|
404
335
|
var endRow = isTopToBottom ? endCell.rowIndex + endCell.rowSpan - 1 : endCell.rowIndex;
|
|
@@ -412,20 +343,17 @@ function getCellRangeRow(startCell, endCell) {
|
|
|
412
343
|
* @param cellRanges
|
|
413
344
|
* @returns
|
|
414
345
|
*/
|
|
415
|
-
|
|
416
|
-
|
|
417
346
|
function isCellRangeSingleCell(cellRanges) {
|
|
418
347
|
if (cellRanges.length !== 1) return false;
|
|
419
348
|
var _cellRanges$ = cellRanges[0],
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
349
|
+
startRow = _cellRanges$.startRow,
|
|
350
|
+
endRow = _cellRanges$.endRow,
|
|
351
|
+
columns = _cellRanges$.columns,
|
|
352
|
+
footerRowRange = _cellRanges$.footerRowRange;
|
|
424
353
|
var isBodySingleCell = !footerRowRange && startRow === endRow && columns.length === 1;
|
|
425
354
|
var isFooterSingleCell = startRow === -1 && footerRowRange.startRow === footerRowRange.endRow && columns.length === 1;
|
|
426
355
|
return isBodySingleCell || isFooterSingleCell;
|
|
427
356
|
}
|
|
428
|
-
|
|
429
357
|
function getRowIndex(startRow, endRow) {
|
|
430
358
|
var isReverse = startRow > endRow;
|
|
431
359
|
var startRowIndex = isReverse ? endRow : startRow;
|
|
@@ -435,23 +363,18 @@ function getRowIndex(startRow, endRow) {
|
|
|
435
363
|
endRowIndex: endRowIndex
|
|
436
364
|
};
|
|
437
365
|
}
|
|
438
|
-
|
|
439
366
|
function getFooterRowIndex(footerRowRange) {
|
|
440
367
|
if (footerRowRange) {
|
|
441
368
|
return getRowIndex(footerRowRange.startRow, footerRowRange.endRow);
|
|
442
369
|
}
|
|
443
|
-
|
|
444
370
|
return {
|
|
445
371
|
startRowIndex: -1,
|
|
446
372
|
endRowIndex: -1
|
|
447
373
|
};
|
|
448
374
|
}
|
|
449
|
-
|
|
450
375
|
function getElementEditable(target) {
|
|
451
376
|
var _context;
|
|
452
|
-
|
|
453
377
|
if (!target) return;
|
|
454
|
-
|
|
455
378
|
if ((0, _includes.default)(_context = ['input', 'textarea']).call(_context, target.tagName.toLowerCase())) {
|
|
456
379
|
if (target.type === 'checkbox') return;
|
|
457
380
|
return !target.disabled && !target.readOnly;
|
|
@@ -465,26 +388,21 @@ function getElementEditable(target) {
|
|
|
465
388
|
* @param isFooterCell
|
|
466
389
|
* @returns
|
|
467
390
|
*/
|
|
468
|
-
|
|
469
|
-
|
|
470
391
|
function isCellInRange(cellRange, rowIndex, col, isFooterCell) {
|
|
471
392
|
var startRow = cellRange.startRow,
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
393
|
+
endRow = cellRange.endRow,
|
|
394
|
+
columns = cellRange.columns,
|
|
395
|
+
footerRowRange = cellRange.footerRowRange;
|
|
475
396
|
var isColInRanges = (0, _findIndex.default)(columns).call(columns, function (item) {
|
|
476
397
|
return item.code === col.code;
|
|
477
398
|
}) !== -1;
|
|
478
399
|
if (!isColInRanges) return false;
|
|
479
|
-
|
|
480
400
|
var _getRowIndex = getRowIndex(startRow, endRow),
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
401
|
+
startRowIndex = _getRowIndex.startRowIndex,
|
|
402
|
+
endRowIndex = _getRowIndex.endRowIndex;
|
|
484
403
|
var _getFooterRowIndex = getFooterRowIndex(footerRowRange),
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
404
|
+
footerStartRowIndex = _getFooterRowIndex.startRowIndex,
|
|
405
|
+
footerEndRowIndex = _getFooterRowIndex.endRowIndex;
|
|
488
406
|
var bodyMatch = !isFooterCell && rowIndex >= startRowIndex && rowIndex <= endRowIndex;
|
|
489
407
|
var footerMatch = isFooterCell && footerRowRange && rowIndex >= footerStartRowIndex && rowIndex <= footerEndRowIndex;
|
|
490
408
|
var isRowInRange = footerMatch || bodyMatch;
|
|
@@ -495,22 +413,17 @@ function isCellInRange(cellRange, rowIndex, col, isFooterCell) {
|
|
|
495
413
|
* @param {*} cellRange
|
|
496
414
|
* @returns
|
|
497
415
|
*/
|
|
498
|
-
|
|
499
|
-
|
|
500
416
|
function getCellRangeId(cellRange) {
|
|
501
417
|
var startRow = cellRange.startRow,
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
418
|
+
endRow = cellRange.endRow,
|
|
419
|
+
footerRowRange = cellRange.footerRowRange,
|
|
420
|
+
columns = cellRange.columns;
|
|
506
421
|
var _getRowIndex2 = getRowIndex(startRow, endRow),
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
422
|
+
startRowIndex = _getRowIndex2.startRowIndex,
|
|
423
|
+
endRowIndex = _getRowIndex2.endRowIndex;
|
|
510
424
|
var _getFooterRowIndex2 = getFooterRowIndex(footerRowRange),
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
425
|
+
footerStartRowIndex = _getFooterRowIndex2.startRowIndex,
|
|
426
|
+
footerEndRowIndex = _getFooterRowIndex2.endRowIndex;
|
|
514
427
|
var firstColId = columns[0].code;
|
|
515
428
|
var endColId = columns[columns.length - 1].code;
|
|
516
429
|
return startRowIndex + '_' + endRowIndex + '_' + footerStartRowIndex + '_' + footerEndRowIndex + '_' + firstColId + '_' + endColId;
|
|
@@ -521,59 +434,50 @@ function getCellRangeId(cellRange) {
|
|
|
521
434
|
* @param param1
|
|
522
435
|
* @returns
|
|
523
436
|
*/
|
|
524
|
-
|
|
525
|
-
|
|
526
437
|
function getCellRangesClassName(cellRanges, _ref2) {
|
|
527
438
|
var _cx;
|
|
528
|
-
|
|
529
439
|
var isFooterCell = _ref2.isFooterCell,
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
440
|
+
rowIndex = _ref2.rowIndex,
|
|
441
|
+
col = _ref2.col,
|
|
442
|
+
record = _ref2.record;
|
|
534
443
|
var _getMatchBorderStyle = getMatchBorderStyle(cellRanges, {
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
444
|
+
isFooterCell: isFooterCell,
|
|
445
|
+
rowIndex: rowIndex,
|
|
446
|
+
col: col,
|
|
447
|
+
record: record
|
|
448
|
+
}),
|
|
449
|
+
matchCellRangeTop = _getMatchBorderStyle.matchCellRangeTop,
|
|
450
|
+
matchCellRangeLeft = _getMatchBorderStyle.matchCellRangeLeft,
|
|
451
|
+
matchCellRangeBottom = _getMatchBorderStyle.matchCellRangeBottom,
|
|
452
|
+
matchCellRangeRight = _getMatchBorderStyle.matchCellRangeRight;
|
|
545
453
|
var isSingleCell = isCellRangeSingleCell(cellRanges);
|
|
546
454
|
var className = (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, _styles.Classes.tableCellRangeSingleCell, isSingleCell), (0, _defineProperty2.default)(_cx, _styles.Classes.tableCellRangeSelected, !isSingleCell), (0, _defineProperty2.default)(_cx, _styles.Classes.tableCellRangeTop, !isSingleCell && matchCellRangeTop), (0, _defineProperty2.default)(_cx, _styles.Classes.tableCellRangeLeft, !isSingleCell && matchCellRangeLeft), (0, _defineProperty2.default)(_cx, _styles.Classes.tableCellRangeBottom, !isSingleCell && matchCellRangeBottom), (0, _defineProperty2.default)(_cx, _styles.Classes.tableCellRangeRight, !isSingleCell && matchCellRangeRight), _cx));
|
|
547
455
|
return className;
|
|
548
456
|
}
|
|
549
|
-
|
|
550
457
|
function getMatchBorderStyle(cellRanges, _ref3) {
|
|
551
458
|
var isFooterCell = _ref3.isFooterCell,
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
459
|
+
rowIndex = _ref3.rowIndex,
|
|
460
|
+
col = _ref3.col,
|
|
461
|
+
record = _ref3.record;
|
|
555
462
|
return cellRanges.reduce(function (obj, cellRange) {
|
|
556
463
|
if (!isCellInRange(cellRange, rowIndex, col, isFooterCell)) return obj;
|
|
557
464
|
var startRow = cellRange.startRow,
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
465
|
+
endRow = cellRange.endRow,
|
|
466
|
+
columns = cellRange.columns,
|
|
467
|
+
footerRowRange = cellRange.footerRowRange;
|
|
562
468
|
var _getRowIndex3 = getRowIndex(startRow, endRow),
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
469
|
+
startRowIndex = _getRowIndex3.startRowIndex,
|
|
470
|
+
endRowIndex = _getRowIndex3.endRowIndex;
|
|
566
471
|
var _getFooterRowIndex3 = getFooterRowIndex(footerRowRange),
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
472
|
+
footerStartRowIndex = _getFooterRowIndex3.startRowIndex,
|
|
473
|
+
footerEndRowIndex = _getFooterRowIndex3.endRowIndex;
|
|
570
474
|
var startCol = columns[0];
|
|
571
475
|
var endCol = columns[columns.length - 1];
|
|
572
476
|
var matchCellRangeTop = isFooterCell ? startRowIndex !== -1 ? false : rowIndex === footerStartRowIndex : rowIndex === startRowIndex;
|
|
573
477
|
var matchCellRangeLeft = col.code === startCol.code;
|
|
574
478
|
var matchCellRangeBottom = isFooterCell ? rowIndex === footerEndRowIndex : footerRowRange ? false : rowIndex === endRowIndex;
|
|
575
|
-
var matchCellRangeRight = col.code === endCol.code;
|
|
576
|
-
|
|
479
|
+
var matchCellRangeRight = col.code === endCol.code;
|
|
480
|
+
// 如果样式已经匹配上了,就不需要再取计算的样式
|
|
577
481
|
obj.matchCellRangeTop = obj.matchCellRangeTop || matchCellRangeTop;
|
|
578
482
|
obj.matchCellRangeLeft = obj.matchCellRangeLeft || matchCellRangeLeft;
|
|
579
483
|
obj.matchCellRangeBottom = obj.matchCellRangeBottom || matchCellRangeBottom;
|