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.
- package/README.md +1 -1
- package/es/locale/lang/en-US.js +1 -0
- package/es/locale/lang/es-ES.js +1 -0
- package/es/locale/lang/hu-HU.js +1 -0
- package/es/locale/lang/ja-JP.js +1 -0
- package/es/locale/lang/ko-KR.js +1 -0
- package/es/locale/lang/pt-BR.js +1 -0
- package/es/locale/lang/ru-RU.js +1 -0
- package/es/locale/lang/uk-UA.js +1 -0
- package/es/locale/lang/vi-VN.js +1 -0
- package/es/locale/lang/zh-CHT.js +1 -0
- package/es/locale/lang/zh-CN.js +1 -0
- 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 +32 -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 +917 -449
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/en-US.js +1 -0
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +1 -0
- package/lib/locale/lang/es-ES.js +1 -0
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +1 -0
- package/lib/locale/lang/hu-HU.js +1 -0
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +1 -0
- package/lib/locale/lang/ja-JP.js +1 -0
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +1 -0
- package/lib/locale/lang/ko-KR.js +1 -0
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +1 -0
- package/lib/locale/lang/pt-BR.js +1 -0
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +1 -0
- package/lib/locale/lang/ru-RU.js +1 -0
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +1 -0
- package/lib/locale/lang/uk-UA.js +1 -0
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +1 -0
- package/lib/locale/lang/vi-VN.js +1 -0
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +1 -0
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CHT.umd.js +1 -0
- package/lib/locale/lang/zh-CN.js +1 -0
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +1 -0
- 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 +34 -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/locale/lang/en-US.ts +1 -0
- package/packages/locale/lang/es-ES.ts +1 -0
- package/packages/locale/lang/hu-HU.ts +1 -0
- package/packages/locale/lang/ja-JP.ts +1 -0
- package/packages/locale/lang/ko-KR.ts +1 -0
- package/packages/locale/lang/pt-BR.ts +1 -0
- package/packages/locale/lang/ru-RU.ts +1 -0
- package/packages/locale/lang/uk-UA.ts +1 -0
- package/packages/locale/lang/vi-VN.ts +1 -0
- package/packages/locale/lang/zh-CHT.ts +1 -0
- package/packages/locale/lang/zh-CN.ts +1 -0
- package/packages/table/module/custom/mixin.ts +5 -1
- package/packages/table/module/edit/mixin.ts +32 -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.1731937243466.ttf} +0 -0
- /package/es/{iconfont.1731633464058.woff → iconfont.1731937243466.woff} +0 -0
- /package/es/{iconfont.1731633464058.woff2 → iconfont.1731937243466.woff2} +0 -0
- /package/lib/{iconfont.1731633464058.ttf → iconfont.1731937243466.ttf} +0 -0
- /package/lib/{iconfont.1731633464058.woff → iconfont.1731937243466.woff} +0 -0
- /package/lib/{iconfont.1731633464058.woff2 → iconfont.1731937243466.woff2} +0 -0
package/es/table/src/methods.js
CHANGED
|
@@ -331,63 +331,114 @@ function updateRowDropOrigin($xeTable, row) {
|
|
|
331
331
|
});
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
|
-
|
|
334
|
+
const updateRowDropTipContent = ($xeTable, tdEl) => {
|
|
335
|
+
const reactData = $xeTable;
|
|
336
|
+
const props = $xeTable;
|
|
337
|
+
const { dragConfig } = props;
|
|
338
|
+
const { dragRow } = reactData;
|
|
339
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
340
|
+
const { tooltipMethod } = rowDragOpts;
|
|
341
|
+
const rTooltipMethod = tooltipMethod || (dragConfig ? dragConfig.rowTooltipMethod : null);
|
|
342
|
+
let tipContent = '';
|
|
343
|
+
if (rTooltipMethod) {
|
|
344
|
+
tipContent = `${rTooltipMethod({
|
|
345
|
+
row: dragRow
|
|
346
|
+
}) || ''}`;
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
tipContent = getI18n('vxe.table.dragTip', [tdEl.textContent || '']);
|
|
350
|
+
}
|
|
351
|
+
reactData.dragTipText = tipContent;
|
|
352
|
+
};
|
|
353
|
+
const updateColDropOrigin = ($xeTable, column) => {
|
|
335
354
|
const el = $xeTable.$el;
|
|
336
355
|
if (el) {
|
|
337
|
-
const clss = '
|
|
338
|
-
XEUtils.arrayEach(el.querySelectorAll(
|
|
339
|
-
|
|
356
|
+
const clss = 'col--drag-origin';
|
|
357
|
+
XEUtils.arrayEach(el.querySelectorAll(`[colid="${column.id}"]`), (elem) => {
|
|
358
|
+
addClass(elem, clss);
|
|
340
359
|
});
|
|
341
360
|
}
|
|
342
|
-
}
|
|
343
|
-
|
|
361
|
+
};
|
|
362
|
+
const clearColDropOrigin = ($xeTable) => {
|
|
344
363
|
const el = $xeTable.$el;
|
|
345
364
|
if (el) {
|
|
346
|
-
const clss = '
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
elem.setAttribute('drag-pos', dragPos);
|
|
365
|
+
const clss = 'col--drag-origin';
|
|
366
|
+
XEUtils.arrayEach(el.querySelectorAll(`.${clss}`), (elem) => {
|
|
367
|
+
elem.draggable = false;
|
|
368
|
+
removeClass(elem, clss);
|
|
351
369
|
});
|
|
352
370
|
}
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
const
|
|
356
|
-
|
|
357
|
-
|
|
371
|
+
};
|
|
372
|
+
const updateColDropTipContent = ($xeTable, tdEl) => {
|
|
373
|
+
const reactData = $xeTable;
|
|
374
|
+
const { dragCol } = reactData;
|
|
375
|
+
const columnDragOpts = $xeTable.computeColumnDragOpts;
|
|
376
|
+
const { tooltipMethod } = columnDragOpts;
|
|
377
|
+
let tipContent = '';
|
|
378
|
+
if (tooltipMethod) {
|
|
379
|
+
tipContent = `${tooltipMethod({
|
|
380
|
+
column: dragCol
|
|
381
|
+
}) || ''}`;
|
|
358
382
|
}
|
|
359
|
-
|
|
383
|
+
else {
|
|
384
|
+
tipContent = getI18n('vxe.table.dragTip', [tdEl.textContent || '']);
|
|
385
|
+
}
|
|
386
|
+
reactData.dragTipText = tipContent;
|
|
387
|
+
};
|
|
388
|
+
function showDropTip($xeTable, evnt, trEl, thEl, dragPos) {
|
|
389
|
+
const reactData = $xeTable;
|
|
390
|
+
const el = $xeTable.$refs.refElem;
|
|
360
391
|
if (!el) {
|
|
361
392
|
return;
|
|
362
393
|
}
|
|
394
|
+
const { scrollbarWidth, scrollbarHeight } = reactData;
|
|
395
|
+
const wrapperRect = el.getBoundingClientRect();
|
|
396
|
+
if (trEl) {
|
|
397
|
+
const rdLineEl = $xeTable.$refs.refDragRowLineElem;
|
|
398
|
+
if (rdLineEl) {
|
|
399
|
+
const trRect = trEl.getBoundingClientRect();
|
|
400
|
+
let top = Math.max(1, trRect.y - wrapperRect.y);
|
|
401
|
+
if (dragPos === 'bottom') {
|
|
402
|
+
top = Math.min(wrapperRect.height - 1, trRect.y - wrapperRect.y + trRect.height);
|
|
403
|
+
}
|
|
404
|
+
rdLineEl.style.top = `${top}px`;
|
|
405
|
+
rdLineEl.style.width = `${wrapperRect.width - scrollbarWidth}px`;
|
|
406
|
+
rdLineEl.style.display = 'block';
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
else if (thEl) {
|
|
410
|
+
const cdLineEl = $xeTable.$refs.refDragColLineElem;
|
|
411
|
+
if (cdLineEl) {
|
|
412
|
+
const thRect = thEl.getBoundingClientRect();
|
|
413
|
+
let left = Math.max(1, thRect.x - wrapperRect.x);
|
|
414
|
+
if (dragPos === 'right') {
|
|
415
|
+
left = Math.min(wrapperRect.width - 2, thRect.x - wrapperRect.x + thRect.width);
|
|
416
|
+
}
|
|
417
|
+
cdLineEl.style.left = `${left}px`;
|
|
418
|
+
cdLineEl.style.height = `${wrapperRect.height - scrollbarHeight}px`;
|
|
419
|
+
cdLineEl.style.display = 'block';
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
const rdTipEl = $xeTable.$refs.refDragTipElem;
|
|
363
423
|
if (rdTipEl) {
|
|
364
|
-
const wrapperRect = el.getBoundingClientRect();
|
|
365
424
|
rdTipEl.style.display = 'block';
|
|
366
425
|
rdTipEl.style.top = `${Math.min(el.clientHeight - el.scrollTop - rdTipEl.clientHeight, evnt.clientY - wrapperRect.y)}px`;
|
|
367
426
|
rdTipEl.style.left = `${Math.min(el.clientWidth - el.scrollLeft - rdTipEl.clientWidth - 16, evnt.clientX - wrapperRect.x)}px`;
|
|
368
427
|
}
|
|
369
428
|
}
|
|
370
|
-
const
|
|
371
|
-
const rdTipEl = $xeTable.$refs.
|
|
429
|
+
const hideDropTip = ($xeTable) => {
|
|
430
|
+
const rdTipEl = $xeTable.$refs.refDragTipElem;
|
|
431
|
+
const rdLineEl = $xeTable.$refs.refDragRowLineElem;
|
|
432
|
+
const cdLineEl = $xeTable.$refs.refDragColLineElem;
|
|
372
433
|
if (rdTipEl) {
|
|
373
434
|
rdTipEl.style.display = '';
|
|
374
435
|
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
const reactData = $xeTable;
|
|
378
|
-
const { dragRow } = reactData;
|
|
379
|
-
const dragOpts = $xeTable.computeDragOpts;
|
|
380
|
-
const { rowTooltipMethod } = dragOpts;
|
|
381
|
-
let tipContent = '';
|
|
382
|
-
if (rowTooltipMethod) {
|
|
383
|
-
tipContent = `${rowTooltipMethod({
|
|
384
|
-
row: dragRow
|
|
385
|
-
}) || ''}`;
|
|
436
|
+
if (rdLineEl) {
|
|
437
|
+
rdLineEl.style.display = '';
|
|
386
438
|
}
|
|
387
|
-
|
|
388
|
-
|
|
439
|
+
if (cdLineEl) {
|
|
440
|
+
cdLineEl.style.display = '';
|
|
389
441
|
}
|
|
390
|
-
reactData.dragTipText = tipContent;
|
|
391
442
|
};
|
|
392
443
|
const Methods = {
|
|
393
444
|
callSlot(slotFunc, params, h, vNodes) {
|
|
@@ -556,6 +607,7 @@ const Methods = {
|
|
|
556
607
|
editStore.removeMaps = {};
|
|
557
608
|
const sYLoad = this.updateScrollYStatus(fullData);
|
|
558
609
|
this.scrollYLoad = sYLoad;
|
|
610
|
+
this.isDragRowMove = false;
|
|
559
611
|
// 全量数据
|
|
560
612
|
this.tableFullData = fullData;
|
|
561
613
|
this.tableFullTreeData = treeData;
|
|
@@ -739,6 +791,7 @@ const Methods = {
|
|
|
739
791
|
const tableFullColumn = getColumnList(collectColumn);
|
|
740
792
|
this.tableFullColumn = tableFullColumn;
|
|
741
793
|
this._isLoading = true;
|
|
794
|
+
this.isDragColMove = false;
|
|
742
795
|
this.initColumnSort();
|
|
743
796
|
return Promise.resolve(this.restoreCustomStorage()).then(() => {
|
|
744
797
|
this._isLoading = false;
|
|
@@ -3013,7 +3066,7 @@ const Methods = {
|
|
|
3013
3066
|
// 如果点击了当前表格之外
|
|
3014
3067
|
!getEventTargetNode(evnt, $el).flag) {
|
|
3015
3068
|
setTimeout(() => {
|
|
3016
|
-
this.
|
|
3069
|
+
this.handleClearEdit(evnt).then(() => {
|
|
3017
3070
|
// 如果存在校验,点击了表格之外则清除
|
|
3018
3071
|
if (!this.isActivated && editRules && validOpts.autoClear) {
|
|
3019
3072
|
this.validErrorMaps = {};
|
|
@@ -3083,8 +3136,8 @@ const Methods = {
|
|
|
3083
3136
|
if (isEsc) {
|
|
3084
3137
|
this.preventEvent(evnt, 'event.keydown', null, () => {
|
|
3085
3138
|
this.emitEvent('keydown-start', {}, evnt);
|
|
3086
|
-
if (keyboardConfig && mouseConfig && mouseOpts.area && this.
|
|
3087
|
-
this.
|
|
3139
|
+
if (keyboardConfig && mouseConfig && mouseOpts.area && this.handleKeyboardCellAreaEvent) {
|
|
3140
|
+
this.handleKeyboardCellAreaEvent(evnt);
|
|
3088
3141
|
}
|
|
3089
3142
|
else if (actived.row || filterStore.visible || ctxMenuStore.visible) {
|
|
3090
3143
|
evnt.stopPropagation();
|
|
@@ -3095,7 +3148,7 @@ const Methods = {
|
|
|
3095
3148
|
// 如果是激活编辑状态,则取消编辑
|
|
3096
3149
|
if (actived.row) {
|
|
3097
3150
|
const params = actived.args;
|
|
3098
|
-
this.
|
|
3151
|
+
this.handleClearEdit(evnt);
|
|
3099
3152
|
// 如果配置了选中功能,则为选中状态
|
|
3100
3153
|
if (mouseConfig && mouseOpts.selected) {
|
|
3101
3154
|
this.$nextTick(() => this.handleSelected(params, evnt));
|
|
@@ -3155,8 +3208,8 @@ const Methods = {
|
|
|
3155
3208
|
this.moveCtxMenu(evnt, keyCode, ctxMenuStore, 'selected', 39, true, this.ctxMenuList);
|
|
3156
3209
|
}
|
|
3157
3210
|
}
|
|
3158
|
-
else if (keyboardConfig && mouseConfig && mouseOpts.area && this.
|
|
3159
|
-
this.
|
|
3211
|
+
else if (keyboardConfig && mouseConfig && mouseOpts.area && this.handleKeyboardCellAreaEvent) {
|
|
3212
|
+
this.handleKeyboardCellAreaEvent(evnt);
|
|
3160
3213
|
}
|
|
3161
3214
|
else if (keyboardConfig && isSpacebar && keyboardOpts.isChecked && selected.row && selected.column && (selected.column.type === 'checkbox' || selected.column.type === 'radio')) {
|
|
3162
3215
|
// 空格键支持选中复选框
|
|
@@ -3192,7 +3245,7 @@ const Methods = {
|
|
|
3192
3245
|
// 如果是激活编辑状态,则取消编辑
|
|
3193
3246
|
if (actived.row) {
|
|
3194
3247
|
const params = actived.args;
|
|
3195
|
-
this.
|
|
3248
|
+
this.handleClearEdit(evnt);
|
|
3196
3249
|
// 如果配置了选中功能,则为选中状态
|
|
3197
3250
|
if (mouseConfig && mouseOpts.selected) {
|
|
3198
3251
|
this.$nextTick(() => this.handleSelected(params, evnt));
|
|
@@ -4708,6 +4761,9 @@ const Methods = {
|
|
|
4708
4761
|
this.emitEvent('sort-change', params, evnt);
|
|
4709
4762
|
}
|
|
4710
4763
|
},
|
|
4764
|
+
/**
|
|
4765
|
+
* 行拖拽
|
|
4766
|
+
*/
|
|
4711
4767
|
handleRowDragDragstartEvent(evnt) {
|
|
4712
4768
|
const img = new Image();
|
|
4713
4769
|
if (evnt.dataTransfer) {
|
|
@@ -4719,26 +4775,29 @@ const Methods = {
|
|
|
4719
4775
|
const props = $xeTable;
|
|
4720
4776
|
const reactData = $xeTable;
|
|
4721
4777
|
const internalData = $xeTable;
|
|
4722
|
-
const { treeConfig } = props;
|
|
4723
|
-
const
|
|
4724
|
-
const { dragEndMethod } =
|
|
4778
|
+
const { treeConfig, dragConfig } = props;
|
|
4779
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
4780
|
+
const { dragEndMethod } = rowDragOpts;
|
|
4725
4781
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
4726
4782
|
const { transform } = treeOpts;
|
|
4727
4783
|
const { dragRow } = reactData;
|
|
4728
4784
|
const { afterFullData, afterTreeFullData, tableFullData, tableFullTreeData, prevDragRow, prevDragPos } = internalData;
|
|
4785
|
+
const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
|
|
4786
|
+
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
4729
4787
|
if (prevDragRow && dragRow) {
|
|
4730
4788
|
// 判断是否有拖动
|
|
4731
4789
|
if (prevDragRow !== dragRow) {
|
|
4732
|
-
Promise.resolve(
|
|
4733
|
-
?
|
|
4790
|
+
Promise.resolve(dEndMethod
|
|
4791
|
+
? dEndMethod({
|
|
4734
4792
|
oldRow: dragRow,
|
|
4735
|
-
newRow: prevDragRow
|
|
4793
|
+
newRow: prevDragRow,
|
|
4794
|
+
dragPos: prevDragPos,
|
|
4795
|
+
offsetIndex: dragOffsetIndex
|
|
4736
4796
|
})
|
|
4737
4797
|
: true).then((status) => {
|
|
4738
4798
|
if (!status) {
|
|
4739
4799
|
return;
|
|
4740
4800
|
}
|
|
4741
|
-
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
4742
4801
|
let oafIndex = -1;
|
|
4743
4802
|
let nafIndex = -1;
|
|
4744
4803
|
if (treeConfig) {
|
|
@@ -4776,18 +4835,19 @@ const Methods = {
|
|
|
4776
4835
|
if (!(treeConfig && transform)) {
|
|
4777
4836
|
$xeTable.updateAfterDataIndex();
|
|
4778
4837
|
}
|
|
4779
|
-
$xeTable.updateFooter();
|
|
4780
4838
|
$xeTable.checkSelectionStatus();
|
|
4781
4839
|
if (reactData.scrollYLoad) {
|
|
4782
4840
|
$xeTable.updateScrollYSpace();
|
|
4783
4841
|
}
|
|
4784
4842
|
$xeTable.$nextTick().then(() => {
|
|
4785
4843
|
$xeTable.updateCellAreas();
|
|
4786
|
-
|
|
4844
|
+
$xeTable.recalculate();
|
|
4787
4845
|
});
|
|
4788
4846
|
$xeTable.dispatchEvent('row-dragend', {
|
|
4789
4847
|
oldRow: dragRow,
|
|
4790
4848
|
newRow: prevDragRow,
|
|
4849
|
+
dragPos: prevDragPos,
|
|
4850
|
+
offsetIndex: dragOffsetIndex,
|
|
4791
4851
|
_index: {
|
|
4792
4852
|
newIndex: nafIndex,
|
|
4793
4853
|
oldIndex: oafIndex
|
|
@@ -4797,10 +4857,10 @@ const Methods = {
|
|
|
4797
4857
|
});
|
|
4798
4858
|
}
|
|
4799
4859
|
}
|
|
4800
|
-
|
|
4860
|
+
hideDropTip($xeTable);
|
|
4801
4861
|
clearRowDropOrigin($xeTable);
|
|
4802
|
-
clearRowDropTarget($xeTable);
|
|
4803
4862
|
reactData.dragRow = null;
|
|
4863
|
+
reactData.dragCol = null;
|
|
4804
4864
|
setTimeout(() => {
|
|
4805
4865
|
reactData.isDragRowMove = false;
|
|
4806
4866
|
}, 500);
|
|
@@ -4809,50 +4869,57 @@ const Methods = {
|
|
|
4809
4869
|
const $xeTable = this;
|
|
4810
4870
|
const internalData = $xeTable;
|
|
4811
4871
|
const reactData = $xeTable;
|
|
4872
|
+
const { dragRow } = reactData;
|
|
4873
|
+
if (!dragRow) {
|
|
4874
|
+
evnt.preventDefault();
|
|
4875
|
+
return;
|
|
4876
|
+
}
|
|
4812
4877
|
const trEl = evnt.currentTarget;
|
|
4813
4878
|
const rowid = trEl.getAttribute('rowid');
|
|
4814
4879
|
const row = $xeTable.getRowById(rowid);
|
|
4815
|
-
clearRowDropTarget($xeTable);
|
|
4816
4880
|
if (row) {
|
|
4817
4881
|
evnt.preventDefault();
|
|
4818
4882
|
evnt.preventDefault();
|
|
4819
4883
|
const { dragRow } = reactData;
|
|
4820
4884
|
const offsetY = evnt.clientY - trEl.getBoundingClientRect().y;
|
|
4821
4885
|
const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom';
|
|
4822
|
-
updateRowDropTarget($xeTable, row, dragPos);
|
|
4823
4886
|
internalData.prevDragRow = row;
|
|
4824
4887
|
internalData.prevDragPos = dragPos;
|
|
4888
|
+
showDropTip($xeTable, evnt, trEl, null, dragPos);
|
|
4825
4889
|
$xeTable.dispatchEvent('row-dragover', {
|
|
4826
4890
|
oldRow: dragRow,
|
|
4827
4891
|
targetRow: row,
|
|
4828
4892
|
dragPos
|
|
4829
4893
|
}, evnt);
|
|
4830
4894
|
}
|
|
4831
|
-
showRowDropTip(evnt, $xeTable);
|
|
4832
4895
|
},
|
|
4833
4896
|
handleCellDragMousedownEvent(evnt, params) {
|
|
4834
4897
|
var _a;
|
|
4835
4898
|
const $xeTable = this;
|
|
4899
|
+
const props = $xeTable;
|
|
4836
4900
|
const reactData = $xeTable;
|
|
4837
4901
|
evnt.stopPropagation();
|
|
4838
|
-
const
|
|
4839
|
-
const
|
|
4902
|
+
const { dragConfig } = props;
|
|
4903
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
4904
|
+
const { dragStartMethod } = rowDragOpts;
|
|
4840
4905
|
const { row } = params;
|
|
4841
4906
|
const dragEl = evnt.currentTarget;
|
|
4842
|
-
const tdEl = (_a = dragEl.
|
|
4843
|
-
const trEl = tdEl.
|
|
4907
|
+
const tdEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
|
|
4908
|
+
const trEl = tdEl.parentElement;
|
|
4909
|
+
const dStartMethod = dragStartMethod || (dragConfig ? dragConfig.dragStartMethod : null);
|
|
4844
4910
|
reactData.isDragRowMove = false;
|
|
4845
4911
|
clearRowDropOrigin($xeTable);
|
|
4846
|
-
if (
|
|
4912
|
+
if (dStartMethod && !dStartMethod(params)) {
|
|
4847
4913
|
trEl.draggable = false;
|
|
4848
4914
|
reactData.dragRow = null;
|
|
4849
|
-
|
|
4915
|
+
reactData.dragCol = null;
|
|
4916
|
+
hideDropTip($xeTable);
|
|
4850
4917
|
return;
|
|
4851
4918
|
}
|
|
4852
4919
|
reactData.dragRow = row;
|
|
4920
|
+
reactData.dragCol = null;
|
|
4853
4921
|
trEl.draggable = true;
|
|
4854
4922
|
updateRowDropOrigin($xeTable, row);
|
|
4855
|
-
showRowDropTip(evnt, $xeTable);
|
|
4856
4923
|
updateRowDropTipContent($xeTable, tdEl);
|
|
4857
4924
|
$xeTable.dispatchEvent('row-dragstart', params, evnt);
|
|
4858
4925
|
},
|
|
@@ -4860,10 +4927,162 @@ const Methods = {
|
|
|
4860
4927
|
const $xeTable = this;
|
|
4861
4928
|
const reactData = $xeTable;
|
|
4862
4929
|
clearRowDropOrigin($xeTable);
|
|
4863
|
-
|
|
4930
|
+
hideDropTip($xeTable);
|
|
4864
4931
|
reactData.dragRow = null;
|
|
4932
|
+
reactData.dragCol = null;
|
|
4865
4933
|
reactData.isDragRowMove = false;
|
|
4866
4934
|
},
|
|
4935
|
+
/**
|
|
4936
|
+
* 列拖拽
|
|
4937
|
+
*/
|
|
4938
|
+
handleHeaderCellDragDragstartEvent(evnt) {
|
|
4939
|
+
const img = new Image();
|
|
4940
|
+
if (evnt.dataTransfer) {
|
|
4941
|
+
evnt.dataTransfer.setDragImage(img, 0, 0);
|
|
4942
|
+
}
|
|
4943
|
+
},
|
|
4944
|
+
handleHeaderCellDragDragendEvent(evnt) {
|
|
4945
|
+
const $xeTable = this;
|
|
4946
|
+
const props = $xeTable;
|
|
4947
|
+
const reactData = $xeTable;
|
|
4948
|
+
const internalData = $xeTable;
|
|
4949
|
+
const { mouseConfig } = props;
|
|
4950
|
+
const columnDragOpts = $xeTable.computeColumnDragOpts;
|
|
4951
|
+
const { dragEndMethod } = columnDragOpts;
|
|
4952
|
+
const { dragCol } = reactData;
|
|
4953
|
+
const { collectColumn, prevDragCol, prevDragPos } = internalData;
|
|
4954
|
+
const dragOffsetIndex = prevDragPos === 'right' ? 1 : 0;
|
|
4955
|
+
if (prevDragCol && dragCol) {
|
|
4956
|
+
// 判断是否有拖动
|
|
4957
|
+
if (prevDragCol !== dragCol) {
|
|
4958
|
+
Promise.resolve(dragEndMethod
|
|
4959
|
+
? dragEndMethod({
|
|
4960
|
+
oldColumn: dragCol,
|
|
4961
|
+
newColumn: prevDragCol,
|
|
4962
|
+
dragPos: prevDragPos,
|
|
4963
|
+
offsetIndex: dragOffsetIndex
|
|
4964
|
+
})
|
|
4965
|
+
: true).then((status) => {
|
|
4966
|
+
if (!status) {
|
|
4967
|
+
return;
|
|
4968
|
+
}
|
|
4969
|
+
XEUtils.eachTree(collectColumn, (column, index, items, path, parent) => {
|
|
4970
|
+
if (!parent) {
|
|
4971
|
+
const sortIndex = index + 1;
|
|
4972
|
+
column.renderSortNumber = sortIndex;
|
|
4973
|
+
}
|
|
4974
|
+
});
|
|
4975
|
+
const oafIndex = XEUtils.findIndexOf(collectColumn, item => item.id === dragCol.id);
|
|
4976
|
+
const nafIndex = XEUtils.findIndexOf(collectColumn, item => item.id === prevDragCol.id) + dragOffsetIndex;
|
|
4977
|
+
const newTargetCol = collectColumn[nafIndex];
|
|
4978
|
+
if (newTargetCol) {
|
|
4979
|
+
// 插入最后位置
|
|
4980
|
+
dragCol.renderSortNumber = newTargetCol.renderSortNumber;
|
|
4981
|
+
newTargetCol.renderSortNumber = dragCol.renderSortNumber + 0.5;
|
|
4982
|
+
}
|
|
4983
|
+
else {
|
|
4984
|
+
// 插入新位置
|
|
4985
|
+
dragCol.renderSortNumber = collectColumn.length + 1.5;
|
|
4986
|
+
}
|
|
4987
|
+
reactData.isDragColMove = true;
|
|
4988
|
+
if (mouseConfig) {
|
|
4989
|
+
if ($xeTable.clearSelected) {
|
|
4990
|
+
$xeTable.clearSelected();
|
|
4991
|
+
}
|
|
4992
|
+
if ($xeTable.clearCellAreas) {
|
|
4993
|
+
$xeTable.clearCellAreas();
|
|
4994
|
+
$xeTable.clearCopyCellArea();
|
|
4995
|
+
}
|
|
4996
|
+
}
|
|
4997
|
+
$xeTable.analyColumnWidth();
|
|
4998
|
+
$xeTable.$nextTick().then(() => {
|
|
4999
|
+
$xeTable.updateCellAreas();
|
|
5000
|
+
$xeTable.refreshColumn(true);
|
|
5001
|
+
});
|
|
5002
|
+
$xeTable.dispatchEvent('column-dragend', {
|
|
5003
|
+
oldColumn: dragCol,
|
|
5004
|
+
newColumn: prevDragCol,
|
|
5005
|
+
dragPos: prevDragPos,
|
|
5006
|
+
offsetIndex: dragOffsetIndex,
|
|
5007
|
+
_index: {
|
|
5008
|
+
newIndex: nafIndex,
|
|
5009
|
+
oldIndex: oafIndex
|
|
5010
|
+
}
|
|
5011
|
+
}, evnt);
|
|
5012
|
+
}).catch(() => {
|
|
5013
|
+
});
|
|
5014
|
+
}
|
|
5015
|
+
}
|
|
5016
|
+
hideDropTip($xeTable);
|
|
5017
|
+
clearColDropOrigin($xeTable);
|
|
5018
|
+
reactData.dragRow = null;
|
|
5019
|
+
reactData.dragCol = null;
|
|
5020
|
+
setTimeout(() => {
|
|
5021
|
+
reactData.isDragColMove = false;
|
|
5022
|
+
}, 500);
|
|
5023
|
+
},
|
|
5024
|
+
handleHeaderCellDragDragoverEvent(evnt) {
|
|
5025
|
+
const $xeTable = this;
|
|
5026
|
+
const reactData = $xeTable;
|
|
5027
|
+
const internalData = $xeTable;
|
|
5028
|
+
const { dragCol } = reactData;
|
|
5029
|
+
if (!dragCol) {
|
|
5030
|
+
evnt.preventDefault();
|
|
5031
|
+
return;
|
|
5032
|
+
}
|
|
5033
|
+
const thEl = evnt.currentTarget;
|
|
5034
|
+
const colid = thEl.getAttribute('colid');
|
|
5035
|
+
const column = $xeTable.getColumnById(colid);
|
|
5036
|
+
if (column) {
|
|
5037
|
+
evnt.preventDefault();
|
|
5038
|
+
const { dragCol } = reactData;
|
|
5039
|
+
const offsetX = evnt.clientX - thEl.getBoundingClientRect().x;
|
|
5040
|
+
const dragPos = offsetX < thEl.clientWidth / 2 ? 'left' : 'right';
|
|
5041
|
+
internalData.prevDragCol = column;
|
|
5042
|
+
internalData.prevDragPos = dragPos;
|
|
5043
|
+
showDropTip($xeTable, evnt, null, thEl, dragPos);
|
|
5044
|
+
$xeTable.dispatchEvent('column-dragover', {
|
|
5045
|
+
oldColumn: dragCol,
|
|
5046
|
+
targetColumn: column,
|
|
5047
|
+
dragPos
|
|
5048
|
+
}, evnt);
|
|
5049
|
+
}
|
|
5050
|
+
},
|
|
5051
|
+
handleHeaderCellDragMousedownEvent(evnt, params) {
|
|
5052
|
+
var _a;
|
|
5053
|
+
const $xeTable = this;
|
|
5054
|
+
const reactData = $xeTable;
|
|
5055
|
+
evnt.stopPropagation();
|
|
5056
|
+
const columnDragOpts = $xeTable.computeColumnDragOpts;
|
|
5057
|
+
const { dragStartMethod } = columnDragOpts;
|
|
5058
|
+
const { column } = params;
|
|
5059
|
+
const dragEl = evnt.currentTarget;
|
|
5060
|
+
const thEl = (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
|
|
5061
|
+
reactData.isDragColMove = false;
|
|
5062
|
+
clearColDropOrigin($xeTable);
|
|
5063
|
+
if (dragStartMethod && !dragStartMethod(params)) {
|
|
5064
|
+
thEl.draggable = false;
|
|
5065
|
+
reactData.dragRow = null;
|
|
5066
|
+
reactData.dragCol = null;
|
|
5067
|
+
hideDropTip($xeTable);
|
|
5068
|
+
return;
|
|
5069
|
+
}
|
|
5070
|
+
reactData.dragCol = column;
|
|
5071
|
+
reactData.dragRow = null;
|
|
5072
|
+
thEl.draggable = true;
|
|
5073
|
+
updateColDropOrigin($xeTable, column);
|
|
5074
|
+
updateColDropTipContent($xeTable, thEl);
|
|
5075
|
+
$xeTable.dispatchEvent('column-dragstart', params, evnt);
|
|
5076
|
+
},
|
|
5077
|
+
handleHeaderCellDragMouseupEvent() {
|
|
5078
|
+
const $xeTable = this;
|
|
5079
|
+
const reactData = $xeTable;
|
|
5080
|
+
clearColDropOrigin($xeTable);
|
|
5081
|
+
hideDropTip($xeTable);
|
|
5082
|
+
reactData.dragRow = null;
|
|
5083
|
+
reactData.dragCol = null;
|
|
5084
|
+
reactData.isDragColMove = false;
|
|
5085
|
+
},
|
|
4867
5086
|
setPendingRow(rows, status) {
|
|
4868
5087
|
const pendingMaps = Object.assign({}, this.pendingRowMaps);
|
|
4869
5088
|
const pendingList = [...this.pendingRowList];
|
|
@@ -6341,8 +6560,8 @@ const Methods = {
|
|
|
6341
6560
|
}
|
|
6342
6561
|
},
|
|
6343
6562
|
updateCellAreas() {
|
|
6344
|
-
if (this.mouseConfig && this.mouseOpts.area && this.
|
|
6345
|
-
return this.
|
|
6563
|
+
if (this.mouseConfig && this.mouseOpts.area && this.handleRecalculateCellAreas) {
|
|
6564
|
+
return this.handleRecalculateCellAreas();
|
|
6346
6565
|
}
|
|
6347
6566
|
return this.$nextTick();
|
|
6348
6567
|
},
|
package/es/table/src/props.js
CHANGED
|
@@ -159,8 +159,12 @@ export default {
|
|
|
159
159
|
cellConfig: Object,
|
|
160
160
|
// 行配置信息
|
|
161
161
|
rowConfig: Object,
|
|
162
|
-
//
|
|
162
|
+
// 已废弃,被 rowDragConfig 替换
|
|
163
163
|
dragConfig: Object,
|
|
164
|
+
// 行拖拽排序配置项
|
|
165
|
+
rowDragConfig: Object,
|
|
166
|
+
// 列拖拽排序配置项
|
|
167
|
+
columnDragConfig: Object,
|
|
164
168
|
// 列调整配置项
|
|
165
169
|
resizableConfig: Object,
|
|
166
170
|
// 序号配置项
|