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