@kdcloudjs/table 1.2.1-canary.6 → 1.2.2-canary.3
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 +5480 -6087
- 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 +81 -144
- 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 +11 -50
- 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/globalStyleComponent.d.ts +4 -0
- package/es/table/base/globalStyleComponent.js +24 -0
- package/es/table/base/header.js +21 -76
- package/es/table/base/helpers/SpanManager.js +4 -11
- package/es/table/base/helpers/TableDOMUtils.js +9 -34
- 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 +13 -45
- 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 +42 -60
- package/es/table/base/styles.d.ts +10 -0
- package/es/table/base/styles.js +17 -16
- package/es/table/base/table.js +113 -201
- package/es/table/base/utils.js +17 -57
- package/es/table/common-views.js +0 -7
- package/es/table/interfaces.d.ts +38 -0
- package/es/table/internals.js +0 -13
- package/es/table/pipeline/const.d.ts +3 -0
- package/es/table/pipeline/const.js +3 -0
- 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 +22 -95
- package/es/table/pipeline/features/featureApi/RowDragApi.d.ts +15 -0
- package/es/table/pipeline/features/featureApi/RowDragApi.js +66 -0
- package/es/table/pipeline/features/featureApi/utils.d.ts +2 -0
- package/es/table/pipeline/features/featureApi/utils.js +10 -0
- 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 +27 -51
- 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 +73 -152
- package/es/table/pipeline/features/rowDetail.js +4 -43
- package/es/table/pipeline/features/rowDrag.d.ts +10 -12
- package/es/table/pipeline/features/rowDrag.js +491 -236
- 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 +38 -96
- package/es/table/pipeline/features/tips.js +4 -10
- package/es/table/pipeline/features/treeMode.d.ts +1 -0
- package/es/table/pipeline/features/treeMode.js +38 -57
- package/es/table/pipeline/features/treeSelect.js +2 -28
- package/es/table/pipeline/pipeline.d.ts +3 -0
- package/es/table/pipeline/pipeline.js +35 -54
- 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 +36 -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 -101
- 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/browserType.js +12 -19
- 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 +8 -30
- package/es/table/utils/tree-data-helpers/TreeDataHelper.js +19 -74
- package/es/table/utils/uiDegrade.js +0 -5
- 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 +86 -173
- 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 +15 -71
- 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/globalStyleComponent.d.ts +4 -0
- package/lib/table/base/globalStyleComponent.js +35 -0
- package/lib/table/base/header.js +21 -86
- package/lib/table/base/helpers/SpanManager.js +6 -16
- package/lib/table/base/helpers/TableDOMUtils.js +9 -37
- 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 +15 -65
- 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 +45 -76
- package/lib/table/base/styles.d.ts +10 -0
- package/lib/table/base/styles.js +24 -42
- package/lib/table/base/table.js +125 -245
- 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/interfaces.d.ts +38 -0
- package/lib/table/internals.js +2 -17
- package/lib/table/pipeline/const.d.ts +3 -0
- package/lib/table/pipeline/const.js +9 -0
- 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 +24 -121
- package/lib/table/pipeline/features/featureApi/RowDragApi.d.ts +15 -0
- package/lib/table/pipeline/features/featureApi/RowDragApi.js +72 -0
- package/lib/table/pipeline/features/featureApi/utils.d.ts +2 -0
- package/lib/table/pipeline/features/featureApi/utils.js +17 -0
- 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 +30 -77
- 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 +75 -173
- package/lib/table/pipeline/features/rowDetail.js +4 -67
- package/lib/table/pipeline/features/rowDrag.d.ts +10 -12
- package/lib/table/pipeline/features/rowDrag.js +494 -252
- 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 -115
- package/lib/table/pipeline/features/tips.js +4 -19
- package/lib/table/pipeline/features/treeMode.d.ts +1 -0
- package/lib/table/pipeline/features/treeMode.js +40 -80
- package/lib/table/pipeline/features/treeSelect.js +2 -36
- package/lib/table/pipeline/index.js +2 -10
- package/lib/table/pipeline/pipeline.d.ts +3 -0
- package/lib/table/pipeline/pipeline.js +36 -65
- 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 +37 -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 -127
- 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 +14 -23
- 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 -22
- 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 +10 -41
- package/lib/table/utils/tree-data-helpers/TreeDataHelper.js +21 -90
- package/lib/table/utils/uiDegrade.js +1 -8
- package/package.json +218 -218
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
|
|
2
|
-
import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
|
|
3
2
|
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
|
3
|
+
import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
|
|
4
|
+
import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
|
|
5
|
+
import _findIndexInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find-index";
|
|
4
6
|
import React from 'react';
|
|
5
7
|
import { fromEvent } from 'rxjs';
|
|
6
8
|
import { map, takeUntil, filter } from 'rxjs/operators';
|
|
7
9
|
import cx from 'classnames';
|
|
8
10
|
import { Classes } from '../../base/styles';
|
|
11
|
+
import { FeatureName } from '../const';
|
|
12
|
+
import { internals } from '../../internals';
|
|
9
13
|
export var ROW_DRAG_COLUMN_CODE = '$_row_drag_column_&';
|
|
10
14
|
export var rowDragKey = 'rowDragKey';
|
|
15
|
+
export var rowDragOptionsKey = 'rowDragOptions';
|
|
11
16
|
var SCROLL_OFFSET = 30;
|
|
17
|
+
var SCROLL_START_OFFSET = 20;
|
|
12
18
|
var defaultRowDragColumn = {
|
|
13
19
|
name: '拖拽列',
|
|
14
20
|
code: ROW_DRAG_COLUMN_CODE,
|
|
@@ -38,204 +44,281 @@ var defaultRowDragColumn = {
|
|
|
38
44
|
export function rowDrag(opt) {
|
|
39
45
|
return function rowDragStep(pipeline) {
|
|
40
46
|
var _context;
|
|
41
|
-
|
|
42
47
|
var tableBody = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.tableBody;
|
|
43
48
|
var artTable = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.artTable;
|
|
49
|
+
var rowDragApi = pipeline.addFeatureApi(FeatureName.rowDrag);
|
|
50
|
+
pipeline.setFeatureOptions(rowDragOptionsKey, opt);
|
|
44
51
|
if (!tableBody) return pipeline;
|
|
45
52
|
var dataSource = pipeline.getDataSource();
|
|
46
|
-
var
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
var getRowDragEvent = function getRowDragEvent(dropTargetEvent, isFinished) {
|
|
54
|
+
var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'targetTable';
|
|
55
|
+
var dragItem = dropTargetEvent.dragItem,
|
|
56
|
+
x = dropTargetEvent.x,
|
|
57
|
+
y = dropTargetEvent.y,
|
|
58
|
+
dropZoneTarget = dropTargetEvent.dropZoneTarget,
|
|
59
|
+
startDropZoneTagret = dropTargetEvent.startDropZoneTagret,
|
|
60
|
+
event = dropTargetEvent.event,
|
|
61
|
+
dropZoneTableParams = dropTargetEvent.dropZoneTableParams;
|
|
62
|
+
var getDataSource = dropZoneTableParams.getDataSource,
|
|
63
|
+
getTreeModeOptions = dropZoneTableParams.getTreeModeOptions,
|
|
64
|
+
getRowDragOptions = dropZoneTableParams.getRowDragOptions;
|
|
65
|
+
var dataSource = getDataSource();
|
|
66
|
+
var treeModeOptions = getTreeModeOptions();
|
|
67
|
+
var rowDragOptions = getRowDragOptions();
|
|
68
|
+
var allowDragIntoRow = !!treeModeOptions && (rowDragOptions === null || rowDragOptions === void 0 ? void 0 : rowDragOptions.allowDragIntoRow);
|
|
69
|
+
var isLeave = !isMouseOnDropTarget(event, dropZoneTarget);
|
|
70
|
+
var overIndex = -1;
|
|
71
|
+
var direction = 'bottom';
|
|
72
|
+
if (!isLeave) {
|
|
73
|
+
var overDragItem = getDragRowItem(event.target, dropZoneTarget, dataSource);
|
|
74
|
+
if (overDragItem) {
|
|
75
|
+
var rowIndex = overDragItem.rowIndex,
|
|
76
|
+
cell = overDragItem.cell;
|
|
77
|
+
overIndex = rowIndex;
|
|
78
|
+
direction = getDirection(cell, event.clientY, allowDragIntoRow);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
var overRow = overIndex >= 0 ? dataSource[overIndex] : null;
|
|
82
|
+
return {
|
|
83
|
+
startRowIndex: dragItem.rowIndex,
|
|
84
|
+
startRow: dragItem.row,
|
|
85
|
+
endRowIndex: overIndex,
|
|
86
|
+
endRow: overRow,
|
|
87
|
+
startDropZoneTagret: startDropZoneTagret,
|
|
88
|
+
dropZoneTarget: dropZoneTarget,
|
|
89
|
+
event: event,
|
|
90
|
+
dragPosition: direction,
|
|
91
|
+
isFinished: isFinished,
|
|
92
|
+
source: source,
|
|
93
|
+
x: x,
|
|
94
|
+
y: y
|
|
95
|
+
};
|
|
54
96
|
};
|
|
55
|
-
|
|
56
|
-
var handleDragMove = function handleDragMove(event) {
|
|
97
|
+
var onDragging = function onDragging(event) {
|
|
57
98
|
var _a;
|
|
58
|
-
|
|
59
|
-
(_a = opt === null || opt === void 0 ? void 0 : opt.onDragMove) === null || _a === void 0 ? void 0 : _a.call(opt,
|
|
60
|
-
pipeline.setStateAtKey(rowDragKey,
|
|
99
|
+
var rowDragEvent = getRowDragEvent(event, false, 'targetTable');
|
|
100
|
+
(_a = opt === null || opt === void 0 ? void 0 : opt.onDragMove) === null || _a === void 0 ? void 0 : _a.call(opt, rowDragEvent);
|
|
101
|
+
pipeline.setStateAtKey(rowDragKey, rowDragEvent);
|
|
61
102
|
};
|
|
62
|
-
|
|
63
|
-
var handleDragEnd = function handleDragEnd(event, isValid) {
|
|
103
|
+
var onDragStop = function onDragStop(event, source) {
|
|
64
104
|
var _a;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (isValid) {
|
|
70
|
-
(_a = opt === null || opt === void 0 ? void 0 : opt.onDragEnd) === null || _a === void 0 ? void 0 : _a.call(opt, event);
|
|
71
|
-
}
|
|
105
|
+
var rowDragEvent = getRowDragEvent(event, true, source);
|
|
106
|
+
pipeline.setStateAtKey(rowDragKey, rowDragEvent);
|
|
107
|
+
(_a = opt === null || opt === void 0 ? void 0 : opt.onDragEnd) === null || _a === void 0 ? void 0 : _a.call(opt, rowDragEvent);
|
|
72
108
|
};
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
var
|
|
76
|
-
|
|
77
|
-
dragPosition = _ref$dragPosition === void 0 ? 'bottom' : _ref$dragPosition;
|
|
78
|
-
return {
|
|
79
|
-
startRowIndex: startRowInfo.rowIndex,
|
|
80
|
-
startRow: startRowInfo.row,
|
|
81
|
-
endRowIndex: endRowInfo.rowIndex,
|
|
82
|
-
endRow: endRowInfo.row,
|
|
83
|
-
dragPosition: dragPosition,
|
|
84
|
-
isFinished: isFinished
|
|
85
|
-
};
|
|
109
|
+
var onDragStart = function onDragStart(event) {
|
|
110
|
+
var _a;
|
|
111
|
+
var rowDragEvent = getRowDragEvent(event, false);
|
|
112
|
+
(_a = opt === null || opt === void 0 ? void 0 : opt.onDragStart) === null || _a === void 0 ? void 0 : _a.call(opt, rowDragEvent);
|
|
86
113
|
};
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
114
|
+
var onDragLeave = function onDragLeave(event) {
|
|
115
|
+
var _a;
|
|
116
|
+
var rowDragEvent = getRowDragEvent(event, false);
|
|
117
|
+
pipeline.setStateAtKey(rowDragKey, rowDragEvent);
|
|
118
|
+
(_a = opt === null || opt === void 0 ? void 0 : opt.onDragLeave) === null || _a === void 0 ? void 0 : _a.call(opt, rowDragEvent);
|
|
119
|
+
};
|
|
120
|
+
var onDragEnter = function onDragEnter(event) {
|
|
121
|
+
var _a;
|
|
122
|
+
var rowDragEvent = getRowDragEvent(event, false);
|
|
123
|
+
pipeline.setStateAtKey(rowDragKey, rowDragEvent);
|
|
124
|
+
(_a = opt === null || opt === void 0 ? void 0 : opt.onDragEnter) === null || _a === void 0 ? void 0 : _a.call(opt, rowDragEvent);
|
|
125
|
+
};
|
|
126
|
+
var currentDropZone = {
|
|
127
|
+
getContainer: function getContainer() {
|
|
128
|
+
var lastPipeline = pipeline.getLastPipeline();
|
|
129
|
+
return lastPipeline.ref.current.domHelper.tableBody;
|
|
130
|
+
},
|
|
131
|
+
onDragEnter: onDragEnter,
|
|
132
|
+
onDragLeave: onDragLeave,
|
|
133
|
+
onDragging: onDragging,
|
|
134
|
+
onDragStop: onDragStop,
|
|
135
|
+
isTable: true,
|
|
136
|
+
tableParams: {
|
|
137
|
+
getDataSource: function getDataSource() {
|
|
138
|
+
var lastPipeline = pipeline.getLastPipeline();
|
|
139
|
+
return lastPipeline.getDataSource();
|
|
140
|
+
},
|
|
141
|
+
getTreeModeOptions: function getTreeModeOptions() {
|
|
142
|
+
var lastPipeline = pipeline.getLastPipeline();
|
|
143
|
+
return lastPipeline.getFeatureOptions('treeModeOptions');
|
|
144
|
+
},
|
|
145
|
+
getRowDragOptions: function getRowDragOptions() {
|
|
146
|
+
var lastPipeline = pipeline.getLastPipeline();
|
|
147
|
+
return lastPipeline.getFeatureOptions('rowDragOptions');
|
|
148
|
+
}
|
|
101
149
|
}
|
|
102
150
|
};
|
|
103
|
-
|
|
104
|
-
var onMouseDown = function onMouseDown(mouseDownEvent) {
|
|
151
|
+
var onMouseDown = function onMouseDown(event) {
|
|
105
152
|
var _a;
|
|
106
|
-
|
|
107
|
-
var
|
|
108
|
-
|
|
109
|
-
if (
|
|
110
|
-
if ((_a = opt === null || opt === void 0 ? void 0 : opt.isDisabled) === null || _a === void 0 ? void 0 : _a.call(opt, startRowInfo.row, startRowInfo.rowIndex)) return; // 默认拖拽插入的位置是向下
|
|
111
|
-
|
|
112
|
-
var dragPosition = 'bottom';
|
|
113
|
-
var isOutOfRange = false;
|
|
153
|
+
var mouseDownEvent = event.nativeEvent;
|
|
154
|
+
var startDataItem = getDragRowItem(mouseDownEvent.target, tableBody, dataSource);
|
|
155
|
+
if (!startDataItem || startDataItem.code !== rowDragColumn.code) return;
|
|
156
|
+
if ((_a = opt === null || opt === void 0 ? void 0 : opt.isDisabled) === null || _a === void 0 ? void 0 : _a.call(opt, startDataItem.row, startDataItem.rowIndex)) return;
|
|
114
157
|
var isValidDrag = false;
|
|
115
|
-
var
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
var
|
|
121
|
-
var
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
158
|
+
var isDragging = false;
|
|
159
|
+
var dragElement = null;
|
|
160
|
+
var dragLine = null;
|
|
161
|
+
var lastDropTarget = null;
|
|
162
|
+
var timeoutId = null;
|
|
163
|
+
var intervalId = null;
|
|
164
|
+
var updateScrollPosition = function updateScrollPosition(tableBody, mouseMoveEvent) {
|
|
165
|
+
if (opt === null || opt === void 0 ? void 0 : opt.suppressScrollMove) return;
|
|
166
|
+
if (timeoutId) {
|
|
167
|
+
clearTimeout(timeoutId);
|
|
168
|
+
}
|
|
169
|
+
if (intervalId) {
|
|
170
|
+
clearInterval(intervalId);
|
|
171
|
+
}
|
|
172
|
+
var moveOffset = getScrollMoveOffset(tableBody, mouseMoveEvent);
|
|
173
|
+
if (moveOffset === 0) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
timeoutId = setTimeout(function () {
|
|
177
|
+
intervalId = setInterval(function () {
|
|
178
|
+
tableBody.scrollTop += moveOffset;
|
|
179
|
+
}, 100);
|
|
180
|
+
}, 500);
|
|
134
181
|
};
|
|
135
|
-
var
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
//
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
182
|
+
var handleDragStart = function handleDragStart(mouseDownEvent) {
|
|
183
|
+
var _a;
|
|
184
|
+
dragElement = createDragElement(mouseDownEvent, tableBody); // 创建拖拽悬浮框
|
|
185
|
+
var isTreeTable = !!pipeline.getFeatureOptions('treeModeOptions');
|
|
186
|
+
dragLine = createDragLine(isTreeTable); // 创建拖拽插入指示线
|
|
187
|
+
var dragText = (opt === null || opt === void 0 ? void 0 : opt.rowDragText) ? (_a = opt === null || opt === void 0 ? void 0 : opt.rowDragText) === null || _a === void 0 ? void 0 : _a.call(opt, startDataItem.row, startDataItem.rowIndex) : "\u7B2C".concat(startDataItem.rowIndex, "\u884C\u5185\u5BB9");
|
|
188
|
+
setDragText(dragElement, dragText); // 设置悬浮框显示文本
|
|
189
|
+
artTable.classList.add(cx(Classes.rowDragging));
|
|
190
|
+
rowDragApi.setDragStatus('start');
|
|
191
|
+
var dragEvent = createDropTargetEvent(currentDropZone, mouseDownEvent, startDataItem, tableBody);
|
|
192
|
+
onDragStart(dragEvent);
|
|
193
|
+
};
|
|
194
|
+
var handleDragMove = function handleDragMove(mouseMoveEvent) {
|
|
195
|
+
positionDragElemment(dragElement, mouseMoveEvent); // 更新拖拽悬浮框位置
|
|
196
|
+
rowDragApi.setDragStatus('dragging');
|
|
197
|
+
setDragElementIcon(dragElement, 'move');
|
|
198
|
+
var rowDropZones = rowDragApi.getRowDropZone();
|
|
199
|
+
var validDropZones = _concatInstanceProperty(rowDropZones).call(rowDropZones, currentDropZone); // 可放置区域加上自身
|
|
200
|
+
var dropTarget = _findInstanceProperty(validDropZones).call(validDropZones, function (zone) {
|
|
201
|
+
return isMouseOnDropTarget(mouseMoveEvent, zone.getContainer());
|
|
202
|
+
}) || null;
|
|
203
|
+
if (dropTarget !== lastDropTarget) {
|
|
204
|
+
// 拖拽离开表格
|
|
205
|
+
if (lastDropTarget !== null && dropTarget === null) {
|
|
206
|
+
if (lastDropTarget.onDragLeave) {
|
|
207
|
+
setDragElementIcon(dragElement, 'notAllowed');
|
|
208
|
+
hiddenDragLine(dragLine);
|
|
209
|
+
var dragEvent = createDropTargetEvent(lastDropTarget, mouseMoveEvent, startDataItem, tableBody);
|
|
210
|
+
lastDropTarget.onDragLeave(dragEvent);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// 拖拽进入表格
|
|
214
|
+
if (lastDropTarget === null && dropTarget !== null) {
|
|
215
|
+
if (dropTarget.onDragEnter) {
|
|
216
|
+
setDragElementIcon(dragElement, 'move');
|
|
217
|
+
if (dropTarget.isTable) {
|
|
218
|
+
showDragLine(dragLine);
|
|
219
|
+
}
|
|
220
|
+
var _dragEvent = createDropTargetEvent(dropTarget, mouseMoveEvent, startDataItem, tableBody);
|
|
221
|
+
dropTarget.onDragEnter(_dragEvent);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
lastDropTarget = dropTarget;
|
|
225
|
+
}
|
|
226
|
+
if (dropTarget) {
|
|
227
|
+
// 拖拽区域在表格中,更新拖拽插入指示线位置
|
|
228
|
+
if (dropTarget.isTable) {
|
|
229
|
+
positionDragLine({
|
|
230
|
+
lineElement: dragLine,
|
|
231
|
+
dragZone: dropTarget,
|
|
232
|
+
event: mouseMoveEvent
|
|
233
|
+
});
|
|
234
|
+
updateScrollPosition(dropTarget.getContainer(), mouseMoveEvent); // 拖拽到底时让滚动条可以滚动
|
|
235
|
+
}
|
|
236
|
+
if (dropTarget.onDragging) {
|
|
237
|
+
var _dragEvent2 = createDropTargetEvent(dropTarget, mouseMoveEvent, startDataItem, tableBody);
|
|
238
|
+
dropTarget.onDragging(_dragEvent2);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
var handleDragStop = function handleDragStop(mouseUpEvent) {
|
|
243
|
+
removeElement(dragElement);
|
|
244
|
+
removeElement(dragLine);
|
|
245
|
+
artTable.classList.remove(cx(Classes.rowDragging));
|
|
246
|
+
rowDragApi.setDragStatus('finished');
|
|
247
|
+
clearTimeout(timeoutId);
|
|
248
|
+
clearInterval(intervalId);
|
|
249
|
+
var rowDropZones = rowDragApi.getRowDropZone();
|
|
250
|
+
var validDropZones = _concatInstanceProperty(rowDropZones).call(rowDropZones, currentDropZone);
|
|
251
|
+
var dropTarget = _findInstanceProperty(validDropZones).call(validDropZones, function (zone) {
|
|
252
|
+
return isMouseOnDropTarget(mouseUpEvent, zone.getContainer());
|
|
144
253
|
});
|
|
145
|
-
|
|
146
|
-
|
|
254
|
+
if (dropTarget && dropTarget.onDragStop) {
|
|
255
|
+
var dragEvent = createDropTargetEvent(dropTarget, mouseUpEvent, startDataItem, tableBody);
|
|
256
|
+
dropTarget.onDragStop(dragEvent);
|
|
257
|
+
// 原表也触发onDragStop, 方便上层调用
|
|
258
|
+
if (dropTarget !== currentDropZone) {
|
|
259
|
+
currentDropZone.onDragStop(dragEvent, 'startTable');
|
|
260
|
+
}
|
|
261
|
+
}
|
|
147
262
|
};
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
var
|
|
151
|
-
var mouseMoveClientY = mouseMoveEvent.clientY;
|
|
152
|
-
|
|
263
|
+
var mousemove$ = fromEvent(window, 'mousemove');
|
|
264
|
+
var mouseup$ = fromEvent(window, 'mouseup');
|
|
265
|
+
var rowDragMove$ = mousemove$.pipe(filter(function (mouseMoveEvent) {
|
|
266
|
+
var mouseMoveClientY = mouseMoveEvent.clientY;
|
|
267
|
+
var mouseDownClientY = mouseDownEvent.clientY;
|
|
268
|
+
// 上下移动偏移量大于5才是有效的拖拽
|
|
153
269
|
if (Math.abs(mouseMoveClientY - mouseDownClientY) > 5) {
|
|
154
270
|
isValidDrag = true;
|
|
155
271
|
}
|
|
156
|
-
|
|
157
272
|
return isValidDrag;
|
|
158
273
|
}), map(function (mouseMoveEvent) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
if (tagretRow) {
|
|
164
|
-
endRowInfo = tagretRow;
|
|
274
|
+
if (!isDragging) {
|
|
275
|
+
isDragging = true;
|
|
276
|
+
handleDragStart(mouseDownEvent);
|
|
277
|
+
handleDragMove(mouseDownEvent);
|
|
165
278
|
}
|
|
166
|
-
|
|
167
|
-
var targetRowRects = endRowInfo.cell.getBoundingClientRect(); // 判断拖拽插入的位置,拖拽框上边框位于目标行之上则向上插入,否则向下插入
|
|
168
|
-
|
|
169
|
-
var isMoveToTop = clientY - startOffset < targetRowRects.top;
|
|
170
|
-
dragPosition = isMoveToTop ? 'top' : 'bottom';
|
|
171
|
-
isOutOfRange = isOutOfDragRange({
|
|
172
|
-
x: clientX,
|
|
173
|
-
y: clientY
|
|
174
|
-
}, dragRange);
|
|
175
|
-
mousePosition = {
|
|
176
|
-
x: clientX,
|
|
177
|
-
y: clientY
|
|
178
|
-
};
|
|
179
|
-
updateScrollPosition(mouseMoveEvent); // 拖拽到底时让滚动条可以滚动
|
|
180
|
-
|
|
181
|
-
updateDragElementPosition(dragElement, dragRange, {
|
|
182
|
-
x: clientX,
|
|
183
|
-
y: clientY,
|
|
184
|
-
startOffset: startOffset
|
|
185
|
-
});
|
|
186
|
-
updateCurSorStyle(isOutOfRange);
|
|
187
|
-
return {
|
|
188
|
-
startRowInfo: startRowInfo,
|
|
189
|
-
endRowInfo: endRowInfo,
|
|
190
|
-
dragPosition: dragPosition
|
|
191
|
-
};
|
|
279
|
+
handleDragMove(mouseMoveEvent);
|
|
192
280
|
}), takeUntil(mouseup$));
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
isFinished: false,
|
|
200
|
-
dragPosition: dragPosition
|
|
201
|
-
});
|
|
202
|
-
handleDragMove(dragMoveEvent);
|
|
203
|
-
},
|
|
204
|
-
complete: function complete() {
|
|
205
|
-
var dragEndEvent = getDragEvent(startRowInfo, endRowInfo, {
|
|
206
|
-
isFinished: true,
|
|
207
|
-
dragPosition: dragPosition
|
|
208
|
-
});
|
|
209
|
-
var isValid = isValidDrag && !isOutOfRange;
|
|
210
|
-
handleDragEnd(dragEndEvent, isValid);
|
|
211
|
-
removeDragElement(dragElement);
|
|
212
|
-
removeCurSorStyle();
|
|
213
|
-
document.removeEventListener('scroll', scrollCallback, true);
|
|
281
|
+
rowDragMove$.subscribe();
|
|
282
|
+
var rowDragEnd$ = mouseup$.pipe(map(function (mouseUpEvent) {
|
|
283
|
+
handleDragStop(mouseUpEvent);
|
|
284
|
+
})).subscribe({
|
|
285
|
+
next: function next() {
|
|
286
|
+
rowDragEnd$.unsubscribe();
|
|
214
287
|
}
|
|
215
288
|
});
|
|
216
289
|
};
|
|
217
|
-
|
|
218
290
|
var rowDragColumn = (opt === null || opt === void 0 ? void 0 : opt.rowDragColumn) || defaultRowDragColumn;
|
|
219
291
|
pipeline.setFeatureOptions('rowDragColumnKey', rowDragColumn.code);
|
|
220
|
-
|
|
292
|
+
rowDragApi.setRowDropZoneParams(currentDropZone);
|
|
221
293
|
var nextColumns = _sliceInstanceProperty(_context = pipeline.getColumns()).call(_context);
|
|
222
|
-
|
|
223
294
|
nextColumns.unshift(rowDragColumn);
|
|
224
295
|
pipeline.columns(nextColumns);
|
|
225
296
|
pipeline.addTableProps({
|
|
226
297
|
onMouseDown: onMouseDown
|
|
227
298
|
});
|
|
228
299
|
pipeline.appendRowPropsGetter(function (row, rowIndex) {
|
|
229
|
-
var _cx;
|
|
230
|
-
|
|
231
300
|
var rowDragEvent = pipeline.getStateAtKey(rowDragKey) || {};
|
|
301
|
+
var dragStatus = rowDragApi.getDragStatus();
|
|
232
302
|
var startRowIndex = rowDragEvent.startRowIndex,
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
303
|
+
endRowIndex = rowDragEvent.endRowIndex,
|
|
304
|
+
endRow = rowDragEvent.endRow,
|
|
305
|
+
isFinished = rowDragEvent.isFinished,
|
|
306
|
+
dragPosition = rowDragEvent.dragPosition;
|
|
236
307
|
var isFooterCell = row[pipeline.getFeatureOptions('footerRowMetaKey')];
|
|
237
|
-
|
|
238
|
-
var
|
|
308
|
+
var treeModeOptions = pipeline.getFeatureOptions('treeModeOptions');
|
|
309
|
+
var isTreeTable = !!treeModeOptions;
|
|
310
|
+
if (isFooterCell || isFinished || !isTreeTable && rowIndex !== startRowIndex && rowIndex !== endRowIndex) return;
|
|
311
|
+
var parentRowKeyIndex = -1;
|
|
312
|
+
if (isTreeTable && endRow) {
|
|
313
|
+
var _context2;
|
|
314
|
+
var treeMetaKey = treeModeOptions.treeMetaKey;
|
|
315
|
+
var parentRowKey = endRow[treeMetaKey].parentRowKey;
|
|
316
|
+
var primaryKey = pipeline.ensurePrimaryKey('rowDrag');
|
|
317
|
+
parentRowKeyIndex = _findIndexInstanceProperty(_context2 = pipeline.getDataSource()).call(_context2, function (row) {
|
|
318
|
+
return internals.safeGetRowKey(primaryKey, row, -1) === parentRowKey;
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
var className = cx(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Classes.rowDragStart, rowIndex === startRowIndex && dragStatus !== 'finished'), Classes.rowDragEnd, rowIndex === endRowIndex), Classes.rowDragEndParent, isTreeTable && rowIndex === parentRowKeyIndex), Classes.rowDragEndInto, rowIndex === endRowIndex && dragPosition === 'into'), Classes.rowDragEndToTop, rowIndex === endRowIndex && dragPosition === 'top'), Classes.rowDragEndToBottom, rowIndex === endRowIndex && dragPosition === 'bottom'));
|
|
239
322
|
return {
|
|
240
323
|
className: className
|
|
241
324
|
};
|
|
@@ -243,8 +326,7 @@ export function rowDrag(opt) {
|
|
|
243
326
|
return pipeline;
|
|
244
327
|
};
|
|
245
328
|
}
|
|
246
|
-
|
|
247
|
-
function getTargetRowInfo(target, tableBody, record) {
|
|
329
|
+
function getDragRowItem(target, tableBody, record) {
|
|
248
330
|
while (target && tableBody.contains(target)) {
|
|
249
331
|
if (target.getAttribute('data-role') === 'table-cell') {
|
|
250
332
|
var code = target.getAttribute('data-code');
|
|
@@ -259,102 +341,275 @@ function getTargetRowInfo(target, tableBody, record) {
|
|
|
259
341
|
cell: target
|
|
260
342
|
};
|
|
261
343
|
}
|
|
262
|
-
|
|
263
344
|
target = target.parentElement;
|
|
264
345
|
}
|
|
265
|
-
|
|
266
346
|
return null;
|
|
267
347
|
}
|
|
268
|
-
|
|
348
|
+
function findTargetRow(target, tableBody) {
|
|
349
|
+
while (target && tableBody.contains(target)) {
|
|
350
|
+
if (target.getAttribute('data-role') === 'table-row') {
|
|
351
|
+
return target;
|
|
352
|
+
}
|
|
353
|
+
target = target.parentElement;
|
|
354
|
+
}
|
|
355
|
+
return null;
|
|
356
|
+
}
|
|
269
357
|
function isEleInFooter(target) {
|
|
270
358
|
while (target && !target.classList.contains(Classes.artTable)) {
|
|
271
359
|
if (target.classList.contains(Classes.tableFooter)) {
|
|
272
360
|
return true;
|
|
273
361
|
}
|
|
274
|
-
|
|
275
362
|
target = target.parentElement;
|
|
276
363
|
}
|
|
277
|
-
|
|
278
364
|
return false;
|
|
279
365
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
var
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
var
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
y = _ref3.y,
|
|
296
|
-
startOffset = _ref3.startOffset;
|
|
297
|
-
var validPosition = getValidPosition({
|
|
298
|
-
x: x,
|
|
299
|
-
y: y
|
|
300
|
-
}, dragRange);
|
|
301
|
-
element.style.top = validPosition.y - startOffset + 'px';
|
|
302
|
-
return element;
|
|
366
|
+
function createDragElement(mouseDownEvent, tableBody) {
|
|
367
|
+
var _context3, _context4;
|
|
368
|
+
var ELEMENT_TEMPLATE = _concatInstanceProperty(_context3 = _concatInstanceProperty(_context4 = "<div class='".concat(Classes.rowDragElement, "'>\n <span class='")).call(_context4, Classes.rowDragElementIcon, "'></span>\n <div class='")).call(_context3, Classes.rowDragElementLabel, "'></div>\n </div>");
|
|
369
|
+
var element = document.createElement('div');
|
|
370
|
+
element.innerHTML = ELEMENT_TEMPLATE;
|
|
371
|
+
var dragElement = element.firstChild;
|
|
372
|
+
var targetRow = findTargetRow(mouseDownEvent.target, tableBody);
|
|
373
|
+
if (targetRow) {
|
|
374
|
+
var rect = targetRow.getBoundingClientRect();
|
|
375
|
+
dragElement.style.height = rect.height + 'px';
|
|
376
|
+
}
|
|
377
|
+
var bodyRect = tableBody.getBoundingClientRect();
|
|
378
|
+
dragElement.style.maxWidth = bodyRect.width + 'px';
|
|
379
|
+
document.body.appendChild(dragElement);
|
|
380
|
+
return dragElement;
|
|
303
381
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
382
|
+
function createDragLine(isTreeTable) {
|
|
383
|
+
var dragLine = document.createElement('div');
|
|
384
|
+
dragLine.classList.add(Classes.rowDragLine);
|
|
385
|
+
if (isTreeTable) {
|
|
386
|
+
dragLine.classList.add(Classes.treeTableRowDragLine);
|
|
387
|
+
}
|
|
388
|
+
document.body.appendChild(dragLine);
|
|
389
|
+
return dragLine;
|
|
307
390
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
391
|
+
function positionDragLine(_ref) {
|
|
392
|
+
var lineElement = _ref.lineElement,
|
|
393
|
+
dragZone = _ref.dragZone,
|
|
394
|
+
event = _ref.event;
|
|
395
|
+
var tableContainer = dragZone.getContainer();
|
|
396
|
+
var _dragZone$tableParams = dragZone.tableParams,
|
|
397
|
+
getDataSource = _dragZone$tableParams.getDataSource,
|
|
398
|
+
getTreeModeOptions = _dragZone$tableParams.getTreeModeOptions,
|
|
399
|
+
getRowDragOptions = _dragZone$tableParams.getRowDragOptions;
|
|
400
|
+
var dataSource = getDataSource();
|
|
401
|
+
var treeModeOptions = getTreeModeOptions();
|
|
402
|
+
var rowDragOptions = getRowDragOptions() || {};
|
|
403
|
+
var allowDragIntoRow = rowDragOptions.allowDragIntoRow;
|
|
404
|
+
// 鼠标悬停所在的拖拽行信息
|
|
405
|
+
var dragItem = getDragRowItem(event.target, tableContainer, dataSource);
|
|
406
|
+
if (!dragItem) return;
|
|
407
|
+
var cell = dragItem.cell,
|
|
408
|
+
rowIndex = dragItem.rowIndex,
|
|
409
|
+
row = dragItem.row;
|
|
410
|
+
var bodyRect = tableContainer.getBoundingClientRect();
|
|
411
|
+
var offsetParentSize = getElementRectWithOffset(document.body);
|
|
412
|
+
var isTreeTable = !!treeModeOptions;
|
|
413
|
+
var allowDragInto = isTreeTable && allowDragIntoRow;
|
|
414
|
+
var direction = getDirection(cell, event.clientY, allowDragInto);
|
|
415
|
+
if (isTreeTable) {
|
|
416
|
+
var _context5;
|
|
417
|
+
var iconWidth = treeModeOptions.iconWidth,
|
|
418
|
+
iconIndent = treeModeOptions.iconIndent,
|
|
419
|
+
iconGap = treeModeOptions.iconGap,
|
|
420
|
+
indentSize = treeModeOptions.indentSize,
|
|
421
|
+
treeMetaKey = treeModeOptions.treeMetaKey;
|
|
422
|
+
var expandCell = tableContainer.querySelector(_concatInstanceProperty(_context5 = "tr[data-rowindex=\"".concat(rowIndex, "\"] .")).call(_context5, Classes.tableExtendCell));
|
|
423
|
+
if (expandCell) {
|
|
424
|
+
var _getElementSize2 = _getElementSize(expandCell),
|
|
425
|
+
paddingLeft = _getElementSize2.paddingLeft;
|
|
426
|
+
var expandCellRect = expandCell.getBoundingClientRect();
|
|
427
|
+
var _row$treeMetaKey = row[treeMetaKey],
|
|
428
|
+
rowKey = _row$treeMetaKey.rowKey,
|
|
429
|
+
depth = _row$treeMetaKey.depth,
|
|
430
|
+
isLeaf = _row$treeMetaKey.isLeaf,
|
|
431
|
+
expanded = _row$treeMetaKey.expanded;
|
|
432
|
+
var addWidth = isLeaf ? iconWidth + iconGap : 0;
|
|
433
|
+
var indent = iconIndent + depth * indentSize + addWidth;
|
|
434
|
+
var x = expandCellRect.x,
|
|
435
|
+
_y = expandCellRect.y,
|
|
436
|
+
_height = expandCellRect.height;
|
|
437
|
+
var _top = direction === 'bottom' ? _y + _height - offsetParentSize.top : _y - offsetParentSize.top;
|
|
438
|
+
var offsetX = Math.max(x + paddingLeft + indent - bodyRect.x, 0);
|
|
439
|
+
var _left = bodyRect.x + offsetX - offsetParentSize.left;
|
|
440
|
+
lineElement.style.left = "".concat(_left, "px");
|
|
441
|
+
lineElement.style.top = "".concat(_top, "px");
|
|
442
|
+
lineElement.style.width = "".concat(bodyRect.width - offsetX, "px");
|
|
443
|
+
if (direction === 'into') {
|
|
444
|
+
lineElement.style.display = 'none';
|
|
445
|
+
} else {
|
|
446
|
+
lineElement.style.display = 'block';
|
|
447
|
+
}
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
314
450
|
}
|
|
451
|
+
// 根据鼠标悬停位置所在单元格和显示位置计算拖拽线的位置
|
|
452
|
+
var rect = cell.getBoundingClientRect();
|
|
453
|
+
var y = rect.y,
|
|
454
|
+
height = rect.height;
|
|
455
|
+
var top = direction === 'bottom' ? y + height - offsetParentSize.top : y - offsetParentSize.top;
|
|
456
|
+
var left = bodyRect.x - offsetParentSize.left;
|
|
457
|
+
lineElement.style.left = "".concat(left, "px");
|
|
458
|
+
lineElement.style.top = "".concat(top, "px");
|
|
459
|
+
lineElement.style.width = "".concat(bodyRect.width, "px");
|
|
315
460
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
document.body.style.cursor = 'default';
|
|
461
|
+
function showDragLine(lineElement) {
|
|
462
|
+
lineElement.style.display = 'block';
|
|
319
463
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
var
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
464
|
+
function hiddenDragLine(lineElement) {
|
|
465
|
+
lineElement.style.display = 'none';
|
|
466
|
+
}
|
|
467
|
+
function positionDragElemment(element, event) {
|
|
468
|
+
var _a, _b, _c, _d, _e, _f;
|
|
469
|
+
if (!element) return;
|
|
470
|
+
var elementRect = element.getBoundingClientRect();
|
|
471
|
+
var eleHeight = elementRect.height;
|
|
472
|
+
var browserWidth = (_b = (_a = document.body) === null || _a === void 0 ? void 0 : _a.clientWidth) !== null && _b !== void 0 ? _b : window.innerHeight || ((_c = document.documentElement) === null || _c === void 0 ? void 0 : _c.clientWidth) || 0;
|
|
473
|
+
var browserHeight = (_e = (_d = document.body) === null || _d === void 0 ? void 0 : _d.clientHeight) !== null && _e !== void 0 ? _e : window.innerHeight || ((_f = document.documentElement) === null || _f === void 0 ? void 0 : _f.clientHeight) || 0;
|
|
474
|
+
var offsetParentSize = getElementRectWithOffset(element.offsetParent);
|
|
475
|
+
var clientX = event.clientX,
|
|
476
|
+
clientY = event.clientY;
|
|
477
|
+
var top = clientY - offsetParentSize.top - eleHeight / 2;
|
|
478
|
+
var left = clientX - offsetParentSize.left;
|
|
479
|
+
var windowScrollX = window.pageXOffset;
|
|
480
|
+
var windowScrollY = window.pageYOffset;
|
|
481
|
+
if (browserWidth > 0 && left + element.clientWidth > browserWidth + windowScrollX) {
|
|
482
|
+
left = Math.max(browserWidth + windowScrollX - element.clientWidth, 0);
|
|
483
|
+
}
|
|
484
|
+
if (browserHeight > 0 && top + element.clientHeight > browserHeight + windowScrollY) {
|
|
485
|
+
top = Math.max(browserHeight + windowScrollY - element.clientHeight, 0);
|
|
486
|
+
}
|
|
487
|
+
element.style.left = "".concat(left, "px");
|
|
488
|
+
element.style.top = "".concat(top, "px");
|
|
489
|
+
}
|
|
490
|
+
function getElementRectWithOffset(el) {
|
|
491
|
+
var offsetElementRect = el.getBoundingClientRect();
|
|
492
|
+
var _getElementSize3 = _getElementSize(el),
|
|
493
|
+
borderTopWidth = _getElementSize3.borderTopWidth,
|
|
494
|
+
borderLeftWidth = _getElementSize3.borderLeftWidth,
|
|
495
|
+
borderRightWidth = _getElementSize3.borderRightWidth,
|
|
496
|
+
borderBottomWidth = _getElementSize3.borderBottomWidth;
|
|
329
497
|
return {
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
498
|
+
top: offsetElementRect.top + (borderTopWidth || 0),
|
|
499
|
+
left: offsetElementRect.left + (borderLeftWidth || 0),
|
|
500
|
+
right: offsetElementRect.right + (borderRightWidth || 0),
|
|
501
|
+
bottom: offsetElementRect.bottom + (borderBottomWidth || 0)
|
|
334
502
|
};
|
|
335
503
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
504
|
+
function _getElementSize(el) {
|
|
505
|
+
var _window$getComputedSt = window.getComputedStyle(el),
|
|
506
|
+
height = _window$getComputedSt.height,
|
|
507
|
+
width = _window$getComputedSt.width,
|
|
508
|
+
borderTopWidth = _window$getComputedSt.borderTopWidth,
|
|
509
|
+
borderRightWidth = _window$getComputedSt.borderRightWidth,
|
|
510
|
+
borderBottomWidth = _window$getComputedSt.borderBottomWidth,
|
|
511
|
+
borderLeftWidth = _window$getComputedSt.borderLeftWidth,
|
|
512
|
+
paddingTop = _window$getComputedSt.paddingTop,
|
|
513
|
+
paddingRight = _window$getComputedSt.paddingRight,
|
|
514
|
+
paddingBottom = _window$getComputedSt.paddingBottom,
|
|
515
|
+
paddingLeft = _window$getComputedSt.paddingLeft,
|
|
516
|
+
marginTop = _window$getComputedSt.marginTop,
|
|
517
|
+
marginRight = _window$getComputedSt.marginRight,
|
|
518
|
+
marginBottom = _window$getComputedSt.marginBottom,
|
|
519
|
+
marginLeft = _window$getComputedSt.marginLeft,
|
|
520
|
+
boxSizing = _window$getComputedSt.boxSizing;
|
|
346
521
|
return {
|
|
347
|
-
|
|
348
|
-
|
|
522
|
+
height: parseFloat(height || '0'),
|
|
523
|
+
width: parseFloat(width || '0'),
|
|
524
|
+
borderTopWidth: parseFloat(borderTopWidth || '0'),
|
|
525
|
+
borderRightWidth: parseFloat(borderRightWidth || '0'),
|
|
526
|
+
borderBottomWidth: parseFloat(borderBottomWidth || '0'),
|
|
527
|
+
borderLeftWidth: parseFloat(borderLeftWidth || '0'),
|
|
528
|
+
paddingTop: parseFloat(paddingTop || '0'),
|
|
529
|
+
paddingRight: parseFloat(paddingRight || '0'),
|
|
530
|
+
paddingBottom: parseFloat(paddingBottom || '0'),
|
|
531
|
+
paddingLeft: parseFloat(paddingLeft || '0'),
|
|
532
|
+
marginTop: parseFloat(marginTop || '0'),
|
|
533
|
+
marginRight: parseFloat(marginRight || '0'),
|
|
534
|
+
marginBottom: parseFloat(marginBottom || '0'),
|
|
535
|
+
marginLeft: parseFloat(marginLeft || '0'),
|
|
536
|
+
boxSizing: boxSizing
|
|
349
537
|
};
|
|
350
538
|
}
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
var
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
539
|
+
function removeElement(element) {
|
|
540
|
+
document.body.removeChild(element);
|
|
541
|
+
}
|
|
542
|
+
function setDragElementIcon(element, iconName) {
|
|
543
|
+
var elementIcon = element.querySelector(".".concat(Classes.rowDragElementIcon));
|
|
544
|
+
clearElementChildren(elementIcon);
|
|
545
|
+
iconName = iconName || 'notAllowed';
|
|
546
|
+
var iconElement = document.createElement('span');
|
|
547
|
+
if (iconName === 'move') {
|
|
548
|
+
iconElement.classList.add(Classes.iconMove);
|
|
549
|
+
} else if (iconName === 'notAllowed') {
|
|
550
|
+
iconElement.classList.add(Classes.iconNotAllowed);
|
|
551
|
+
}
|
|
552
|
+
elementIcon.appendChild(iconElement);
|
|
553
|
+
}
|
|
554
|
+
function clearElementChildren(element) {
|
|
555
|
+
while (element && element.firstChild) {
|
|
556
|
+
element.removeChild(element.firstChild);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
function getScrollMoveOffset(tableBody, mouseMoveEvent) {
|
|
560
|
+
var clientY = mouseMoveEvent.clientY;
|
|
561
|
+
var tableBodyClientRect = tableBody.getBoundingClientRect();
|
|
562
|
+
var top = tableBodyClientRect.top,
|
|
563
|
+
height = tableBodyClientRect.height;
|
|
564
|
+
if (clientY >= top + height - SCROLL_START_OFFSET && clientY <= top + height) {
|
|
565
|
+
return SCROLL_OFFSET;
|
|
566
|
+
}
|
|
567
|
+
if (clientY >= top && clientY <= top + SCROLL_START_OFFSET) {
|
|
568
|
+
return -SCROLL_OFFSET;
|
|
569
|
+
}
|
|
570
|
+
return 0;
|
|
571
|
+
}
|
|
572
|
+
function setDragText(element, dragText) {
|
|
573
|
+
var dragTextString = dragText.toString();
|
|
574
|
+
var elementIcon = element.querySelector(".".concat(Classes.rowDragElementLabel));
|
|
575
|
+
var stringNode = document.createTextNode(dragTextString);
|
|
576
|
+
elementIcon.appendChild(stringNode);
|
|
577
|
+
}
|
|
578
|
+
function isMouseOnDropTarget(mouseEvent, target) {
|
|
579
|
+
return target.contains(mouseEvent.target);
|
|
580
|
+
}
|
|
581
|
+
function createDropTargetEvent(dropTarget, event, dragItem, startDropZoneTagret) {
|
|
582
|
+
var dropZoneTarget = dropTarget.getContainer();
|
|
583
|
+
var rect = dropZoneTarget.getBoundingClientRect();
|
|
584
|
+
var x = event.clientX - rect.left;
|
|
585
|
+
var y = event.clientY - rect.top;
|
|
586
|
+
var targetEvent = {
|
|
587
|
+
dragItem: dragItem,
|
|
588
|
+
startDropZoneTagret: startDropZoneTagret,
|
|
589
|
+
dropZoneTarget: dropZoneTarget,
|
|
590
|
+
event: event,
|
|
591
|
+
x: x,
|
|
592
|
+
y: y
|
|
593
|
+
};
|
|
594
|
+
if (dropTarget.isTable) {
|
|
595
|
+
targetEvent.dropZoneTableParams = dropTarget.tableParams;
|
|
596
|
+
}
|
|
597
|
+
return targetEvent;
|
|
598
|
+
}
|
|
599
|
+
function getDirection(cell, clientY) {
|
|
600
|
+
var isTreeTable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
601
|
+
var _cell$getBoundingClie = cell.getBoundingClientRect(),
|
|
602
|
+
height = _cell$getBoundingClie.height,
|
|
603
|
+
y = _cell$getBoundingClie.y;
|
|
604
|
+
var direction = 'bottom';
|
|
605
|
+
if (isTreeTable) {
|
|
606
|
+
if (y + height / 4 > clientY) {
|
|
607
|
+
direction = 'top';
|
|
608
|
+
} else if (y + height * 3 / 4 > clientY) {
|
|
609
|
+
direction = 'into';
|
|
610
|
+
}
|
|
611
|
+
} else if (y + height / 2 > clientY) {
|
|
612
|
+
direction = 'top';
|
|
613
|
+
}
|
|
614
|
+
return direction;
|
|
360
615
|
}
|