vxe-table 4.8.0 → 4.8.2
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/es/locale/lang/en-US.js +4 -2
- package/es/locale/lang/es-ES.js +4 -2
- package/es/locale/lang/hu-HU.js +4 -2
- package/es/locale/lang/ja-JP.js +4 -2
- package/es/locale/lang/ko-KR.js +4 -2
- package/es/locale/lang/pt-BR.js +4 -2
- package/es/locale/lang/ru-RU.js +4 -2
- package/es/locale/lang/uk-UA.js +4 -2
- package/es/locale/lang/vi-VN.js +4 -2
- package/es/locale/lang/zh-CHT.js +4 -2
- package/es/locale/lang/zh-CN.js +4 -2
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/edit/hook.js +7 -4
- package/es/table/src/body.js +22 -8
- package/es/table/src/cell.js +65 -27
- package/es/table/src/column.js +3 -1
- package/es/table/src/columnInfo.js +1 -0
- package/es/table/src/emits.js +3 -0
- package/es/table/src/props.js +2 -0
- package/es/table/src/table.js +241 -40
- package/es/table/style.css +77 -2
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +4 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +77 -2
- 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 +378 -85
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/en-US.js +4 -2
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +4 -2
- package/lib/locale/lang/es-ES.js +4 -2
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +4 -2
- package/lib/locale/lang/hu-HU.js +4 -2
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +4 -2
- package/lib/locale/lang/ja-JP.js +4 -2
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +4 -2
- package/lib/locale/lang/ko-KR.js +4 -2
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +4 -2
- package/lib/locale/lang/pt-BR.js +4 -2
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +4 -2
- package/lib/locale/lang/ru-RU.js +4 -2
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +4 -2
- package/lib/locale/lang/uk-UA.js +4 -2
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +4 -2
- package/lib/locale/lang/vi-VN.js +4 -2
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +4 -2
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CN.js +4 -2
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +4 -2
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/edit/hook.js +8 -4
- package/lib/table/module/edit/hook.min.js +1 -1
- package/lib/table/src/body.js +18 -5
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +79 -27
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/column.js +3 -1
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +1 -0
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/emits.js +1 -1
- package/lib/table/src/emits.min.js +1 -1
- package/lib/table/src/props.js +2 -0
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +258 -43
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +77 -2
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +4 -1
- 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 +77 -2
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/locale/lang/en-US.ts +4 -2
- package/packages/locale/lang/es-ES.ts +4 -2
- package/packages/locale/lang/hu-HU.ts +4 -2
- package/packages/locale/lang/ja-JP.ts +4 -2
- package/packages/locale/lang/ko-KR.ts +4 -2
- package/packages/locale/lang/pt-BR.ts +4 -2
- package/packages/locale/lang/ru-RU.ts +4 -2
- package/packages/locale/lang/uk-UA.ts +4 -2
- package/packages/locale/lang/vi-VN.ts +4 -2
- package/packages/locale/lang/zh-CHT.ts +4 -2
- package/packages/locale/lang/zh-CN.ts +4 -2
- package/packages/table/module/custom/panel.ts +1 -1
- package/packages/table/module/edit/hook.ts +7 -4
- package/packages/table/src/body.ts +22 -8
- package/packages/table/src/cell.ts +69 -27
- package/packages/table/src/column.ts +3 -1
- package/packages/table/src/columnInfo.ts +1 -0
- package/packages/table/src/emits.ts +4 -0
- package/packages/table/src/props.ts +2 -0
- package/packages/table/src/table.ts +258 -42
- package/packages/ui/index.ts +3 -0
- package/styles/components/table-module/custom.scss +14 -3
- package/styles/components/table.scss +80 -0
- /package/es/{iconfont.1730681238555.ttf → iconfont.1730898232530.ttf} +0 -0
- /package/es/{iconfont.1730681238555.woff → iconfont.1730898232530.woff} +0 -0
- /package/es/{iconfont.1730681238555.woff2 → iconfont.1730898232530.woff2} +0 -0
- /package/lib/{iconfont.1730681238555.ttf → iconfont.1730898232530.ttf} +0 -0
- /package/lib/{iconfont.1730681238555.woff → iconfont.1730898232530.woff} +0 -0
- /package/lib/{iconfont.1730681238555.woff2 → iconfont.1730898232530.woff2} +0 -0
package/es/table/src/table.js
CHANGED
|
@@ -248,6 +248,9 @@ export default defineComponent({
|
|
|
248
248
|
isFooter: false
|
|
249
249
|
},
|
|
250
250
|
scrollVMLoading: false,
|
|
251
|
+
isDragRowMove: false,
|
|
252
|
+
dragRow: null,
|
|
253
|
+
dragTipText: '',
|
|
251
254
|
_isResize: false,
|
|
252
255
|
_isLoading: false
|
|
253
256
|
});
|
|
@@ -322,6 +325,7 @@ export default defineComponent({
|
|
|
322
325
|
columnStatusMaps: {},
|
|
323
326
|
// 行选取状态
|
|
324
327
|
rowStatusMaps: {},
|
|
328
|
+
// prevDragRow: null,
|
|
325
329
|
inited: false,
|
|
326
330
|
tooltipTimeout: null,
|
|
327
331
|
initStatus: false,
|
|
@@ -349,6 +353,7 @@ export default defineComponent({
|
|
|
349
353
|
const refRightContainer = ref();
|
|
350
354
|
const refCellResizeBar = ref();
|
|
351
355
|
const refEmptyPlaceholder = ref();
|
|
356
|
+
const refRowDragTipElem = ref();
|
|
352
357
|
const refScrollXVirtualElem = ref();
|
|
353
358
|
const refScrollYVirtualElem = ref();
|
|
354
359
|
const refScrollXHandleElem = ref();
|
|
@@ -393,6 +398,9 @@ export default defineComponent({
|
|
|
393
398
|
const computeRowOpts = computed(() => {
|
|
394
399
|
return Object.assign({}, getConfig().table.rowConfig, props.rowConfig);
|
|
395
400
|
});
|
|
401
|
+
const computeDragOpts = computed(() => {
|
|
402
|
+
return Object.assign({}, getConfig().table.dragConfig, props.dragConfig);
|
|
403
|
+
});
|
|
396
404
|
const computeResizeOpts = computed(() => {
|
|
397
405
|
return Object.assign({}, getConfig().table.resizeConfig, props.resizeConfig);
|
|
398
406
|
});
|
|
@@ -604,6 +612,7 @@ export default defineComponent({
|
|
|
604
612
|
computeColumnOpts,
|
|
605
613
|
computeCellOpts,
|
|
606
614
|
computeRowOpts,
|
|
615
|
+
computeDragOpts,
|
|
607
616
|
computeResizeOpts,
|
|
608
617
|
computeResizableOpts,
|
|
609
618
|
computeSeqOpts,
|
|
@@ -2751,7 +2760,7 @@ export default defineComponent({
|
|
|
2751
2760
|
const handleCheckAllEvent = (evnt, value) => {
|
|
2752
2761
|
handleCheckedAllCheckboxRow(value);
|
|
2753
2762
|
if (evnt) {
|
|
2754
|
-
|
|
2763
|
+
dispatchEvent('checkbox-all', {
|
|
2755
2764
|
records: tableMethods.getCheckboxRecords(),
|
|
2756
2765
|
reserves: tableMethods.getCheckboxReserveRecords(),
|
|
2757
2766
|
indeterminates: tableMethods.getCheckboxIndeterminateRecords(),
|
|
@@ -2809,22 +2818,28 @@ export default defineComponent({
|
|
|
2809
2818
|
const debounceScrollYData = XEUtils.debounce(function () {
|
|
2810
2819
|
loadScrollYData();
|
|
2811
2820
|
}, 20, { leading: false, trailing: true });
|
|
2812
|
-
const
|
|
2813
|
-
const wrapperEl = evnt.currentTarget;
|
|
2821
|
+
const handleSyncScrollX = (scrollLeft) => {
|
|
2814
2822
|
const tableHeader = refTableHeader.value;
|
|
2815
2823
|
const tableBody = refTableBody.value;
|
|
2816
2824
|
const tableFooter = refTableFooter.value;
|
|
2817
2825
|
const bodyElem = tableBody.$el;
|
|
2818
2826
|
const headerElem = tableHeader ? tableHeader.$el : null;
|
|
2819
2827
|
const footerElem = tableFooter ? tableFooter.$el : null;
|
|
2828
|
+
setScrollLeft(bodyElem, scrollLeft);
|
|
2829
|
+
setScrollLeft(headerElem, scrollLeft);
|
|
2830
|
+
setScrollLeft(footerElem, scrollLeft);
|
|
2831
|
+
setScrollLeft(bodyElem, scrollLeft);
|
|
2832
|
+
setScrollLeft(headerElem, scrollLeft);
|
|
2833
|
+
setScrollLeft(footerElem, scrollLeft);
|
|
2834
|
+
};
|
|
2835
|
+
const scrollXEvent = (evnt) => {
|
|
2836
|
+
const wrapperEl = evnt.currentTarget;
|
|
2820
2837
|
const { scrollTop, scrollLeft } = wrapperEl;
|
|
2821
2838
|
const isRollX = true;
|
|
2822
2839
|
const isRollY = false;
|
|
2823
2840
|
internalData.lastScrollLeft = scrollLeft;
|
|
2824
2841
|
reactData.lastScrollTime = Date.now();
|
|
2825
|
-
|
|
2826
|
-
setScrollLeft(headerElem, scrollLeft);
|
|
2827
|
-
setScrollLeft(footerElem, scrollLeft);
|
|
2842
|
+
handleSyncScrollX(scrollLeft);
|
|
2828
2843
|
$xeTable.triggerScrollXEvent(evnt);
|
|
2829
2844
|
$xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
|
|
2830
2845
|
type: 'table',
|
|
@@ -2836,22 +2851,25 @@ export default defineComponent({
|
|
|
2836
2851
|
const debounceScrollYCalculate = XEUtils.debounce(function () {
|
|
2837
2852
|
tablePrivateMethods.updateScrollYSpace();
|
|
2838
2853
|
}, 1000, { leading: false, trailing: true });
|
|
2839
|
-
const
|
|
2840
|
-
const wrapperEl = evnt.currentTarget;
|
|
2854
|
+
const handleSyncScrollY = (scrollTop) => {
|
|
2841
2855
|
const tableBody = refTableBody.value;
|
|
2842
2856
|
const leftBody = refTableLeftBody.value;
|
|
2843
2857
|
const rightBody = refTableRightBody.value;
|
|
2844
2858
|
const bodyElem = tableBody.$el;
|
|
2845
2859
|
const leftElem = leftBody ? leftBody.$el : null;
|
|
2846
2860
|
const rightElem = rightBody ? rightBody.$el : null;
|
|
2861
|
+
setScrollTop(bodyElem, scrollTop);
|
|
2862
|
+
setScrollTop(leftElem, scrollTop);
|
|
2863
|
+
setScrollTop(rightElem, scrollTop);
|
|
2864
|
+
};
|
|
2865
|
+
const scrollYEvent = (evnt) => {
|
|
2866
|
+
const wrapperEl = evnt.currentTarget;
|
|
2847
2867
|
const { scrollTop, scrollLeft } = wrapperEl;
|
|
2848
2868
|
const isRollX = false;
|
|
2849
2869
|
const isRollY = true;
|
|
2850
2870
|
internalData.lastScrollTop = scrollTop;
|
|
2851
2871
|
reactData.lastScrollTime = Date.now();
|
|
2852
|
-
|
|
2853
|
-
setScrollTop(leftElem, scrollTop);
|
|
2854
|
-
setScrollTop(rightElem, scrollTop);
|
|
2872
|
+
handleSyncScrollY(scrollTop);
|
|
2855
2873
|
$xeTable.triggerScrollYEvent(evnt);
|
|
2856
2874
|
$xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
|
|
2857
2875
|
type: 'table',
|
|
@@ -2861,10 +2879,11 @@ export default defineComponent({
|
|
|
2861
2879
|
});
|
|
2862
2880
|
};
|
|
2863
2881
|
let keyCtxTimeout;
|
|
2882
|
+
const dispatchEvent = (type, params, evnt) => {
|
|
2883
|
+
emit(type, createEvent(evnt, { $table: $xeTable, $grid: $xeGrid }, params));
|
|
2884
|
+
};
|
|
2864
2885
|
tableMethods = {
|
|
2865
|
-
dispatchEvent
|
|
2866
|
-
emit(type, createEvent(evnt, { $table: $xeTable, $grid: $xeGrid }, params));
|
|
2867
|
-
},
|
|
2886
|
+
dispatchEvent,
|
|
2868
2887
|
/**
|
|
2869
2888
|
* 重置表格的一切数据状态
|
|
2870
2889
|
*/
|
|
@@ -4209,7 +4228,7 @@ export default defineComponent({
|
|
|
4209
4228
|
visible: false
|
|
4210
4229
|
});
|
|
4211
4230
|
if (visible) {
|
|
4212
|
-
|
|
4231
|
+
dispatchEvent('filter-visible', { column, property: column.field, field: column.field, filterList: $xeTable.getCheckedFilters(), visible: false }, null);
|
|
4213
4232
|
}
|
|
4214
4233
|
return nextTick();
|
|
4215
4234
|
},
|
|
@@ -5031,7 +5050,7 @@ export default defineComponent({
|
|
|
5031
5050
|
tablePrivateMethods.preventEvent(evnt, 'event.clearAreas', {}, () => {
|
|
5032
5051
|
$xeTable.clearCellAreas();
|
|
5033
5052
|
$xeTable.clearCopyCellArea();
|
|
5034
|
-
|
|
5053
|
+
dispatchEvent('clear-cell-area-selection', { cellAreas }, evnt);
|
|
5035
5054
|
});
|
|
5036
5055
|
}
|
|
5037
5056
|
}
|
|
@@ -5082,7 +5101,7 @@ export default defineComponent({
|
|
|
5082
5101
|
const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE);
|
|
5083
5102
|
if (isEsc) {
|
|
5084
5103
|
tablePrivateMethods.preventEvent(evnt, 'event.keydown', null, () => {
|
|
5085
|
-
|
|
5104
|
+
dispatchEvent('keydown-start', {}, evnt);
|
|
5086
5105
|
if (keyboardConfig && mouseConfig && mouseOpts.area && $xeTable.handleKeyboardEvent) {
|
|
5087
5106
|
$xeTable.handleKeyboardEvent(evnt);
|
|
5088
5107
|
}
|
|
@@ -5105,8 +5124,8 @@ export default defineComponent({
|
|
|
5105
5124
|
}
|
|
5106
5125
|
}
|
|
5107
5126
|
}
|
|
5108
|
-
|
|
5109
|
-
|
|
5127
|
+
dispatchEvent('keydown', {}, evnt);
|
|
5128
|
+
dispatchEvent('keydown-end', {}, evnt);
|
|
5110
5129
|
});
|
|
5111
5130
|
}
|
|
5112
5131
|
};
|
|
@@ -5304,7 +5323,7 @@ export default defineComponent({
|
|
|
5304
5323
|
}
|
|
5305
5324
|
// 如果按下 del 键,更新表尾数据
|
|
5306
5325
|
tableMethods.updateFooter();
|
|
5307
|
-
|
|
5326
|
+
dispatchEvent('cell-delete-value', params, evnt);
|
|
5308
5327
|
}
|
|
5309
5328
|
}
|
|
5310
5329
|
}
|
|
@@ -5330,7 +5349,7 @@ export default defineComponent({
|
|
|
5330
5349
|
setCellValue(selected.row, selected.column, null);
|
|
5331
5350
|
$xeTable.handleEdit(selected.args, evnt);
|
|
5332
5351
|
}
|
|
5333
|
-
|
|
5352
|
+
dispatchEvent('cell-backspace-value', params, evnt);
|
|
5334
5353
|
}
|
|
5335
5354
|
}
|
|
5336
5355
|
}
|
|
@@ -5380,7 +5399,7 @@ export default defineComponent({
|
|
|
5380
5399
|
}
|
|
5381
5400
|
}
|
|
5382
5401
|
}
|
|
5383
|
-
|
|
5402
|
+
dispatchEvent('keydown', {}, evnt);
|
|
5384
5403
|
});
|
|
5385
5404
|
}
|
|
5386
5405
|
};
|
|
@@ -5397,7 +5416,7 @@ export default defineComponent({
|
|
|
5397
5416
|
$xeTable.handlePasteCellAreaEvent(evnt);
|
|
5398
5417
|
}
|
|
5399
5418
|
}
|
|
5400
|
-
|
|
5419
|
+
dispatchEvent('paste', {}, evnt);
|
|
5401
5420
|
}
|
|
5402
5421
|
};
|
|
5403
5422
|
const handleGlobalCopyEvent = (evnt) => {
|
|
@@ -5413,7 +5432,7 @@ export default defineComponent({
|
|
|
5413
5432
|
$xeTable.handleCopyCellAreaEvent(evnt);
|
|
5414
5433
|
}
|
|
5415
5434
|
}
|
|
5416
|
-
|
|
5435
|
+
dispatchEvent('copy', {}, evnt);
|
|
5417
5436
|
}
|
|
5418
5437
|
};
|
|
5419
5438
|
const handleGlobalCutEvent = (evnt) => {
|
|
@@ -5429,7 +5448,7 @@ export default defineComponent({
|
|
|
5429
5448
|
$xeTable.handleCutCellAreaEvent(evnt);
|
|
5430
5449
|
}
|
|
5431
5450
|
}
|
|
5432
|
-
|
|
5451
|
+
dispatchEvent('cut', {}, evnt);
|
|
5433
5452
|
}
|
|
5434
5453
|
};
|
|
5435
5454
|
const handleGlobalResizeEvent = () => {
|
|
@@ -5455,6 +5474,50 @@ export default defineComponent({
|
|
|
5455
5474
|
}
|
|
5456
5475
|
}
|
|
5457
5476
|
};
|
|
5477
|
+
const clearRowDropOrigin = () => {
|
|
5478
|
+
const el = refElem.value;
|
|
5479
|
+
if (el) {
|
|
5480
|
+
const clss = 'row--drag-origin';
|
|
5481
|
+
XEUtils.arrayEach(el.querySelectorAll(`.${clss}`), (elem) => {
|
|
5482
|
+
elem.draggable = false;
|
|
5483
|
+
removeClass(elem, clss);
|
|
5484
|
+
});
|
|
5485
|
+
}
|
|
5486
|
+
};
|
|
5487
|
+
const clearRowDropTarget = () => {
|
|
5488
|
+
const el = refElem.value;
|
|
5489
|
+
if (el) {
|
|
5490
|
+
const clss = 'row--drag-active-target';
|
|
5491
|
+
XEUtils.arrayEach(el.querySelectorAll(`.${clss}`), (elem) => {
|
|
5492
|
+
removeClass(elem, clss);
|
|
5493
|
+
});
|
|
5494
|
+
}
|
|
5495
|
+
};
|
|
5496
|
+
const showRowDropTip = (evnt) => {
|
|
5497
|
+
const rdTipEl = refRowDragTipElem.value;
|
|
5498
|
+
if (!rdTipEl) {
|
|
5499
|
+
return;
|
|
5500
|
+
}
|
|
5501
|
+
const el = refElem.value;
|
|
5502
|
+
if (!el) {
|
|
5503
|
+
return;
|
|
5504
|
+
}
|
|
5505
|
+
if (rdTipEl) {
|
|
5506
|
+
const wrapperRect = el.getBoundingClientRect();
|
|
5507
|
+
rdTipEl.style.display = 'block';
|
|
5508
|
+
rdTipEl.style.top = `${Math.min(el.clientHeight - el.scrollTop - rdTipEl.clientHeight, evnt.clientY - wrapperRect.y)}px`;
|
|
5509
|
+
rdTipEl.style.left = `${Math.min(el.clientWidth - el.scrollLeft - rdTipEl.clientWidth - 16, evnt.clientX - wrapperRect.x)}px`;
|
|
5510
|
+
}
|
|
5511
|
+
};
|
|
5512
|
+
const hideRowDropTip = () => {
|
|
5513
|
+
const rdTipEl = refRowDragTipElem.value;
|
|
5514
|
+
if (rdTipEl) {
|
|
5515
|
+
rdTipEl.style.display = '';
|
|
5516
|
+
}
|
|
5517
|
+
};
|
|
5518
|
+
const updateRowDropTipContent = (tdEl) => {
|
|
5519
|
+
reactData.dragTipText = tdEl.textContent || '';
|
|
5520
|
+
};
|
|
5458
5521
|
/**
|
|
5459
5522
|
* 处理显示 tooltip
|
|
5460
5523
|
* @param {Event} evnt 事件
|
|
@@ -6226,13 +6289,13 @@ export default defineComponent({
|
|
|
6226
6289
|
if (sortOpts.trigger === 'cell' && !(triggerResizable || triggerSort || triggerFilter)) {
|
|
6227
6290
|
tablePrivateMethods.triggerSortEvent(evnt, column, getNextSortOrder(column));
|
|
6228
6291
|
}
|
|
6229
|
-
|
|
6292
|
+
dispatchEvent('header-cell-click', Object.assign({ triggerResizable, triggerSort, triggerFilter, cell }, params), evnt);
|
|
6230
6293
|
if (columnOpts.isCurrent || props.highlightCurrentColumn) {
|
|
6231
6294
|
tablePrivateMethods.triggerCurrentColumnEvent(evnt, params);
|
|
6232
6295
|
}
|
|
6233
6296
|
},
|
|
6234
6297
|
triggerHeaderCellDblclickEvent(evnt, params) {
|
|
6235
|
-
|
|
6298
|
+
dispatchEvent('header-cell-dblclick', Object.assign({ cell: evnt.currentTarget }, params), evnt);
|
|
6236
6299
|
},
|
|
6237
6300
|
/**
|
|
6238
6301
|
* 列点击事件
|
|
@@ -6313,7 +6376,7 @@ export default defineComponent({
|
|
|
6313
6376
|
}
|
|
6314
6377
|
}
|
|
6315
6378
|
}
|
|
6316
|
-
|
|
6379
|
+
dispatchEvent('cell-click', params, evnt);
|
|
6317
6380
|
},
|
|
6318
6381
|
/**
|
|
6319
6382
|
* 列双击点击事件
|
|
@@ -6344,7 +6407,7 @@ export default defineComponent({
|
|
|
6344
6407
|
}
|
|
6345
6408
|
}
|
|
6346
6409
|
}
|
|
6347
|
-
|
|
6410
|
+
dispatchEvent('cell-dblclick', params, evnt);
|
|
6348
6411
|
},
|
|
6349
6412
|
handleToggleCheckRowEvent(evnt, params) {
|
|
6350
6413
|
const { selectCheckboxMaps } = reactData;
|
|
@@ -6388,7 +6451,7 @@ export default defineComponent({
|
|
|
6388
6451
|
tableMethods.setAllCheckboxRow(false);
|
|
6389
6452
|
const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
|
|
6390
6453
|
handleCheckedCheckboxRow(rangeRows, true, false);
|
|
6391
|
-
|
|
6454
|
+
dispatchEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt);
|
|
6392
6455
|
return;
|
|
6393
6456
|
}
|
|
6394
6457
|
}
|
|
@@ -6396,7 +6459,7 @@ export default defineComponent({
|
|
|
6396
6459
|
if (!checkMethod || checkMethod({ row })) {
|
|
6397
6460
|
tablePrivateMethods.handleSelectRow(params, value);
|
|
6398
6461
|
tablePrivateMethods.checkSelectionStatus();
|
|
6399
|
-
|
|
6462
|
+
dispatchEvent('checkbox-change', Object.assign({
|
|
6400
6463
|
records: tableMethods.getCheckboxRecords(),
|
|
6401
6464
|
reserves: tableMethods.getCheckboxReserveRecords(),
|
|
6402
6465
|
indeterminates: tableMethods.getCheckboxIndeterminateRecords(),
|
|
@@ -6443,7 +6506,7 @@ export default defineComponent({
|
|
|
6443
6506
|
}
|
|
6444
6507
|
}
|
|
6445
6508
|
if (isChange) {
|
|
6446
|
-
|
|
6509
|
+
dispatchEvent('radio-change', Object.assign({ oldValue, newValue }, params), evnt);
|
|
6447
6510
|
}
|
|
6448
6511
|
},
|
|
6449
6512
|
triggerCurrentColumnEvent(evnt, params) {
|
|
@@ -6463,7 +6526,7 @@ export default defineComponent({
|
|
|
6463
6526
|
if (!currentMethod || currentMethod({ row: newValue })) {
|
|
6464
6527
|
tableMethods.setCurrentRow(newValue);
|
|
6465
6528
|
if (isChange) {
|
|
6466
|
-
|
|
6529
|
+
dispatchEvent('current-change', Object.assign({ oldValue, newValue }, params), evnt);
|
|
6467
6530
|
}
|
|
6468
6531
|
}
|
|
6469
6532
|
},
|
|
@@ -6485,7 +6548,7 @@ export default defineComponent({
|
|
|
6485
6548
|
const columnIndex = tableMethods.getColumnIndex(column);
|
|
6486
6549
|
const $columnIndex = tableMethods.getVMColumnIndex(column);
|
|
6487
6550
|
tableMethods.setRowExpand(row, expanded);
|
|
6488
|
-
|
|
6551
|
+
dispatchEvent('toggle-row-expand', {
|
|
6489
6552
|
expanded,
|
|
6490
6553
|
column,
|
|
6491
6554
|
columnIndex,
|
|
@@ -6514,7 +6577,7 @@ export default defineComponent({
|
|
|
6514
6577
|
const columnIndex = tableMethods.getColumnIndex(column);
|
|
6515
6578
|
const $columnIndex = tableMethods.getVMColumnIndex(column);
|
|
6516
6579
|
tableMethods.setTreeExpand(row, expanded);
|
|
6517
|
-
|
|
6580
|
+
dispatchEvent('toggle-tree-expand', { expanded, column, columnIndex, $columnIndex, row }, evnt);
|
|
6518
6581
|
}
|
|
6519
6582
|
},
|
|
6520
6583
|
/**
|
|
@@ -6536,9 +6599,137 @@ export default defineComponent({
|
|
|
6536
6599
|
if (mouseConfig && mouseOpts.area && $xeTable.handleSortEvent) {
|
|
6537
6600
|
$xeTable.handleSortEvent(evnt, params);
|
|
6538
6601
|
}
|
|
6539
|
-
|
|
6602
|
+
dispatchEvent('sort-change', params, evnt);
|
|
6603
|
+
}
|
|
6604
|
+
},
|
|
6605
|
+
handleRowDragDragstartEvent(evnt) {
|
|
6606
|
+
const img = new Image();
|
|
6607
|
+
if (evnt.dataTransfer) {
|
|
6608
|
+
evnt.dataTransfer.setDragImage(img, 0, 0);
|
|
6540
6609
|
}
|
|
6541
6610
|
},
|
|
6611
|
+
handleRowDragDragendEvent(evnt) {
|
|
6612
|
+
const { treeConfig } = props;
|
|
6613
|
+
const dragOpts = computeDragOpts.value;
|
|
6614
|
+
const { dragEndMethod } = dragOpts;
|
|
6615
|
+
const treeOpts = computeTreeOpts.value;
|
|
6616
|
+
const { transform } = treeOpts;
|
|
6617
|
+
const { dragRow } = reactData;
|
|
6618
|
+
const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData;
|
|
6619
|
+
if (prevDragRow && dragRow) {
|
|
6620
|
+
// 判断是否有拖动
|
|
6621
|
+
if (prevDragRow !== dragRow) {
|
|
6622
|
+
Promise.resolve(dragEndMethod
|
|
6623
|
+
? dragEndMethod({
|
|
6624
|
+
oldRow: dragRow,
|
|
6625
|
+
newRow: prevDragRow
|
|
6626
|
+
})
|
|
6627
|
+
: true).then((status) => {
|
|
6628
|
+
if (!status) {
|
|
6629
|
+
return;
|
|
6630
|
+
}
|
|
6631
|
+
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
6632
|
+
// 移出源位置
|
|
6633
|
+
const oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow);
|
|
6634
|
+
const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow);
|
|
6635
|
+
afterFullData.splice(oafIndex, 1);
|
|
6636
|
+
tableFullData.splice(otfIndex, 1);
|
|
6637
|
+
// 插新位置
|
|
6638
|
+
const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow);
|
|
6639
|
+
const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow);
|
|
6640
|
+
const nafIndex = pafIndex + dragOffsetIndex;
|
|
6641
|
+
const ntfIndex = ptfIndex + dragOffsetIndex;
|
|
6642
|
+
afterFullData.splice(nafIndex, 0, dragRow);
|
|
6643
|
+
tableFullData.splice(ntfIndex, 0, dragRow);
|
|
6644
|
+
reactData.isDragRowMove = true;
|
|
6645
|
+
$xeTable.cacheRowMap();
|
|
6646
|
+
$xeTable.updateScrollYStatus();
|
|
6647
|
+
$xeTable.handleTableData(treeConfig && transform);
|
|
6648
|
+
if (!(treeConfig && transform)) {
|
|
6649
|
+
$xeTable.updateAfterDataIndex();
|
|
6650
|
+
}
|
|
6651
|
+
$xeTable.updateFooter();
|
|
6652
|
+
$xeTable.checkSelectionStatus();
|
|
6653
|
+
if (reactData.scrollYLoad) {
|
|
6654
|
+
$xeTable.updateScrollYSpace();
|
|
6655
|
+
}
|
|
6656
|
+
nextTick().then(() => {
|
|
6657
|
+
$xeTable.updateCellAreas();
|
|
6658
|
+
return $xeTable.recalculate();
|
|
6659
|
+
});
|
|
6660
|
+
dispatchEvent('row-dragend', {
|
|
6661
|
+
oldRow: dragRow,
|
|
6662
|
+
newRow: prevDragRow,
|
|
6663
|
+
_index: {
|
|
6664
|
+
newIndex: nafIndex,
|
|
6665
|
+
oldIndex: oafIndex
|
|
6666
|
+
}
|
|
6667
|
+
}, evnt);
|
|
6668
|
+
}).catch(() => {
|
|
6669
|
+
});
|
|
6670
|
+
}
|
|
6671
|
+
}
|
|
6672
|
+
hideRowDropTip();
|
|
6673
|
+
clearRowDropOrigin();
|
|
6674
|
+
clearRowDropTarget();
|
|
6675
|
+
reactData.dragRow = null;
|
|
6676
|
+
setTimeout(() => {
|
|
6677
|
+
reactData.isDragRowMove = false;
|
|
6678
|
+
}, 500);
|
|
6679
|
+
},
|
|
6680
|
+
handleRowDragDragoverEvent(evnt) {
|
|
6681
|
+
const trEl = evnt.currentTarget;
|
|
6682
|
+
const rowid = trEl.getAttribute('rowid');
|
|
6683
|
+
const row = $xeTable.getRowById(rowid);
|
|
6684
|
+
clearRowDropTarget();
|
|
6685
|
+
if (row) {
|
|
6686
|
+
evnt.preventDefault();
|
|
6687
|
+
evnt.preventDefault();
|
|
6688
|
+
const { dragRow } = reactData;
|
|
6689
|
+
const offsetY = evnt.clientY - trEl.getBoundingClientRect().y;
|
|
6690
|
+
const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom';
|
|
6691
|
+
addClass(trEl, 'row--drag-active-target');
|
|
6692
|
+
trEl.setAttribute('drag-pos', dragPos);
|
|
6693
|
+
internalData.prevDragRow = row;
|
|
6694
|
+
internalData.prevDragPos = dragPos;
|
|
6695
|
+
dispatchEvent('row-dragover', {
|
|
6696
|
+
oldRow: dragRow,
|
|
6697
|
+
targetRow: row,
|
|
6698
|
+
dragPos
|
|
6699
|
+
}, evnt);
|
|
6700
|
+
}
|
|
6701
|
+
showRowDropTip(evnt);
|
|
6702
|
+
},
|
|
6703
|
+
handleCellDragMousedownEvent(evnt, params) {
|
|
6704
|
+
var _a;
|
|
6705
|
+
evnt.stopPropagation();
|
|
6706
|
+
const dragOpts = computeDragOpts.value;
|
|
6707
|
+
const { dragStartMethod } = dragOpts;
|
|
6708
|
+
const { row } = params;
|
|
6709
|
+
const dragEl = evnt.currentTarget;
|
|
6710
|
+
const tdEl = (_a = dragEl.parentNode) === null || _a === void 0 ? void 0 : _a.parentNode;
|
|
6711
|
+
const trEl = tdEl.parentNode;
|
|
6712
|
+
reactData.isDragRowMove = false;
|
|
6713
|
+
clearRowDropOrigin();
|
|
6714
|
+
if (dragStartMethod && !dragStartMethod(params)) {
|
|
6715
|
+
trEl.draggable = false;
|
|
6716
|
+
reactData.dragRow = null;
|
|
6717
|
+
hideRowDropTip();
|
|
6718
|
+
return;
|
|
6719
|
+
}
|
|
6720
|
+
reactData.dragRow = row;
|
|
6721
|
+
trEl.draggable = true;
|
|
6722
|
+
addClass(trEl, 'row--drag-origin');
|
|
6723
|
+
showRowDropTip(evnt);
|
|
6724
|
+
updateRowDropTipContent(tdEl);
|
|
6725
|
+
dispatchEvent('row-dragstart', params, evnt);
|
|
6726
|
+
},
|
|
6727
|
+
handleCellDragMouseupEvent() {
|
|
6728
|
+
clearRowDropOrigin();
|
|
6729
|
+
hideRowDropTip();
|
|
6730
|
+
reactData.dragRow = null;
|
|
6731
|
+
reactData.isDragRowMove = false;
|
|
6732
|
+
},
|
|
6542
6733
|
/**
|
|
6543
6734
|
* 横向 X 可视渲染事件处理
|
|
6544
6735
|
*/
|
|
@@ -6568,10 +6759,11 @@ export default defineComponent({
|
|
|
6568
6759
|
const bodyWidth = bodyElem ? bodyElem.clientWidth : 0;
|
|
6569
6760
|
const scrollHeight = bodyElem ? bodyElem.scrollHeight : 0;
|
|
6570
6761
|
const scrollWidth = bodyElem ? bodyElem.scrollWidth : 0;
|
|
6571
|
-
|
|
6762
|
+
const evntParams = Object.assign({ bodyHeight,
|
|
6572
6763
|
bodyWidth,
|
|
6573
6764
|
scrollHeight,
|
|
6574
|
-
scrollWidth, isX: isRollX, isY: isRollY }, params)
|
|
6765
|
+
scrollWidth, isX: isRollX, isY: isRollY }, params);
|
|
6766
|
+
dispatchEvent('scroll', evntParams, evnt);
|
|
6575
6767
|
},
|
|
6576
6768
|
/**
|
|
6577
6769
|
* 纵向 Y 可视渲染事件处理
|
|
@@ -6717,14 +6909,14 @@ export default defineComponent({
|
|
|
6717
6909
|
},
|
|
6718
6910
|
updateScrollXData() {
|
|
6719
6911
|
// reactData.tableColumn = []
|
|
6720
|
-
nextTick(() => {
|
|
6912
|
+
return nextTick().then(() => {
|
|
6721
6913
|
handleTableColumn();
|
|
6722
6914
|
tablePrivateMethods.updateScrollXSpace();
|
|
6723
6915
|
});
|
|
6724
6916
|
},
|
|
6725
6917
|
updateScrollYData() {
|
|
6726
6918
|
// reactData.tableData = []
|
|
6727
|
-
nextTick(() => {
|
|
6919
|
+
return nextTick().then(() => {
|
|
6728
6920
|
tablePrivateMethods.handleTableData();
|
|
6729
6921
|
calcCellHeight();
|
|
6730
6922
|
tablePrivateMethods.updateScrollYSpace();
|
|
@@ -7124,6 +7316,15 @@ export default defineComponent({
|
|
|
7124
7316
|
ref: refTableMenu
|
|
7125
7317
|
})
|
|
7126
7318
|
: createCommentVNode(),
|
|
7319
|
+
/**
|
|
7320
|
+
* 拖拽提示
|
|
7321
|
+
*/
|
|
7322
|
+
rowOpts.drag
|
|
7323
|
+
? h('div', {
|
|
7324
|
+
ref: refRowDragTipElem,
|
|
7325
|
+
class: 'vxe-table--row-drag-hint'
|
|
7326
|
+
}, getI18n('vxe.table.dragTip', [reactData.dragTipText]))
|
|
7327
|
+
: createCommentVNode(),
|
|
7127
7328
|
/**
|
|
7128
7329
|
* 提示相关
|
|
7129
7330
|
*/
|
package/es/table/style.css
CHANGED
|
@@ -712,6 +712,9 @@
|
|
|
712
712
|
display: flex;
|
|
713
713
|
flex-direction: row;
|
|
714
714
|
}
|
|
715
|
+
.vxe-table-custom--option.active--drag-origin {
|
|
716
|
+
opacity: 0.5;
|
|
717
|
+
}
|
|
715
718
|
.vxe-table-custom--option.active--drag-target[drag-pos=top]::after {
|
|
716
719
|
display: block;
|
|
717
720
|
top: -2px;
|
|
@@ -944,6 +947,9 @@
|
|
|
944
947
|
padding-right: 0.4em;
|
|
945
948
|
}
|
|
946
949
|
.vxe-table-custom--sort-btn:not(.is--disabled) {
|
|
950
|
+
cursor: grab;
|
|
951
|
+
}
|
|
952
|
+
.vxe-table-custom--sort-btn:not(.is--disabled):active {
|
|
947
953
|
cursor: grabbing;
|
|
948
954
|
}
|
|
949
955
|
.vxe-table-custom--sort-btn:not(.is--disabled):hover {
|
|
@@ -1024,7 +1030,7 @@
|
|
|
1024
1030
|
position: absolute;
|
|
1025
1031
|
top: 0;
|
|
1026
1032
|
left: 0;
|
|
1027
|
-
padding: 0.6em 1em 0.6em 1.
|
|
1033
|
+
padding: 0.6em 1em 0.6em 1.6em;
|
|
1028
1034
|
max-width: 300px;
|
|
1029
1035
|
border-radius: var(--vxe-ui-border-radius);
|
|
1030
1036
|
overflow: hidden;
|
|
@@ -1087,6 +1093,9 @@
|
|
|
1087
1093
|
width: 100%;
|
|
1088
1094
|
}
|
|
1089
1095
|
|
|
1096
|
+
.vxe-table-custom-popup--row.active--drag-origin .vxe-table-custom-popup--column-item {
|
|
1097
|
+
opacity: 0.5;
|
|
1098
|
+
}
|
|
1090
1099
|
.vxe-table-custom-popup--row.active--drag-target[drag-pos=top] .vxe-table-custom-popup--column-item::after {
|
|
1091
1100
|
display: block;
|
|
1092
1101
|
top: -2px;
|
|
@@ -1108,7 +1117,7 @@
|
|
|
1108
1117
|
position: absolute;
|
|
1109
1118
|
left: -1px;
|
|
1110
1119
|
width: calc(100% + 1px);
|
|
1111
|
-
height:
|
|
1120
|
+
height: 2px;
|
|
1112
1121
|
background-color: var(--vxe-ui-font-primary-color);
|
|
1113
1122
|
z-index: 12;
|
|
1114
1123
|
}
|
|
@@ -2032,6 +2041,7 @@
|
|
|
2032
2041
|
/*树形节点*/
|
|
2033
2042
|
/*展开行*/
|
|
2034
2043
|
/*设置列高度*/
|
|
2044
|
+
/*拖拽行*/
|
|
2035
2045
|
/*溢出列*/
|
|
2036
2046
|
/*暂无数据*/
|
|
2037
2047
|
/*校验不通过*/
|
|
@@ -2592,6 +2602,71 @@
|
|
|
2592
2602
|
overflow: auto;
|
|
2593
2603
|
outline: 0;
|
|
2594
2604
|
}
|
|
2605
|
+
.vxe-table--render-default .vxe-cell--drag-handle {
|
|
2606
|
+
-webkit-user-select: none;
|
|
2607
|
+
-moz-user-select: none;
|
|
2608
|
+
user-select: none;
|
|
2609
|
+
}
|
|
2610
|
+
.vxe-table--render-default .vxe-cell--drag-handle + span {
|
|
2611
|
+
padding-left: 0.5em;
|
|
2612
|
+
}
|
|
2613
|
+
.vxe-table--render-default .vxe-cell--drag-handle:not(.is--disabled) {
|
|
2614
|
+
cursor: grab;
|
|
2615
|
+
}
|
|
2616
|
+
.vxe-table--render-default .vxe-cell--drag-handle:not(.is--disabled):active {
|
|
2617
|
+
cursor: grabbing;
|
|
2618
|
+
}
|
|
2619
|
+
.vxe-table--render-default .vxe-cell--drag-handle:not(.is--disabled):hover {
|
|
2620
|
+
color: var(--vxe-ui-font-primary-color);
|
|
2621
|
+
}
|
|
2622
|
+
.vxe-table--render-default .vxe-cell--drag-handle.is--disabled {
|
|
2623
|
+
color: var(--vxe-ui-input-disabled-color);
|
|
2624
|
+
cursor: not-allowed;
|
|
2625
|
+
}
|
|
2626
|
+
.vxe-table--render-default .vxe-body--row.row--drag-origin > .vxe-body--column > .vxe-cell {
|
|
2627
|
+
opacity: 0.5;
|
|
2628
|
+
}
|
|
2629
|
+
.vxe-table--render-default .vxe-body--row.row--drag-active-target > .vxe-body--column::after {
|
|
2630
|
+
display: none;
|
|
2631
|
+
content: "";
|
|
2632
|
+
position: absolute;
|
|
2633
|
+
left: 0;
|
|
2634
|
+
width: 100%;
|
|
2635
|
+
height: 2px;
|
|
2636
|
+
background-color: var(--vxe-ui-font-primary-color);
|
|
2637
|
+
z-index: 12;
|
|
2638
|
+
}
|
|
2639
|
+
.vxe-table--render-default .vxe-body--row.row--drag-active-target[drag-pos=top] > .vxe-body--column::after {
|
|
2640
|
+
display: block;
|
|
2641
|
+
top: 0;
|
|
2642
|
+
}
|
|
2643
|
+
.vxe-table--render-default .vxe-body--row.row--drag-active-target[drag-pos=bottom] > .vxe-body--column::after {
|
|
2644
|
+
display: block;
|
|
2645
|
+
bottom: 0;
|
|
2646
|
+
}
|
|
2647
|
+
.vxe-table--render-default .vxe-body--row-list-move {
|
|
2648
|
+
transition: transform 0.35s;
|
|
2649
|
+
}
|
|
2650
|
+
.vxe-table--render-default .vxe-table--row-drag-hint {
|
|
2651
|
+
display: none;
|
|
2652
|
+
position: absolute;
|
|
2653
|
+
top: 0;
|
|
2654
|
+
left: 0;
|
|
2655
|
+
padding: 0.6em 1em 0.6em 1.6em;
|
|
2656
|
+
max-width: 50%;
|
|
2657
|
+
min-width: 100px;
|
|
2658
|
+
border-radius: var(--vxe-ui-border-radius);
|
|
2659
|
+
overflow: hidden;
|
|
2660
|
+
text-overflow: ellipsis;
|
|
2661
|
+
white-space: nowrap;
|
|
2662
|
+
-webkit-user-select: none;
|
|
2663
|
+
-moz-user-select: none;
|
|
2664
|
+
user-select: none;
|
|
2665
|
+
pointer-events: none;
|
|
2666
|
+
background-color: var(--vxe-ui-layout-background-color);
|
|
2667
|
+
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
|
|
2668
|
+
z-index: 33;
|
|
2669
|
+
}
|
|
2595
2670
|
.vxe-table--render-default .vxe-header--column.col--ellipsis:not(.col--active) > .vxe-cell,
|
|
2596
2671
|
.vxe-table--render-default .vxe-body--column.col--ellipsis:not(.col--active) > .vxe-cell,
|
|
2597
2672
|
.vxe-table--render-default .vxe-footer--column.col--ellipsis:not(.col--active) > .vxe-cell {
|