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.
Files changed (45) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/module/edit/mixin.js +58 -20
  3. package/es/table/module/filter/mixin.js +12 -10
  4. package/es/table/module/menu/mixin.js +16 -9
  5. package/es/table/module/validator/mixin.js +4 -2
  6. package/es/table/src/methods.js +344 -46
  7. package/es/table/src/store.js +8 -0
  8. package/es/table/src/table.js +26 -9
  9. package/es/ui/index.js +1 -1
  10. package/es/ui/src/log.js +1 -1
  11. package/lib/index.umd.js +518 -104
  12. package/lib/index.umd.min.js +1 -1
  13. package/lib/style.css +1 -1
  14. package/lib/table/module/edit/mixin.js +55 -16
  15. package/lib/table/module/edit/mixin.min.js +1 -1
  16. package/lib/table/module/filter/mixin.js +12 -10
  17. package/lib/table/module/filter/mixin.min.js +1 -1
  18. package/lib/table/module/menu/mixin.js +20 -13
  19. package/lib/table/module/menu/mixin.min.js +1 -1
  20. package/lib/table/module/validator/mixin.js +4 -2
  21. package/lib/table/module/validator/mixin.min.js +1 -1
  22. package/lib/table/src/methods.js +388 -52
  23. package/lib/table/src/methods.min.js +1 -1
  24. package/lib/table/src/store.js +15 -0
  25. package/lib/table/src/store.min.js +1 -0
  26. package/lib/table/src/table.js +28 -9
  27. package/lib/table/src/table.min.js +1 -1
  28. package/lib/ui/index.js +1 -1
  29. package/lib/ui/index.min.js +1 -1
  30. package/lib/ui/src/log.js +1 -1
  31. package/lib/ui/src/log.min.js +1 -1
  32. package/package.json +1 -1
  33. package/packages/table/module/edit/mixin.ts +59 -23
  34. package/packages/table/module/filter/mixin.ts +17 -13
  35. package/packages/table/module/menu/mixin.ts +16 -9
  36. package/packages/table/module/validator/mixin.ts +8 -4
  37. package/packages/table/src/methods.ts +362 -50
  38. package/packages/table/src/store.ts +15 -0
  39. package/packages/table/src/table.ts +27 -9
  40. /package/es/{iconfont.1756083626568.ttf → iconfont.1756272539382.ttf} +0 -0
  41. /package/es/{iconfont.1756083626568.woff → iconfont.1756272539382.woff} +0 -0
  42. /package/es/{iconfont.1756083626568.woff2 → iconfont.1756272539382.woff2} +0 -0
  43. /package/lib/{iconfont.1756083626568.ttf → iconfont.1756272539382.ttf} +0 -0
  44. /package/lib/{iconfont.1756083626568.woff → iconfont.1756272539382.woff} +0 -0
  45. /package/lib/{iconfont.1756083626568.woff2 → iconfont.1756272539382.woff2} +0 -0
@@ -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 (scrollbarOpts.x && scrollbarOpts.x.visible === false) {
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 (scrollbarOpts.y && scrollbarOpts.y.visible === false || $xeGanttView && !scrollbarYToLeft) {
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
- return $xeTable.handleRowDragSwapEvent(null, true, dragRow, prevDragRow, dragPos || defPos, dragToChild === true);
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
- this.handleClearEdit(evnt).then(() => {
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 (this.clearSelected) {
7232
- this.clearSelected();
7266
+ if ($xeTable.clearSelected) {
7267
+ $xeTable.clearSelected();
7233
7268
  }
7234
7269
  if (areaOpts.autoClear) {
7235
- if (this.getCellAreas) {
7236
- const cellAreas = this.getCellAreas();
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
- this.preventEvent(evnt, 'event.clearAreas', {}, () => {
7239
- this.clearCellAreas();
7240
- this.clearCopyCellArea();
7241
- this.emitEvent('clear-cell-area-selection', {
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
- this.emitEvent('keydown-start', {}, evnt);
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
- this.emitEvent('keydown', {}, evnt);
7319
- this.emitEvent('keydown-end', {}, evnt);
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
- this.emitEvent('paste', {}, evnt);
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
- this.emitEvent('copy', {}, evnt);
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
- this.emitEvent('cut', {}, evnt);
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.emitEvent('header-cell-dblclick', Object.assign({
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
- this.emitEvent('cell-dblclick', params, evnt);
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
- handleRowDragDragendEvent(evnt) {
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
- let wrapperEl = $xeTable.$refs.refElem;
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
- const dtClss = ['.vxe-body--row'];
9881
- if ($xeGantt) {
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
- const $xeGrid = $xeTable.$xeGrid;
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;