@kdcloudjs/table 1.2.0-canary.15 → 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 +2051 -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 +1 -10
- package/es/table/base/table.js +96 -179
- 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 +65 -143
- 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 +1 -22
- package/lib/table/base/table.js +96 -212
- 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 +65 -160
- 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,70 +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
|
-
var target = mouseDownEvent.target;
|
|
180
|
-
|
|
135
|
+
var target = mouseDownEvent.target;
|
|
136
|
+
var startDragCell = getTargetCell(target, columns);
|
|
137
|
+
if (!startDragCell) return;
|
|
138
|
+
// 每次点击时先确认初始生效的框选范围
|
|
181
139
|
setStartSelectedCellRanges(isCtrlKey, isShiftKey);
|
|
182
|
-
|
|
183
140
|
if (isShiftKey) {
|
|
184
141
|
shiftKeySelect(mouseDownEvent);
|
|
185
142
|
return;
|
|
186
143
|
}
|
|
187
|
-
|
|
188
|
-
var startDragCell = getTargetCell(target, columns);
|
|
189
144
|
pipeline.setFeatureOptions(lastClickCellKey, startDragCell);
|
|
190
145
|
var draggingCell = startDragCell;
|
|
191
146
|
var mousemove$ = (0, _rxjs.fromEvent)(window, 'mousemove');
|
|
@@ -197,11 +152,9 @@ function rangeSelection(opts) {
|
|
|
197
152
|
clientX: mouseMoveEvent.clientX,
|
|
198
153
|
clientY: mouseMoveEvent.clientY
|
|
199
154
|
};
|
|
200
|
-
|
|
201
155
|
if (!(draggingCell === null || draggingCell === void 0 ? void 0 : draggingCell.isFooterCell)) {
|
|
202
156
|
updateScrollPosition(client);
|
|
203
157
|
}
|
|
204
|
-
|
|
205
158
|
return {
|
|
206
159
|
startDragCell: startDragCell,
|
|
207
160
|
draggingCell: draggingCell
|
|
@@ -210,7 +163,7 @@ function rangeSelection(opts) {
|
|
|
210
163
|
rangeSelected$.subscribe({
|
|
211
164
|
next: function next(_ref) {
|
|
212
165
|
var startDragCell = _ref.startDragCell,
|
|
213
|
-
|
|
166
|
+
draggingCell = _ref.draggingCell;
|
|
214
167
|
setRangeSelection(startDragCell, draggingCell, false);
|
|
215
168
|
},
|
|
216
169
|
complete: function complete() {
|
|
@@ -218,14 +171,12 @@ function rangeSelection(opts) {
|
|
|
218
171
|
}
|
|
219
172
|
});
|
|
220
173
|
};
|
|
221
|
-
|
|
222
174
|
var onKeyDown = function onKeyDown(e) {
|
|
223
175
|
if (!((0, _utils.isElementInEventPath)(tableBody, e.nativeEvent) || (0, _utils.isElementInEventPath)(tableFooter, e.nativeEvent))) return;
|
|
224
|
-
|
|
225
176
|
if ((e.ctrlKey || e.metaKey) && e.key === 'a') {
|
|
226
177
|
var rowLen = pipeline.getDataSource().length;
|
|
227
|
-
var footerDataSource = pipeline.getFooterDataSource() || [];
|
|
228
|
-
|
|
178
|
+
var footerDataSource = pipeline.getFooterDataSource() || [];
|
|
179
|
+
// 焦点位于可编辑的单元格内不做全选
|
|
229
180
|
if (columns.length && rowLen && !getElementEditable(e.target)) {
|
|
230
181
|
opts.preventkDefaultOfKeyDownEvent !== false && e.preventDefault();
|
|
231
182
|
artTable.classList.add((0, _classnames.default)(_styles.Classes.rangeSelection));
|
|
@@ -242,14 +193,12 @@ function rangeSelection(opts) {
|
|
|
242
193
|
}
|
|
243
194
|
}
|
|
244
195
|
};
|
|
245
|
-
|
|
246
196
|
pipeline.addTableProps({
|
|
247
197
|
onMouseDown: onMouseDown,
|
|
248
198
|
onKeyDown: onKeyDown,
|
|
249
199
|
tabIndex: -1,
|
|
250
200
|
className: (0, _classnames.default)([_styles.Classes.rangeSelection])
|
|
251
201
|
}); // todo: 后面可以把mousedown放到一个流里面
|
|
252
|
-
|
|
253
202
|
return pipeline.mapColumns((0, _utils.makeRecursiveMapper)(function (col) {
|
|
254
203
|
var cellRanges = pipeline.getStateAtKey(rangeSelectionKey) || [];
|
|
255
204
|
var prevGetCellProps = col.getCellProps;
|
|
@@ -274,7 +223,6 @@ function rangeSelection(opts) {
|
|
|
274
223
|
}));
|
|
275
224
|
};
|
|
276
225
|
}
|
|
277
|
-
|
|
278
226
|
function getTargetCell(target, columns) {
|
|
279
227
|
while (target) {
|
|
280
228
|
if (target.getAttribute('data-role') === 'table-cell') {
|
|
@@ -296,32 +244,24 @@ function getTargetCell(target, columns) {
|
|
|
296
244
|
}
|
|
297
245
|
};
|
|
298
246
|
}();
|
|
299
|
-
|
|
300
247
|
if ((0, _typeof2.default)(_ret) === "object") return _ret.v;
|
|
301
248
|
}
|
|
302
|
-
|
|
303
249
|
target = target.parentElement;
|
|
304
250
|
}
|
|
305
|
-
|
|
306
251
|
return null;
|
|
307
252
|
}
|
|
308
|
-
|
|
309
253
|
function isSameCell(cell1, cell2) {
|
|
310
254
|
return cell1.rowIndex === cell2.rowIndex && cell1.code === cell2.code && cell1.isFooterCell === cell2.isFooterCell;
|
|
311
255
|
}
|
|
312
|
-
|
|
313
256
|
function isEleInFooter(target) {
|
|
314
257
|
while (target && !target.classList.contains(_styles.Classes.artTable)) {
|
|
315
258
|
if (target.classList.contains(_styles.Classes.tableFooter)) {
|
|
316
259
|
return true;
|
|
317
260
|
}
|
|
318
|
-
|
|
319
261
|
target = target.parentElement;
|
|
320
262
|
}
|
|
321
|
-
|
|
322
263
|
return false;
|
|
323
264
|
}
|
|
324
|
-
|
|
325
265
|
function getRangeColumns(startCell, endCell, columns) {
|
|
326
266
|
var flatColumns = (0, _utils.collectNodes)(columns, 'leaf-only');
|
|
327
267
|
var startIndex = (0, _findIndex.default)(flatColumns).call(flatColumns, function (col) {
|
|
@@ -330,24 +270,20 @@ function getRangeColumns(startCell, endCell, columns) {
|
|
|
330
270
|
var endIndex = (0, _findIndex.default)(flatColumns).call(flatColumns, function (col) {
|
|
331
271
|
return col.code === endCell.code;
|
|
332
272
|
});
|
|
333
|
-
|
|
334
273
|
if (startIndex < endIndex) {
|
|
335
274
|
return (0, _slice.default)(flatColumns).call(flatColumns, startIndex, endIndex + 1);
|
|
336
275
|
} else {
|
|
337
276
|
return (0, _slice.default)(flatColumns).call(flatColumns, endIndex, startIndex + 1);
|
|
338
277
|
}
|
|
339
278
|
}
|
|
340
|
-
|
|
341
279
|
function getRangeSelectionRowInfo(startCell, endCell, dataSource) {
|
|
342
280
|
var footerRowRange = null;
|
|
343
281
|
var startRow = -1;
|
|
344
282
|
var endRow = -1;
|
|
345
|
-
|
|
346
283
|
var _getCellRangeRow = getCellRangeRow(startCell, endCell),
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
284
|
+
_startRow = _getCellRangeRow.startRow,
|
|
285
|
+
_endRow = _getCellRangeRow.endRow;
|
|
286
|
+
// 两个单元格都在表体
|
|
351
287
|
if (!startCell.isFooterCell && !endCell.isFooterCell) {
|
|
352
288
|
startRow = _startRow;
|
|
353
289
|
endRow = _endRow;
|
|
@@ -375,7 +311,6 @@ function getRangeSelectionRowInfo(startCell, endCell, dataSource) {
|
|
|
375
311
|
};
|
|
376
312
|
}
|
|
377
313
|
}
|
|
378
|
-
|
|
379
314
|
return {
|
|
380
315
|
startRow: startRow,
|
|
381
316
|
endRow: endRow,
|
|
@@ -388,8 +323,6 @@ function getRangeSelectionRowInfo(startCell, endCell, dataSource) {
|
|
|
388
323
|
* @param endCell 结束单元格
|
|
389
324
|
* @returns
|
|
390
325
|
*/
|
|
391
|
-
|
|
392
|
-
|
|
393
326
|
function getCellRangeRow(startCell, endCell) {
|
|
394
327
|
if (isSameCell(startCell, endCell)) {
|
|
395
328
|
return {
|
|
@@ -397,7 +330,6 @@ function getCellRangeRow(startCell, endCell) {
|
|
|
397
330
|
endRow: startCell.rowIndex
|
|
398
331
|
};
|
|
399
332
|
}
|
|
400
|
-
|
|
401
333
|
var isTopToBottom = startCell.rowIndex <= endCell.rowIndex;
|
|
402
334
|
var startRow = isTopToBottom ? startCell.rowIndex : startCell.rowIndex + startCell.rowSpan - 1;
|
|
403
335
|
var endRow = isTopToBottom ? endCell.rowIndex + endCell.rowSpan - 1 : endCell.rowIndex;
|
|
@@ -411,20 +343,17 @@ function getCellRangeRow(startCell, endCell) {
|
|
|
411
343
|
* @param cellRanges
|
|
412
344
|
* @returns
|
|
413
345
|
*/
|
|
414
|
-
|
|
415
|
-
|
|
416
346
|
function isCellRangeSingleCell(cellRanges) {
|
|
417
347
|
if (cellRanges.length !== 1) return false;
|
|
418
348
|
var _cellRanges$ = cellRanges[0],
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
349
|
+
startRow = _cellRanges$.startRow,
|
|
350
|
+
endRow = _cellRanges$.endRow,
|
|
351
|
+
columns = _cellRanges$.columns,
|
|
352
|
+
footerRowRange = _cellRanges$.footerRowRange;
|
|
423
353
|
var isBodySingleCell = !footerRowRange && startRow === endRow && columns.length === 1;
|
|
424
354
|
var isFooterSingleCell = startRow === -1 && footerRowRange.startRow === footerRowRange.endRow && columns.length === 1;
|
|
425
355
|
return isBodySingleCell || isFooterSingleCell;
|
|
426
356
|
}
|
|
427
|
-
|
|
428
357
|
function getRowIndex(startRow, endRow) {
|
|
429
358
|
var isReverse = startRow > endRow;
|
|
430
359
|
var startRowIndex = isReverse ? endRow : startRow;
|
|
@@ -434,23 +363,18 @@ function getRowIndex(startRow, endRow) {
|
|
|
434
363
|
endRowIndex: endRowIndex
|
|
435
364
|
};
|
|
436
365
|
}
|
|
437
|
-
|
|
438
366
|
function getFooterRowIndex(footerRowRange) {
|
|
439
367
|
if (footerRowRange) {
|
|
440
368
|
return getRowIndex(footerRowRange.startRow, footerRowRange.endRow);
|
|
441
369
|
}
|
|
442
|
-
|
|
443
370
|
return {
|
|
444
371
|
startRowIndex: -1,
|
|
445
372
|
endRowIndex: -1
|
|
446
373
|
};
|
|
447
374
|
}
|
|
448
|
-
|
|
449
375
|
function getElementEditable(target) {
|
|
450
376
|
var _context;
|
|
451
|
-
|
|
452
377
|
if (!target) return;
|
|
453
|
-
|
|
454
378
|
if ((0, _includes.default)(_context = ['input', 'textarea']).call(_context, target.tagName.toLowerCase())) {
|
|
455
379
|
if (target.type === 'checkbox') return;
|
|
456
380
|
return !target.disabled && !target.readOnly;
|
|
@@ -464,26 +388,21 @@ function getElementEditable(target) {
|
|
|
464
388
|
* @param isFooterCell
|
|
465
389
|
* @returns
|
|
466
390
|
*/
|
|
467
|
-
|
|
468
|
-
|
|
469
391
|
function isCellInRange(cellRange, rowIndex, col, isFooterCell) {
|
|
470
392
|
var startRow = cellRange.startRow,
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
393
|
+
endRow = cellRange.endRow,
|
|
394
|
+
columns = cellRange.columns,
|
|
395
|
+
footerRowRange = cellRange.footerRowRange;
|
|
474
396
|
var isColInRanges = (0, _findIndex.default)(columns).call(columns, function (item) {
|
|
475
397
|
return item.code === col.code;
|
|
476
398
|
}) !== -1;
|
|
477
399
|
if (!isColInRanges) return false;
|
|
478
|
-
|
|
479
400
|
var _getRowIndex = getRowIndex(startRow, endRow),
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
401
|
+
startRowIndex = _getRowIndex.startRowIndex,
|
|
402
|
+
endRowIndex = _getRowIndex.endRowIndex;
|
|
483
403
|
var _getFooterRowIndex = getFooterRowIndex(footerRowRange),
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
404
|
+
footerStartRowIndex = _getFooterRowIndex.startRowIndex,
|
|
405
|
+
footerEndRowIndex = _getFooterRowIndex.endRowIndex;
|
|
487
406
|
var bodyMatch = !isFooterCell && rowIndex >= startRowIndex && rowIndex <= endRowIndex;
|
|
488
407
|
var footerMatch = isFooterCell && footerRowRange && rowIndex >= footerStartRowIndex && rowIndex <= footerEndRowIndex;
|
|
489
408
|
var isRowInRange = footerMatch || bodyMatch;
|
|
@@ -494,22 +413,17 @@ function isCellInRange(cellRange, rowIndex, col, isFooterCell) {
|
|
|
494
413
|
* @param {*} cellRange
|
|
495
414
|
* @returns
|
|
496
415
|
*/
|
|
497
|
-
|
|
498
|
-
|
|
499
416
|
function getCellRangeId(cellRange) {
|
|
500
417
|
var startRow = cellRange.startRow,
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
418
|
+
endRow = cellRange.endRow,
|
|
419
|
+
footerRowRange = cellRange.footerRowRange,
|
|
420
|
+
columns = cellRange.columns;
|
|
505
421
|
var _getRowIndex2 = getRowIndex(startRow, endRow),
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
422
|
+
startRowIndex = _getRowIndex2.startRowIndex,
|
|
423
|
+
endRowIndex = _getRowIndex2.endRowIndex;
|
|
509
424
|
var _getFooterRowIndex2 = getFooterRowIndex(footerRowRange),
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
425
|
+
footerStartRowIndex = _getFooterRowIndex2.startRowIndex,
|
|
426
|
+
footerEndRowIndex = _getFooterRowIndex2.endRowIndex;
|
|
513
427
|
var firstColId = columns[0].code;
|
|
514
428
|
var endColId = columns[columns.length - 1].code;
|
|
515
429
|
return startRowIndex + '_' + endRowIndex + '_' + footerStartRowIndex + '_' + footerEndRowIndex + '_' + firstColId + '_' + endColId;
|
|
@@ -520,59 +434,50 @@ function getCellRangeId(cellRange) {
|
|
|
520
434
|
* @param param1
|
|
521
435
|
* @returns
|
|
522
436
|
*/
|
|
523
|
-
|
|
524
|
-
|
|
525
437
|
function getCellRangesClassName(cellRanges, _ref2) {
|
|
526
438
|
var _cx;
|
|
527
|
-
|
|
528
439
|
var isFooterCell = _ref2.isFooterCell,
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
440
|
+
rowIndex = _ref2.rowIndex,
|
|
441
|
+
col = _ref2.col,
|
|
442
|
+
record = _ref2.record;
|
|
533
443
|
var _getMatchBorderStyle = getMatchBorderStyle(cellRanges, {
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
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;
|
|
544
453
|
var isSingleCell = isCellRangeSingleCell(cellRanges);
|
|
545
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));
|
|
546
455
|
return className;
|
|
547
456
|
}
|
|
548
|
-
|
|
549
457
|
function getMatchBorderStyle(cellRanges, _ref3) {
|
|
550
458
|
var isFooterCell = _ref3.isFooterCell,
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
459
|
+
rowIndex = _ref3.rowIndex,
|
|
460
|
+
col = _ref3.col,
|
|
461
|
+
record = _ref3.record;
|
|
554
462
|
return cellRanges.reduce(function (obj, cellRange) {
|
|
555
463
|
if (!isCellInRange(cellRange, rowIndex, col, isFooterCell)) return obj;
|
|
556
464
|
var startRow = cellRange.startRow,
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
465
|
+
endRow = cellRange.endRow,
|
|
466
|
+
columns = cellRange.columns,
|
|
467
|
+
footerRowRange = cellRange.footerRowRange;
|
|
561
468
|
var _getRowIndex3 = getRowIndex(startRow, endRow),
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
469
|
+
startRowIndex = _getRowIndex3.startRowIndex,
|
|
470
|
+
endRowIndex = _getRowIndex3.endRowIndex;
|
|
565
471
|
var _getFooterRowIndex3 = getFooterRowIndex(footerRowRange),
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
472
|
+
footerStartRowIndex = _getFooterRowIndex3.startRowIndex,
|
|
473
|
+
footerEndRowIndex = _getFooterRowIndex3.endRowIndex;
|
|
569
474
|
var startCol = columns[0];
|
|
570
475
|
var endCol = columns[columns.length - 1];
|
|
571
476
|
var matchCellRangeTop = isFooterCell ? startRowIndex !== -1 ? false : rowIndex === footerStartRowIndex : rowIndex === startRowIndex;
|
|
572
477
|
var matchCellRangeLeft = col.code === startCol.code;
|
|
573
478
|
var matchCellRangeBottom = isFooterCell ? rowIndex === footerEndRowIndex : footerRowRange ? false : rowIndex === endRowIndex;
|
|
574
|
-
var matchCellRangeRight = col.code === endCol.code;
|
|
575
|
-
|
|
479
|
+
var matchCellRangeRight = col.code === endCol.code;
|
|
480
|
+
// 如果样式已经匹配上了,就不需要再取计算的样式
|
|
576
481
|
obj.matchCellRangeTop = obj.matchCellRangeTop || matchCellRangeTop;
|
|
577
482
|
obj.matchCellRangeLeft = obj.matchCellRangeLeft || matchCellRangeLeft;
|
|
578
483
|
obj.matchCellRangeBottom = obj.matchCellRangeBottom || matchCellRangeBottom;
|