vxe-table 3.11.26 → 3.11.27-beta.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 (151) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/locale/lang/ar-EG.js +3 -3
  4. package/es/locale/lang/de-DE.js +3 -3
  5. package/es/locale/lang/en-US.js +3 -3
  6. package/es/locale/lang/es-ES.js +3 -3
  7. package/es/locale/lang/fr-FR.js +3 -3
  8. package/es/locale/lang/hu-HU.js +3 -3
  9. package/es/locale/lang/hy-AM.js +3 -3
  10. package/es/locale/lang/ja-JP.js +3 -3
  11. package/es/locale/lang/ko-KR.js +3 -3
  12. package/es/locale/lang/nb-NO.js +3 -3
  13. package/es/locale/lang/pt-BR.js +3 -3
  14. package/es/locale/lang/ru-RU.js +3 -3
  15. package/es/locale/lang/ug-CN.js +3 -3
  16. package/es/locale/lang/uk-UA.js +3 -3
  17. package/es/locale/lang/vi-VN.js +3 -3
  18. package/es/locale/lang/zh-CHT.js +3 -3
  19. package/es/locale/lang/zh-CN.js +3 -3
  20. package/es/style.css +1 -1
  21. package/es/style.min.css +1 -1
  22. package/es/table/module/custom/mixin.js +2 -0
  23. package/es/table/module/custom/panel.js +433 -231
  24. package/es/table/src/body.js +2 -2
  25. package/es/table/src/cell.js +2 -2
  26. package/es/table/src/column.js +10 -8
  27. package/es/table/src/group.js +37 -6
  28. package/es/table/src/methods.js +167 -73
  29. package/es/table/src/table.js +1 -1
  30. package/es/table/src/util.js +0 -1
  31. package/es/table/style.css +106 -37
  32. package/es/table/style.min.css +1 -1
  33. package/es/ui/index.js +1 -1
  34. package/es/ui/src/dom.js +1 -0
  35. package/es/ui/src/log.js +1 -1
  36. package/es/vxe-table/style.css +106 -37
  37. package/es/vxe-table/style.min.css +1 -1
  38. package/lib/index.css +1 -1
  39. package/lib/index.min.css +1 -1
  40. package/lib/index.umd.js +618 -260
  41. package/lib/index.umd.min.js +1 -1
  42. package/lib/locale/lang/ar-EG.js +3 -3
  43. package/lib/locale/lang/ar-EG.min.js +1 -1
  44. package/lib/locale/lang/de-DE.js +3 -3
  45. package/lib/locale/lang/de-DE.min.js +1 -1
  46. package/lib/locale/lang/en-US.js +3 -3
  47. package/lib/locale/lang/en-US.min.js +1 -1
  48. package/lib/locale/lang/en-US.umd.js +3 -3
  49. package/lib/locale/lang/es-ES.js +3 -3
  50. package/lib/locale/lang/es-ES.min.js +1 -1
  51. package/lib/locale/lang/es-ES.umd.js +3 -3
  52. package/lib/locale/lang/fr-FR.js +3 -3
  53. package/lib/locale/lang/fr-FR.min.js +1 -1
  54. package/lib/locale/lang/hu-HU.js +3 -3
  55. package/lib/locale/lang/hu-HU.min.js +1 -1
  56. package/lib/locale/lang/hu-HU.umd.js +3 -3
  57. package/lib/locale/lang/hy-AM.js +3 -3
  58. package/lib/locale/lang/hy-AM.min.js +1 -1
  59. package/lib/locale/lang/ja-JP.js +3 -3
  60. package/lib/locale/lang/ja-JP.min.js +1 -1
  61. package/lib/locale/lang/ja-JP.umd.js +3 -3
  62. package/lib/locale/lang/ko-KR.js +3 -3
  63. package/lib/locale/lang/ko-KR.min.js +1 -1
  64. package/lib/locale/lang/ko-KR.umd.js +3 -3
  65. package/lib/locale/lang/nb-NO.js +3 -3
  66. package/lib/locale/lang/nb-NO.min.js +1 -1
  67. package/lib/locale/lang/pt-BR.js +3 -3
  68. package/lib/locale/lang/pt-BR.min.js +1 -1
  69. package/lib/locale/lang/pt-BR.umd.js +3 -3
  70. package/lib/locale/lang/ru-RU.js +3 -3
  71. package/lib/locale/lang/ru-RU.min.js +1 -1
  72. package/lib/locale/lang/ru-RU.umd.js +3 -3
  73. package/lib/locale/lang/ug-CN.js +3 -3
  74. package/lib/locale/lang/ug-CN.min.js +1 -1
  75. package/lib/locale/lang/uk-UA.js +3 -3
  76. package/lib/locale/lang/uk-UA.min.js +1 -1
  77. package/lib/locale/lang/uk-UA.umd.js +3 -3
  78. package/lib/locale/lang/vi-VN.js +3 -3
  79. package/lib/locale/lang/vi-VN.min.js +1 -1
  80. package/lib/locale/lang/zh-CHT.js +3 -3
  81. package/lib/locale/lang/zh-CHT.min.js +1 -1
  82. package/lib/locale/lang/zh-CHT.umd.js +3 -3
  83. package/lib/locale/lang/zh-CN.js +3 -3
  84. package/lib/locale/lang/zh-CN.min.js +1 -1
  85. package/lib/locale/lang/zh-CN.umd.js +3 -3
  86. package/lib/style.css +1 -1
  87. package/lib/style.min.css +1 -1
  88. package/lib/table/module/custom/mixin.js +2 -0
  89. package/lib/table/module/custom/mixin.min.js +1 -1
  90. package/lib/table/module/custom/panel.js +369 -156
  91. package/lib/table/module/custom/panel.min.js +1 -1
  92. package/lib/table/src/body.js +2 -2
  93. package/lib/table/src/body.min.js +1 -1
  94. package/lib/table/src/cell.js +2 -1
  95. package/lib/table/src/cell.min.js +1 -1
  96. package/lib/table/src/column.js +11 -9
  97. package/lib/table/src/column.min.js +1 -1
  98. package/lib/table/src/group.js +39 -6
  99. package/lib/table/src/group.min.js +1 -1
  100. package/lib/table/src/methods.js +181 -74
  101. package/lib/table/src/methods.min.js +1 -1
  102. package/lib/table/src/table.js +1 -1
  103. package/lib/table/src/table.min.js +1 -1
  104. package/lib/table/src/util.js +0 -1
  105. package/lib/table/src/util.min.js +1 -1
  106. package/lib/table/style/style.css +106 -37
  107. package/lib/table/style/style.min.css +1 -1
  108. package/lib/ui/index.js +1 -1
  109. package/lib/ui/index.min.js +1 -1
  110. package/lib/ui/src/dom.js +2 -0
  111. package/lib/ui/src/dom.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 +106 -37
  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 +3 -3
  118. package/packages/locale/lang/de-DE.ts +3 -3
  119. package/packages/locale/lang/en-US.ts +3 -3
  120. package/packages/locale/lang/es-ES.ts +3 -3
  121. package/packages/locale/lang/fr-FR.ts +3 -3
  122. package/packages/locale/lang/hu-HU.ts +3 -3
  123. package/packages/locale/lang/hy-AM.ts +3 -3
  124. package/packages/locale/lang/ja-JP.ts +3 -3
  125. package/packages/locale/lang/ko-KR.ts +3 -3
  126. package/packages/locale/lang/nb-NO.ts +3 -3
  127. package/packages/locale/lang/pt-BR.ts +3 -3
  128. package/packages/locale/lang/ru-RU.ts +3 -3
  129. package/packages/locale/lang/ug-CN.ts +3 -3
  130. package/packages/locale/lang/uk-UA.ts +3 -3
  131. package/packages/locale/lang/vi-VN.ts +3 -3
  132. package/packages/locale/lang/zh-CHT.ts +3 -3
  133. package/packages/locale/lang/zh-CN.ts +3 -3
  134. package/packages/table/module/custom/mixin.ts +2 -0
  135. package/packages/table/module/custom/panel.ts +458 -234
  136. package/packages/table/src/body.ts +2 -2
  137. package/packages/table/src/cell.ts +2 -2
  138. package/packages/table/src/column.ts +10 -8
  139. package/packages/table/src/group.ts +40 -6
  140. package/packages/table/src/methods.ts +182 -86
  141. package/packages/table/src/table.ts +1 -1
  142. package/packages/table/src/util.ts +0 -1
  143. package/packages/ui/src/dom.ts +2 -0
  144. package/styles/components/table-module/custom.scss +92 -12
  145. package/styles/components/table.scss +5 -0
  146. /package/es/{iconfont.1733885890565.ttf → iconfont.1734000397391.ttf} +0 -0
  147. /package/es/{iconfont.1733885890565.woff → iconfont.1734000397391.woff} +0 -0
  148. /package/es/{iconfont.1733885890565.woff2 → iconfont.1734000397391.woff2} +0 -0
  149. /package/lib/{iconfont.1733885890565.ttf → iconfont.1734000397391.ttf} +0 -0
  150. /package/lib/{iconfont.1733885890565.woff → iconfont.1734000397391.woff} +0 -0
  151. /package/lib/{iconfont.1733885890565.woff2 → iconfont.1734000397391.woff2} +0 -0
package/lib/index.umd.js CHANGED
@@ -2220,7 +2220,7 @@ function getClass(property, params) {
2220
2220
  ;// CONCATENATED MODULE: ./packages/ui/index.ts
2221
2221
 
2222
2222
 
2223
- const version = "3.11.26";
2223
+ const version = "3.11.27-beta.1";
2224
2224
  core_.VxeUI.version = version;
2225
2225
  core_.VxeUI.tableVersion = version;
2226
2226
  core_.VxeUI.setConfig({
@@ -2627,6 +2627,7 @@ var es_array_push = __webpack_require__(4114);
2627
2627
 
2628
2628
  const reClsMap = {};
2629
2629
  const browse = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().browse();
2630
+ const tpImg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';
2630
2631
  function getPropClass(property, params) {
2631
2632
  return property ? XEUtils.isFunction(property) ? property(params) : property : '';
2632
2633
  }
@@ -2789,7 +2790,7 @@ function isNodeElement(elem) {
2789
2790
  const {
2790
2791
  log: log_log
2791
2792
  } = core_.VxeUI;
2792
- const log_version = `table v${"3.11.26"}`;
2793
+ const log_version = `table v${"3.11.27-beta.1"}`;
2793
2794
  const warnLog = log_log.create('warn', log_version);
2794
2795
  const errLog = log_log.create('error', log_version);
2795
2796
  ;// CONCATENATED MODULE: ./packages/table/src/columnInfo.ts
@@ -3097,7 +3098,6 @@ function assembleColumn(_vm) {
3097
3098
  columnConfig
3098
3099
  } = _vm;
3099
3100
  const groupConfig = $xecolumn ? $xecolumn.columnConfig : null;
3100
- columnConfig.slots = _vm.$scopedSlots;
3101
3101
  if (groupConfig) {
3102
3102
  if (true) {
3103
3103
  if ($xecolumn.$options._componentTag === 'vxe-table-column') {
@@ -3629,12 +3629,13 @@ function renderHeaderCellDragIcon(h, params) {
3629
3629
  const {
3630
3630
  showIcon,
3631
3631
  icon,
3632
+ isCrossDrag,
3632
3633
  visibleMethod,
3633
3634
  disabledMethod
3634
3635
  } = columnDragOpts;
3635
3636
  const isDisabled = disabledMethod && disabledMethod(params);
3636
3637
  if (columnOpts.drag && showIcon && (!visibleMethod || visibleMethod(params))) {
3637
- if (!(column.fixed || column.parentId)) {
3638
+ if (!column.fixed && (isCrossDrag || !column.parentId)) {
3638
3639
  return h('span', {
3639
3640
  key: 'dg',
3640
3641
  class: ['vxe-cell--drag-handle', {
@@ -4638,10 +4639,13 @@ const Cell = {
4638
4639
  }
4639
4640
  };
4640
4641
  /* harmony default export */ var cell = (Cell);
4642
+ ;// CONCATENATED MODULE: ./packages/ui/src/comp.ts
4643
+ const defineVxeComponent = options => options;
4641
4644
  ;// CONCATENATED MODULE: ./packages/table/src/column.ts
4642
4645
 
4643
4646
 
4644
- const props = {
4647
+
4648
+ const columnProps = {
4645
4649
  // 列唯一主键
4646
4650
  colId: [String, Number],
4647
4651
  // 渲染类型 seq,radio,checkbox,expand,html
@@ -4757,9 +4761,9 @@ const props = {
4757
4761
  // 额外的参数
4758
4762
  params: Object
4759
4763
  };
4760
- const watch = {};
4761
- Object.keys(props).forEach(name => {
4762
- watch[name] = function (value) {
4764
+ const columnWatch = {};
4765
+ Object.keys(columnProps).forEach(name => {
4766
+ columnWatch[name] = function (value) {
4763
4767
  this.columnConfig.update(name, value);
4764
4768
  if (this.$xetable) {
4765
4769
  if (name === 'filters') {
@@ -4771,9 +4775,9 @@ Object.keys(props).forEach(name => {
4771
4775
  }
4772
4776
  };
4773
4777
  });
4774
- /* harmony default export */ var column = ({
4778
+ /* harmony default export */ var column = (defineVxeComponent({
4775
4779
  name: 'VxeColumn',
4776
- props,
4780
+ props: columnProps,
4777
4781
  provide() {
4778
4782
  return {
4779
4783
  $xecolumn: this,
@@ -4788,11 +4792,12 @@ Object.keys(props).forEach(name => {
4788
4792
  default: null
4789
4793
  }
4790
4794
  },
4791
- watch,
4795
+ watch: columnWatch,
4792
4796
  created() {
4793
4797
  this.columnConfig = this.createColumn(this.$xetable, this);
4794
4798
  },
4795
4799
  mounted() {
4800
+ this.columnConfig.slots = this.$scopedSlots;
4796
4801
  assembleColumn(this);
4797
4802
  },
4798
4803
  destroyed() {
@@ -4802,7 +4807,7 @@ Object.keys(props).forEach(name => {
4802
4807
  return h('div', this.$slots.default);
4803
4808
  },
4804
4809
  methods: cell
4805
- });
4810
+ }));
4806
4811
  ;// CONCATENATED MODULE: ./packages/column/index.ts
4807
4812
 
4808
4813
 
@@ -4823,16 +4828,49 @@ const Column = VxeColumn;
4823
4828
  /* harmony default export */ var packages_column = ((/* unused pure expression or super */ null && (VxeColumn)));
4824
4829
  ;// CONCATENATED MODULE: ./packages/table/src/group.ts
4825
4830
 
4826
- /* harmony default export */ var group = ({
4831
+
4832
+
4833
+
4834
+ /* harmony default export */ var group = (defineVxeComponent({
4827
4835
  name: 'VxeColgroup',
4828
- extends: column,
4836
+ props: columnProps,
4829
4837
  provide() {
4830
4838
  return {
4831
- xecolgroup: this,
4839
+ $xecolumn: this,
4832
4840
  $xegrid: null
4833
4841
  };
4834
- }
4835
- });
4842
+ },
4843
+ inject: {
4844
+ $xetable: {
4845
+ default: null
4846
+ },
4847
+ $xecolumn: {
4848
+ default: null
4849
+ }
4850
+ },
4851
+ watch: columnWatch,
4852
+ created() {
4853
+ this.columnConfig = this.createColumn(this.$xetable, this);
4854
+ },
4855
+ mounted() {
4856
+ const {
4857
+ $scopedSlots
4858
+ } = this;
4859
+ const columnSlots = {};
4860
+ if ($scopedSlots.header) {
4861
+ columnSlots.header = $scopedSlots.header;
4862
+ }
4863
+ this.columnConfig.slots = columnSlots;
4864
+ assembleColumn(this);
4865
+ },
4866
+ destroyed() {
4867
+ destroyColumn(this);
4868
+ },
4869
+ render(h) {
4870
+ return h('div', this.$slots.default);
4871
+ },
4872
+ methods: cell
4873
+ }));
4836
4874
  ;// CONCATENATED MODULE: ./packages/colgroup/index.ts
4837
4875
 
4838
4876
 
@@ -5384,11 +5422,18 @@ function showDropTip($xeTable, evnt, trEl, thEl, showLine, dragPos) {
5384
5422
  if (cdLineEl) {
5385
5423
  if (showLine) {
5386
5424
  const thRect = thEl.getBoundingClientRect();
5425
+ const offsetTop = Math.max(0, thRect.y - wrapperRect.y);
5387
5426
  cdLineEl.style.display = 'block';
5427
+ cdLineEl.style.top = `${offsetTop}px`;
5388
5428
  cdLineEl.style.left = `${Math.max(1, thRect.x - wrapperRect.x)}px`;
5389
5429
  cdLineEl.style.width = `${thRect.width}px`;
5390
- cdLineEl.style.height = `${wrapperRect.height - scrollbarHeight}px`;
5430
+ if (prevDragToChild) {
5431
+ cdLineEl.style.height = `${thRect.height}px`;
5432
+ } else {
5433
+ cdLineEl.style.height = `${wrapperRect.height - offsetTop - scrollbarHeight}px`;
5434
+ }
5391
5435
  cdLineEl.setAttribute('drag-pos', dragPos);
5436
+ cdLineEl.setAttribute('drag-to-child', prevDragToChild ? 'y' : 'n');
5392
5437
  } else {
5393
5438
  cdLineEl.style.display = '';
5394
5439
  }
@@ -5950,12 +5995,12 @@ const Methods = {
5950
5995
  height: 0
5951
5996
  };
5952
5997
  }
5998
+ cacheItem.row = row;
5999
+ cacheItem.items = items;
6000
+ cacheItem.parent = parent;
6001
+ cacheItem.level = level;
6002
+ cacheItem.index = treeConfig && parent ? -1 : index;
5953
6003
  if (isSource) {
5954
- cacheItem.row = row;
5955
- cacheItem.items = items;
5956
- cacheItem.parent = parent;
5957
- cacheItem.level = level;
5958
- cacheItem.index = treeConfig && parent ? -1 : index;
5959
6004
  fullDataRowIdMaps[rowid] = cacheItem;
5960
6005
  }
5961
6006
  fullAllDataRowIdMaps[rowid] = cacheItem;
@@ -6070,18 +6115,26 @@ const Methods = {
6070
6115
  * 牺牲数据组装的耗时,用来换取使用过程中的流畅
6071
6116
  */
6072
6117
  cacheColumnMap() {
6118
+ const $xeTable = this;
6119
+ const props = $xeTable;
6120
+ const reactData = $xeTable;
6121
+ const internalData = $xeTable;
6073
6122
  const {
6074
6123
  tableFullColumn,
6075
- collectColumn,
6076
- fullColumnMap,
6077
- showOverflow,
6078
- columnOpts,
6079
- rowOpts
6080
- } = this;
6081
- const fullColumnIdData = this.fullColumnIdData = {};
6082
- const fullColumnFieldData = this.fullColumnFieldData = {};
6124
+ collectColumn
6125
+ } = internalData;
6126
+ const fullColumnIdData = internalData.fullColumnIdData = {};
6127
+ const fullColumnFieldData = internalData.fullColumnFieldData = {};
6128
+ const mouseOpts = $xeTable.computeMouseOpts;
6129
+ const columnOpts = $xeTable.computeColumnOpts;
6130
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
6131
+ const {
6132
+ isCrossDrag,
6133
+ isSelfToChildDrag
6134
+ } = columnDragOpts;
6135
+ const rowOpts = $xeTable.computeRowOpts;
6083
6136
  const isGroup = collectColumn.some(hasChildrenList);
6084
- let isAllOverflow = !!showOverflow;
6137
+ let isAllOverflow = !!props.showOverflow;
6085
6138
  let expandColumn;
6086
6139
  let treeNodeColumn;
6087
6140
  let checkboxColumn;
@@ -6097,6 +6150,8 @@ const Methods = {
6097
6150
  treeNode
6098
6151
  } = column;
6099
6152
  const rest = {
6153
+ $index: -1,
6154
+ _index: -1,
6100
6155
  column,
6101
6156
  colid,
6102
6157
  index,
@@ -6105,12 +6160,14 @@ const Methods = {
6105
6160
  width: 0
6106
6161
  };
6107
6162
  if (field) {
6108
- if (true) {
6109
- if (fullColumnFieldData[field]) {
6110
- warnLog('vxe.error.colRepet', ['field', field]);
6111
- }
6163
+ if (fullColumnFieldData[field]) {
6164
+ errLog('vxe.error.colRepet', ['field', field]);
6112
6165
  }
6113
6166
  fullColumnFieldData[field] = rest;
6167
+ } else {
6168
+ if (isCrossDrag || isSelfToChildDrag) {
6169
+ errLog('vxe.error.emptyProp', ['column.field']);
6170
+ }
6114
6171
  }
6115
6172
  if (!hasFixed && fixed) {
6116
6173
  hasFixed = fixed;
@@ -6154,27 +6211,6 @@ const Methods = {
6154
6211
  }
6155
6212
  }
6156
6213
  }
6157
- if (true) {
6158
- if (this.showOverflow && column.showOverflow === false) {
6159
- warnLog('vxe.error.errConflicts', [`table.show-overflow=${this.showOverflow}`, `column.show-overflow=${column.showOverflow}`]);
6160
- }
6161
- if (this.showHeaderOverflow && column.showHeaderOverflow === false) {
6162
- warnLog('vxe.error.errConflicts', [`table.show-header-overflow=${this.showHeaderOverflow}`, `column.show-header-overflow=${column.showHeaderOverflow}`]);
6163
- }
6164
- if (this.showFooterOverflow && column.showFooterOverflow === false) {
6165
- warnLog('vxe.error.errConflicts', [`table.show-footer-overflow=${this.showFooterOverflow}`, `column.show-footer-overflow=${column.showFooterOverflow}`]);
6166
- }
6167
- }
6168
- if (true) {
6169
- if (htmlColumn) {
6170
- if (!columnOpts.useKey) {
6171
- errLog('vxe.error.reqProp', ['column-config.useKey', 'column.type=html']);
6172
- }
6173
- if (!rowOpts.useKey) {
6174
- errLog('vxe.error.reqProp', ['row-config.useKey', 'column.type=html']);
6175
- }
6176
- }
6177
- }
6178
6214
  if (isAllOverflow && column.showOverflow === false) {
6179
6215
  isAllOverflow = false;
6180
6216
  }
@@ -6182,9 +6218,7 @@ const Methods = {
6182
6218
  errLog('vxe.error.colRepet', ['colId', colid]);
6183
6219
  }
6184
6220
  fullColumnIdData[colid] = rest;
6185
- fullColumnMap.set(column, rest);
6186
6221
  };
6187
- fullColumnMap.clear();
6188
6222
  if (isGroup) {
6189
6223
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn, (column, index, items, path, parent, nodes) => {
6190
6224
  column.level = nodes.length;
@@ -6194,14 +6228,24 @@ const Methods = {
6194
6228
  tableFullColumn.forEach(handleFunc);
6195
6229
  }
6196
6230
  if (true) {
6197
- if (expandColumn && this.mouseOpts.area) {
6231
+ if (expandColumn && mouseOpts.area) {
6198
6232
  errLog('vxe.error.errConflicts', ['mouse-config.area', 'column.type=expand']);
6199
6233
  }
6200
6234
  }
6201
- this.isGroup = isGroup;
6202
- this.treeNodeColumn = treeNodeColumn;
6203
- this.expandColumn = expandColumn;
6204
- this.isAllOverflow = isAllOverflow;
6235
+ if (true) {
6236
+ if (htmlColumn) {
6237
+ if (!columnOpts.useKey) {
6238
+ errLog('vxe.error.reqProp', ['column-config.useKey & column.type=html']);
6239
+ }
6240
+ if (!rowOpts.useKey) {
6241
+ errLog('vxe.error.reqProp', ['row-config.useKey & column.type=html']);
6242
+ }
6243
+ }
6244
+ }
6245
+ reactData.isGroup = isGroup;
6246
+ reactData.treeNodeColumn = treeNodeColumn;
6247
+ reactData.expandColumn = expandColumn;
6248
+ reactData.isAllOverflow = isAllOverflow;
6205
6249
  },
6206
6250
  /**
6207
6251
  * 根据 tr 元素获取对应的 row 信息
@@ -8010,6 +8054,10 @@ const Methods = {
8010
8054
  const {
8011
8055
  rceTimeout
8012
8056
  } = internalData;
8057
+ const el = $xeTable.$refs.refElem;
8058
+ if (!el || !el.clientWidth) {
8059
+ $xeTable.autoCellWidth();
8060
+ }
8013
8061
  if (rceTimeout) {
8014
8062
  clearTimeout(rceTimeout);
8015
8063
  $xeTable.$nextTick(() => {
@@ -10869,8 +10917,9 @@ const Methods = {
10869
10917
  * 行拖拽
10870
10918
  */
10871
10919
  handleRowDragDragstartEvent(evnt) {
10872
- const img = new Image();
10873
10920
  if (evnt.dataTransfer) {
10921
+ const img = new Image();
10922
+ img.src = tpImg;
10874
10923
  evnt.dataTransfer.setDragImage(img, 0, 0);
10875
10924
  }
10876
10925
  },
@@ -10954,8 +11003,8 @@ const Methods = {
10954
11003
  return;
10955
11004
  }
10956
11005
  if (oldAllMaps[newRowid]) {
11006
+ isSelfToChildStatus = true;
10957
11007
  if (!isSelfToChildDrag) {
10958
- isSelfToChildStatus = true;
10959
11008
  if (core_.VxeUI.modal) {
10960
11009
  core_.VxeUI.modal.message({
10961
11010
  status: 'error',
@@ -11031,7 +11080,7 @@ const Methods = {
11031
11080
  }
11032
11081
  reactData.isDragRowMove = true;
11033
11082
  $xeTable.handleTableData(treeConfig && transform);
11034
- $xeTable.cacheRowMap(true);
11083
+ $xeTable.cacheRowMap();
11035
11084
  $xeTable.updateScrollYStatus();
11036
11085
  if (!(treeConfig && transform)) {
11037
11086
  $xeTable.updateAfterDataIndex();
@@ -11059,6 +11108,7 @@ const Methods = {
11059
11108
  }
11060
11109
  hideDropTip($xeTable);
11061
11110
  clearRowDropOrigin($xeTable);
11111
+ internalData.prevDragToChild = false;
11062
11112
  reactData.dragRow = null;
11063
11113
  reactData.dragCol = null;
11064
11114
  setTimeout(() => {
@@ -11123,7 +11173,6 @@ const Methods = {
11123
11173
  const $xeTable = this;
11124
11174
  const props = $xeTable;
11125
11175
  const reactData = $xeTable;
11126
- evnt.stopPropagation();
11127
11176
  const {
11128
11177
  dragConfig
11129
11178
  } = props;
@@ -11167,8 +11216,9 @@ const Methods = {
11167
11216
  * 列拖拽
11168
11217
  */
11169
11218
  handleHeaderCellDragDragstartEvent(evnt) {
11170
- const img = new Image();
11171
11219
  if (evnt.dataTransfer) {
11220
+ const img = new Image();
11221
+ img.src = tpImg;
11172
11222
  evnt.dataTransfer.setDragImage(img, 0, 0);
11173
11223
  }
11174
11224
  },
@@ -11182,6 +11232,9 @@ const Methods = {
11182
11232
  } = props;
11183
11233
  const columnDragOpts = $xeTable.computeColumnDragOpts;
11184
11234
  const {
11235
+ isCrossDrag,
11236
+ isSelfToChildDrag,
11237
+ isToChildDrag,
11185
11238
  dragEndMethod
11186
11239
  } = columnDragOpts;
11187
11240
  const {
@@ -11190,38 +11243,126 @@ const Methods = {
11190
11243
  const {
11191
11244
  collectColumn,
11192
11245
  prevDragCol,
11193
- prevDragPos
11246
+ prevDragPos,
11247
+ prevDragToChild
11194
11248
  } = internalData;
11195
11249
  const dragOffsetIndex = prevDragPos === 'right' ? 1 : 0;
11196
11250
  if (prevDragCol && dragCol) {
11197
11251
  // 判断是否有拖动
11198
11252
  if (prevDragCol !== dragCol) {
11253
+ const oldColumn = dragCol;
11254
+ const newColumn = prevDragCol;
11199
11255
  Promise.resolve(dragEndMethod ? dragEndMethod({
11200
- oldColumn: dragCol,
11201
- newColumn: prevDragCol,
11256
+ oldColumn,
11257
+ newColumn,
11202
11258
  dragPos: prevDragPos,
11203
11259
  offsetIndex: dragOffsetIndex
11204
11260
  }) : true).then(status => {
11205
11261
  if (!status) {
11206
11262
  return;
11207
11263
  }
11264
+ let oafIndex = -1;
11265
+ let nafIndex = -1;
11266
+ const oldAllMaps = {};
11267
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([oldColumn], column => {
11268
+ oldAllMaps[column.id] = column;
11269
+ });
11270
+ let isSelfToChildStatus = false;
11271
+ if (oldColumn.parentId && newColumn.parentId) {
11272
+ // 子到子
11273
+ if (!isCrossDrag) {
11274
+ return;
11275
+ }
11276
+ if (oldAllMaps[newColumn.id]) {
11277
+ isSelfToChildStatus = true;
11278
+ if (!isSelfToChildDrag) {
11279
+ if (core_.VxeUI.modal) {
11280
+ core_.VxeUI.modal.message({
11281
+ status: 'error',
11282
+ content: methods_getI18n('vxe.error.treeDragChild')
11283
+ });
11284
+ }
11285
+ return;
11286
+ }
11287
+ }
11288
+ } else if (oldColumn.parentId) {
11289
+ // 子到根
11290
+ if (!isCrossDrag) {
11291
+ return;
11292
+ }
11293
+ } else if (newColumn.parentId) {
11294
+ // 根到子
11295
+ if (!isCrossDrag) {
11296
+ return;
11297
+ }
11298
+ if (oldAllMaps[newColumn.id]) {
11299
+ isSelfToChildStatus = true;
11300
+ if (!isSelfToChildDrag) {
11301
+ if (core_.VxeUI.modal) {
11302
+ core_.VxeUI.modal.message({
11303
+ status: 'error',
11304
+ content: methods_getI18n('vxe.error.treeDragChild')
11305
+ });
11306
+ }
11307
+ return;
11308
+ }
11309
+ }
11310
+ } else {
11311
+ // 根到根
11312
+ }
11313
+ const oldewMatchRest = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(collectColumn, item => item.id === oldColumn.id);
11314
+ // 改变层级
11315
+ if (isSelfToChildStatus && isSelfToChildDrag) {
11316
+ if (oldewMatchRest) {
11317
+ const {
11318
+ items: oCols,
11319
+ index: oIndex
11320
+ } = oldewMatchRest;
11321
+ const childList = oldColumn.children || [];
11322
+ childList.forEach(column => {
11323
+ column.parentId = oldColumn.parentId;
11324
+ });
11325
+ oCols.splice(oIndex, 1, ...childList);
11326
+ oldColumn.children = [];
11327
+ }
11328
+ } else {
11329
+ if (oldewMatchRest) {
11330
+ const {
11331
+ items: oCols,
11332
+ index: oIndex,
11333
+ parent: oParent
11334
+ } = oldewMatchRest;
11335
+ oCols.splice(oIndex, 1);
11336
+ if (!oParent) {
11337
+ oafIndex = oIndex;
11338
+ }
11339
+ }
11340
+ }
11341
+ const newMatchRest = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(collectColumn, item => item.id === newColumn.id);
11342
+ if (newMatchRest) {
11343
+ const {
11344
+ items: nCols,
11345
+ index: nIndex,
11346
+ parent: nParent
11347
+ } = newMatchRest;
11348
+ // 转子级
11349
+ if (isToChildDrag && prevDragToChild) {
11350
+ oldColumn.parentId = newColumn.id;
11351
+ newColumn.children = (newColumn.children || []).concat([oldColumn]);
11352
+ } else {
11353
+ oldColumn.parentId = newColumn.parentId;
11354
+ nCols.splice(nIndex + dragOffsetIndex, 0, oldColumn);
11355
+ }
11356
+ if (!nParent) {
11357
+ nafIndex = nIndex;
11358
+ }
11359
+ }
11208
11360
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn, (column, index, items, path, parent) => {
11209
11361
  if (!parent) {
11210
11362
  const sortIndex = index + 1;
11211
11363
  column.renderSortNumber = sortIndex;
11212
11364
  }
11213
11365
  });
11214
- const oafIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(collectColumn, item => item.id === dragCol.id);
11215
- const nafIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(collectColumn, item => item.id === prevDragCol.id) + dragOffsetIndex;
11216
- const newTargetCol = collectColumn[nafIndex];
11217
- if (newTargetCol) {
11218
- // 插入最后位置
11219
- dragCol.renderSortNumber = newTargetCol.renderSortNumber;
11220
- newTargetCol.renderSortNumber = dragCol.renderSortNumber + 0.5;
11221
- } else {
11222
- // 插入新位置
11223
- dragCol.renderSortNumber = collectColumn.length + 1.5;
11224
- }
11225
11366
  reactData.isDragColMove = true;
11226
11367
  if (mouseConfig) {
11227
11368
  if ($xeTable.clearSelected) {
@@ -11232,14 +11373,12 @@ const Methods = {
11232
11373
  $xeTable.clearCopyCellArea();
11233
11374
  }
11234
11375
  }
11235
- $xeTable.analyColumnWidth();
11236
- $xeTable.$nextTick().then(() => {
11376
+ $xeTable.refreshColumn(true).then(() => {
11237
11377
  $xeTable.updateCellAreas();
11238
- $xeTable.refreshColumn(true);
11239
11378
  });
11240
11379
  $xeTable.dispatchEvent('column-dragend', {
11241
- oldColumn: dragCol,
11242
- newColumn: prevDragCol,
11380
+ oldColumn,
11381
+ newColumn,
11243
11382
  dragPos: prevDragPos,
11244
11383
  offsetIndex: dragOffsetIndex,
11245
11384
  _index: {
@@ -11253,6 +11392,7 @@ const Methods = {
11253
11392
  }
11254
11393
  hideDropTip($xeTable);
11255
11394
  clearColDropOrigin($xeTable);
11395
+ internalData.prevDragToChild = false;
11256
11396
  reactData.dragRow = null;
11257
11397
  reactData.dragCol = null;
11258
11398
  setTimeout(() => {
@@ -11266,10 +11406,16 @@ const Methods = {
11266
11406
  const {
11267
11407
  dragCol
11268
11408
  } = reactData;
11409
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
11410
+ const {
11411
+ isToChildDrag,
11412
+ isCrossDrag
11413
+ } = columnDragOpts;
11269
11414
  if (!dragCol) {
11270
11415
  evnt.preventDefault();
11271
11416
  return;
11272
11417
  }
11418
+ const hasCtrlKey = evnt.ctrlKey;
11273
11419
  const thEl = evnt.currentTarget;
11274
11420
  const colid = thEl.getAttribute('colid');
11275
11421
  const column = $xeTable.getColumnById(colid);
@@ -11280,11 +11426,11 @@ const Methods = {
11280
11426
  } = reactData;
11281
11427
  const offsetX = evnt.clientX - thEl.getBoundingClientRect().x;
11282
11428
  const dragPos = offsetX < thEl.clientWidth / 2 ? 'left' : 'right';
11283
- if (dragCol.id === column.id || column.parentId) {
11429
+ if (dragCol && dragCol.id === column.id || !isCrossDrag && column.parentId) {
11284
11430
  showDropTip($xeTable, evnt, null, thEl, false, dragPos);
11285
11431
  return;
11286
11432
  }
11287
- internalData.prevDragToChild = false;
11433
+ internalData.prevDragToChild = !!(isToChildDrag && hasCtrlKey);
11288
11434
  internalData.prevDragCol = column;
11289
11435
  internalData.prevDragPos = dragPos;
11290
11436
  showDropTip($xeTable, evnt, null, thEl, true, dragPos);
@@ -11298,7 +11444,6 @@ const Methods = {
11298
11444
  handleHeaderCellDragMousedownEvent(evnt, params) {
11299
11445
  const $xeTable = this;
11300
11446
  const reactData = $xeTable;
11301
- evnt.stopPropagation();
11302
11447
  const columnDragOpts = $xeTable.computeColumnDragOpts;
11303
11448
  const {
11304
11449
  dragStartMethod
@@ -13748,7 +13893,7 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
13748
13893
  'col--valid-error': !!errorValidItem,
13749
13894
  'col--current': currentColumn === column
13750
13895
  }, getClass(compCellClassName, params), getClass(className, params), getClass(allCellClassName, params)],
13751
- key: columnKey || columnOpts.useKey || rowOpts.useKey ? column.id : $columnIndex,
13896
+ key: columnKey || columnOpts.useKey || rowOpts.useKey || columnOpts.drag ? column.id : $columnIndex,
13752
13897
  attrs,
13753
13898
  style: Object.assign({
13754
13899
  height: cellHeight
@@ -13886,7 +14031,7 @@ function renderRows(h, _vm, $xeTable, fixedType, tableData, tableColumn) {
13886
14031
  rowid
13887
14032
  },
13888
14033
  style: rowStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(rowStyle) ? rowStyle(params) : rowStyle : null,
13889
- key: rowKey || rowOpts.useKey || rowOpts.drag || treeConfig ? rowid : $rowIndex,
14034
+ key: rowKey || rowOpts.useKey || rowOpts.drag || columnOpts.drag || treeConfig ? rowid : $rowIndex,
13890
14035
  nativeOn: trOn
13891
14036
  }, tdVNs) : h('tr', {
13892
14037
  class: trClass,
@@ -15233,7 +15378,7 @@ function footer_renderHeads(h, _vm, footerTableData) {
15233
15378
  const {
15234
15379
  getConfig: props_getConfig
15235
15380
  } = core_.VxeUI;
15236
- /* harmony default export */ var src_props = ({
15381
+ /* harmony default export */ var props = ({
15237
15382
  /** 基本属性 */
15238
15383
  id: [String, Function],
15239
15384
  // 数据
@@ -15498,23 +15643,73 @@ const {
15498
15643
  getIcon: panel_getIcon,
15499
15644
  renderEmptyElement: panel_renderEmptyElement
15500
15645
  } = core_.VxeUI;
15501
- function updateDropHint(_vm, evnt) {
15646
+ function panel_showDropTip(_vm, evnt, optEl, showLine, dragPos) {
15502
15647
  const {
15503
- $refs
15648
+ prevDragToChild
15504
15649
  } = _vm;
15505
- const dragHintEl = $refs.dragHintElemRef;
15506
- const bodyEl = $refs.bodyElemRef;
15507
- if (!bodyEl) {
15650
+ const el = _vm.$refs.bodyElemRef;
15651
+ if (!el) {
15508
15652
  return;
15509
15653
  }
15510
- if (dragHintEl) {
15511
- const wrapperEl = bodyEl.parentNode;
15512
- const wrapperRect = wrapperEl.getBoundingClientRect();
15513
- dragHintEl.style.display = 'block';
15514
- dragHintEl.style.top = `${Math.min(wrapperEl.clientHeight - wrapperEl.scrollTop - dragHintEl.clientHeight, evnt.clientY - wrapperRect.y)}px`;
15515
- dragHintEl.style.left = `${Math.min(wrapperEl.clientWidth - wrapperEl.scrollLeft - dragHintEl.clientWidth - 16, evnt.clientX - wrapperRect.x)}px`;
15654
+ const wrapperRect = el.getBoundingClientRect();
15655
+ if (optEl) {
15656
+ const dragLineEl = _vm.$refs.refDragLineElem;
15657
+ if (dragLineEl) {
15658
+ if (showLine) {
15659
+ const optRect = optEl.getBoundingClientRect();
15660
+ dragLineEl.style.display = 'block';
15661
+ dragLineEl.style.top = `${Math.max(1, optRect.y - wrapperRect.y)}px`;
15662
+ dragLineEl.style.height = `${optRect.height}px`;
15663
+ dragLineEl.style.width = `${optRect.width}px`;
15664
+ dragLineEl.setAttribute('drag-pos', dragPos);
15665
+ dragLineEl.setAttribute('drag-to-child', prevDragToChild ? 'y' : 'n');
15666
+ } else {
15667
+ dragLineEl.style.display = '';
15668
+ }
15669
+ }
15670
+ }
15671
+ const dragTipEl = _vm.$refs.refDragTipElem;
15672
+ if (dragTipEl) {
15673
+ dragTipEl.style.display = 'block';
15674
+ dragTipEl.style.top = `${Math.min(el.clientHeight - el.scrollTop - dragTipEl.clientHeight, evnt.clientY - wrapperRect.y)}px`;
15675
+ dragTipEl.style.left = `${Math.min(el.clientWidth - el.scrollLeft - dragTipEl.clientWidth - 16, evnt.clientX - wrapperRect.x)}px`;
15676
+ dragTipEl.setAttribute('drag-status', showLine ? prevDragToChild ? 'sub' : 'normal' : 'disabled');
15677
+ }
15678
+ }
15679
+ function panel_hideDropTip(_vm) {
15680
+ const dragTipEl = _vm.$refs.refDragTipElem;
15681
+ const dragLineEl = _vm.$refs.refDragLineElem;
15682
+ if (dragTipEl) {
15683
+ dragTipEl.style.display = '';
15684
+ }
15685
+ if (dragLineEl) {
15686
+ dragLineEl.style.display = '';
15516
15687
  }
15517
15688
  }
15689
+ const renderDragTip = (h, _vm) => {
15690
+ const {
15691
+ dragCol
15692
+ } = _vm;
15693
+ return h('div', {}, [h('div', {
15694
+ ref: 'refDragLineElem',
15695
+ class: 'vxe-table-custom-popup--drag-line'
15696
+ }), h('div', {
15697
+ ref: 'refDragTipElem',
15698
+ class: 'vxe-table-custom-popup--drag-tip'
15699
+ }, [h('div', {
15700
+ class: 'vxe-table-custom-popup--drag-tip-wrapper'
15701
+ }, [h('div', {
15702
+ class: 'vxe-table-custom-popup--drag-tip-status'
15703
+ }, [h('span', {
15704
+ class: ['vxe-table-custom-popup--drag-tip-normal-status', panel_getIcon().TABLE_DRAG_STATUS_ROW]
15705
+ }), h('span', {
15706
+ class: ['vxe-table-custom-popup--drag-tip-sub-status', panel_getIcon().TABLE_DRAG_STATUS_SUB_ROW]
15707
+ }), h('span', {
15708
+ class: ['vxe-table-custom-popup--drag-tip-disabled-status', panel_getIcon().TABLE_DRAG_DISABLED]
15709
+ })]), h('div', {
15710
+ class: 'vxe-table--drag-tip-content'
15711
+ }, panel_getI18n('vxe.custom.cstmDragTarget', [dragCol && dragCol.type !== 'html' ? dragCol.getTitle() : '']))])])]);
15712
+ };
15518
15713
  const renderSimplePanel = (h, _vm) => {
15519
15714
  const VxeUIButtonComponent = core_.VxeUI.getComponent('VxeButton');
15520
15715
  const props = _vm;
@@ -15528,6 +15723,10 @@ const renderSimplePanel = (h, _vm) => {
15528
15723
  customColumnList
15529
15724
  } = reactData;
15530
15725
  const customOpts = $xeTable.computeCustomOpts;
15726
+ const {
15727
+ immediate
15728
+ } = customOpts;
15729
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
15531
15730
  const {
15532
15731
  maxHeight
15533
15732
  } = customStore;
@@ -15541,6 +15740,9 @@ const renderSimplePanel = (h, _vm) => {
15541
15740
  placement
15542
15741
  } = customOpts;
15543
15742
  const isMaxFixedColumn = $xeTable.computeIsMaxFixedColumn;
15743
+ const {
15744
+ isCrossDrag
15745
+ } = columnDragOpts;
15544
15746
  const slots = customOpts.slots || {};
15545
15747
  const headerSlot = slots.header;
15546
15748
  const topSlot = slots.top;
@@ -15551,7 +15753,6 @@ const renderSimplePanel = (h, _vm) => {
15551
15753
  const customWrapperOns = {};
15552
15754
  const isAllChecked = customStore.isAll;
15553
15755
  const isAllIndeterminate = customStore.isIndeterminate;
15554
- const dragColumn = _vm.dragColumn;
15555
15756
  // hover 触发
15556
15757
  if (trigger === 'hover') {
15557
15758
  customWrapperOns.mouseenter = _vm.handleWrapperMouseenterEvent;
@@ -15610,16 +15811,18 @@ const renderSimplePanel = (h, _vm) => {
15610
15811
  }
15611
15812
  }, [h('span', {
15612
15813
  class: ['vxe-checkbox--icon', isIndeterminate ? panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? panel_getIcon().TABLE_CHECKBOX_CHECKED : panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
15613
- })]) : panel_renderEmptyElement($xeTable), allowSort && column.level === 1 ? h('div', {
15814
+ })]) : panel_renderEmptyElement($xeTable), h('div', {
15815
+ class: 'vxe-table-custom--name-option'
15816
+ }, [allowSort && ((isCrossDrag ? immediate : false) || column.level === 1) ? h('div', {
15614
15817
  class: 'vxe-table-custom--sort-option'
15615
15818
  }, [h('span', {
15616
15819
  class: ['vxe-table-custom--sort-btn', {
15617
- 'is--disabled': isDisabled || isHidden
15820
+ 'is--disabled': isDisabled || isHidden || column.renderFixed
15618
15821
  }],
15619
15822
  attrs: {
15620
15823
  title: panel_getI18n('vxe.custom.setting.sortHelpTip')
15621
15824
  },
15622
- on: isDisabled || isHidden ? {} : {
15825
+ on: isDisabled || isHidden || column.renderFixed ? {} : {
15623
15826
  mousedown: _vm.sortMousedownEvent,
15624
15827
  mouseup: _vm.sortMouseupEvent
15625
15828
  }
@@ -15637,7 +15840,7 @@ const renderSimplePanel = (h, _vm) => {
15637
15840
  attrs: {
15638
15841
  title: colTitle
15639
15842
  }
15640
- }, colTitle), !parent && allowFixed ? h('div', {
15843
+ }, colTitle)]), !parent && allowFixed ? h('div', {
15641
15844
  class: 'vxe-table-custom--fixed-option'
15642
15845
  }, [h(VxeUIButtonComponent, {
15643
15846
  props: {
@@ -15715,10 +15918,7 @@ const renderSimplePanel = (h, _vm) => {
15715
15918
  on: customWrapperOns
15716
15919
  }, colVNs), bottomSlot ? h('div', {
15717
15920
  class: 'vxe-table-custom--panel-bottom'
15718
- }, $xeTable.callSlot(bottomSlot, params, h)) : panel_renderEmptyElement($xeTable), h('div', {
15719
- ref: 'dragHintElemRef',
15720
- class: 'vxe-table-custom-popup--drag-hint'
15721
- }, panel_getI18n('vxe.custom.cstmDragTarget', [dragColumn && dragColumn.type !== 'html' ? dragColumn.getTitle() : '']))]), customOpts.showFooter ? h('div', {
15921
+ }, $xeTable.callSlot(bottomSlot, params, h)) : panel_renderEmptyElement($xeTable), renderDragTip(h, _vm)]), customOpts.showFooter ? h('div', {
15722
15922
  class: 'vxe-table-custom--footer'
15723
15923
  }, footerSlot ? $xeTable.callSlot(footerSlot, params, h) : [h('div', {
15724
15924
  class: 'vxe-table-custom--footer-buttons'
@@ -15731,7 +15931,7 @@ const renderSimplePanel = (h, _vm) => {
15731
15931
  on: {
15732
15932
  click: _vm.resetCustomEvent
15733
15933
  }
15734
- }), customOpts.immediate ? h(VxeUIButtonComponent, {
15934
+ }), immediate ? h(VxeUIButtonComponent, {
15735
15935
  props: {
15736
15936
  mode: 'text',
15737
15937
  content: customOpts.closeButtonText || panel_getI18n('vxe.table.customClose')
@@ -15747,7 +15947,7 @@ const renderSimplePanel = (h, _vm) => {
15747
15947
  on: {
15748
15948
  click: _vm.cancelCustomEvent
15749
15949
  }
15750
- }), customOpts.immediate ? panel_renderEmptyElement($xeTable) : h(VxeUIButtonComponent, {
15950
+ }), immediate ? panel_renderEmptyElement($xeTable) : h(VxeUIButtonComponent, {
15751
15951
  props: {
15752
15952
  mode: 'text',
15753
15953
  status: 'primary',
@@ -15763,7 +15963,6 @@ const renderPopupPanel = (h, _vm) => {
15763
15963
  const VxeUIDrawerComponent = core_.VxeUI.getComponent('VxeDrawer');
15764
15964
  const VxeUIButtonComponent = core_.VxeUI.getComponent('VxeButton');
15765
15965
  const VxeUINumberInputComponent = core_.VxeUI.getComponent('VxeInput');
15766
- const VxeUITooltipComponent = core_.VxeUI.getComponent('VxeTooltip');
15767
15966
  const $xeTableCustomPanel = _vm;
15768
15967
  const props = _vm;
15769
15968
  const $xeTable = _vm.$xeTable;
@@ -15780,6 +15979,10 @@ const renderPopupPanel = (h, _vm) => {
15780
15979
  customColumnList
15781
15980
  } = reactData;
15782
15981
  const customOpts = $xeTable.computeCustomOpts;
15982
+ const {
15983
+ immediate
15984
+ } = customOpts;
15985
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
15783
15986
  const {
15784
15987
  mode,
15785
15988
  modalOptions,
@@ -15803,6 +16006,9 @@ const renderPopupPanel = (h, _vm) => {
15803
16006
  const modalOpts = Object.assign({}, modalOptions);
15804
16007
  const drawerOpts = Object.assign({}, drawerOptions);
15805
16008
  const isMaxFixedColumn = $xeTable.computeIsMaxFixedColumn;
16009
+ const {
16010
+ isCrossDrag
16011
+ } = columnDragOpts;
15806
16012
  const slots = customOpts.slots || {};
15807
16013
  const headerSlot = slots.header;
15808
16014
  const topSlot = slots.top;
@@ -15812,7 +16018,6 @@ const renderPopupPanel = (h, _vm) => {
15812
16018
  const trVNs = [];
15813
16019
  const isAllChecked = customStore.isAll;
15814
16020
  const isAllIndeterminate = customStore.isIndeterminate;
15815
- const dragColumn = _vm.dragColumn;
15816
16021
  const params = {
15817
16022
  $table: $xeTable,
15818
16023
  $grid: $xeTable.xegrid,
@@ -15885,40 +16090,43 @@ const renderPopupPanel = (h, _vm) => {
15885
16090
  }
15886
16091
  }, [h('span', {
15887
16092
  class: ['vxe-checkbox--icon', isIndeterminate ? panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? panel_getIcon().TABLE_CHECKBOX_CHECKED : panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
15888
- })])]) : panel_renderEmptyElement($xeTable), allowSort ? h('td', {
15889
- class: 'vxe-table-custom-popup--column-item col--sort'
15890
- }, [column.level === 1 ? h('span', {
16093
+ })])]) : panel_renderEmptyElement($xeTable), h('td', {
16094
+ class: 'vxe-table-custom-popup--column-item col--name'
16095
+ }, [h('div', {
16096
+ class: 'vxe-table-custom-popup--name'
16097
+ }, [allowSort ? (isCrossDrag ? immediate : false) || column.level === 1 ? h('div', {
15891
16098
  class: ['vxe-table-custom-popup--column-sort-btn', {
15892
- 'is--disabled': isDisabled || isHidden
16099
+ 'is--disabled': isDisabled || isHidden || column.renderFixed
15893
16100
  }],
15894
16101
  attrs: {
15895
16102
  title: panel_getI18n('vxe.custom.setting.sortHelpTip')
15896
16103
  },
15897
- on: isDisabled || isHidden ? {} : {
16104
+ on: isDisabled || isHidden || column.renderFixed ? {} : {
15898
16105
  mousedown: _vm.sortMousedownEvent,
15899
16106
  mouseup: _vm.sortMouseupEvent
15900
16107
  }
15901
16108
  }, [h('i', {
15902
16109
  class: panel_getIcon().TABLE_CUSTOM_SORT
15903
- })]) : h('span', '-')]) : panel_renderEmptyElement($xeTable), h('td', {
15904
- class: 'vxe-table-custom-popup--column-item col--name'
15905
- }, [column.type === 'html' ? h('div', {
16110
+ })]) : h('div', {
16111
+ class: 'vxe-table-custom-popup--column-sort-placeholder'
16112
+ }) : panel_renderEmptyElement($xeTable), column.type === 'html' ? h('div', {
15906
16113
  key: '1',
15907
- class: 'vxe-table-custom-popup--name',
16114
+ class: 'vxe-table-custom-popup--title',
15908
16115
  domProps: {
15909
16116
  innerHTML: colTitle
15910
16117
  }
15911
16118
  }) : h('div', {
15912
16119
  key: '0',
15913
- class: 'vxe-table-custom-popup--name',
16120
+ class: 'vxe-table-custom-popup--title',
15914
16121
  attrs: {
15915
16122
  title: colTitle
15916
16123
  }
15917
- }, colTitle)]), allowResizable ? h('td', {
16124
+ }, colTitle)])]), allowResizable ? h('td', {
15918
16125
  class: 'vxe-table-custom-popup--column-item col--resizable'
15919
16126
  }, [column.children && column.children.length || !(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(column.resizable) ? column.resizable : columnOpts.resizable || allResizable) ? h('span', '-') : VxeUINumberInputComponent ? h(VxeUINumberInputComponent, {
15920
16127
  props: {
15921
16128
  type: 'integer',
16129
+ immediate: false,
15922
16130
  disabled: isDisabled || isHidden,
15923
16131
  value: column.renderResizeWidth,
15924
16132
  min: customMinWidth || undefined,
@@ -15927,6 +16135,9 @@ const renderPopupPanel = (h, _vm) => {
15927
16135
  on: {
15928
16136
  modelValue(value) {
15929
16137
  column.renderResizeWidth = Math.max(0, Number(value));
16138
+ },
16139
+ change() {
16140
+ _vm.changeColumnWidth(column);
15930
16141
  }
15931
16142
  }
15932
16143
  }) : panel_renderEmptyElement($xeTableCustomPanel)]) : panel_renderEmptyElement($xeTable), allowFixed ? h('td', {
@@ -15953,7 +16164,7 @@ const renderPopupPanel = (h, _vm) => {
15953
16164
  },
15954
16165
  on: {
15955
16166
  input(value) {
15956
- column.renderFixed = value;
16167
+ _vm.changeFixedOption(column, value);
15957
16168
  }
15958
16169
  }
15959
16170
  })]) : panel_renderEmptyElement($xeTable)]));
@@ -15973,8 +16184,6 @@ const renderPopupPanel = (h, _vm) => {
15973
16184
  class: 'vxe-table-custom-popup--table-wrapper'
15974
16185
  }, [h('table', {}, [h('colgroup', {}, [allowVisible ? h('col', {
15975
16186
  class: 'vxe-table-custom-popup--table-col-seq'
15976
- }) : panel_renderEmptyElement($xeTable), allowSort ? h('col', {
15977
- class: 'vxe-table-custom-popup--table-col-sort'
15978
16187
  }) : panel_renderEmptyElement($xeTable), h('col', {
15979
16188
  class: 'vxe-table-custom-popup--table-col-title'
15980
16189
  }), allowResizable ? h('col', {
@@ -15996,22 +16205,7 @@ const renderPopupPanel = (h, _vm) => {
15996
16205
  class: ['vxe-checkbox--icon', isAllIndeterminate ? panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? panel_getIcon().TABLE_CHECKBOX_CHECKED : panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
15997
16206
  }), h('span', {
15998
16207
  class: 'vxe-checkbox--label'
15999
- }, panel_getI18n('vxe.toolbar.customAll'))])]) : panel_renderEmptyElement($xeTable), allowSort ? h('th', {}, [h('span', {
16000
- class: 'vxe-table-custom-popup--table-sort-help-title'
16001
- }, panel_getI18n('vxe.custom.setting.colSort')), VxeUITooltipComponent ? h(VxeUITooltipComponent, {
16002
- props: {
16003
- enterable: true,
16004
- content: panel_getI18n('vxe.custom.setting.sortHelpTip'),
16005
- popupClassName: 'vxe-table--ignore-clear'
16006
- },
16007
- scopedSlots: {
16008
- default: () => {
16009
- return h('i', {
16010
- class: 'vxe-table-custom-popup--table-sort-help-icon vxe-icon-question-circle-fill'
16011
- });
16012
- }
16013
- }
16014
- }) : panel_renderEmptyElement($xeTableCustomPanel)]) : panel_renderEmptyElement($xeTable), h('th', {}, panel_getI18n('vxe.custom.setting.colTitle')), allowResizable ? h('th', {}, panel_getI18n('vxe.custom.setting.colResizable')) : panel_renderEmptyElement($xeTable), allowFixed ? h('th', {}, panel_getI18n(`vxe.custom.setting.${maxFixedSize ? 'colFixedMax' : 'colFixed'}`, [maxFixedSize])) : panel_renderEmptyElement($xeTable)])]), h('transition-group', {
16208
+ }, panel_getI18n('vxe.toolbar.customAll'))])]) : panel_renderEmptyElement($xeTable), h('th', {}, panel_getI18n('vxe.custom.setting.colTitle')), allowResizable ? h('th', {}, panel_getI18n('vxe.custom.setting.colResizable')) : panel_renderEmptyElement($xeTable), allowFixed ? h('th', {}, panel_getI18n(`vxe.custom.setting.${maxFixedSize ? 'colFixedMax' : 'colFixed'}`, [maxFixedSize])) : panel_renderEmptyElement($xeTable)])]), h('transition-group', {
16015
16209
  class: 'vxe-table-custom--panel-list',
16016
16210
  props: {
16017
16211
  tag: 'tbody',
@@ -16019,10 +16213,7 @@ const renderPopupPanel = (h, _vm) => {
16019
16213
  }
16020
16214
  }, trVNs)])]), bottomSlot ? h('div', {
16021
16215
  class: 'vxe-table-custom-popup--table-bottom'
16022
- }, $xeTable.callSlot(bottomSlot, params, h)) : panel_renderEmptyElement($xeTable), h('div', {
16023
- ref: 'dragHintElemRef',
16024
- class: 'vxe-table-custom-popup--drag-hint'
16025
- }, panel_getI18n('vxe.custom.cstmDragTarget', [dragColumn ? dragColumn.getTitle() : '']))]);
16216
+ }, $xeTable.callSlot(bottomSlot, params, h)) : panel_renderEmptyElement($xeTable), renderDragTip(h, _vm)]);
16026
16217
  },
16027
16218
  footer: () => {
16028
16219
  if (footerSlot) {
@@ -16038,14 +16229,21 @@ const renderPopupPanel = (h, _vm) => {
16038
16229
  on: {
16039
16230
  click: _vm.resetCustomEvent
16040
16231
  }
16041
- }), h(VxeUIButtonComponent, {
16232
+ }), immediate ? h(VxeUIButtonComponent, {
16233
+ props: {
16234
+ content: customOpts.resetButtonText || panel_getI18n('vxe.custom.customClose')
16235
+ },
16236
+ on: {
16237
+ click: _vm.cancelCloseEvent
16238
+ }
16239
+ }) : h(VxeUIButtonComponent, {
16042
16240
  props: {
16043
16241
  content: customOpts.resetButtonText || panel_getI18n('vxe.custom.cstmCancel')
16044
16242
  },
16045
16243
  on: {
16046
16244
  click: _vm.cancelCustomEvent
16047
16245
  }
16048
- }), h(VxeUIButtonComponent, {
16246
+ }), immediate ? panel_renderEmptyElement($xeTable) : h(VxeUIButtonComponent, {
16049
16247
  props: {
16050
16248
  status: 'primary',
16051
16249
  content: customOpts.confirmButtonText || panel_getI18n('vxe.custom.cstmConfirm')
@@ -16129,7 +16327,9 @@ const renderPopupPanel = (h, _vm) => {
16129
16327
  },
16130
16328
  data() {
16131
16329
  return {
16132
- dragColumn: null
16330
+ prevDragCol: undefined,
16331
+ prevDragToChild: false,
16332
+ prevDragPos: null
16133
16333
  };
16134
16334
  },
16135
16335
  computed: {},
@@ -16139,7 +16339,6 @@ const renderPopupPanel = (h, _vm) => {
16139
16339
  const VxeUIDrawerComponent = core_.VxeUI.getComponent('VxeDrawer');
16140
16340
  const VxeUIButtonComponent = core_.VxeUI.getComponent('VxeButton');
16141
16341
  const VxeUINumberInputComponent = core_.VxeUI.getComponent('VxeNumberInput');
16142
- const VxeUITooltipComponent = core_.VxeUI.getComponent('VxeTooltip');
16143
16342
  const VxeUIRadioGroupComponent = core_.VxeUI.getComponent('VxeRadioGroup');
16144
16343
  this.$nextTick(() => {
16145
16344
  const {
@@ -16163,9 +16362,6 @@ const renderPopupPanel = (h, _vm) => {
16163
16362
  if (!VxeUINumberInputComponent) {
16164
16363
  errLog('vxe.error.reqComp', ['vxe-input']);
16165
16364
  }
16166
- if (!VxeUITooltipComponent) {
16167
- errLog('vxe.error.reqComp', ['vxe-tooltip']);
16168
- }
16169
16365
  if (!VxeUIRadioGroupComponent) {
16170
16366
  errLog('vxe.error.reqComp', ['vxe-radio-group']);
16171
16367
  }
@@ -16212,6 +16408,8 @@ const renderPopupPanel = (h, _vm) => {
16212
16408
  $event
16213
16409
  }) {
16214
16410
  const $xeTable = this.$xeTable;
16411
+ const reactData = $xeTable;
16412
+ reactData.isCustomStatus = true;
16215
16413
  $xeTable.saveCustom();
16216
16414
  $xeTable.closeCustom();
16217
16415
  $xeTable.emitCustomEvent('confirm', $event);
@@ -16289,12 +16487,11 @@ const renderPopupPanel = (h, _vm) => {
16289
16487
  }
16290
16488
  },
16291
16489
  changeCheckboxOption(column) {
16292
- const {
16293
- $xetable
16294
- } = this;
16490
+ const $xeTable = this.$xetable;
16491
+ const reactData = $xeTable;
16295
16492
  const {
16296
16493
  customOpts
16297
- } = $xetable;
16494
+ } = $xeTable.customOpts;
16298
16495
  const isChecked = !column.renderVisible;
16299
16496
  if (customOpts.immediate) {
16300
16497
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], item => {
@@ -16302,8 +16499,9 @@ const renderPopupPanel = (h, _vm) => {
16302
16499
  item.renderVisible = isChecked;
16303
16500
  item.halfVisible = false;
16304
16501
  });
16305
- $xetable.handleCustom();
16306
- $xetable.saveCustomStore('update:visible');
16502
+ reactData.isCustomStatus = true;
16503
+ $xeTable.handleCustom();
16504
+ $xeTable.saveCustomStore('update:visible');
16307
16505
  } else {
16308
16506
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], item => {
16309
16507
  item.renderVisible = isChecked;
@@ -16311,16 +16509,27 @@ const renderPopupPanel = (h, _vm) => {
16311
16509
  });
16312
16510
  }
16313
16511
  this.handleOptionCheck(column);
16314
- $xetable.checkCustomStatus();
16512
+ $xeTable.checkCustomStatus();
16513
+ },
16514
+ changeColumnWidth(column) {
16515
+ const $xeTable = this.$xetable;
16516
+ const reactData = $xeTable;
16517
+ const customOpts = $xeTable.computeCustomOpts;
16518
+ if (customOpts.immediate) {
16519
+ if (column.renderResizeWidth !== column.renderWidth) {
16520
+ column.resizeWidth = column.renderResizeWidth;
16521
+ column.renderWidth = column.renderResizeWidth;
16522
+ reactData.isCustomStatus = true;
16523
+ $xeTable.handleCustom();
16524
+ $xeTable.saveCustomStore('update:width');
16525
+ }
16526
+ }
16315
16527
  },
16316
16528
  changeFixedOption(column, colFixed) {
16317
- const {
16318
- $xetable
16319
- } = this;
16320
- const {
16321
- isMaxFixedColumn,
16322
- customOpts
16323
- } = $xetable;
16529
+ const $xeTable = this.$xetable;
16530
+ const reactData = $xeTable;
16531
+ const isMaxFixedColumn = $xeTable.computeIsMaxFixedColumn;
16532
+ const customOpts = $xeTable.computeCustomOpts;
16324
16533
  if (customOpts.immediate) {
16325
16534
  if (column.renderFixed === colFixed) {
16326
16535
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], col => {
@@ -16335,8 +16544,9 @@ const renderPopupPanel = (h, _vm) => {
16335
16544
  });
16336
16545
  }
16337
16546
  }
16338
- $xetable.handleCustom();
16339
- $xetable.saveCustomStore('update:fixed');
16547
+ reactData.isCustomStatus = true;
16548
+ $xeTable.handleCustom();
16549
+ $xeTable.saveCustomStore('update:fixed');
16340
16550
  } else {
16341
16551
  if (column.renderFixed === colFixed) {
16342
16552
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], col => {
@@ -16358,113 +16568,261 @@ const renderPopupPanel = (h, _vm) => {
16358
16568
  $xetable.toggleCustomAllCheckbox();
16359
16569
  },
16360
16570
  sortMousedownEvent(evnt) {
16361
- const {
16362
- $xetable
16363
- } = this;
16571
+ const $xeTable = this.$xetable;
16364
16572
  const btnEl = evnt.currentTarget;
16365
- const tdEl = btnEl.parentNode;
16366
- const trEl = tdEl.parentNode;
16573
+ const cellEl = btnEl.parentElement;
16574
+ const tdEl = cellEl.parentElement;
16575
+ const trEl = tdEl.parentElement;
16367
16576
  const colid = trEl.getAttribute('colid');
16368
- const column = $xetable.getColumnById(colid);
16577
+ const column = $xeTable.getColumnById(colid);
16369
16578
  trEl.draggable = true;
16370
- this.dragColumn = column;
16579
+ this.dragCol = column;
16371
16580
  addClass(trEl, 'active--drag-origin');
16372
- updateDropHint(this, evnt);
16373
16581
  },
16374
16582
  sortMouseupEvent(evnt) {
16375
16583
  const btnEl = evnt.currentTarget;
16376
- const tdEl = btnEl.parentNode;
16377
- const trEl = tdEl.parentNode;
16378
- const dragHintEl = this.$refs.dragHintElemRef;
16584
+ const cellEl = btnEl.parentElement;
16585
+ const tdEl = cellEl.parentElement;
16586
+ const trEl = tdEl.parentElement;
16587
+ panel_hideDropTip(this);
16379
16588
  trEl.draggable = false;
16380
- this.dragColumn = null;
16589
+ this.dragCol = null;
16381
16590
  removeClass(trEl, 'active--drag-origin');
16382
- if (dragHintEl) {
16383
- dragHintEl.style.display = '';
16384
- }
16385
16591
  },
16386
16592
  sortDragstartEvent(evnt) {
16387
- const img = new Image();
16388
16593
  if (evnt.dataTransfer) {
16594
+ const img = new Image();
16595
+ img.src = tpImg;
16389
16596
  evnt.dataTransfer.setDragImage(img, 0, 0);
16390
16597
  }
16391
16598
  },
16392
16599
  sortDragendEvent(evnt) {
16600
+ const $xeTable = this.$xetable;
16601
+ const tableProps = $xeTable;
16602
+ const reactData = $xeTable;
16603
+ const internalData = $xeTable;
16393
16604
  const {
16394
- $xetable,
16395
- prevDropTrEl
16605
+ dragCol,
16606
+ prevDragPos,
16607
+ prevDragCol,
16608
+ prevDragToChild
16396
16609
  } = this;
16397
16610
  const {
16398
- customColumnList,
16399
- customOpts
16400
- } = $xetable;
16611
+ mouseConfig
16612
+ } = tableProps;
16613
+ const {
16614
+ customColumnList
16615
+ } = reactData;
16616
+ const {
16617
+ collectColumn
16618
+ } = internalData;
16619
+ const customOpts = $xeTable.computeCustomOpts;
16620
+ const {
16621
+ immediate
16622
+ } = customOpts;
16401
16623
  const trEl = evnt.currentTarget;
16402
- const dragHintEl = this.$refs.dragHintElemRef;
16403
- if (prevDropTrEl) {
16624
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
16625
+ const {
16626
+ isCrossDrag,
16627
+ isSelfToChildDrag,
16628
+ isToChildDrag,
16629
+ dragEndMethod
16630
+ } = columnDragOpts;
16631
+ const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
16632
+ if (prevDragCol && dragCol) {
16404
16633
  // 判断是否有拖动
16405
- if (prevDropTrEl !== trEl) {
16406
- const dragOffset = prevDropTrEl.getAttribute('drag-pos');
16407
- const colid = trEl.getAttribute('colid');
16408
- const column = $xetable.getColumnById(colid);
16409
- if (!column) {
16410
- return;
16411
- }
16412
- const cIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(customColumnList, item => item.id === column.id);
16413
- const targetColid = prevDropTrEl.getAttribute('colid');
16414
- const targetColumn = $xetable.getColumnById(targetColid);
16415
- if (!targetColumn) {
16416
- return;
16417
- }
16418
- // 移出源位置
16419
- customColumnList.splice(cIndex, 1);
16420
- const tcIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(customColumnList, item => item.id === targetColumn.id);
16421
- // 插新位置
16422
- customColumnList.splice(tcIndex + (dragOffset === 'bottom' ? 1 : 0), 0, column);
16634
+ if (prevDragCol !== dragCol) {
16635
+ const oldColumn = dragCol;
16636
+ const newColumn = prevDragCol;
16637
+ Promise.resolve(dragEndMethod ? dragEndMethod({
16638
+ oldColumn,
16639
+ newColumn,
16640
+ dragPos: prevDragPos,
16641
+ offsetIndex: dragOffsetIndex
16642
+ }) : true).then(status => {
16643
+ if (!status) {
16644
+ return;
16645
+ }
16646
+ let oafIndex = -1;
16647
+ let nafIndex = -1;
16648
+ const oldAllMaps = {};
16649
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([oldColumn], column => {
16650
+ oldAllMaps[column.id] = column;
16651
+ });
16652
+ let isSelfToChildStatus = false;
16653
+ // 只有实时拖拽支持跨层级
16654
+ if (immediate) {
16655
+ if (oldColumn.parentId && newColumn.parentId) {
16656
+ // 子到子
16657
+ if (!isCrossDrag) {
16658
+ return;
16659
+ }
16660
+ if (oldAllMaps[newColumn.id]) {
16661
+ isSelfToChildStatus = true;
16662
+ if (!isSelfToChildDrag) {
16663
+ if (core_.VxeUI.modal) {
16664
+ core_.VxeUI.modal.message({
16665
+ status: 'error',
16666
+ content: panel_getI18n('vxe.error.treeDragChild')
16667
+ });
16668
+ }
16669
+ return;
16670
+ }
16671
+ }
16672
+ } else if (oldColumn.parentId) {
16673
+ // 子到根
16674
+ if (!isCrossDrag) {
16675
+ return;
16676
+ }
16677
+ } else if (newColumn.parentId) {
16678
+ // 根到子
16679
+ if (!isCrossDrag) {
16680
+ return;
16681
+ }
16682
+ if (oldAllMaps[newColumn.id]) {
16683
+ isSelfToChildStatus = true;
16684
+ if (!isSelfToChildDrag) {
16685
+ if (core_.VxeUI.modal) {
16686
+ core_.VxeUI.modal.message({
16687
+ status: 'error',
16688
+ content: panel_getI18n('vxe.error.treeDragChild')
16689
+ });
16690
+ }
16691
+ return;
16692
+ }
16693
+ }
16694
+ } else {
16695
+ // 根到根
16696
+ }
16697
+ const oldewMatchRest = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(collectColumn, item => item.id === oldColumn.id);
16698
+ // 改变层级
16699
+ if (isSelfToChildStatus && isSelfToChildDrag) {
16700
+ if (oldewMatchRest) {
16701
+ const {
16702
+ items: oCols,
16703
+ index: oIndex
16704
+ } = oldewMatchRest;
16705
+ const childList = oldColumn.children || [];
16706
+ childList.forEach(column => {
16707
+ column.parentId = oldColumn.parentId;
16708
+ });
16709
+ oCols.splice(oIndex, 1, ...childList);
16710
+ oldColumn.children = [];
16711
+ }
16712
+ } else {
16713
+ if (oldewMatchRest) {
16714
+ const {
16715
+ items: oCols,
16716
+ index: oIndex,
16717
+ parent: oParent
16718
+ } = oldewMatchRest;
16719
+ oCols.splice(oIndex, 1);
16720
+ if (!oParent) {
16721
+ oafIndex = oIndex;
16722
+ }
16723
+ }
16724
+ }
16725
+ const newMatchRest = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(collectColumn, item => item.id === newColumn.id);
16726
+ if (newMatchRest) {
16727
+ const {
16728
+ items: nCols,
16729
+ index: nIndex,
16730
+ parent: nParent
16731
+ } = newMatchRest;
16732
+ // 转子级
16733
+ if (isToChildDrag && prevDragToChild) {
16734
+ oldColumn.parentId = newColumn.id;
16735
+ newColumn.children = (newColumn.children || []).concat([oldColumn]);
16736
+ } else {
16737
+ oldColumn.parentId = newColumn.parentId;
16738
+ nCols.splice(nIndex + dragOffsetIndex, 0, oldColumn);
16739
+ }
16740
+ if (!nParent) {
16741
+ nafIndex = nIndex;
16742
+ }
16743
+ }
16744
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn, (column, index, items, path, parent) => {
16745
+ if (!parent) {
16746
+ const sortIndex = index + 1;
16747
+ column.renderSortNumber = sortIndex;
16748
+ }
16749
+ });
16750
+ } else {
16751
+ oafIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(customColumnList, item => item.id === oldColumn.id);
16752
+ customColumnList.splice(oafIndex, 1);
16753
+ nafIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(customColumnList, item => item.id === newColumn.id);
16754
+ customColumnList.splice(nafIndex + dragOffsetIndex, 0, oldColumn);
16755
+ }
16756
+ reactData.isDragColMove = true;
16757
+ if (mouseConfig) {
16758
+ if ($xeTable.clearSelected) {
16759
+ $xeTable.clearSelected();
16760
+ }
16761
+ if ($xeTable.clearCellAreas) {
16762
+ $xeTable.clearCellAreas();
16763
+ $xeTable.clearCopyCellArea();
16764
+ }
16765
+ }
16766
+ $xeTable.dispatchEvent('column-dragend', {
16767
+ oldColumn,
16768
+ newColumn,
16769
+ dragPos: prevDragPos,
16770
+ offsetIndex: dragOffsetIndex,
16771
+ _index: {
16772
+ newIndex: nafIndex,
16773
+ oldIndex: oafIndex
16774
+ }
16775
+ }, evnt);
16776
+ if (immediate) {
16777
+ reactData.customColumnList = collectColumn.slice(0);
16778
+ $xeTable.refreshColumn(true).then(() => {
16779
+ $xeTable.updateCellAreas();
16780
+ $xeTable.handleCustom();
16781
+ $xeTable.saveCustomStore('update:sort');
16782
+ });
16783
+ }
16784
+ }).catch(() => {});
16423
16785
  }
16424
- prevDropTrEl.draggable = false;
16425
- prevDropTrEl.removeAttribute('drag-pos');
16426
- removeClass(prevDropTrEl, 'active--drag-target');
16427
16786
  }
16428
- this.dragColumn = null;
16787
+ panel_hideDropTip(this);
16788
+ this.dragCol.value = null;
16429
16789
  trEl.draggable = false;
16430
16790
  trEl.removeAttribute('drag-pos');
16431
- if (dragHintEl) {
16432
- dragHintEl.style.display = '';
16433
- }
16434
16791
  removeClass(trEl, 'active--drag-target');
16435
16792
  removeClass(trEl, 'active--drag-origin');
16436
- if (customOpts.immediate) {
16437
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(customColumnList, (column, index, items, path, parent) => {
16438
- if (!parent) {
16439
- const sortIndex = index + 1;
16440
- column.renderSortNumber = sortIndex;
16441
- }
16442
- });
16443
- $xetable.handleCustom();
16444
- $xetable.saveCustomStore('update:sort');
16445
- }
16446
16793
  },
16447
16794
  sortDragoverEvent(evnt) {
16795
+ const $xeTable = this.$xetable;
16448
16796
  const {
16449
- $xetable,
16450
- prevDropTrEl
16797
+ dragCol
16451
16798
  } = this;
16452
- const trEl = evnt.currentTarget;
16453
- if (prevDropTrEl !== trEl) {
16454
- removeClass(prevDropTrEl, 'active--drag-target');
16455
- }
16456
- const colid = trEl.getAttribute('colid');
16457
- const column = $xetable.getColumnById(colid);
16458
- // 是否移入有效元行
16459
- if (column && column.level === 1) {
16799
+ const customOpts = $xeTable.computeCustomOpts;
16800
+ const {
16801
+ immediate
16802
+ } = customOpts;
16803
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
16804
+ const {
16805
+ isCrossDrag,
16806
+ isToChildDrag
16807
+ } = columnDragOpts;
16808
+ const optEl = evnt.currentTarget;
16809
+ const hasCtrlKey = evnt.ctrlKey;
16810
+ const colid = optEl.getAttribute('colid');
16811
+ const column = $xeTable.getColumnById(colid);
16812
+ // 是否移入有效列
16813
+ if (column && (isCrossDrag || column.level === 1)) {
16460
16814
  evnt.preventDefault();
16461
- const offsetY = evnt.clientY - trEl.getBoundingClientRect().y;
16462
- const dragOffset = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom';
16463
- addClass(trEl, 'active--drag-target');
16464
- trEl.setAttribute('drag-pos', dragOffset);
16465
- this.prevDropTrEl = trEl;
16815
+ const offsetY = evnt.clientY - optEl.getBoundingClientRect().y;
16816
+ const dragPos = offsetY < optEl.clientHeight / 2 ? 'top' : 'bottom';
16817
+ if (dragCol && dragCol.id === column.id || !isCrossDrag && column.level === 1 || !immediate && column.level > 1 || column.renderFixed) {
16818
+ panel_showDropTip(this, evnt, optEl, false, dragPos);
16819
+ return;
16820
+ }
16821
+ this.prevDragToChild = !!(isToChildDrag && hasCtrlKey && immediate);
16822
+ this.prevDragCol = column;
16823
+ this.prevDragPos = dragPos;
16824
+ panel_showDropTip(this, evnt, optEl, true, dragPos);
16466
16825
  }
16467
- updateDropHint(this, evnt);
16468
16826
  }
16469
16827
  }
16470
16828
  });
@@ -22372,6 +22730,7 @@ function validErrorRuleValue(rule, val) {
22372
22730
  },
22373
22731
  _setCustomAllCheckbox(checked) {
22374
22732
  const $xeTable = this;
22733
+ const reactData = $xeTable;
22375
22734
  const {
22376
22735
  customStore
22377
22736
  } = this;
@@ -22401,6 +22760,7 @@ function validErrorRuleValue(rule, val) {
22401
22760
  column.halfVisible = false;
22402
22761
  });
22403
22762
  customStore.isAll = isAll;
22763
+ reactData.isCustomStatus = true;
22404
22764
  $xeTable.handleCustom();
22405
22765
  $xeTable.saveCustomStore('update:visible');
22406
22766
  } else {
@@ -22634,7 +22994,7 @@ const renderDragTipContents = (h, $xeTable) => {
22634
22994
  }
22635
22995
  return [h('span', dragTipText)];
22636
22996
  };
22637
- const renderDragTip = (h, $xeTable) => {
22997
+ const table_renderDragTip = (h, $xeTable) => {
22638
22998
  const reactData = $xeTable;
22639
22999
  const {
22640
23000
  dragRow
@@ -22686,7 +23046,7 @@ function handleUupdateResize(_vm) {
22686
23046
  /* harmony default export */ var table = ({
22687
23047
  name: 'VxeTable',
22688
23048
  mixins: [table_globalMixins.sizeMixin, mixin, menu_mixin, edit_mixin, export_mixin, keyboard_mixin, validator_mixin, custom_mixin],
22689
- props: src_props,
23049
+ props: props,
22690
23050
  provide() {
22691
23051
  return {
22692
23052
  $xetable: this,
@@ -23317,7 +23677,7 @@ function handleUupdateResize(_vm) {
23317
23677
  });
23318
23678
  },
23319
23679
  staticColumns(value) {
23320
- this.handleColumn(value);
23680
+ this.handleColumn(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(value));
23321
23681
  },
23322
23682
  tableColumn() {
23323
23683
  this.analyColumnWidth();
@@ -23977,7 +24337,7 @@ function handleUupdateResize(_vm) {
23977
24337
  /**
23978
24338
  * 拖拽提示
23979
24339
  */
23980
- renderDragTip(h, this), h('div', {}, [
24340
+ table_renderDragTip(h, this), h('div', {}, [
23981
24341
  /**
23982
24342
  * 提示相关
23983
24343
  */
@@ -24011,8 +24371,6 @@ function handleUupdateResize(_vm) {
24011
24371
  },
24012
24372
  methods: methods
24013
24373
  });
24014
- ;// CONCATENATED MODULE: ./packages/ui/src/comp.ts
24015
- const defineVxeComponent = options => options;
24016
24374
  ;// CONCATENATED MODULE: ./packages/toolbar/src/toolbar.ts
24017
24375
 
24018
24376
 
@@ -24800,7 +25158,7 @@ const {
24800
25158
  renderEmptyElement: grid_renderEmptyElement
24801
25159
  } = core_.VxeUI;
24802
25160
  const grid_methods = {};
24803
- const propKeys = Object.keys(src_props);
25161
+ const propKeys = Object.keys(props);
24804
25162
  function renderDefaultForm(h, $xeGrid) {
24805
25163
  const VxeUIFormComponent = core_.VxeUI.getComponent('VxeForm');
24806
25164
  const props = $xeGrid;
@@ -25157,7 +25515,7 @@ Object.keys(table.methods).forEach(name => {
25157
25515
  name: 'VxeGrid',
25158
25516
  mixins: [grid_globalMixins.sizeMixin],
25159
25517
  props: {
25160
- ...src_props,
25518
+ ...props,
25161
25519
  layouts: Array,
25162
25520
  columns: Array,
25163
25521
  pagerConfig: [Boolean, Object],
@@ -27422,8 +27780,8 @@ const Toolbar = VxeToolbar;
27422
27780
  notExp: '该浏览器不支持导入/导出功能',
27423
27781
  impFields: '导入失败,请检查字段名和数据格式是否正确',
27424
27782
  treeNotImp: '树表格不支持导入',
27425
- treeCrossDrag: '只能拖拽第一层级的数据',
27426
- treeDragChild: '父级数据不能拖拽到自己的子级中',
27783
+ treeCrossDrag: '只能拖拽第一层级',
27784
+ treeDragChild: '父级不能拖拽到自己的子级中',
27427
27785
  reqPlugin: '可选扩展插件 "{1}" https://vxeui.com/other{0}/#/{1}/install'
27428
27786
  },
27429
27787
  table: {
@@ -27505,7 +27863,7 @@ const Toolbar = VxeToolbar;
27505
27863
  setting: {
27506
27864
  colSort: '排序',
27507
27865
  sortHelpTip: '点击并拖动图标可以调整列的排序',
27508
- colTitle: '标题',
27866
+ colTitle: '列标题',
27509
27867
  colResizable: '列宽(像素)',
27510
27868
  colVisible: '是否显示',
27511
27869
  colFixed: '冻结列',