vxe-table 3.10.16 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/custom/mixin.js +5 -1
- package/es/table/module/edit/mixin.js +24 -15
- package/es/table/src/body.js +40 -24
- package/es/table/src/cell.js +75 -32
- package/es/table/src/footer.js +159 -131
- package/es/table/src/header.js +128 -90
- package/es/table/src/methods.js +284 -65
- package/es/table/src/props.js +5 -1
- package/es/table/src/table.js +64 -20
- package/es/table/style.css +33 -20
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +9 -4
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +33 -20
- package/es/vxe-table/style.min.css +1 -1
- package/helper/vetur/attributes.json +1 -1
- package/helper/vetur/tags.json +1 -1
- package/lib/index.umd.js +906 -449
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/custom/mixin.js +5 -1
- package/lib/table/module/custom/mixin.min.js +1 -1
- package/lib/table/module/edit/mixin.js +24 -15
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/src/body.js +31 -15
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +82 -35
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/footer.js +198 -161
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +169 -128
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +313 -68
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +5 -1
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +70 -20
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +33 -20
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +9 -4
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-table/style/style.css +33 -20
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +3 -3
- package/packages/table/module/custom/mixin.ts +5 -1
- package/packages/table/module/edit/mixin.ts +24 -15
- package/packages/table/src/body.ts +43 -25
- package/packages/table/src/cell.ts +120 -67
- package/packages/table/src/footer.ts +164 -150
- package/packages/table/src/header.ts +136 -90
- package/packages/table/src/methods.ts +296 -67
- package/packages/table/src/props.ts +5 -1
- package/packages/table/src/table.ts +71 -19
- package/packages/ui/index.ts +8 -3
- package/styles/components/table.scss +42 -35
- /package/es/{iconfont.1731633464058.ttf → iconfont.1731890707082.ttf} +0 -0
- /package/es/{iconfont.1731633464058.woff → iconfont.1731890707082.woff} +0 -0
- /package/es/{iconfont.1731633464058.woff2 → iconfont.1731890707082.woff2} +0 -0
- /package/lib/{iconfont.1731633464058.ttf → iconfont.1731890707082.ttf} +0 -0
- /package/lib/{iconfont.1731633464058.woff → iconfont.1731890707082.woff} +0 -0
- /package/lib/{iconfont.1731633464058.woff2 → iconfont.1731890707082.woff2} +0 -0
package/lib/table/src/methods.js
CHANGED
|
@@ -407,66 +407,124 @@ function updateRowDropOrigin($xeTable, row) {
|
|
|
407
407
|
});
|
|
408
408
|
}
|
|
409
409
|
}
|
|
410
|
-
|
|
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 = '
|
|
414
|
-
_xeUtils.default.arrayEach(el.querySelectorAll(
|
|
415
|
-
(0, _dom.
|
|
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
|
-
|
|
442
|
+
};
|
|
443
|
+
const clearColDropOrigin = $xeTable => {
|
|
420
444
|
const el = $xeTable.$el;
|
|
421
445
|
if (el) {
|
|
422
|
-
const clss = '
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
(0, _dom.
|
|
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
|
-
|
|
431
|
-
const
|
|
432
|
-
|
|
433
|
-
|
|
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
|
-
|
|
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
|
|
447
|
-
const rdTipEl = $xeTable.$refs.
|
|
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
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
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.
|
|
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.
|
|
3611
|
-
this.
|
|
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.
|
|
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.
|
|
3702
|
-
this.
|
|
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.
|
|
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
|
|
5642
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
5579
5643
|
const {
|
|
5580
5644
|
dragEndMethod
|
|
5581
|
-
} =
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
5778
|
+
const {
|
|
5779
|
+
dragConfig
|
|
5780
|
+
} = props;
|
|
5781
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
5705
5782
|
const {
|
|
5706
5783
|
dragStartMethod
|
|
5707
|
-
} =
|
|
5784
|
+
} = rowDragOpts;
|
|
5708
5785
|
const {
|
|
5709
5786
|
row
|
|
5710
5787
|
} = params;
|
|
5711
5788
|
const dragEl = evnt.currentTarget;
|
|
5712
|
-
const tdEl = (_a = dragEl.
|
|
5713
|
-
const trEl = tdEl.
|
|
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 (
|
|
5794
|
+
if (dStartMethod && !dStartMethod(params)) {
|
|
5717
5795
|
trEl.draggable = false;
|
|
5718
5796
|
reactData.dragRow = null;
|
|
5719
|
-
|
|
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
|
-
|
|
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.
|
|
7557
|
-
return this.
|
|
7801
|
+
if (this.mouseConfig && this.mouseOpts.area && this.handleRecalculateCellAreas) {
|
|
7802
|
+
return this.handleRecalculateCellAreas();
|
|
7558
7803
|
}
|
|
7559
7804
|
return this.$nextTick();
|
|
7560
7805
|
},
|