vxe-table 3.18.0 → 3.18.1
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/es/style.css +1 -1
- package/es/table/module/edit/mixin.js +58 -20
- package/es/table/module/filter/mixin.js +12 -10
- package/es/table/module/menu/mixin.js +16 -9
- package/es/table/module/validator/mixin.js +4 -2
- package/es/table/src/methods.js +344 -46
- package/es/table/src/store.js +8 -0
- package/es/table/src/table.js +26 -9
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +518 -104
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/table/module/edit/mixin.js +55 -16
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/filter/mixin.js +12 -10
- package/lib/table/module/filter/mixin.min.js +1 -1
- package/lib/table/module/menu/mixin.js +20 -13
- package/lib/table/module/menu/mixin.min.js +1 -1
- package/lib/table/module/validator/mixin.js +4 -2
- package/lib/table/module/validator/mixin.min.js +1 -1
- package/lib/table/src/methods.js +388 -52
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/store.js +15 -0
- package/lib/table/src/store.min.js +1 -0
- package/lib/table/src/table.js +28 -9
- package/lib/table/src/table.min.js +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +1 -1
- package/packages/table/module/edit/mixin.ts +59 -23
- package/packages/table/module/filter/mixin.ts +17 -13
- package/packages/table/module/menu/mixin.ts +16 -9
- package/packages/table/module/validator/mixin.ts +8 -4
- package/packages/table/src/methods.ts +362 -50
- package/packages/table/src/store.ts +15 -0
- package/packages/table/src/table.ts +27 -9
- /package/es/{iconfont.1756083626568.ttf → iconfont.1756272539382.ttf} +0 -0
- /package/es/{iconfont.1756083626568.woff → iconfont.1756272539382.woff} +0 -0
- /package/es/{iconfont.1756083626568.woff2 → iconfont.1756272539382.woff2} +0 -0
- /package/lib/{iconfont.1756083626568.ttf → iconfont.1756272539382.ttf} +0 -0
- /package/lib/{iconfont.1756083626568.woff → iconfont.1756272539382.woff} +0 -0
- /package/lib/{iconfont.1756083626568.woff2 → iconfont.1756272539382.woff2} +0 -0
package/lib/table/src/methods.js
CHANGED
|
@@ -13,6 +13,7 @@ var _util = require("./util");
|
|
|
13
13
|
var _vn = require("../../ui/src/vn");
|
|
14
14
|
var _anime = require("./anime");
|
|
15
15
|
var _log = require("../../ui/src/log");
|
|
16
|
+
var _store = require("./store");
|
|
16
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
18
|
const {
|
|
18
19
|
getConfig,
|
|
@@ -27,6 +28,7 @@ const supportMaxRow = 5e6;
|
|
|
27
28
|
const customStorageKey = 'VXE_CUSTOM_STORE';
|
|
28
29
|
const maxYHeight = 5e6;
|
|
29
30
|
const maxXWidth = 5e6;
|
|
31
|
+
let crossTableDragRowObj = null;
|
|
30
32
|
function eqCellValue(row1, row2, field) {
|
|
31
33
|
const val1 = _xeUtils.default.get(row1, field);
|
|
32
34
|
const val2 = _xeUtils.default.get(row2, field);
|
|
@@ -1274,20 +1276,25 @@ function updateStyle($xeTable) {
|
|
|
1274
1276
|
emptyPlaceholderElem.style.top = `${tHeaderHeight}px`;
|
|
1275
1277
|
emptyPlaceholderElem.style.height = bodyWrapperElem ? `${bodyWrapperElem.offsetHeight - osbHeight}px` : '';
|
|
1276
1278
|
}
|
|
1279
|
+
const scrollbarXConf = scrollbarOpts.x || {};
|
|
1277
1280
|
const scrollbarXToTop = $xeTable.computeScrollbarXToTop;
|
|
1281
|
+
const scrollbarYConf = scrollbarOpts.y || {};
|
|
1278
1282
|
const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
|
|
1279
1283
|
let xScrollbarVisible = overflowX ? 'visible' : 'hidden';
|
|
1280
|
-
if ($xeGanttView) {
|
|
1284
|
+
if (scrollbarXConf.visible === 'visible' || $xeGanttView) {
|
|
1281
1285
|
osbHeight = scrollbarHeight;
|
|
1282
1286
|
xScrollbarVisible = 'visible';
|
|
1283
|
-
} else if (
|
|
1287
|
+
} else if (scrollbarXConf.visible === 'hidden' || scrollbarXConf.visible === false) {
|
|
1284
1288
|
osbHeight = 0;
|
|
1285
1289
|
xScrollbarVisible = 'hidden';
|
|
1286
1290
|
}
|
|
1287
1291
|
let yScrollbarVisible = overflowY ? 'visible' : 'hidden';
|
|
1288
|
-
if (
|
|
1292
|
+
if (scrollbarYConf.visible === 'hidden' || scrollbarYConf.visible === false || $xeGanttView && !scrollbarYToLeft) {
|
|
1289
1293
|
osbWidth = 0;
|
|
1290
1294
|
yScrollbarVisible = 'hidden';
|
|
1295
|
+
} else if (scrollbarYConf.visible === 'visible') {
|
|
1296
|
+
osbWidth = scrollbarWidth;
|
|
1297
|
+
yScrollbarVisible = 'visible';
|
|
1291
1298
|
}
|
|
1292
1299
|
let tbHeight = 0;
|
|
1293
1300
|
let bodyMaxHeight = 0;
|
|
@@ -2860,6 +2867,11 @@ function handleTargetEnterEvent($xeTable, isClear) {
|
|
|
2860
2867
|
}
|
|
2861
2868
|
}
|
|
2862
2869
|
}
|
|
2870
|
+
function clearCrossTableDragStatus($xeTable) {
|
|
2871
|
+
const crossTableDragRowInfo = (0, _store.getCrossTableDragRowInfo)($xeTable);
|
|
2872
|
+
crossTableDragRowObj = null;
|
|
2873
|
+
crossTableDragRowInfo.row = null;
|
|
2874
|
+
}
|
|
2863
2875
|
function clearDragStatus($xeTable) {
|
|
2864
2876
|
const reactData = $xeTable;
|
|
2865
2877
|
const {
|
|
@@ -2870,6 +2882,7 @@ function clearDragStatus($xeTable) {
|
|
|
2870
2882
|
clearColDropOrigin($xeTable);
|
|
2871
2883
|
clearRowDropOrigin($xeTable);
|
|
2872
2884
|
hideDropTip($xeTable);
|
|
2885
|
+
clearCrossTableDragStatus($xeTable);
|
|
2873
2886
|
reactData.dragRow = null;
|
|
2874
2887
|
reactData.dragCol = null;
|
|
2875
2888
|
}
|
|
@@ -3074,6 +3087,26 @@ function hideDropTip($xeTable) {
|
|
|
3074
3087
|
cdLineEl.style.display = '';
|
|
3075
3088
|
}
|
|
3076
3089
|
}
|
|
3090
|
+
function clearRowDragData($xeTable) {
|
|
3091
|
+
const $xeGantt = $xeTable.$xeGantt;
|
|
3092
|
+
const reactData = $xeTable;
|
|
3093
|
+
const internalData = $xeTable;
|
|
3094
|
+
let wrapperEl = $xeTable.$refs.refElem;
|
|
3095
|
+
const dtClss = ['.vxe-body--row'];
|
|
3096
|
+
if ($xeGantt) {
|
|
3097
|
+
const ganttContainerElem = $xeGantt.$refs.refGanttContainerElem;
|
|
3098
|
+
if (ganttContainerElem) {
|
|
3099
|
+
wrapperEl = ganttContainerElem;
|
|
3100
|
+
}
|
|
3101
|
+
dtClss.push('.vxe-gantt-view--body-row', '.vxe-gantt-view--chart-row');
|
|
3102
|
+
}
|
|
3103
|
+
hideDropTip($xeTable);
|
|
3104
|
+
clearRowDropOrigin($xeTable);
|
|
3105
|
+
(0, _anime.clearRowAnimate)(wrapperEl, dtClss);
|
|
3106
|
+
internalData.prevDragToChild = false;
|
|
3107
|
+
reactData.dragRow = null;
|
|
3108
|
+
reactData.dragCol = null;
|
|
3109
|
+
}
|
|
3077
3110
|
/**
|
|
3078
3111
|
* 处理显示 tooltip
|
|
3079
3112
|
* @param {Event} evnt 事件
|
|
@@ -5633,7 +5666,9 @@ const Methods = {
|
|
|
5633
5666
|
}
|
|
5634
5667
|
}
|
|
5635
5668
|
}
|
|
5636
|
-
|
|
5669
|
+
const rest = $xeTable.handleRowDragSwapEvent(null, true, dragRow, prevDragRow, dragPos || defPos, dragToChild === true);
|
|
5670
|
+
clearRowDragData($xeTable);
|
|
5671
|
+
return rest;
|
|
5637
5672
|
},
|
|
5638
5673
|
/**
|
|
5639
5674
|
* 获取表格的全量列
|
|
@@ -7213,7 +7248,7 @@ const Methods = {
|
|
|
7213
7248
|
// 如果点击了当前表格之外
|
|
7214
7249
|
!(0, _dom.getEventTargetNode)(evnt, $el).flag) {
|
|
7215
7250
|
setTimeout(() => {
|
|
7216
|
-
|
|
7251
|
+
$xeTable.handleClearEdit(evnt).then(() => {
|
|
7217
7252
|
// 如果存在校验,点击了表格之外则清除
|
|
7218
7253
|
if (!this.isActivated && editRules && validOpts.autoClear) {
|
|
7219
7254
|
this.validErrorMaps = {};
|
|
@@ -7228,17 +7263,17 @@ const Methods = {
|
|
|
7228
7263
|
}
|
|
7229
7264
|
} else if (mouseConfig) {
|
|
7230
7265
|
if (!(0, _dom.getEventTargetNode)(evnt, $el).flag && !($xeGGWrapper && (0, _dom.getEventTargetNode)(evnt, $xeGGWrapper.$el).flag) && !(tableMenu && (0, _dom.getEventTargetNode)(evnt, tableMenu.$el).flag) && !($toolbar && (0, _dom.getEventTargetNode)(evnt, $toolbar.$el).flag)) {
|
|
7231
|
-
if (
|
|
7232
|
-
|
|
7266
|
+
if ($xeTable.clearSelected) {
|
|
7267
|
+
$xeTable.clearSelected();
|
|
7233
7268
|
}
|
|
7234
7269
|
if (areaOpts.autoClear) {
|
|
7235
|
-
if (
|
|
7236
|
-
const cellAreas =
|
|
7270
|
+
if ($xeTable.getCellAreas) {
|
|
7271
|
+
const cellAreas = $xeTable.getCellAreas();
|
|
7237
7272
|
if (cellAreas && cellAreas.length && !(0, _dom.getEventTargetNode)(evnt, document.body, 'vxe-table--ignore-areas-clear').flag) {
|
|
7238
|
-
|
|
7239
|
-
|
|
7240
|
-
|
|
7241
|
-
|
|
7273
|
+
$xeTable.preventEvent(evnt, 'event.clearAreas', {}, () => {
|
|
7274
|
+
$xeTable.clearCellAreas();
|
|
7275
|
+
$xeTable.clearCopyCellArea();
|
|
7276
|
+
$xeTable.dispatchEvent('clear-cell-area-selection', {
|
|
7242
7277
|
cellAreas
|
|
7243
7278
|
}, evnt);
|
|
7244
7279
|
});
|
|
@@ -7277,6 +7312,7 @@ const Methods = {
|
|
|
7277
7312
|
* 表格键盘事件
|
|
7278
7313
|
*/
|
|
7279
7314
|
keydownEvent(evnt) {
|
|
7315
|
+
const $xeTable = this;
|
|
7280
7316
|
const {
|
|
7281
7317
|
filterStore,
|
|
7282
7318
|
ctxMenuStore,
|
|
@@ -7295,7 +7331,7 @@ const Methods = {
|
|
|
7295
7331
|
const isEsc = keyCode === 27;
|
|
7296
7332
|
if (isEsc) {
|
|
7297
7333
|
this.preventEvent(evnt, 'event.keydown', null, () => {
|
|
7298
|
-
|
|
7334
|
+
$xeTable.dispatchEvent('keydown-start', {}, evnt);
|
|
7299
7335
|
if (keyboardConfig && mouseConfig && mouseOpts.area && this.handleKeyboardCellAreaEvent) {
|
|
7300
7336
|
this.handleKeyboardCellAreaEvent(evnt);
|
|
7301
7337
|
} else if (actived.row || filterStore.visible || ctxMenuStore.visible) {
|
|
@@ -7315,8 +7351,8 @@ const Methods = {
|
|
|
7315
7351
|
}
|
|
7316
7352
|
}
|
|
7317
7353
|
}
|
|
7318
|
-
|
|
7319
|
-
|
|
7354
|
+
$xeTable.dispatchEvent('keydown', {}, evnt);
|
|
7355
|
+
$xeTable.dispatchEvent('keydown-end', {}, evnt);
|
|
7320
7356
|
});
|
|
7321
7357
|
}
|
|
7322
7358
|
},
|
|
@@ -7656,6 +7692,7 @@ const Methods = {
|
|
|
7656
7692
|
}
|
|
7657
7693
|
},
|
|
7658
7694
|
handleGlobalPasteEvent(evnt) {
|
|
7695
|
+
const $xeTable = this;
|
|
7659
7696
|
const {
|
|
7660
7697
|
isActivated,
|
|
7661
7698
|
keyboardConfig,
|
|
@@ -7674,10 +7711,11 @@ const Methods = {
|
|
|
7674
7711
|
this.handlePasteCellAreaEvent(evnt);
|
|
7675
7712
|
}
|
|
7676
7713
|
}
|
|
7677
|
-
|
|
7714
|
+
$xeTable.dispatchEvent('paste', {}, evnt);
|
|
7678
7715
|
}
|
|
7679
7716
|
},
|
|
7680
7717
|
handleGlobalCopyEvent(evnt) {
|
|
7718
|
+
const $xeTable = this;
|
|
7681
7719
|
const {
|
|
7682
7720
|
isActivated,
|
|
7683
7721
|
keyboardConfig,
|
|
@@ -7696,10 +7734,11 @@ const Methods = {
|
|
|
7696
7734
|
this.handleCopyCellAreaEvent(evnt);
|
|
7697
7735
|
}
|
|
7698
7736
|
}
|
|
7699
|
-
|
|
7737
|
+
$xeTable.dispatchEvent('copy', {}, evnt);
|
|
7700
7738
|
}
|
|
7701
7739
|
},
|
|
7702
7740
|
handleGlobalCutEvent(evnt) {
|
|
7741
|
+
const $xeTable = this;
|
|
7703
7742
|
const {
|
|
7704
7743
|
isActivated,
|
|
7705
7744
|
keyboardConfig,
|
|
@@ -7718,7 +7757,7 @@ const Methods = {
|
|
|
7718
7757
|
this.handleCutCellAreaEvent(evnt);
|
|
7719
7758
|
}
|
|
7720
7759
|
}
|
|
7721
|
-
|
|
7760
|
+
$xeTable.dispatchEvent('cut', {}, evnt);
|
|
7722
7761
|
}
|
|
7723
7762
|
},
|
|
7724
7763
|
handleGlobalResizeEvent() {
|
|
@@ -9120,7 +9159,8 @@ const Methods = {
|
|
|
9120
9159
|
return $xeTable.$nextTick();
|
|
9121
9160
|
},
|
|
9122
9161
|
triggerHeaderCellDblclickEvent(evnt, params) {
|
|
9123
|
-
this
|
|
9162
|
+
const $xeTable = this;
|
|
9163
|
+
$xeTable.dispatchEvent('header-cell-dblclick', Object.assign({
|
|
9124
9164
|
cell: evnt.currentTarget
|
|
9125
9165
|
}, params), evnt);
|
|
9126
9166
|
},
|
|
@@ -9338,7 +9378,7 @@ const Methods = {
|
|
|
9338
9378
|
}
|
|
9339
9379
|
}
|
|
9340
9380
|
}
|
|
9341
|
-
|
|
9381
|
+
$xeTable.dispatchEvent('cell-dblclick', params, evnt);
|
|
9342
9382
|
},
|
|
9343
9383
|
handleColumnSortEvent(evnt, column) {
|
|
9344
9384
|
const $xeTable = this;
|
|
@@ -9837,12 +9877,273 @@ const Methods = {
|
|
|
9837
9877
|
}
|
|
9838
9878
|
return Promise.resolve(errRest);
|
|
9839
9879
|
},
|
|
9840
|
-
|
|
9880
|
+
/**
|
|
9881
|
+
* 处理跨表拖拽完成
|
|
9882
|
+
*/
|
|
9883
|
+
handleCrossTableRowDragFinishEvent(evnt) {
|
|
9884
|
+
const $xeTable = this;
|
|
9885
|
+
const $xeGantt = $xeTable.$xeGantt;
|
|
9886
|
+
const reactData = $xeTable;
|
|
9887
|
+
const internalData = $xeTable;
|
|
9888
|
+
const crossTableDragRowInfo = (0, _store.getCrossTableDragRowInfo)($xeTable);
|
|
9889
|
+
const {
|
|
9890
|
+
tableData
|
|
9891
|
+
} = reactData;
|
|
9892
|
+
const {
|
|
9893
|
+
fullAllDataRowIdData
|
|
9894
|
+
} = internalData;
|
|
9895
|
+
const rowOpts = $xeTable.computeRowOpts;
|
|
9896
|
+
const cellOpts = $xeTable.computeCellOpts;
|
|
9897
|
+
const defaultRowHeight = $xeTable.computeDefaultRowHeight;
|
|
9898
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
9899
|
+
const {
|
|
9900
|
+
animation,
|
|
9901
|
+
isCrossTableDrag
|
|
9902
|
+
} = rowDragOpts;
|
|
9903
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
9904
|
+
const {
|
|
9905
|
+
mapChildrenField
|
|
9906
|
+
} = treeOpts;
|
|
9907
|
+
const el = $xeTable.$refs.refElem;
|
|
9908
|
+
if (isCrossTableDrag && crossTableDragRowObj && crossTableDragRowInfo) {
|
|
9909
|
+
const {
|
|
9910
|
+
row: dragRow
|
|
9911
|
+
} = crossTableDragRowInfo;
|
|
9912
|
+
if (dragRow) {
|
|
9913
|
+
const dragRowid = (0, _util.getRowid)($xeTable, dragRow);
|
|
9914
|
+
const dragRowRest = fullAllDataRowIdData[dragRowid];
|
|
9915
|
+
let dragRowHeight = 0;
|
|
9916
|
+
let rsIndex = -1;
|
|
9917
|
+
if (dragRowRest) {
|
|
9918
|
+
if (animation) {
|
|
9919
|
+
dragRowHeight = (0, _util.getCellRestHeight)(dragRowRest, cellOpts, rowOpts, defaultRowHeight);
|
|
9920
|
+
}
|
|
9921
|
+
rsIndex = dragRowRest.$index;
|
|
9922
|
+
}
|
|
9923
|
+
const dragRangeList = rsIndex > -1 && rsIndex < tableData.length - 1 ? tableData.slice(rsIndex + 1) : [];
|
|
9924
|
+
const dragList = _xeUtils.default.toTreeArray([dragRow], {
|
|
9925
|
+
updated: true,
|
|
9926
|
+
children: mapChildrenField
|
|
9927
|
+
});
|
|
9928
|
+
$xeTable.remove(dragList).then(() => {
|
|
9929
|
+
if (animation && dragRowHeight && dragRangeList.length) {
|
|
9930
|
+
const $xeGanttView = internalData.xeGanttView;
|
|
9931
|
+
let wrapperEl = el;
|
|
9932
|
+
if ($xeGantt && $xeGanttView) {
|
|
9933
|
+
const ganttContainerElem = $xeGantt.$refs.refGanttContainerElem;
|
|
9934
|
+
if (ganttContainerElem) {
|
|
9935
|
+
wrapperEl = ganttContainerElem;
|
|
9936
|
+
}
|
|
9937
|
+
}
|
|
9938
|
+
const dtClss = [];
|
|
9939
|
+
dragRangeList.forEach(row => {
|
|
9940
|
+
const rowid = (0, _util.getRowid)($xeTable, row);
|
|
9941
|
+
dtClss.push(`.vxe-body--row[rowid="${rowid}"]`);
|
|
9942
|
+
if ($xeGantt) {
|
|
9943
|
+
dtClss.push(`.vxe-gantt-view--body-row[rowid="${rowid}"]`, `.vxe-gantt-view--chart-row[rowid="${rowid}"]`);
|
|
9944
|
+
}
|
|
9945
|
+
});
|
|
9946
|
+
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(','));
|
|
9947
|
+
(0, _anime.moveRowAnimateToTb)(dtTrList, dragRowHeight);
|
|
9948
|
+
}
|
|
9949
|
+
});
|
|
9950
|
+
$xeTable.dispatchEvent('row-remove-dragend', {
|
|
9951
|
+
row: dragRow
|
|
9952
|
+
}, evnt);
|
|
9953
|
+
clearRowDragData($xeTable);
|
|
9954
|
+
clearCrossTableDragStatus($xeTable);
|
|
9955
|
+
}
|
|
9956
|
+
}
|
|
9957
|
+
},
|
|
9958
|
+
/**
|
|
9959
|
+
* 处理跨表拖至新的空表
|
|
9960
|
+
*/
|
|
9961
|
+
handleCrossTableRowDragoverEmptyEvent(evnt) {
|
|
9962
|
+
const $xeTable = this;
|
|
9963
|
+
const reactData = $xeTable;
|
|
9964
|
+
const internalData = $xeTable;
|
|
9965
|
+
const {
|
|
9966
|
+
tableData
|
|
9967
|
+
} = reactData;
|
|
9968
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
9969
|
+
const {
|
|
9970
|
+
isCrossTableDrag
|
|
9971
|
+
} = rowDragOpts;
|
|
9972
|
+
if (isCrossTableDrag && crossTableDragRowObj && !tableData.length) {
|
|
9973
|
+
const {
|
|
9974
|
+
$oldTable
|
|
9975
|
+
} = crossTableDragRowObj;
|
|
9976
|
+
if ($oldTable && $oldTable.xID !== $xeTable.xID) {
|
|
9977
|
+
evnt.preventDefault();
|
|
9978
|
+
crossTableDragRowObj.$newTable = $xeTable;
|
|
9979
|
+
internalData.prevDragRow = null;
|
|
9980
|
+
}
|
|
9981
|
+
}
|
|
9982
|
+
},
|
|
9983
|
+
/**
|
|
9984
|
+
* 处理跨表拖插入
|
|
9985
|
+
*/
|
|
9986
|
+
handleCrossTableRowDragInsertEvent(evnt) {
|
|
9841
9987
|
const $xeTable = this;
|
|
9842
9988
|
const $xeGantt = $xeTable.$xeGantt;
|
|
9843
9989
|
const props = $xeTable;
|
|
9844
9990
|
const reactData = $xeTable;
|
|
9845
9991
|
const internalData = $xeTable;
|
|
9992
|
+
const crossTableDragRowInfo = (0, _store.getCrossTableDragRowInfo)($xeTable);
|
|
9993
|
+
const {
|
|
9994
|
+
treeConfig
|
|
9995
|
+
} = props;
|
|
9996
|
+
const {
|
|
9997
|
+
prevDragRow,
|
|
9998
|
+
prevDragPos,
|
|
9999
|
+
prevDragToChild
|
|
10000
|
+
} = internalData;
|
|
10001
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
10002
|
+
const {
|
|
10003
|
+
animation,
|
|
10004
|
+
isSelfToChildDrag,
|
|
10005
|
+
isCrossTableDrag,
|
|
10006
|
+
dragEndMethod,
|
|
10007
|
+
dragToChildMethod
|
|
10008
|
+
} = rowDragOpts;
|
|
10009
|
+
const rowOpts = $xeTable.computeRowOpts;
|
|
10010
|
+
const cellOpts = $xeTable.computeCellOpts;
|
|
10011
|
+
const defaultRowHeight = $xeTable.computeDefaultRowHeight;
|
|
10012
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
10013
|
+
const {
|
|
10014
|
+
parentField,
|
|
10015
|
+
mapChildrenField
|
|
10016
|
+
} = treeOpts;
|
|
10017
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
10018
|
+
// 跨表拖拽
|
|
10019
|
+
if (isCrossTableDrag && crossTableDragRowObj && crossTableDragRowInfo) {
|
|
10020
|
+
const {
|
|
10021
|
+
row: oldRow
|
|
10022
|
+
} = crossTableDragRowInfo;
|
|
10023
|
+
const {
|
|
10024
|
+
$oldTable
|
|
10025
|
+
} = crossTableDragRowObj;
|
|
10026
|
+
const el = $xeTable.$refs.refElem;
|
|
10027
|
+
if ($oldTable && oldRow) {
|
|
10028
|
+
const dragRow = oldRow;
|
|
10029
|
+
let dragOffsetIndex = -1;
|
|
10030
|
+
if (prevDragRow) {
|
|
10031
|
+
dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
10032
|
+
}
|
|
10033
|
+
const dragParams = {
|
|
10034
|
+
oldRow: dragRow,
|
|
10035
|
+
newRow: prevDragRow,
|
|
10036
|
+
dragRow,
|
|
10037
|
+
dragPos: prevDragPos,
|
|
10038
|
+
dragToChild: !!prevDragToChild,
|
|
10039
|
+
offsetIndex: dragOffsetIndex
|
|
10040
|
+
};
|
|
10041
|
+
const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
|
|
10042
|
+
const errRest = {
|
|
10043
|
+
status: false
|
|
10044
|
+
};
|
|
10045
|
+
Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then(status => {
|
|
10046
|
+
if (!status) {
|
|
10047
|
+
return errRest;
|
|
10048
|
+
}
|
|
10049
|
+
let insertRest = Promise.resolve();
|
|
10050
|
+
if (treeConfig) {
|
|
10051
|
+
const dragList = _xeUtils.default.toTreeArray([dragRow], {
|
|
10052
|
+
updated: true,
|
|
10053
|
+
children: mapChildrenField
|
|
10054
|
+
});
|
|
10055
|
+
$oldTable.handleCrossTableRowDragFinishEvent(evnt);
|
|
10056
|
+
if (prevDragRow) {
|
|
10057
|
+
dragRow[parentField] = prevDragRow[parentField];
|
|
10058
|
+
} else {
|
|
10059
|
+
dragRow[parentField] = null;
|
|
10060
|
+
}
|
|
10061
|
+
dragList.forEach(row => {
|
|
10062
|
+
row[childrenField] = undefined;
|
|
10063
|
+
row[mapChildrenField] = undefined;
|
|
10064
|
+
});
|
|
10065
|
+
if (prevDragRow) {
|
|
10066
|
+
if (prevDragPos === 'bottom') {
|
|
10067
|
+
insertRest = $xeTable.insertNextAt(dragList, prevDragRow);
|
|
10068
|
+
} else {
|
|
10069
|
+
insertRest = $xeTable.insertAt(dragList, prevDragRow);
|
|
10070
|
+
}
|
|
10071
|
+
} else {
|
|
10072
|
+
insertRest = $xeTable.insert(dragList);
|
|
10073
|
+
}
|
|
10074
|
+
} else {
|
|
10075
|
+
$oldTable.handleCrossTableRowDragFinishEvent(evnt);
|
|
10076
|
+
if (prevDragRow) {
|
|
10077
|
+
if (prevDragPos === 'bottom') {
|
|
10078
|
+
insertRest = $xeTable.insertNextAt(dragRow, prevDragRow);
|
|
10079
|
+
} else {
|
|
10080
|
+
insertRest = $xeTable.insertAt(dragRow, prevDragRow);
|
|
10081
|
+
}
|
|
10082
|
+
} else {
|
|
10083
|
+
insertRest = $xeTable.insert(dragRow);
|
|
10084
|
+
}
|
|
10085
|
+
}
|
|
10086
|
+
$xeTable.dispatchEvent('row-insert-dragend', {
|
|
10087
|
+
oldRow,
|
|
10088
|
+
newRow: prevDragRow,
|
|
10089
|
+
dragRow,
|
|
10090
|
+
dragPos: prevDragPos,
|
|
10091
|
+
dragToChild: isDragToChildFlag,
|
|
10092
|
+
offsetIndex: dragOffsetIndex
|
|
10093
|
+
}, evnt);
|
|
10094
|
+
clearRowDragData($xeTable);
|
|
10095
|
+
insertRest.then(() => {
|
|
10096
|
+
const {
|
|
10097
|
+
tableData
|
|
10098
|
+
} = reactData;
|
|
10099
|
+
const {
|
|
10100
|
+
fullAllDataRowIdData
|
|
10101
|
+
} = internalData;
|
|
10102
|
+
const oldRowid = (0, _util.getRowid)($xeTable, dragRow);
|
|
10103
|
+
const oldRowRest = fullAllDataRowIdData[oldRowid];
|
|
10104
|
+
let dragRowHeight = 0;
|
|
10105
|
+
let rsIndex = -1;
|
|
10106
|
+
if (oldRowRest) {
|
|
10107
|
+
if (animation) {
|
|
10108
|
+
dragRowHeight = (0, _util.getCellRestHeight)(oldRowRest, cellOpts, rowOpts, defaultRowHeight);
|
|
10109
|
+
}
|
|
10110
|
+
rsIndex = oldRowRest.$index;
|
|
10111
|
+
}
|
|
10112
|
+
const dragRangeList = rsIndex > -1 ? tableData.slice(rsIndex) : [];
|
|
10113
|
+
if (animation && dragRowHeight && dragRangeList.length) {
|
|
10114
|
+
const $xeGanttView = internalData.xeGanttView;
|
|
10115
|
+
let wrapperEl = el;
|
|
10116
|
+
if ($xeGantt && $xeGanttView) {
|
|
10117
|
+
const ganttContainerElem = $xeGantt.$refs.refGanttContainerElem;
|
|
10118
|
+
if (ganttContainerElem) {
|
|
10119
|
+
wrapperEl = ganttContainerElem;
|
|
10120
|
+
}
|
|
10121
|
+
}
|
|
10122
|
+
const dtClss = [];
|
|
10123
|
+
dragRangeList.forEach(row => {
|
|
10124
|
+
const rowid = (0, _util.getRowid)($xeTable, row);
|
|
10125
|
+
dtClss.push(`.vxe-body--row[rowid="${rowid}"]`);
|
|
10126
|
+
if ($xeGantt) {
|
|
10127
|
+
dtClss.push(`.vxe-gantt-view--body-row[rowid="${rowid}"]`, `.vxe-gantt-view--chart-row[rowid="${rowid}"]`);
|
|
10128
|
+
}
|
|
10129
|
+
});
|
|
10130
|
+
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(','));
|
|
10131
|
+
(0, _anime.moveRowAnimateToTb)(dtTrList, -dragRowHeight);
|
|
10132
|
+
}
|
|
10133
|
+
});
|
|
10134
|
+
});
|
|
10135
|
+
}
|
|
10136
|
+
}
|
|
10137
|
+
},
|
|
10138
|
+
hideCrossTableRowDropClearStatus() {
|
|
10139
|
+
const $xeTable = this;
|
|
10140
|
+
hideDropTip($xeTable);
|
|
10141
|
+
},
|
|
10142
|
+
handleRowDragDragendEvent(evnt) {
|
|
10143
|
+
const $xeTable = this;
|
|
10144
|
+
const props = $xeTable;
|
|
10145
|
+
const reactData = $xeTable;
|
|
10146
|
+
const internalData = $xeTable;
|
|
9846
10147
|
const {
|
|
9847
10148
|
treeConfig
|
|
9848
10149
|
} = props;
|
|
@@ -9862,7 +10163,23 @@ const Methods = {
|
|
|
9862
10163
|
prevDragRow,
|
|
9863
10164
|
prevDragPos
|
|
9864
10165
|
} = internalData;
|
|
9865
|
-
|
|
10166
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
10167
|
+
const {
|
|
10168
|
+
isCrossTableDrag,
|
|
10169
|
+
isCrossDrag
|
|
10170
|
+
} = rowDragOpts;
|
|
10171
|
+
// 跨表拖拽
|
|
10172
|
+
if (isCrossTableDrag && crossTableDragRowObj) {
|
|
10173
|
+
const {
|
|
10174
|
+
$newTable
|
|
10175
|
+
} = crossTableDragRowObj;
|
|
10176
|
+
if ($newTable && $newTable.xID !== $xeTable.xID) {
|
|
10177
|
+
if (!treeConfig || isCrossDrag) {
|
|
10178
|
+
$newTable.handleCrossTableRowDragInsertEvent(evnt);
|
|
10179
|
+
}
|
|
10180
|
+
return;
|
|
10181
|
+
}
|
|
10182
|
+
}
|
|
9866
10183
|
if (treeConfig && lazy && prevDragToChild) {
|
|
9867
10184
|
// 懒加载
|
|
9868
10185
|
const newRowid = (0, _util.getRowid)($xeTable, prevDragRow);
|
|
@@ -9877,20 +10194,8 @@ const Methods = {
|
|
|
9877
10194
|
} else {
|
|
9878
10195
|
$xeTable.handleRowDragSwapEvent(evnt, true, dragRow, prevDragRow, prevDragPos, prevDragToChild);
|
|
9879
10196
|
}
|
|
9880
|
-
|
|
9881
|
-
|
|
9882
|
-
const ganttContainerElem = $xeGantt.$refs.refGanttContainerElem;
|
|
9883
|
-
if (ganttContainerElem) {
|
|
9884
|
-
wrapperEl = ganttContainerElem;
|
|
9885
|
-
}
|
|
9886
|
-
dtClss.push('.vxe-gantt-view--body-row', '.vxe-gantt-view--chart-row');
|
|
9887
|
-
}
|
|
9888
|
-
hideDropTip($xeTable);
|
|
9889
|
-
clearRowDropOrigin($xeTable);
|
|
9890
|
-
(0, _anime.clearRowAnimate)(wrapperEl, dtClss);
|
|
9891
|
-
internalData.prevDragToChild = false;
|
|
9892
|
-
reactData.dragRow = null;
|
|
9893
|
-
reactData.dragCol = null;
|
|
10197
|
+
clearRowDragData($xeTable);
|
|
10198
|
+
clearCrossTableDragStatus($xeTable);
|
|
9894
10199
|
},
|
|
9895
10200
|
handleRowDragDragoverEvent(evnt) {
|
|
9896
10201
|
const $xeTable = this;
|
|
@@ -9917,9 +10222,10 @@ const Methods = {
|
|
|
9917
10222
|
const {
|
|
9918
10223
|
isPeerDrag,
|
|
9919
10224
|
isCrossDrag,
|
|
9920
|
-
isToChildDrag
|
|
10225
|
+
isToChildDrag,
|
|
10226
|
+
isCrossTableDrag
|
|
9921
10227
|
} = rowDragOpts;
|
|
9922
|
-
if (!dragRow) {
|
|
10228
|
+
if (!dragRow && !(isCrossTableDrag && (!treeConfig || isCrossDrag) && crossTableDragRowObj)) {
|
|
9923
10229
|
evnt.preventDefault();
|
|
9924
10230
|
return;
|
|
9925
10231
|
}
|
|
@@ -9928,18 +10234,40 @@ const Methods = {
|
|
|
9928
10234
|
const rowid = trEl.getAttribute('rowid') || '';
|
|
9929
10235
|
const rest = fullAllDataRowIdData[rowid];
|
|
9930
10236
|
if (rest) {
|
|
10237
|
+
evnt.preventDefault();
|
|
9931
10238
|
const row = rest.row;
|
|
9932
10239
|
const rowid = (0, _util.getRowid)($xeTable, row);
|
|
9933
10240
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
9934
|
-
evnt.preventDefault();
|
|
9935
|
-
const {
|
|
9936
|
-
dragRow
|
|
9937
|
-
} = reactData;
|
|
9938
10241
|
const offsetY = evnt.clientY - trEl.getBoundingClientRect().y;
|
|
9939
10242
|
const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom';
|
|
9940
|
-
internalData.prevDragToChild = !!(treeConfig && transform && isToChildDrag && isControlKey);
|
|
10243
|
+
internalData.prevDragToChild = !!(treeConfig && transform && isCrossDrag && isToChildDrag && isControlKey);
|
|
9941
10244
|
internalData.prevDragRow = row;
|
|
9942
10245
|
internalData.prevDragPos = dragPos;
|
|
10246
|
+
// 跨表拖拽
|
|
10247
|
+
if (isCrossTableDrag && (!treeConfig || isCrossDrag) && crossTableDragRowObj) {
|
|
10248
|
+
const {
|
|
10249
|
+
$oldTable,
|
|
10250
|
+
$newTable
|
|
10251
|
+
} = crossTableDragRowObj;
|
|
10252
|
+
if ($oldTable) {
|
|
10253
|
+
const oldTableReactData = $oldTable;
|
|
10254
|
+
if ($oldTable.xID === $xeTable.xID) {
|
|
10255
|
+
if ($newTable) {
|
|
10256
|
+
$newTable.hideCrossTableRowDropClearStatus();
|
|
10257
|
+
}
|
|
10258
|
+
reactData.isCrossDragRow = false;
|
|
10259
|
+
oldTableReactData.isCrossDragRow = false;
|
|
10260
|
+
crossTableDragRowObj.$newTable = null;
|
|
10261
|
+
} else if (!treeConfig || isCrossDrag) {
|
|
10262
|
+
$oldTable.hideCrossTableRowDropClearStatus();
|
|
10263
|
+
oldTableReactData.isCrossDragRow = true;
|
|
10264
|
+
reactData.dragTipText = oldTableReactData.dragTipText;
|
|
10265
|
+
crossTableDragRowObj.$newTable = $xeTable;
|
|
10266
|
+
showDropTip($xeTable, evnt, trEl, null, true, dragPos);
|
|
10267
|
+
return;
|
|
10268
|
+
}
|
|
10269
|
+
}
|
|
10270
|
+
}
|
|
9943
10271
|
if ($xeTable.eqRow(dragRow, row) || isControlKey && treeConfig && lazy && row[hasChildField] && rowRest && !rowRest.treeLoaded || !isCrossDrag && treeConfig && transform && (isPeerDrag ? dragRow[parentField] !== row[parentField] : rest.level)) {
|
|
9944
10272
|
showDropTip($xeTable, evnt, trEl, null, false, dragPos);
|
|
9945
10273
|
return;
|
|
@@ -9957,12 +10285,14 @@ const Methods = {
|
|
|
9957
10285
|
const $xeTable = this;
|
|
9958
10286
|
const props = $xeTable;
|
|
9959
10287
|
const reactData = $xeTable;
|
|
10288
|
+
const crossTableDragRowInfo = (0, _store.getCrossTableDragRowInfo)($xeTable);
|
|
9960
10289
|
evnt.stopPropagation();
|
|
9961
10290
|
const {
|
|
9962
10291
|
dragConfig
|
|
9963
10292
|
} = props;
|
|
9964
10293
|
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
9965
10294
|
const {
|
|
10295
|
+
isCrossTableDrag,
|
|
9966
10296
|
trigger,
|
|
9967
10297
|
dragStartMethod
|
|
9968
10298
|
} = rowDragOpts;
|
|
@@ -9978,10 +10308,19 @@ const Methods = {
|
|
|
9978
10308
|
trEl.draggable = false;
|
|
9979
10309
|
reactData.dragRow = null;
|
|
9980
10310
|
reactData.dragCol = null;
|
|
10311
|
+
clearCrossTableDragStatus($xeTable);
|
|
9981
10312
|
hideDropTip($xeTable);
|
|
9982
10313
|
return;
|
|
9983
10314
|
}
|
|
10315
|
+
if (isCrossTableDrag) {
|
|
10316
|
+
crossTableDragRowInfo.row = row;
|
|
10317
|
+
crossTableDragRowObj = {
|
|
10318
|
+
$oldTable: $xeTable,
|
|
10319
|
+
$newTable: null
|
|
10320
|
+
};
|
|
10321
|
+
}
|
|
9984
10322
|
reactData.dragRow = row;
|
|
10323
|
+
reactData.isCrossDragRow = false;
|
|
9985
10324
|
reactData.dragCol = null;
|
|
9986
10325
|
trEl.draggable = true;
|
|
9987
10326
|
updateRowDropOrigin($xeTable, row);
|
|
@@ -10327,6 +10666,7 @@ const Methods = {
|
|
|
10327
10666
|
internalData.prevDragToChild = false;
|
|
10328
10667
|
reactData.dragRow = null;
|
|
10329
10668
|
reactData.dragCol = null;
|
|
10669
|
+
clearCrossTableDragStatus($xeTable);
|
|
10330
10670
|
},
|
|
10331
10671
|
handleHeaderCellDragDragoverEvent(evnt) {
|
|
10332
10672
|
const $xeTable = this;
|
|
@@ -10421,11 +10761,13 @@ const Methods = {
|
|
|
10421
10761
|
reactData.dragRow = null;
|
|
10422
10762
|
reactData.dragCol = null;
|
|
10423
10763
|
hideDropTip($xeTable);
|
|
10764
|
+
clearCrossTableDragStatus($xeTable);
|
|
10424
10765
|
return;
|
|
10425
10766
|
}
|
|
10426
10767
|
reactData.dragCol = column;
|
|
10427
10768
|
reactData.dragRow = null;
|
|
10428
10769
|
thEl.draggable = true;
|
|
10770
|
+
clearCrossTableDragStatus($xeTable);
|
|
10429
10771
|
updateColDropOrigin($xeTable, column);
|
|
10430
10772
|
updateColDropTipContent($xeTable, thEl);
|
|
10431
10773
|
$xeTable.dispatchEvent('column-dragstart', params, evnt);
|
|
@@ -10435,6 +10777,7 @@ const Methods = {
|
|
|
10435
10777
|
const reactData = $xeTable;
|
|
10436
10778
|
clearColDropOrigin($xeTable);
|
|
10437
10779
|
hideDropTip($xeTable);
|
|
10780
|
+
clearCrossTableDragStatus($xeTable);
|
|
10438
10781
|
reactData.dragRow = null;
|
|
10439
10782
|
reactData.dragCol = null;
|
|
10440
10783
|
},
|
|
@@ -12838,14 +13181,7 @@ const Methods = {
|
|
|
12838
13181
|
// 已废弃,使用 dispatchEvent
|
|
12839
13182
|
emitEvent(type, params, evnt) {
|
|
12840
13183
|
const $xeTable = this;
|
|
12841
|
-
|
|
12842
|
-
const $xeGantt = $xeTable.$xeGantt;
|
|
12843
|
-
$xeTable.$emit(type, createEvent(evnt, {
|
|
12844
|
-
$table: $xeTable,
|
|
12845
|
-
$grid: $xeGrid,
|
|
12846
|
-
$gantt: $xeGantt,
|
|
12847
|
-
$event: evnt
|
|
12848
|
-
}));
|
|
13184
|
+
$xeTable.dispatchEvent(type, params, evnt);
|
|
12849
13185
|
},
|
|
12850
13186
|
focus() {
|
|
12851
13187
|
this.isActivated = true;
|