vxe-table 3.10.16 → 3.11.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 (122) hide show
  1. package/README.md +1 -1
  2. package/es/locale/lang/en-US.js +1 -0
  3. package/es/locale/lang/es-ES.js +1 -0
  4. package/es/locale/lang/hu-HU.js +1 -0
  5. package/es/locale/lang/ja-JP.js +1 -0
  6. package/es/locale/lang/ko-KR.js +1 -0
  7. package/es/locale/lang/pt-BR.js +1 -0
  8. package/es/locale/lang/ru-RU.js +1 -0
  9. package/es/locale/lang/uk-UA.js +1 -0
  10. package/es/locale/lang/vi-VN.js +1 -0
  11. package/es/locale/lang/zh-CHT.js +1 -0
  12. package/es/locale/lang/zh-CN.js +1 -0
  13. package/es/style.css +1 -1
  14. package/es/style.min.css +1 -1
  15. package/es/table/module/custom/mixin.js +5 -1
  16. package/es/table/module/edit/mixin.js +32 -15
  17. package/es/table/src/body.js +40 -24
  18. package/es/table/src/cell.js +75 -32
  19. package/es/table/src/footer.js +159 -131
  20. package/es/table/src/header.js +128 -90
  21. package/es/table/src/methods.js +284 -65
  22. package/es/table/src/props.js +5 -1
  23. package/es/table/src/table.js +64 -20
  24. package/es/table/style.css +33 -20
  25. package/es/table/style.min.css +1 -1
  26. package/es/ui/index.js +9 -4
  27. package/es/ui/src/log.js +1 -1
  28. package/es/vxe-table/style.css +33 -20
  29. package/es/vxe-table/style.min.css +1 -1
  30. package/helper/vetur/attributes.json +1 -1
  31. package/helper/vetur/tags.json +1 -1
  32. package/lib/index.umd.js +917 -449
  33. package/lib/index.umd.min.js +1 -1
  34. package/lib/locale/lang/en-US.js +1 -0
  35. package/lib/locale/lang/en-US.min.js +1 -1
  36. package/lib/locale/lang/en-US.umd.js +1 -0
  37. package/lib/locale/lang/es-ES.js +1 -0
  38. package/lib/locale/lang/es-ES.min.js +1 -1
  39. package/lib/locale/lang/es-ES.umd.js +1 -0
  40. package/lib/locale/lang/hu-HU.js +1 -0
  41. package/lib/locale/lang/hu-HU.min.js +1 -1
  42. package/lib/locale/lang/hu-HU.umd.js +1 -0
  43. package/lib/locale/lang/ja-JP.js +1 -0
  44. package/lib/locale/lang/ja-JP.min.js +1 -1
  45. package/lib/locale/lang/ja-JP.umd.js +1 -0
  46. package/lib/locale/lang/ko-KR.js +1 -0
  47. package/lib/locale/lang/ko-KR.min.js +1 -1
  48. package/lib/locale/lang/ko-KR.umd.js +1 -0
  49. package/lib/locale/lang/pt-BR.js +1 -0
  50. package/lib/locale/lang/pt-BR.min.js +1 -1
  51. package/lib/locale/lang/pt-BR.umd.js +1 -0
  52. package/lib/locale/lang/ru-RU.js +1 -0
  53. package/lib/locale/lang/ru-RU.min.js +1 -1
  54. package/lib/locale/lang/ru-RU.umd.js +1 -0
  55. package/lib/locale/lang/uk-UA.js +1 -0
  56. package/lib/locale/lang/uk-UA.min.js +1 -1
  57. package/lib/locale/lang/uk-UA.umd.js +1 -0
  58. package/lib/locale/lang/vi-VN.js +1 -0
  59. package/lib/locale/lang/vi-VN.min.js +1 -1
  60. package/lib/locale/lang/zh-CHT.js +1 -0
  61. package/lib/locale/lang/zh-CHT.min.js +1 -1
  62. package/lib/locale/lang/zh-CHT.umd.js +1 -0
  63. package/lib/locale/lang/zh-CN.js +1 -0
  64. package/lib/locale/lang/zh-CN.min.js +1 -1
  65. package/lib/locale/lang/zh-CN.umd.js +1 -0
  66. package/lib/style.css +1 -1
  67. package/lib/style.min.css +1 -1
  68. package/lib/table/module/custom/mixin.js +5 -1
  69. package/lib/table/module/custom/mixin.min.js +1 -1
  70. package/lib/table/module/edit/mixin.js +34 -15
  71. package/lib/table/module/edit/mixin.min.js +1 -1
  72. package/lib/table/src/body.js +31 -15
  73. package/lib/table/src/body.min.js +1 -1
  74. package/lib/table/src/cell.js +82 -35
  75. package/lib/table/src/cell.min.js +1 -1
  76. package/lib/table/src/footer.js +198 -161
  77. package/lib/table/src/footer.min.js +1 -1
  78. package/lib/table/src/header.js +169 -128
  79. package/lib/table/src/header.min.js +1 -1
  80. package/lib/table/src/methods.js +313 -68
  81. package/lib/table/src/methods.min.js +1 -1
  82. package/lib/table/src/props.js +5 -1
  83. package/lib/table/src/props.min.js +1 -1
  84. package/lib/table/src/table.js +70 -20
  85. package/lib/table/src/table.min.js +1 -1
  86. package/lib/table/style/style.css +33 -20
  87. package/lib/table/style/style.min.css +1 -1
  88. package/lib/ui/index.js +9 -4
  89. package/lib/ui/index.min.js +1 -1
  90. package/lib/ui/src/log.js +1 -1
  91. package/lib/ui/src/log.min.js +1 -1
  92. package/lib/vxe-table/style/style.css +33 -20
  93. package/lib/vxe-table/style/style.min.css +1 -1
  94. package/package.json +3 -3
  95. package/packages/locale/lang/en-US.ts +1 -0
  96. package/packages/locale/lang/es-ES.ts +1 -0
  97. package/packages/locale/lang/hu-HU.ts +1 -0
  98. package/packages/locale/lang/ja-JP.ts +1 -0
  99. package/packages/locale/lang/ko-KR.ts +1 -0
  100. package/packages/locale/lang/pt-BR.ts +1 -0
  101. package/packages/locale/lang/ru-RU.ts +1 -0
  102. package/packages/locale/lang/uk-UA.ts +1 -0
  103. package/packages/locale/lang/vi-VN.ts +1 -0
  104. package/packages/locale/lang/zh-CHT.ts +1 -0
  105. package/packages/locale/lang/zh-CN.ts +1 -0
  106. package/packages/table/module/custom/mixin.ts +5 -1
  107. package/packages/table/module/edit/mixin.ts +32 -15
  108. package/packages/table/src/body.ts +43 -25
  109. package/packages/table/src/cell.ts +120 -67
  110. package/packages/table/src/footer.ts +164 -150
  111. package/packages/table/src/header.ts +136 -90
  112. package/packages/table/src/methods.ts +296 -67
  113. package/packages/table/src/props.ts +5 -1
  114. package/packages/table/src/table.ts +71 -19
  115. package/packages/ui/index.ts +8 -3
  116. package/styles/components/table.scss +42 -35
  117. /package/es/{iconfont.1731633464058.ttf → iconfont.1731937243466.ttf} +0 -0
  118. /package/es/{iconfont.1731633464058.woff → iconfont.1731937243466.woff} +0 -0
  119. /package/es/{iconfont.1731633464058.woff2 → iconfont.1731937243466.woff2} +0 -0
  120. /package/lib/{iconfont.1731633464058.ttf → iconfont.1731937243466.ttf} +0 -0
  121. /package/lib/{iconfont.1731633464058.woff → iconfont.1731937243466.woff} +0 -0
  122. /package/lib/{iconfont.1731633464058.woff2 → iconfont.1731937243466.woff2} +0 -0
@@ -407,66 +407,124 @@ function updateRowDropOrigin($xeTable, row) {
407
407
  });
408
408
  }
409
409
  }
410
- function clearRowDropTarget($xeTable) {
410
+ const updateRowDropTipContent = ($xeTable, tdEl) => {
411
+ const reactData = $xeTable;
412
+ const props = $xeTable;
413
+ const {
414
+ dragConfig
415
+ } = props;
416
+ const {
417
+ dragRow
418
+ } = reactData;
419
+ const rowDragOpts = $xeTable.computeRowDragOpts;
420
+ const {
421
+ tooltipMethod
422
+ } = rowDragOpts;
423
+ const rTooltipMethod = tooltipMethod || (dragConfig ? dragConfig.rowTooltipMethod : null);
424
+ let tipContent = '';
425
+ if (rTooltipMethod) {
426
+ tipContent = `${rTooltipMethod({
427
+ row: dragRow
428
+ }) || ''}`;
429
+ } else {
430
+ tipContent = getI18n('vxe.table.dragTip', [tdEl.textContent || '']);
431
+ }
432
+ reactData.dragTipText = tipContent;
433
+ };
434
+ const updateColDropOrigin = ($xeTable, column) => {
411
435
  const el = $xeTable.$el;
412
436
  if (el) {
413
- const clss = 'row--drag-active-target';
414
- _xeUtils.default.arrayEach(el.querySelectorAll(`.${clss}`), elem => {
415
- (0, _dom.removeClass)(elem, clss);
437
+ const clss = 'col--drag-origin';
438
+ _xeUtils.default.arrayEach(el.querySelectorAll(`[colid="${column.id}"]`), elem => {
439
+ (0, _dom.addClass)(elem, clss);
416
440
  });
417
441
  }
418
- }
419
- function updateRowDropTarget($xeTable, row, dragPos) {
442
+ };
443
+ const clearColDropOrigin = $xeTable => {
420
444
  const el = $xeTable.$el;
421
445
  if (el) {
422
- const clss = 'row--drag-active-target';
423
- const rowid = (0, _util.getRowid)($xeTable, row);
424
- _xeUtils.default.arrayEach(el.querySelectorAll(`[rowid="${rowid}"]`), elem => {
425
- (0, _dom.addClass)(elem, clss);
426
- elem.setAttribute('drag-pos', dragPos);
446
+ const clss = 'col--drag-origin';
447
+ _xeUtils.default.arrayEach(el.querySelectorAll(`.${clss}`), elem => {
448
+ elem.draggable = false;
449
+ (0, _dom.removeClass)(elem, clss);
427
450
  });
428
451
  }
429
- }
430
- function showRowDropTip(evnt, $xeTable) {
431
- const rdTipEl = $xeTable.$refs.refRowDragTipElem;
432
- if (!rdTipEl) {
433
- return;
452
+ };
453
+ const updateColDropTipContent = ($xeTable, tdEl) => {
454
+ const reactData = $xeTable;
455
+ const {
456
+ dragCol
457
+ } = reactData;
458
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
459
+ const {
460
+ tooltipMethod
461
+ } = columnDragOpts;
462
+ let tipContent = '';
463
+ if (tooltipMethod) {
464
+ tipContent = `${tooltipMethod({
465
+ column: dragCol
466
+ }) || ''}`;
467
+ } else {
468
+ tipContent = getI18n('vxe.table.dragTip', [tdEl.textContent || '']);
434
469
  }
435
- const el = $xeTable.$el;
470
+ reactData.dragTipText = tipContent;
471
+ };
472
+ function showDropTip($xeTable, evnt, trEl, thEl, dragPos) {
473
+ const reactData = $xeTable;
474
+ const el = $xeTable.$refs.refElem;
436
475
  if (!el) {
437
476
  return;
438
477
  }
478
+ const {
479
+ scrollbarWidth,
480
+ scrollbarHeight
481
+ } = reactData;
482
+ const wrapperRect = el.getBoundingClientRect();
483
+ if (trEl) {
484
+ const rdLineEl = $xeTable.$refs.refDragRowLineElem;
485
+ if (rdLineEl) {
486
+ const trRect = trEl.getBoundingClientRect();
487
+ let top = Math.max(1, trRect.y - wrapperRect.y);
488
+ if (dragPos === 'bottom') {
489
+ top = Math.min(wrapperRect.height - 1, trRect.y - wrapperRect.y + trRect.height);
490
+ }
491
+ rdLineEl.style.top = `${top}px`;
492
+ rdLineEl.style.width = `${wrapperRect.width - scrollbarWidth}px`;
493
+ rdLineEl.style.display = 'block';
494
+ }
495
+ } else if (thEl) {
496
+ const cdLineEl = $xeTable.$refs.refDragColLineElem;
497
+ if (cdLineEl) {
498
+ const thRect = thEl.getBoundingClientRect();
499
+ let left = Math.max(1, thRect.x - wrapperRect.x);
500
+ if (dragPos === 'right') {
501
+ left = Math.min(wrapperRect.width - 2, thRect.x - wrapperRect.x + thRect.width);
502
+ }
503
+ cdLineEl.style.left = `${left}px`;
504
+ cdLineEl.style.height = `${wrapperRect.height - scrollbarHeight}px`;
505
+ cdLineEl.style.display = 'block';
506
+ }
507
+ }
508
+ const rdTipEl = $xeTable.$refs.refDragTipElem;
439
509
  if (rdTipEl) {
440
- const wrapperRect = el.getBoundingClientRect();
441
510
  rdTipEl.style.display = 'block';
442
511
  rdTipEl.style.top = `${Math.min(el.clientHeight - el.scrollTop - rdTipEl.clientHeight, evnt.clientY - wrapperRect.y)}px`;
443
512
  rdTipEl.style.left = `${Math.min(el.clientWidth - el.scrollLeft - rdTipEl.clientWidth - 16, evnt.clientX - wrapperRect.x)}px`;
444
513
  }
445
514
  }
446
- const hideRowDropTip = $xeTable => {
447
- const rdTipEl = $xeTable.$refs.refRowDragTipElem;
515
+ const hideDropTip = $xeTable => {
516
+ const rdTipEl = $xeTable.$refs.refDragTipElem;
517
+ const rdLineEl = $xeTable.$refs.refDragRowLineElem;
518
+ const cdLineEl = $xeTable.$refs.refDragColLineElem;
448
519
  if (rdTipEl) {
449
520
  rdTipEl.style.display = '';
450
521
  }
451
- };
452
- const updateRowDropTipContent = ($xeTable, tdEl) => {
453
- const reactData = $xeTable;
454
- const {
455
- dragRow
456
- } = reactData;
457
- const dragOpts = $xeTable.computeDragOpts;
458
- const {
459
- rowTooltipMethod
460
- } = dragOpts;
461
- let tipContent = '';
462
- if (rowTooltipMethod) {
463
- tipContent = `${rowTooltipMethod({
464
- row: dragRow
465
- }) || ''}`;
466
- } else {
467
- tipContent = getI18n('vxe.table.dragTip', [tdEl.textContent || '']);
522
+ if (rdLineEl) {
523
+ rdLineEl.style.display = '';
524
+ }
525
+ if (cdLineEl) {
526
+ cdLineEl.style.display = '';
468
527
  }
469
- reactData.dragTipText = tipContent;
470
528
  };
471
529
  const Methods = {
472
530
  callSlot(slotFunc, params, h, vNodes) {
@@ -671,6 +729,7 @@ const Methods = {
671
729
  editStore.removeMaps = {};
672
730
  const sYLoad = this.updateScrollYStatus(fullData);
673
731
  this.scrollYLoad = sYLoad;
732
+ this.isDragRowMove = false;
674
733
  // 全量数据
675
734
  this.tableFullData = fullData;
676
735
  this.tableFullTreeData = treeData;
@@ -860,6 +919,7 @@ const Methods = {
860
919
  const tableFullColumn = getColumnList(collectColumn);
861
920
  this.tableFullColumn = tableFullColumn;
862
921
  this._isLoading = true;
922
+ this.isDragColMove = false;
863
923
  this.initColumnSort();
864
924
  return Promise.resolve(this.restoreCustomStorage()).then(() => {
865
925
  this._isLoading = false;
@@ -3524,7 +3584,7 @@ const Methods = {
3524
3584
  // 如果点击了当前表格之外
3525
3585
  !(0, _dom.getEventTargetNode)(evnt, $el).flag) {
3526
3586
  setTimeout(() => {
3527
- this.clearEdit(evnt).then(() => {
3587
+ this.handleClearEdit(evnt).then(() => {
3528
3588
  // 如果存在校验,点击了表格之外则清除
3529
3589
  if (!this.isActivated && editRules && validOpts.autoClear) {
3530
3590
  this.validErrorMaps = {};
@@ -3607,8 +3667,8 @@ const Methods = {
3607
3667
  if (isEsc) {
3608
3668
  this.preventEvent(evnt, 'event.keydown', null, () => {
3609
3669
  this.emitEvent('keydown-start', {}, evnt);
3610
- if (keyboardConfig && mouseConfig && mouseOpts.area && this.handleKeyboardEvent) {
3611
- this.handleKeyboardEvent(evnt);
3670
+ if (keyboardConfig && mouseConfig && mouseOpts.area && this.handleKeyboardCellAreaEvent) {
3671
+ this.handleKeyboardCellAreaEvent(evnt);
3612
3672
  } else if (actived.row || filterStore.visible || ctxMenuStore.visible) {
3613
3673
  evnt.stopPropagation();
3614
3674
  // 如果按下了 Esc 键,关闭快捷菜单、筛选
@@ -3618,7 +3678,7 @@ const Methods = {
3618
3678
  // 如果是激活编辑状态,则取消编辑
3619
3679
  if (actived.row) {
3620
3680
  const params = actived.args;
3621
- this.clearEdit(evnt);
3681
+ this.handleClearEdit(evnt);
3622
3682
  // 如果配置了选中功能,则为选中状态
3623
3683
  if (mouseConfig && mouseOpts.selected) {
3624
3684
  this.$nextTick(() => this.handleSelected(params, evnt));
@@ -3698,8 +3758,8 @@ const Methods = {
3698
3758
  } else {
3699
3759
  this.moveCtxMenu(evnt, keyCode, ctxMenuStore, 'selected', 39, true, this.ctxMenuList);
3700
3760
  }
3701
- } else if (keyboardConfig && mouseConfig && mouseOpts.area && this.handleKeyboardEvent) {
3702
- this.handleKeyboardEvent(evnt);
3761
+ } else if (keyboardConfig && mouseConfig && mouseOpts.area && this.handleKeyboardCellAreaEvent) {
3762
+ this.handleKeyboardCellAreaEvent(evnt);
3703
3763
  } else if (keyboardConfig && isSpacebar && keyboardOpts.isChecked && selected.row && selected.column && (selected.column.type === 'checkbox' || selected.column.type === 'radio')) {
3704
3764
  // 空格键支持选中复选框
3705
3765
  evnt.preventDefault();
@@ -3730,7 +3790,7 @@ const Methods = {
3730
3790
  // 如果是激活编辑状态,则取消编辑
3731
3791
  if (actived.row) {
3732
3792
  const params = actived.args;
3733
- this.clearEdit(evnt);
3793
+ this.handleClearEdit(evnt);
3734
3794
  // 如果配置了选中功能,则为选中状态
3735
3795
  if (mouseConfig && mouseOpts.selected) {
3736
3796
  this.$nextTick(() => this.handleSelected(params, evnt));
@@ -5561,6 +5621,9 @@ const Methods = {
5561
5621
  this.emitEvent('sort-change', params, evnt);
5562
5622
  }
5563
5623
  },
5624
+ /**
5625
+ * 行拖拽
5626
+ */
5564
5627
  handleRowDragDragstartEvent(evnt) {
5565
5628
  const img = new Image();
5566
5629
  if (evnt.dataTransfer) {
@@ -5573,12 +5636,13 @@ const Methods = {
5573
5636
  const reactData = $xeTable;
5574
5637
  const internalData = $xeTable;
5575
5638
  const {
5576
- treeConfig
5639
+ treeConfig,
5640
+ dragConfig
5577
5641
  } = props;
5578
- const dragOpts = $xeTable.computeDragOpts;
5642
+ const rowDragOpts = $xeTable.computeRowDragOpts;
5579
5643
  const {
5580
5644
  dragEndMethod
5581
- } = dragOpts;
5645
+ } = rowDragOpts;
5582
5646
  const treeOpts = $xeTable.computeTreeOpts;
5583
5647
  const {
5584
5648
  transform
@@ -5594,17 +5658,20 @@ const Methods = {
5594
5658
  prevDragRow,
5595
5659
  prevDragPos
5596
5660
  } = internalData;
5661
+ const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
5662
+ const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
5597
5663
  if (prevDragRow && dragRow) {
5598
5664
  // 判断是否有拖动
5599
5665
  if (prevDragRow !== dragRow) {
5600
- Promise.resolve(dragEndMethod ? dragEndMethod({
5666
+ Promise.resolve(dEndMethod ? dEndMethod({
5601
5667
  oldRow: dragRow,
5602
- newRow: prevDragRow
5668
+ newRow: prevDragRow,
5669
+ dragPos: prevDragPos,
5670
+ offsetIndex: dragOffsetIndex
5603
5671
  }) : true).then(status => {
5604
5672
  if (!status) {
5605
5673
  return;
5606
5674
  }
5607
- const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
5608
5675
  let oafIndex = -1;
5609
5676
  let nafIndex = -1;
5610
5677
  if (treeConfig) {
@@ -5641,18 +5708,19 @@ const Methods = {
5641
5708
  if (!(treeConfig && transform)) {
5642
5709
  $xeTable.updateAfterDataIndex();
5643
5710
  }
5644
- $xeTable.updateFooter();
5645
5711
  $xeTable.checkSelectionStatus();
5646
5712
  if (reactData.scrollYLoad) {
5647
5713
  $xeTable.updateScrollYSpace();
5648
5714
  }
5649
5715
  $xeTable.$nextTick().then(() => {
5650
5716
  $xeTable.updateCellAreas();
5651
- return $xeTable.recalculate();
5717
+ $xeTable.recalculate();
5652
5718
  });
5653
5719
  $xeTable.dispatchEvent('row-dragend', {
5654
5720
  oldRow: dragRow,
5655
5721
  newRow: prevDragRow,
5722
+ dragPos: prevDragPos,
5723
+ offsetIndex: dragOffsetIndex,
5656
5724
  _index: {
5657
5725
  newIndex: nafIndex,
5658
5726
  oldIndex: oafIndex
@@ -5661,10 +5729,10 @@ const Methods = {
5661
5729
  }).catch(() => {});
5662
5730
  }
5663
5731
  }
5664
- hideRowDropTip($xeTable);
5732
+ hideDropTip($xeTable);
5665
5733
  clearRowDropOrigin($xeTable);
5666
- clearRowDropTarget($xeTable);
5667
5734
  reactData.dragRow = null;
5735
+ reactData.dragCol = null;
5668
5736
  setTimeout(() => {
5669
5737
  reactData.isDragRowMove = false;
5670
5738
  }, 500);
@@ -5673,10 +5741,16 @@ const Methods = {
5673
5741
  const $xeTable = this;
5674
5742
  const internalData = $xeTable;
5675
5743
  const reactData = $xeTable;
5744
+ const {
5745
+ dragRow
5746
+ } = reactData;
5747
+ if (!dragRow) {
5748
+ evnt.preventDefault();
5749
+ return;
5750
+ }
5676
5751
  const trEl = evnt.currentTarget;
5677
5752
  const rowid = trEl.getAttribute('rowid');
5678
5753
  const row = $xeTable.getRowById(rowid);
5679
- clearRowDropTarget($xeTable);
5680
5754
  if (row) {
5681
5755
  evnt.preventDefault();
5682
5756
  evnt.preventDefault();
@@ -5685,44 +5759,49 @@ const Methods = {
5685
5759
  } = reactData;
5686
5760
  const offsetY = evnt.clientY - trEl.getBoundingClientRect().y;
5687
5761
  const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom';
5688
- updateRowDropTarget($xeTable, row, dragPos);
5689
5762
  internalData.prevDragRow = row;
5690
5763
  internalData.prevDragPos = dragPos;
5764
+ showDropTip($xeTable, evnt, trEl, null, dragPos);
5691
5765
  $xeTable.dispatchEvent('row-dragover', {
5692
5766
  oldRow: dragRow,
5693
5767
  targetRow: row,
5694
5768
  dragPos
5695
5769
  }, evnt);
5696
5770
  }
5697
- showRowDropTip(evnt, $xeTable);
5698
5771
  },
5699
5772
  handleCellDragMousedownEvent(evnt, params) {
5700
5773
  var _a;
5701
5774
  const $xeTable = this;
5775
+ const props = $xeTable;
5702
5776
  const reactData = $xeTable;
5703
5777
  evnt.stopPropagation();
5704
- const dragOpts = $xeTable.computeDragOpts;
5778
+ const {
5779
+ dragConfig
5780
+ } = props;
5781
+ const rowDragOpts = $xeTable.computeRowDragOpts;
5705
5782
  const {
5706
5783
  dragStartMethod
5707
- } = dragOpts;
5784
+ } = rowDragOpts;
5708
5785
  const {
5709
5786
  row
5710
5787
  } = params;
5711
5788
  const dragEl = evnt.currentTarget;
5712
- const tdEl = (_a = dragEl.parentNode) === null || _a === void 0 ? void 0 : _a.parentNode;
5713
- const trEl = tdEl.parentNode;
5789
+ const tdEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
5790
+ const trEl = tdEl.parentElement;
5791
+ const dStartMethod = dragStartMethod || (dragConfig ? dragConfig.dragStartMethod : null);
5714
5792
  reactData.isDragRowMove = false;
5715
5793
  clearRowDropOrigin($xeTable);
5716
- if (dragStartMethod && !dragStartMethod(params)) {
5794
+ if (dStartMethod && !dStartMethod(params)) {
5717
5795
  trEl.draggable = false;
5718
5796
  reactData.dragRow = null;
5719
- hideRowDropTip($xeTable);
5797
+ reactData.dragCol = null;
5798
+ hideDropTip($xeTable);
5720
5799
  return;
5721
5800
  }
5722
5801
  reactData.dragRow = row;
5802
+ reactData.dragCol = null;
5723
5803
  trEl.draggable = true;
5724
5804
  updateRowDropOrigin($xeTable, row);
5725
- showRowDropTip(evnt, $xeTable);
5726
5805
  updateRowDropTipContent($xeTable, tdEl);
5727
5806
  $xeTable.dispatchEvent('row-dragstart', params, evnt);
5728
5807
  },
@@ -5730,10 +5809,176 @@ const Methods = {
5730
5809
  const $xeTable = this;
5731
5810
  const reactData = $xeTable;
5732
5811
  clearRowDropOrigin($xeTable);
5733
- hideRowDropTip($xeTable);
5812
+ hideDropTip($xeTable);
5734
5813
  reactData.dragRow = null;
5814
+ reactData.dragCol = null;
5735
5815
  reactData.isDragRowMove = false;
5736
5816
  },
5817
+ /**
5818
+ * 列拖拽
5819
+ */
5820
+ handleHeaderCellDragDragstartEvent(evnt) {
5821
+ const img = new Image();
5822
+ if (evnt.dataTransfer) {
5823
+ evnt.dataTransfer.setDragImage(img, 0, 0);
5824
+ }
5825
+ },
5826
+ handleHeaderCellDragDragendEvent(evnt) {
5827
+ const $xeTable = this;
5828
+ const props = $xeTable;
5829
+ const reactData = $xeTable;
5830
+ const internalData = $xeTable;
5831
+ const {
5832
+ mouseConfig
5833
+ } = props;
5834
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
5835
+ const {
5836
+ dragEndMethod
5837
+ } = columnDragOpts;
5838
+ const {
5839
+ dragCol
5840
+ } = reactData;
5841
+ const {
5842
+ collectColumn,
5843
+ prevDragCol,
5844
+ prevDragPos
5845
+ } = internalData;
5846
+ const dragOffsetIndex = prevDragPos === 'right' ? 1 : 0;
5847
+ if (prevDragCol && dragCol) {
5848
+ // 判断是否有拖动
5849
+ if (prevDragCol !== dragCol) {
5850
+ Promise.resolve(dragEndMethod ? dragEndMethod({
5851
+ oldColumn: dragCol,
5852
+ newColumn: prevDragCol,
5853
+ dragPos: prevDragPos,
5854
+ offsetIndex: dragOffsetIndex
5855
+ }) : true).then(status => {
5856
+ if (!status) {
5857
+ return;
5858
+ }
5859
+ _xeUtils.default.eachTree(collectColumn, (column, index, items, path, parent) => {
5860
+ if (!parent) {
5861
+ const sortIndex = index + 1;
5862
+ column.renderSortNumber = sortIndex;
5863
+ }
5864
+ });
5865
+ const oafIndex = _xeUtils.default.findIndexOf(collectColumn, item => item.id === dragCol.id);
5866
+ const nafIndex = _xeUtils.default.findIndexOf(collectColumn, item => item.id === prevDragCol.id) + dragOffsetIndex;
5867
+ const newTargetCol = collectColumn[nafIndex];
5868
+ if (newTargetCol) {
5869
+ // 插入最后位置
5870
+ dragCol.renderSortNumber = newTargetCol.renderSortNumber;
5871
+ newTargetCol.renderSortNumber = dragCol.renderSortNumber + 0.5;
5872
+ } else {
5873
+ // 插入新位置
5874
+ dragCol.renderSortNumber = collectColumn.length + 1.5;
5875
+ }
5876
+ reactData.isDragColMove = true;
5877
+ if (mouseConfig) {
5878
+ if ($xeTable.clearSelected) {
5879
+ $xeTable.clearSelected();
5880
+ }
5881
+ if ($xeTable.clearCellAreas) {
5882
+ $xeTable.clearCellAreas();
5883
+ $xeTable.clearCopyCellArea();
5884
+ }
5885
+ }
5886
+ $xeTable.analyColumnWidth();
5887
+ $xeTable.$nextTick().then(() => {
5888
+ $xeTable.updateCellAreas();
5889
+ $xeTable.refreshColumn(true);
5890
+ });
5891
+ $xeTable.dispatchEvent('column-dragend', {
5892
+ oldColumn: dragCol,
5893
+ newColumn: prevDragCol,
5894
+ dragPos: prevDragPos,
5895
+ offsetIndex: dragOffsetIndex,
5896
+ _index: {
5897
+ newIndex: nafIndex,
5898
+ oldIndex: oafIndex
5899
+ }
5900
+ }, evnt);
5901
+ }).catch(() => {});
5902
+ }
5903
+ }
5904
+ hideDropTip($xeTable);
5905
+ clearColDropOrigin($xeTable);
5906
+ reactData.dragRow = null;
5907
+ reactData.dragCol = null;
5908
+ setTimeout(() => {
5909
+ reactData.isDragColMove = false;
5910
+ }, 500);
5911
+ },
5912
+ handleHeaderCellDragDragoverEvent(evnt) {
5913
+ const $xeTable = this;
5914
+ const reactData = $xeTable;
5915
+ const internalData = $xeTable;
5916
+ const {
5917
+ dragCol
5918
+ } = reactData;
5919
+ if (!dragCol) {
5920
+ evnt.preventDefault();
5921
+ return;
5922
+ }
5923
+ const thEl = evnt.currentTarget;
5924
+ const colid = thEl.getAttribute('colid');
5925
+ const column = $xeTable.getColumnById(colid);
5926
+ if (column) {
5927
+ evnt.preventDefault();
5928
+ const {
5929
+ dragCol
5930
+ } = reactData;
5931
+ const offsetX = evnt.clientX - thEl.getBoundingClientRect().x;
5932
+ const dragPos = offsetX < thEl.clientWidth / 2 ? 'left' : 'right';
5933
+ internalData.prevDragCol = column;
5934
+ internalData.prevDragPos = dragPos;
5935
+ showDropTip($xeTable, evnt, null, thEl, dragPos);
5936
+ $xeTable.dispatchEvent('column-dragover', {
5937
+ oldColumn: dragCol,
5938
+ targetColumn: column,
5939
+ dragPos
5940
+ }, evnt);
5941
+ }
5942
+ },
5943
+ handleHeaderCellDragMousedownEvent(evnt, params) {
5944
+ var _a;
5945
+ const $xeTable = this;
5946
+ const reactData = $xeTable;
5947
+ evnt.stopPropagation();
5948
+ const columnDragOpts = $xeTable.computeColumnDragOpts;
5949
+ const {
5950
+ dragStartMethod
5951
+ } = columnDragOpts;
5952
+ const {
5953
+ column
5954
+ } = params;
5955
+ const dragEl = evnt.currentTarget;
5956
+ const thEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
5957
+ reactData.isDragColMove = false;
5958
+ clearColDropOrigin($xeTable);
5959
+ if (dragStartMethod && !dragStartMethod(params)) {
5960
+ thEl.draggable = false;
5961
+ reactData.dragRow = null;
5962
+ reactData.dragCol = null;
5963
+ hideDropTip($xeTable);
5964
+ return;
5965
+ }
5966
+ reactData.dragCol = column;
5967
+ reactData.dragRow = null;
5968
+ thEl.draggable = true;
5969
+ updateColDropOrigin($xeTable, column);
5970
+ updateColDropTipContent($xeTable, thEl);
5971
+ $xeTable.dispatchEvent('column-dragstart', params, evnt);
5972
+ },
5973
+ handleHeaderCellDragMouseupEvent() {
5974
+ const $xeTable = this;
5975
+ const reactData = $xeTable;
5976
+ clearColDropOrigin($xeTable);
5977
+ hideDropTip($xeTable);
5978
+ reactData.dragRow = null;
5979
+ reactData.dragCol = null;
5980
+ reactData.isDragColMove = false;
5981
+ },
5737
5982
  setPendingRow(rows, status) {
5738
5983
  const pendingMaps = Object.assign({}, this.pendingRowMaps);
5739
5984
  const pendingList = [...this.pendingRowList];
@@ -7553,8 +7798,8 @@ const Methods = {
7553
7798
  }
7554
7799
  },
7555
7800
  updateCellAreas() {
7556
- if (this.mouseConfig && this.mouseOpts.area && this.handleUpdateCellAreas) {
7557
- return this.handleUpdateCellAreas();
7801
+ if (this.mouseConfig && this.mouseOpts.area && this.handleRecalculateCellAreas) {
7802
+ return this.handleRecalculateCellAreas();
7558
7803
  }
7559
7804
  return this.$nextTick();
7560
7805
  },