vxe-table 3.11.21 → 3.11.23

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 (154) hide show
  1. package/es/{iconfont.1733469864818.ttf → iconfont.1733805838288.ttf} +0 -0
  2. package/es/iconfont.1733805838288.woff +0 -0
  3. package/es/iconfont.1733805838288.woff2 +0 -0
  4. package/es/index.css +1 -1
  5. package/es/index.min.css +1 -1
  6. package/es/locale/lang/ar-EG.js +2 -0
  7. package/es/locale/lang/de-DE.js +2 -0
  8. package/es/locale/lang/en-US.js +3 -1
  9. package/es/locale/lang/es-ES.js +2 -0
  10. package/es/locale/lang/fr-FR.js +2 -0
  11. package/es/locale/lang/hu-HU.js +2 -0
  12. package/es/locale/lang/hy-AM.js +2 -0
  13. package/es/locale/lang/ja-JP.js +2 -0
  14. package/es/locale/lang/ko-KR.js +2 -0
  15. package/es/locale/lang/nb-NO.js +2 -0
  16. package/es/locale/lang/pt-BR.js +2 -0
  17. package/es/locale/lang/ru-RU.js +2 -0
  18. package/es/locale/lang/ug-CN.js +2 -0
  19. package/es/locale/lang/uk-UA.js +2 -0
  20. package/es/locale/lang/vi-VN.js +2 -0
  21. package/es/locale/lang/zh-CHT.js +2 -0
  22. package/es/locale/lang/zh-CN.js +2 -0
  23. package/es/style.css +1 -1
  24. package/es/style.min.css +1 -1
  25. package/es/table/module/custom/mixin.js +8 -3
  26. package/es/table/module/custom/panel.js +44 -27
  27. package/es/table/render/index.js +26 -6
  28. package/es/table/src/body.js +2 -2
  29. package/es/table/src/cell.js +7 -2
  30. package/es/table/src/header.js +1 -1
  31. package/es/table/src/methods.js +195 -48
  32. package/es/table/src/table.js +31 -4
  33. package/es/table/style.css +62 -4
  34. package/es/table/style.min.css +1 -1
  35. package/es/ui/index.js +4 -1
  36. package/es/ui/src/log.js +1 -1
  37. package/es/vxe-table/style.css +62 -4
  38. package/es/vxe-table/style.min.css +1 -1
  39. package/lib/{iconfont.1733469864818.ttf → iconfont.1733805838288.ttf} +0 -0
  40. package/lib/iconfont.1733805838288.woff +0 -0
  41. package/lib/iconfont.1733805838288.woff2 +0 -0
  42. package/lib/index.css +1 -1
  43. package/lib/index.min.css +1 -1
  44. package/lib/index.umd.js +369 -106
  45. package/lib/index.umd.min.js +1 -1
  46. package/lib/locale/lang/ar-EG.js +2 -0
  47. package/lib/locale/lang/ar-EG.min.js +1 -1
  48. package/lib/locale/lang/de-DE.js +2 -0
  49. package/lib/locale/lang/de-DE.min.js +1 -1
  50. package/lib/locale/lang/en-US.js +3 -1
  51. package/lib/locale/lang/en-US.min.js +1 -1
  52. package/lib/locale/lang/en-US.umd.js +3 -1
  53. package/lib/locale/lang/es-ES.js +2 -0
  54. package/lib/locale/lang/es-ES.min.js +1 -1
  55. package/lib/locale/lang/es-ES.umd.js +2 -0
  56. package/lib/locale/lang/fr-FR.js +2 -0
  57. package/lib/locale/lang/fr-FR.min.js +1 -1
  58. package/lib/locale/lang/hu-HU.js +2 -0
  59. package/lib/locale/lang/hu-HU.min.js +1 -1
  60. package/lib/locale/lang/hu-HU.umd.js +2 -0
  61. package/lib/locale/lang/hy-AM.js +2 -0
  62. package/lib/locale/lang/hy-AM.min.js +1 -1
  63. package/lib/locale/lang/ja-JP.js +2 -0
  64. package/lib/locale/lang/ja-JP.min.js +1 -1
  65. package/lib/locale/lang/ja-JP.umd.js +2 -0
  66. package/lib/locale/lang/ko-KR.js +2 -0
  67. package/lib/locale/lang/ko-KR.min.js +1 -1
  68. package/lib/locale/lang/ko-KR.umd.js +2 -0
  69. package/lib/locale/lang/nb-NO.js +2 -0
  70. package/lib/locale/lang/nb-NO.min.js +1 -1
  71. package/lib/locale/lang/pt-BR.js +2 -0
  72. package/lib/locale/lang/pt-BR.min.js +1 -1
  73. package/lib/locale/lang/pt-BR.umd.js +2 -0
  74. package/lib/locale/lang/ru-RU.js +2 -0
  75. package/lib/locale/lang/ru-RU.min.js +1 -1
  76. package/lib/locale/lang/ru-RU.umd.js +2 -0
  77. package/lib/locale/lang/ug-CN.js +2 -0
  78. package/lib/locale/lang/ug-CN.min.js +1 -1
  79. package/lib/locale/lang/uk-UA.js +2 -0
  80. package/lib/locale/lang/uk-UA.min.js +1 -1
  81. package/lib/locale/lang/uk-UA.umd.js +2 -0
  82. package/lib/locale/lang/vi-VN.js +2 -0
  83. package/lib/locale/lang/vi-VN.min.js +1 -1
  84. package/lib/locale/lang/zh-CHT.js +2 -0
  85. package/lib/locale/lang/zh-CHT.min.js +1 -1
  86. package/lib/locale/lang/zh-CHT.umd.js +2 -0
  87. package/lib/locale/lang/zh-CN.js +2 -0
  88. package/lib/locale/lang/zh-CN.min.js +1 -1
  89. package/lib/locale/lang/zh-CN.umd.js +2 -0
  90. package/lib/style.css +1 -1
  91. package/lib/style.min.css +1 -1
  92. package/lib/table/module/custom/mixin.js +8 -3
  93. package/lib/table/module/custom/mixin.min.js +1 -1
  94. package/lib/table/module/custom/panel.js +49 -37
  95. package/lib/table/module/custom/panel.min.js +1 -1
  96. package/lib/table/render/index.js +38 -6
  97. package/lib/table/render/index.min.js +1 -1
  98. package/lib/table/src/body.js +2 -2
  99. package/lib/table/src/body.min.js +1 -1
  100. package/lib/table/src/cell.js +6 -1
  101. package/lib/table/src/cell.min.js +1 -1
  102. package/lib/table/src/header.js +1 -1
  103. package/lib/table/src/header.min.js +1 -1
  104. package/lib/table/src/methods.js +232 -51
  105. package/lib/table/src/methods.min.js +1 -1
  106. package/lib/table/src/table.js +25 -3
  107. package/lib/table/src/table.min.js +1 -1
  108. package/lib/table/style/style.css +62 -4
  109. package/lib/table/style/style.min.css +1 -1
  110. package/lib/ui/index.js +4 -1
  111. package/lib/ui/index.min.js +1 -1
  112. package/lib/ui/src/log.js +1 -1
  113. package/lib/ui/src/log.min.js +1 -1
  114. package/lib/vxe-table/style/style.css +62 -4
  115. package/lib/vxe-table/style/style.min.css +1 -1
  116. package/package.json +2 -2
  117. package/packages/locale/lang/ar-EG.ts +2 -0
  118. package/packages/locale/lang/de-DE.ts +2 -0
  119. package/packages/locale/lang/en-US.ts +3 -1
  120. package/packages/locale/lang/es-ES.ts +2 -0
  121. package/packages/locale/lang/fr-FR.ts +2 -0
  122. package/packages/locale/lang/hu-HU.ts +2 -0
  123. package/packages/locale/lang/hy-AM.ts +2 -0
  124. package/packages/locale/lang/ja-JP.ts +2 -0
  125. package/packages/locale/lang/ko-KR.ts +2 -0
  126. package/packages/locale/lang/nb-NO.ts +2 -0
  127. package/packages/locale/lang/pt-BR.ts +2 -0
  128. package/packages/locale/lang/ru-RU.ts +2 -0
  129. package/packages/locale/lang/ug-CN.ts +2 -0
  130. package/packages/locale/lang/uk-UA.ts +2 -0
  131. package/packages/locale/lang/vi-VN.ts +2 -0
  132. package/packages/locale/lang/zh-CHT.ts +2 -0
  133. package/packages/locale/lang/zh-CN.ts +2 -0
  134. package/packages/table/module/custom/mixin.ts +9 -3
  135. package/packages/table/module/custom/panel.ts +48 -27
  136. package/packages/table/render/index.ts +24 -5
  137. package/packages/table/src/body.ts +2 -2
  138. package/packages/table/src/cell.ts +8 -2
  139. package/packages/table/src/header.ts +1 -1
  140. package/packages/table/src/methods.ts +209 -50
  141. package/packages/table/src/table.ts +34 -4
  142. package/packages/ui/index.ts +3 -0
  143. package/styles/components/icon.scss +13 -1
  144. package/styles/components/table.scss +53 -3
  145. package/styles/icon/iconfont.ttf +0 -0
  146. package/styles/icon/iconfont.woff +0 -0
  147. package/styles/icon/iconfont.woff2 +0 -0
  148. package/styles/theme/dark.scss +1 -0
  149. package/styles/theme/light.scss +1 -0
  150. package/styles/variable.scss +1 -0
  151. package/es/iconfont.1733469864818.woff +0 -0
  152. package/es/iconfont.1733469864818.woff2 +0 -0
  153. package/lib/iconfont.1733469864818.woff +0 -0
  154. package/lib/iconfont.1733469864818.woff2 +0 -0
@@ -414,7 +414,7 @@ const updateColDropTipContent = ($xeTable, tdEl) => {
414
414
  }
415
415
  reactData.dragTipText = tipContent;
416
416
  };
417
- function showDropTip($xeTable, evnt, trEl, thEl, dragPos) {
417
+ function showDropTip($xeTable, evnt, trEl, thEl, showLine, dragPos) {
418
418
  const reactData = $xeTable;
419
419
  const el = $xeTable.$refs.refElem;
420
420
  if (!el) {
@@ -425,27 +425,33 @@ function showDropTip($xeTable, evnt, trEl, thEl, dragPos) {
425
425
  if (trEl) {
426
426
  const rdLineEl = $xeTable.$refs.refDragRowLineElem;
427
427
  if (rdLineEl) {
428
- const trRect = trEl.getBoundingClientRect();
429
- let top = Math.max(1, trRect.y - wrapperRect.y);
430
- if (dragPos === 'bottom') {
431
- top = Math.min(wrapperRect.height - 1, trRect.y - wrapperRect.y + trRect.height);
428
+ if (showLine) {
429
+ const trRect = trEl.getBoundingClientRect();
430
+ rdLineEl.style.display = 'block';
431
+ rdLineEl.style.top = `${Math.max(1, trRect.y - wrapperRect.y)}px`;
432
+ rdLineEl.style.height = `${trRect.height}px`;
433
+ rdLineEl.style.width = `${wrapperRect.width - scrollbarWidth}px`;
434
+ rdLineEl.setAttribute('drag-pos', dragPos);
435
+ }
436
+ else {
437
+ rdLineEl.style.display = '';
432
438
  }
433
- rdLineEl.style.top = `${top}px`;
434
- rdLineEl.style.width = `${wrapperRect.width - scrollbarWidth}px`;
435
- rdLineEl.style.display = 'block';
436
439
  }
437
440
  }
438
441
  else if (thEl) {
439
442
  const cdLineEl = $xeTable.$refs.refDragColLineElem;
440
443
  if (cdLineEl) {
441
- const thRect = thEl.getBoundingClientRect();
442
- let left = Math.max(1, thRect.x - wrapperRect.x);
443
- if (dragPos === 'right') {
444
- left = Math.min(wrapperRect.width - 2, thRect.x - wrapperRect.x + thRect.width);
444
+ if (showLine) {
445
+ const thRect = thEl.getBoundingClientRect();
446
+ cdLineEl.style.display = 'block';
447
+ cdLineEl.style.left = `${Math.max(1, thRect.x - wrapperRect.x)}px`;
448
+ cdLineEl.style.width = `${thRect.width}px`;
449
+ cdLineEl.style.height = `${wrapperRect.height - scrollbarHeight}px`;
450
+ cdLineEl.setAttribute('drag-pos', dragPos);
451
+ }
452
+ else {
453
+ cdLineEl.style.display = '';
445
454
  }
446
- cdLineEl.style.left = `${left}px`;
447
- cdLineEl.style.height = `${wrapperRect.height - scrollbarHeight}px`;
448
- cdLineEl.style.display = 'block';
449
455
  }
450
456
  }
451
457
  const rdTipEl = $xeTable.$refs.refDragTipElem;
@@ -453,6 +459,7 @@ function showDropTip($xeTable, evnt, trEl, thEl, dragPos) {
453
459
  rdTipEl.style.display = 'block';
454
460
  rdTipEl.style.top = `${Math.min(el.clientHeight - el.scrollTop - rdTipEl.clientHeight, evnt.clientY - wrapperRect.y)}px`;
455
461
  rdTipEl.style.left = `${Math.min(el.clientWidth - el.scrollLeft - rdTipEl.clientWidth - 16, evnt.clientX - wrapperRect.x)}px`;
462
+ rdTipEl.setAttribute('drag-status', showLine ? 'normal' : 'disabled');
456
463
  }
457
464
  }
458
465
  const hideDropTip = ($xeTable) => {
@@ -932,6 +939,7 @@ const Methods = {
932
939
  cacheItem = { row, rowid, seq, index: -1, _index: -1, $index: -1, items, parent, level, height: 0 };
933
940
  }
934
941
  if (isSource) {
942
+ cacheItem.level = level;
935
943
  cacheItem.index = treeConfig && parent ? -1 : index;
936
944
  fullDataRowIdMaps[rowid] = cacheItem;
937
945
  }
@@ -1634,6 +1642,15 @@ const Methods = {
1634
1642
  tableColumn: this.tableColumn.slice(0)
1635
1643
  };
1636
1644
  },
1645
+ /**
1646
+ * 获取表格的全量列
1647
+ */
1648
+ getFullColumns() {
1649
+ const $xeTable = this;
1650
+ const internalData = $xeTable;
1651
+ const { collectColumn } = internalData;
1652
+ return collectColumn.slice(0);
1653
+ },
1637
1654
  /**
1638
1655
  * 获取数据,和 data 的行为一致,也可以指定索引获取数据
1639
1656
  */
@@ -2000,6 +2017,28 @@ const Methods = {
2000
2017
  footerData: footerTableData.slice(0)
2001
2018
  };
2002
2019
  },
2020
+ /**
2021
+ * 获取表格的全量数据,如果是 tree-config 则返回带层级的树结构
2022
+ */
2023
+ getFullData() {
2024
+ const $xeTable = this;
2025
+ const props = $xeTable;
2026
+ const internalData = $xeTable;
2027
+ const { treeConfig } = props;
2028
+ const { tableFullData, tableFullTreeData } = internalData;
2029
+ if (treeConfig) {
2030
+ const treeOpts = $xeTable.computeTreeOpts;
2031
+ const { transform, mapChildrenField } = treeOpts;
2032
+ const childrenField = treeOpts.children || treeOpts.childrenField;
2033
+ if (transform) {
2034
+ return XEUtils.toArrayTree(XEUtils.toTreeArray(tableFullTreeData, {
2035
+ children: mapChildrenField
2036
+ }), { children: childrenField });
2037
+ }
2038
+ return tableFullTreeData.slice(0);
2039
+ }
2040
+ return tableFullData.slice(0);
2041
+ },
2003
2042
  /**
2004
2043
  * 处理数据加载默认行为
2005
2044
  * 默认执行一次,除非被重置
@@ -2197,7 +2236,10 @@ const Methods = {
2197
2236
  return this.refreshColumn(true);
2198
2237
  },
2199
2238
  handleCustomRestore(storeData) {
2200
- let { collectColumn } = this;
2239
+ const $xetable = this;
2240
+ const reactData = $xetable;
2241
+ const internalData = $xetable;
2242
+ let { collectColumn } = internalData;
2201
2243
  const { resizableData, sortData, visibleData, fixedData } = storeData;
2202
2244
  let hasCustomSort = false;
2203
2245
  // 处理还原
@@ -2224,9 +2266,13 @@ const Methods = {
2224
2266
  // 如果自定义了顺序
2225
2267
  if (hasCustomSort) {
2226
2268
  collectColumn = XEUtils.orderBy(collectColumn, 'renderSortNumber');
2227
- this.collectColumn = collectColumn;
2228
- this.tableFullColumn = getColumnList(collectColumn);
2269
+ internalData.collectColumn = collectColumn;
2270
+ internalData.tableFullColumn = getColumnList(collectColumn);
2229
2271
  }
2272
+ reactData.isCustomStatus = true;
2273
+ }
2274
+ else {
2275
+ reactData.isCustomStatus = false;
2230
2276
  }
2231
2277
  },
2232
2278
  /**
@@ -4678,13 +4724,28 @@ const Methods = {
4678
4724
  this.emitEvent('radio-change', Object.assign({ oldValue, newValue }, params), evnt);
4679
4725
  }
4680
4726
  },
4727
+ triggerCurrentColumnEvent(evnt, params) {
4728
+ const $xeTable = this;
4729
+ const columnOpts = $xeTable.computeColumnOpts;
4730
+ const { currentMethod } = columnOpts;
4731
+ const { column } = params;
4732
+ if (!currentMethod || currentMethod({ column })) {
4733
+ $xeTable.setCurrentColumn(column);
4734
+ }
4735
+ },
4681
4736
  triggerCurrentRowEvent(evnt, params) {
4682
- const { currentRow: oldValue } = this;
4737
+ const $xeTable = this;
4738
+ const reactData = $xeTable;
4739
+ const { currentRow: oldValue } = reactData;
4740
+ const rowOpts = $xeTable.computeRowOpts;
4741
+ const { currentMethod } = rowOpts;
4683
4742
  const { row: newValue } = params;
4684
4743
  const isChange = oldValue !== newValue;
4685
- this.setCurrentRow(newValue);
4686
- if (isChange) {
4687
- this.emitEvent('current-change', Object.assign({ oldValue, newValue }, params), evnt);
4744
+ if (!currentMethod || currentMethod({ row: newValue })) {
4745
+ $xeTable.setCurrentRow(newValue);
4746
+ if (isChange) {
4747
+ $xeTable.dispatchEvent('current-change', Object.assign({ oldValue, newValue }, params), evnt);
4748
+ }
4688
4749
  }
4689
4750
  },
4690
4751
  /**
@@ -4801,7 +4862,7 @@ const Methods = {
4801
4862
  }
4802
4863
  this.emitEvent('header-cell-click', Object.assign({ triggerResizable, triggerSort, triggerFilter, cell }, params), evnt);
4803
4864
  if (this.columnOpts.isCurrent || this.highlightCurrentColumn) {
4804
- return this.setCurrentColumn(column);
4865
+ this.triggerCurrentColumnEvent(evnt, params);
4805
4866
  }
4806
4867
  return this.$nextTick();
4807
4868
  },
@@ -5012,11 +5073,13 @@ const Methods = {
5012
5073
  const internalData = $xeTable;
5013
5074
  const { treeConfig, dragConfig } = props;
5014
5075
  const rowDragOpts = $xeTable.computeRowDragOpts;
5015
- const { dragEndMethod } = rowDragOpts;
5076
+ const { fullAllDataRowIdData } = internalData;
5077
+ const { isCrossDrag, isSelfToChildDrag, dragEndMethod } = rowDragOpts;
5016
5078
  const treeOpts = $xeTable.computeTreeOpts;
5017
- const { transform } = treeOpts;
5079
+ const { transform, mapChildrenField, parentField } = treeOpts;
5080
+ const childrenField = treeOpts.children || treeOpts.childrenField;
5018
5081
  const { dragRow } = reactData;
5019
- const { afterFullData, afterTreeFullData, tableFullData, tableFullTreeData, prevDragRow, prevDragPos } = internalData;
5082
+ const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData;
5020
5083
  const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
5021
5084
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
5022
5085
  if (prevDragRow && dragRow) {
@@ -5035,27 +5098,98 @@ const Methods = {
5035
5098
  }
5036
5099
  let oafIndex = -1;
5037
5100
  let nafIndex = -1;
5101
+ // 如果为树结构
5038
5102
  if (treeConfig) {
5039
- // 移出源位置
5040
- oafIndex = $xeTable.findRowIndexOf(afterTreeFullData, dragRow);
5041
- const otfIndex = $xeTable.findRowIndexOf(tableFullTreeData, dragRow);
5042
- afterTreeFullData.splice(oafIndex, 1);
5043
- tableFullTreeData.splice(otfIndex, 1);
5044
- // 插新位置
5045
- const pafIndex = $xeTable.findRowIndexOf(afterTreeFullData, prevDragRow);
5046
- const ptfIndex = $xeTable.findRowIndexOf(tableFullTreeData, prevDragRow);
5047
- nafIndex = pafIndex + dragOffsetIndex;
5048
- const ntfIndex = ptfIndex + dragOffsetIndex;
5049
- afterTreeFullData.splice(nafIndex, 0, dragRow);
5050
- tableFullTreeData.splice(ntfIndex, 0, dragRow);
5103
+ if (transform) {
5104
+ // 移出源位置
5105
+ const oldRowid = getRowid($xeTable, dragRow);
5106
+ const oldRest = fullAllDataRowIdData[oldRowid];
5107
+ const newRowid = getRowid($xeTable, prevDragRow);
5108
+ const newRest = fullAllDataRowIdData[newRowid];
5109
+ if (oldRest && newRest) {
5110
+ const { level: oldLevel } = oldRest;
5111
+ const { level: newLevel } = newRest;
5112
+ const oldAllMaps = {};
5113
+ XEUtils.eachTree([dragRow], item => {
5114
+ oldAllMaps[getRowid($xeTable, item)] = item;
5115
+ }, { children: mapChildrenField });
5116
+ let isSelfToChildStatus = false;
5117
+ if (oldLevel && newLevel) {
5118
+ // 子到子
5119
+ if (!isCrossDrag) {
5120
+ return;
5121
+ }
5122
+ if (oldAllMaps[newRowid]) {
5123
+ if (!isSelfToChildDrag) {
5124
+ isSelfToChildStatus = true;
5125
+ if (VxeUI.modal) {
5126
+ VxeUI.modal.message({
5127
+ status: 'error',
5128
+ content: getI18n('vxe.error.treeDragChild')
5129
+ });
5130
+ }
5131
+ return;
5132
+ }
5133
+ }
5134
+ }
5135
+ else if (oldLevel) {
5136
+ // 子到根
5137
+ if (!isCrossDrag) {
5138
+ return;
5139
+ }
5140
+ }
5141
+ else if (newLevel) {
5142
+ // 根到子
5143
+ if (!isCrossDrag) {
5144
+ return;
5145
+ }
5146
+ if (oldAllMaps[newRowid]) {
5147
+ isSelfToChildStatus = true;
5148
+ if (!isSelfToChildDrag) {
5149
+ if (VxeUI.modal) {
5150
+ VxeUI.modal.message({
5151
+ status: 'error',
5152
+ content: getI18n('vxe.error.treeDragChild')
5153
+ });
5154
+ }
5155
+ return;
5156
+ }
5157
+ }
5158
+ }
5159
+ else {
5160
+ // 根到根
5161
+ }
5162
+ const fullList = XEUtils.toTreeArray(internalData.afterTreeFullData, { children: childrenField });
5163
+ // 移出
5164
+ const otfIndex = $xeTable.findRowIndexOf(fullList, dragRow);
5165
+ fullList.splice(otfIndex, 1);
5166
+ // 插入
5167
+ const ptfIndex = $xeTable.findRowIndexOf(fullList, prevDragRow);
5168
+ const ntfIndex = ptfIndex + dragOffsetIndex;
5169
+ fullList.splice(ntfIndex, 0, dragRow);
5170
+ // 改变层级
5171
+ if (isSelfToChildStatus && isSelfToChildDrag) {
5172
+ XEUtils.each(dragRow[childrenField], childRow => {
5173
+ childRow[parentField] = dragRow[parentField];
5174
+ });
5175
+ }
5176
+ dragRow[parentField] = prevDragRow[parentField];
5177
+ internalData.tableFullTreeData = XEUtils.toArrayTree(fullList, {
5178
+ key: treeOpts.rowField,
5179
+ parentKey: treeOpts.parentField,
5180
+ children: childrenField,
5181
+ mapChildren: treeOpts.mapChildrenField
5182
+ });
5183
+ }
5184
+ }
5051
5185
  }
5052
5186
  else {
5053
- // 移出源位置
5187
+ // 移出
5054
5188
  oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow);
5055
5189
  const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow);
5056
5190
  afterFullData.splice(oafIndex, 1);
5057
5191
  tableFullData.splice(otfIndex, 1);
5058
- // 插新位置
5192
+ // 插入
5059
5193
  const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow);
5060
5194
  const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow);
5061
5195
  nafIndex = pafIndex + dragOffsetIndex;
@@ -5064,9 +5198,9 @@ const Methods = {
5064
5198
  tableFullData.splice(ntfIndex, 0, dragRow);
5065
5199
  }
5066
5200
  reactData.isDragRowMove = true;
5067
- $xeTable.cacheRowMap();
5068
- $xeTable.updateScrollYStatus();
5069
5201
  $xeTable.handleTableData(treeConfig && transform);
5202
+ $xeTable.cacheRowMap(true);
5203
+ $xeTable.updateScrollYStatus();
5070
5204
  if (!(treeConfig && transform)) {
5071
5205
  $xeTable.updateAfterDataIndex();
5072
5206
  }
@@ -5102,25 +5236,34 @@ const Methods = {
5102
5236
  },
5103
5237
  handleRowDragDragoverEvent(evnt) {
5104
5238
  const $xeTable = this;
5239
+ const props = $xeTable;
5105
5240
  const internalData = $xeTable;
5106
5241
  const reactData = $xeTable;
5242
+ const { treeConfig } = props;
5243
+ const { fullAllDataRowIdData } = internalData;
5107
5244
  const { dragRow } = reactData;
5245
+ const rowDragOpts = $xeTable.computeRowDragOpts;
5246
+ const { isCrossDrag } = rowDragOpts;
5108
5247
  if (!dragRow) {
5109
5248
  evnt.preventDefault();
5110
5249
  return;
5111
5250
  }
5112
5251
  const trEl = evnt.currentTarget;
5113
- const rowid = trEl.getAttribute('rowid');
5114
- const row = $xeTable.getRowById(rowid);
5115
- if (row) {
5116
- evnt.preventDefault();
5252
+ const rowid = trEl.getAttribute('rowid') || '';
5253
+ const rest = fullAllDataRowIdData[rowid];
5254
+ if (rest) {
5255
+ const row = rest.row;
5117
5256
  evnt.preventDefault();
5118
5257
  const { dragRow } = reactData;
5119
5258
  const offsetY = evnt.clientY - trEl.getBoundingClientRect().y;
5120
5259
  const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom';
5260
+ if ($xeTable.eqRow(dragRow, row) || (!isCrossDrag && treeConfig && rest.level)) {
5261
+ showDropTip($xeTable, evnt, trEl, null, false, dragPos);
5262
+ return;
5263
+ }
5121
5264
  internalData.prevDragRow = row;
5122
5265
  internalData.prevDragPos = dragPos;
5123
- showDropTip($xeTable, evnt, trEl, null, dragPos);
5266
+ showDropTip($xeTable, evnt, trEl, null, true, dragPos);
5124
5267
  $xeTable.dispatchEvent('row-dragover', {
5125
5268
  oldRow: dragRow,
5126
5269
  targetRow: row,
@@ -5274,9 +5417,13 @@ const Methods = {
5274
5417
  const { dragCol } = reactData;
5275
5418
  const offsetX = evnt.clientX - thEl.getBoundingClientRect().x;
5276
5419
  const dragPos = offsetX < thEl.clientWidth / 2 ? 'left' : 'right';
5420
+ if (dragCol.id === column.id || column.parentId) {
5421
+ showDropTip($xeTable, evnt, null, thEl, false, dragPos);
5422
+ return;
5423
+ }
5277
5424
  internalData.prevDragCol = column;
5278
5425
  internalData.prevDragPos = dragPos;
5279
- showDropTip($xeTable, evnt, null, thEl, dragPos);
5426
+ showDropTip($xeTable, evnt, null, thEl, true, dragPos);
5280
5427
  $xeTable.dispatchEvent('column-dragover', {
5281
5428
  oldColumn: dragCol,
5282
5429
  targetColumn: column,
@@ -20,7 +20,7 @@ import exportMixin from '../module/export/mixin';
20
20
  import keyboardMixin from '../module/keyboard/mixin';
21
21
  import validatorMixin from '../module/validator/mixin';
22
22
  import customMixin from '../module/custom/mixin';
23
- const { getConfig, getI18n, renderer, globalResize, globalEvents, globalMixins, renderEmptyElement } = VxeUI;
23
+ const { getConfig, getIcon, getI18n, renderer, globalResize, globalEvents, globalMixins, renderEmptyElement } = VxeUI;
24
24
  /**
25
25
  * 渲染浮固定列
26
26
  * 分别渲染左边固定列和右边固定列
@@ -112,24 +112,50 @@ const renderDragTipContents = (h, $xeTable) => {
112
112
  return [h('span', dragTipText)];
113
113
  };
114
114
  const renderDragTip = (h, $xeTable) => {
115
+ const reactData = $xeTable;
116
+ const { dragRow } = reactData;
115
117
  const rowOpts = $xeTable.computeRowOpts;
116
118
  const columnOpts = $xeTable.computeColumnOpts;
119
+ const rowDragOpts = $xeTable.computeRowDragOpts;
120
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
117
121
  if (rowOpts.drag || columnOpts.drag) {
118
122
  return h('div', {
119
123
  class: 'vxe-table--drag-wrapper'
120
124
  }, [
121
125
  h('div', {
122
126
  ref: 'refDragRowLineElem',
123
- class: 'vxe-table--drag-row-line'
127
+ class: ['vxe-table--drag-row-line', {
128
+ 'is--guides': rowDragOpts.showGuidesStatus
129
+ }]
124
130
  }),
125
131
  h('div', {
126
132
  ref: 'refDragColLineElem',
127
- class: 'vxe-table--drag-col-line'
133
+ class: ['vxe-table--drag-col-line', {
134
+ 'is--guides': columnDragOpts.showGuidesStatus
135
+ }]
128
136
  }),
129
137
  h('div', {
130
138
  ref: 'refDragTipElem',
131
139
  class: 'vxe-table--drag-sort-tip'
132
- }, renderDragTipContents(h, $xeTable))
140
+ }, [
141
+ h('div', {
142
+ class: 'vxe-table--drag-sort-tip-wrapper'
143
+ }, [
144
+ h('div', {
145
+ class: 'vxe-table--drag-sort-tip-status'
146
+ }, [
147
+ h('span', {
148
+ class: ['vxe-table--drag-sort-tip-normal-status', dragRow ? getIcon().TABLE_DRAG_STATUS_ROW : getIcon().TABLE_DRAG_STATUS_COLUMN]
149
+ }),
150
+ h('span', {
151
+ class: ['vxe-table--drag-sort-tip-disabled-status', getIcon().TABLE_DRAG_DISABLED]
152
+ })
153
+ ]),
154
+ h('div', {
155
+ class: 'vxe-table--drag-sort-tip-content'
156
+ }, renderDragTipContents(h, $xeTable))
157
+ ])
158
+ ])
133
159
  ]);
134
160
  }
135
161
  return renderEmptyElement($xeTable);
@@ -387,6 +413,7 @@ export default {
387
413
  isFooter: false
388
414
  },
389
415
  scrollVMLoading: false,
416
+ isCustomStatus: false,
390
417
  isDragRowMove: false,
391
418
  dragRow: null,
392
419
  isDragColMove: false,
@@ -543,7 +543,7 @@
543
543
 
544
544
  @font-face {
545
545
  font-family: "vxetableiconfont";
546
- src: url("data:application/x-font-woff2;charset=utf-8;base64,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") format("woff2");
546
+ src: url("data:application/x-font-woff2;charset=utf-8;base64,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") format("woff2");
547
547
  }
548
548
  @keyframes rollCircle {
549
549
  0% {
@@ -599,6 +599,18 @@
599
599
  color: var(--vxe-ui-status-error-color);
600
600
  }
601
601
 
602
+ .vxe-table-icon-swap:before {
603
+ content: "\e7f3";
604
+ }
605
+
606
+ .vxe-table-icon-sort:before {
607
+ content: "\e93e";
608
+ }
609
+
610
+ .vxe-table-icon-no-drop:before {
611
+ content: "\e658";
612
+ }
613
+
602
614
  .vxe-table-icon-edit:before {
603
615
  content: "\e66e";
604
616
  }
@@ -2651,7 +2663,16 @@
2651
2663
  .vxe-table--render-default .vxe-table--drag-col-line {
2652
2664
  height: 100%;
2653
2665
  width: 1px;
2654
- background-color: var(--vxe-ui-font-primary-color);
2666
+ border: 2px solid transparent;
2667
+ }
2668
+ .vxe-table--render-default .vxe-table--drag-col-line[drag-pos=left] {
2669
+ border-left-color: var(--vxe-ui-font-primary-color);
2670
+ }
2671
+ .vxe-table--render-default .vxe-table--drag-col-line[drag-pos=right] {
2672
+ border-right-color: var(--vxe-ui-font-primary-color);
2673
+ }
2674
+ .vxe-table--render-default .vxe-table--drag-col-line.is--guides {
2675
+ background-color: var(--vxe-ui-table-drag-over-background-color);
2655
2676
  }
2656
2677
  .vxe-table--render-default .vxe-header--column.col--drag-origin > .vxe-cell,
2657
2678
  .vxe-table--render-default .vxe-body--column.col--drag-origin > .vxe-cell,
@@ -2694,7 +2715,16 @@
2694
2715
  .vxe-table--render-default .vxe-table--drag-row-line {
2695
2716
  width: 100%;
2696
2717
  height: 1px;
2697
- background-color: var(--vxe-ui-font-primary-color);
2718
+ border: 2px solid transparent;
2719
+ }
2720
+ .vxe-table--render-default .vxe-table--drag-row-line[drag-pos=top] {
2721
+ border-top-color: var(--vxe-ui-font-primary-color);
2722
+ }
2723
+ .vxe-table--render-default .vxe-table--drag-row-line[drag-pos=bottom] {
2724
+ border-bottom-color: var(--vxe-ui-font-primary-color);
2725
+ }
2726
+ .vxe-table--render-default .vxe-table--drag-row-line.is--guides {
2727
+ background-color: var(--vxe-ui-table-drag-over-background-color);
2698
2728
  }
2699
2729
  .vxe-table--render-default .vxe-body--row.row--drag-origin > .vxe-body--column > .vxe-cell {
2700
2730
  opacity: 0.5;
@@ -2707,7 +2737,7 @@
2707
2737
  position: absolute;
2708
2738
  top: 0;
2709
2739
  left: 0;
2710
- padding: 0.6em 1em 0.6em 1.6em;
2740
+ padding: 0.6em 1.4em;
2711
2741
  max-width: 50%;
2712
2742
  min-width: 100px;
2713
2743
  border-radius: var(--vxe-ui-border-radius);
@@ -2722,6 +2752,34 @@
2722
2752
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
2723
2753
  z-index: 33;
2724
2754
  }
2755
+ .vxe-table--render-default .vxe-table--drag-sort-tip[drag-status=normal] .vxe-table--drag-sort-tip-normal-status {
2756
+ display: block;
2757
+ }
2758
+ .vxe-table--render-default .vxe-table--drag-sort-tip[drag-status=disabled] .vxe-table--drag-sort-tip-disabled-status {
2759
+ display: block;
2760
+ }
2761
+ .vxe-table--render-default .vxe-table--drag-sort-tip-wrapper {
2762
+ display: flex;
2763
+ flex-direction: row;
2764
+ align-items: center;
2765
+ }
2766
+ .vxe-table--render-default .vxe-table--drag-sort-tip-status {
2767
+ padding-right: 0.4em;
2768
+ }
2769
+ .vxe-table--render-default .vxe-table--drag-sort-tip-disabled-status {
2770
+ display: none;
2771
+ flex-shrink: 0;
2772
+ color: var(--vxe-ui-status-error-color);
2773
+ }
2774
+ .vxe-table--render-default .vxe-table--drag-sort-tip-normal-status {
2775
+ display: none;
2776
+ }
2777
+ .vxe-table--render-default .vxe-table--drag-sort-tip-content {
2778
+ flex-grow: 1;
2779
+ overflow: hidden;
2780
+ text-overflow: ellipsis;
2781
+ white-space: nowrap;
2782
+ }
2725
2783
  .vxe-table--render-default .vxe-header--column.col--ellipsis:not(.col--active) > .vxe-cell,
2726
2784
  .vxe-table--render-default .vxe-body--column.col--ellipsis:not(.col--active) > .vxe-cell,
2727
2785
  .vxe-table--render-default .vxe-footer--column.col--ellipsis:not(.col--active) > .vxe-cell {