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