vxe-table 4.12.0 → 4.12.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/style.css +1 -1
- package/es/table/module/edit/hook.js +22 -24
- package/es/table/module/keyboard/hook.js +3 -2
- package/es/table/module/validator/hook.js +2 -4
- package/es/table/src/body.js +7 -8
- package/es/table/src/table.js +79 -100
- package/es/ui/index.js +3 -3
- package/es/ui/src/dom.js +0 -1
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +12266 -1059
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/table/module/edit/hook.js +26 -34
- package/lib/table/module/edit/hook.min.js +1 -1
- package/lib/table/module/keyboard/hook.js +2 -1
- package/lib/table/module/keyboard/hook.min.js +1 -1
- package/lib/table/module/validator/hook.js +3 -8
- package/lib/table/module/validator/hook.min.js +1 -1
- package/lib/table/src/body.js +7 -8
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/table.js +83 -115
- package/lib/table/src/table.min.js +1 -1
- package/lib/ui/index.js +3 -3
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/dom.js +0 -2
- package/lib/ui/src/dom.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +2 -2
- package/packages/table/module/edit/hook.ts +23 -24
- package/packages/table/module/keyboard/hook.ts +4 -2
- package/packages/table/module/validator/hook.ts +2 -4
- package/packages/table/src/body.ts +7 -8
- package/packages/table/src/table.ts +86 -108
- package/packages/ui/index.ts +2 -2
- package/packages/ui/src/dom.ts +0 -2
- /package/es/{iconfont.1742955995631.ttf → iconfont.1743125693758.ttf} +0 -0
- /package/es/{iconfont.1742955995631.woff → iconfont.1743125693758.woff} +0 -0
- /package/es/{iconfont.1742955995631.woff2 → iconfont.1743125693758.woff2} +0 -0
- /package/lib/{iconfont.1742955995631.ttf → iconfont.1743125693758.ttf} +0 -0
- /package/lib/{iconfont.1742955995631.woff → iconfont.1743125693758.woff} +0 -0
- /package/lib/{iconfont.1742955995631.woff2 → iconfont.1743125693758.woff2} +0 -0
package/es/table/src/table.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, h, reactive, ref, provide, inject, nextTick, onActivated, onDeactivated, onBeforeUnmount, onUnmounted, watch, computed, onMounted } from 'vue';
|
|
2
2
|
import XEUtils from 'xe-utils';
|
|
3
|
-
import {
|
|
3
|
+
import { initTpImg, getTpImg, isPx, isScale, hasClass, addClass, removeClass, getEventTargetNode, getPaddingTopBottomSize, getOffsetPos, setScrollTop, setScrollLeft, toCssUnit } from '../../ui/src/dom';
|
|
4
4
|
import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils';
|
|
5
5
|
import { VxeUI } from '../../ui';
|
|
6
6
|
import Cell from './cell';
|
|
@@ -29,6 +29,7 @@ export default defineComponent({
|
|
|
29
29
|
setup(props, context) {
|
|
30
30
|
const { slots, emit } = context;
|
|
31
31
|
const xID = XEUtils.uniqueId();
|
|
32
|
+
const browseObj = XEUtils.browse();
|
|
32
33
|
// 使用已安装的组件,如果未安装则不渲染
|
|
33
34
|
const VxeUILoadingComponent = VxeUI.getComponent('VxeLoading');
|
|
34
35
|
const VxeUITooltipComponent = VxeUI.getComponent('VxeTooltip');
|
|
@@ -172,9 +173,7 @@ export default defineComponent({
|
|
|
172
173
|
focused: {
|
|
173
174
|
row: null,
|
|
174
175
|
column: null
|
|
175
|
-
}
|
|
176
|
-
insertMaps: {},
|
|
177
|
-
removeMaps: {}
|
|
176
|
+
}
|
|
178
177
|
},
|
|
179
178
|
// 存放 tooltip 相关信息
|
|
180
179
|
tooltipStore: {
|
|
@@ -236,6 +235,8 @@ export default defineComponent({
|
|
|
236
235
|
treeExpandedFlag: 1,
|
|
237
236
|
updateCheckboxFlag: 1,
|
|
238
237
|
pendingRowFlag: 1,
|
|
238
|
+
insertRowFlag: 1,
|
|
239
|
+
removeRowFlag: 1,
|
|
239
240
|
rowHeightStore: {
|
|
240
241
|
default: 48,
|
|
241
242
|
medium: 44,
|
|
@@ -335,7 +336,6 @@ export default defineComponent({
|
|
|
335
336
|
fullDataRowIdData: {},
|
|
336
337
|
fullColumnIdData: {},
|
|
337
338
|
fullColumnFieldData: {},
|
|
338
|
-
// prevDragRow: null,
|
|
339
339
|
// 已展开的行集合
|
|
340
340
|
rowExpandedMaps: {},
|
|
341
341
|
// 懒加载中的展开行的集合
|
|
@@ -348,6 +348,10 @@ export default defineComponent({
|
|
|
348
348
|
selectCheckboxMaps: {},
|
|
349
349
|
// 已标记的对象集
|
|
350
350
|
pendingRowMaps: {},
|
|
351
|
+
// 已新增的临时行
|
|
352
|
+
insertRowMaps: {},
|
|
353
|
+
// 已删除行
|
|
354
|
+
removeRowMaps: {},
|
|
351
355
|
inited: false,
|
|
352
356
|
tooltipTimeout: null,
|
|
353
357
|
initStatus: false,
|
|
@@ -418,8 +422,8 @@ export default defineComponent({
|
|
|
418
422
|
return virtualXOpts;
|
|
419
423
|
});
|
|
420
424
|
const computeScrollXThreshold = computed(() => {
|
|
421
|
-
const
|
|
422
|
-
const { threshold } =
|
|
425
|
+
const virtualXOpts = computeVirtualXOpts.value;
|
|
426
|
+
const { threshold } = virtualXOpts;
|
|
423
427
|
if (threshold) {
|
|
424
428
|
return XEUtils.toNumber(threshold);
|
|
425
429
|
}
|
|
@@ -450,8 +454,8 @@ export default defineComponent({
|
|
|
450
454
|
return !!(scrollbarOpts.y && scrollbarOpts.y.position === 'left');
|
|
451
455
|
});
|
|
452
456
|
const computeScrollYThreshold = computed(() => {
|
|
453
|
-
const
|
|
454
|
-
const { threshold } =
|
|
457
|
+
const virtualYOpts = computeVirtualYOpts.value;
|
|
458
|
+
const { threshold } = virtualYOpts;
|
|
455
459
|
if (threshold) {
|
|
456
460
|
return XEUtils.toNumber(threshold);
|
|
457
461
|
}
|
|
@@ -1020,14 +1024,14 @@ export default defineComponent({
|
|
|
1020
1024
|
};
|
|
1021
1025
|
const setMerges = (merges, mList, rowList) => {
|
|
1022
1026
|
if (merges) {
|
|
1023
|
-
const { treeConfig } = props
|
|
1027
|
+
// const { treeConfig } = props
|
|
1024
1028
|
const { visibleColumn } = internalData;
|
|
1025
1029
|
if (!XEUtils.isArray(merges)) {
|
|
1026
1030
|
merges = [merges];
|
|
1027
1031
|
}
|
|
1028
|
-
if (treeConfig && merges.length) {
|
|
1029
|
-
|
|
1030
|
-
}
|
|
1032
|
+
// if (treeConfig && merges.length) {
|
|
1033
|
+
// errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
|
|
1034
|
+
// }
|
|
1031
1035
|
merges.forEach((item) => {
|
|
1032
1036
|
let { row, col, rowspan, colspan } = item;
|
|
1033
1037
|
if (rowList && XEUtils.isNumber(row)) {
|
|
@@ -1070,14 +1074,14 @@ export default defineComponent({
|
|
|
1070
1074
|
const removeMerges = (merges, mList, rowList) => {
|
|
1071
1075
|
const rest = [];
|
|
1072
1076
|
if (merges) {
|
|
1073
|
-
const { treeConfig } = props
|
|
1077
|
+
// const { treeConfig } = props
|
|
1074
1078
|
const { visibleColumn } = internalData;
|
|
1075
1079
|
if (!XEUtils.isArray(merges)) {
|
|
1076
1080
|
merges = [merges];
|
|
1077
1081
|
}
|
|
1078
|
-
if (treeConfig && merges.length) {
|
|
1079
|
-
|
|
1080
|
-
}
|
|
1082
|
+
// if (treeConfig && merges.length) {
|
|
1083
|
+
// errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
|
|
1084
|
+
// }
|
|
1081
1085
|
merges.forEach((item) => {
|
|
1082
1086
|
let { row, col } = item;
|
|
1083
1087
|
if (rowList && XEUtils.isNumber(row)) {
|
|
@@ -1776,7 +1780,7 @@ export default defineComponent({
|
|
|
1776
1780
|
updateAfterDataIndex();
|
|
1777
1781
|
};
|
|
1778
1782
|
const updateStyle = () => {
|
|
1779
|
-
const {
|
|
1783
|
+
const { showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod } = props;
|
|
1780
1784
|
const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isAllOverflow, expandColumn } = reactData;
|
|
1781
1785
|
const { visibleColumn, tableHeight, headerHeight, footerHeight, elemStore, customHeight, customMinHeight, customMaxHeight } = internalData;
|
|
1782
1786
|
const el = refElem.value;
|
|
@@ -1929,32 +1933,6 @@ export default defineComponent({
|
|
|
1929
1933
|
if (tableElem) {
|
|
1930
1934
|
tableElem.style.width = tWidth ? `${tWidth}px` : '';
|
|
1931
1935
|
}
|
|
1932
|
-
const listElem = getRefElem(elemStore[`${name}-${layout}-list`]);
|
|
1933
|
-
if (isGroup && listElem) {
|
|
1934
|
-
XEUtils.arrayEach(listElem.querySelectorAll('.col--group'), (thElem) => {
|
|
1935
|
-
const colNode = $xeTable.getColumnNode(thElem);
|
|
1936
|
-
if (colNode) {
|
|
1937
|
-
const column = colNode.item;
|
|
1938
|
-
const { showHeaderOverflow } = column;
|
|
1939
|
-
const cellOverflow = XEUtils.isBoolean(showHeaderOverflow) ? showHeaderOverflow : allColumnHeaderOverflow;
|
|
1940
|
-
const showEllipsis = cellOverflow === 'ellipsis';
|
|
1941
|
-
const showTitle = cellOverflow === 'title';
|
|
1942
|
-
const showTooltip = cellOverflow === true || cellOverflow === 'tooltip';
|
|
1943
|
-
const hasEllipsis = showTitle || showTooltip || showEllipsis;
|
|
1944
|
-
let childWidth = 0;
|
|
1945
|
-
let countChild = 0;
|
|
1946
|
-
if (hasEllipsis) {
|
|
1947
|
-
XEUtils.eachTree(column.children, (item) => {
|
|
1948
|
-
if (!item.children || !column.children.length) {
|
|
1949
|
-
countChild++;
|
|
1950
|
-
}
|
|
1951
|
-
childWidth += item.renderWidth;
|
|
1952
|
-
}, { children: 'children' });
|
|
1953
|
-
}
|
|
1954
|
-
thElem.style.width = hasEllipsis ? `${childWidth - countChild - (border ? 2 : 0)}px` : '';
|
|
1955
|
-
}
|
|
1956
|
-
});
|
|
1957
|
-
}
|
|
1958
1936
|
}
|
|
1959
1937
|
else if (layout === 'body') {
|
|
1960
1938
|
if (currScrollElem) {
|
|
@@ -2003,7 +1981,7 @@ export default defineComponent({
|
|
|
2003
1981
|
if (tableElem) {
|
|
2004
1982
|
tableElem.style.width = tWidth ? `${tWidth}px` : '';
|
|
2005
1983
|
// 兼容性处理
|
|
2006
|
-
tableElem.style.paddingRight = osbWidth && fixedType && (
|
|
1984
|
+
tableElem.style.paddingRight = osbWidth && fixedType && (browseObj['-moz'] || browseObj.safari) ? `${osbWidth}px` : '';
|
|
2007
1985
|
}
|
|
2008
1986
|
const emptyBlockElem = getRefElem(elemStore[`${name}-${layout}-emptyBlock`]);
|
|
2009
1987
|
if (emptyBlockElem) {
|
|
@@ -2096,7 +2074,7 @@ export default defineComponent({
|
|
|
2096
2074
|
(sortConfig.multiple ? defaultSort : defaultSort.slice(0, 1)).forEach((item, index) => {
|
|
2097
2075
|
const { field, order } = item;
|
|
2098
2076
|
if (field && order) {
|
|
2099
|
-
const column =
|
|
2077
|
+
const column = $xeTable.getColumnByField(field);
|
|
2100
2078
|
if (column && column.sortable) {
|
|
2101
2079
|
column.order = order;
|
|
2102
2080
|
column.sortTime = Date.now() + index;
|
|
@@ -2104,7 +2082,7 @@ export default defineComponent({
|
|
|
2104
2082
|
}
|
|
2105
2083
|
});
|
|
2106
2084
|
if (!sortOpts.remote) {
|
|
2107
|
-
|
|
2085
|
+
$xeTable.handleTableData(true).then(updateStyle);
|
|
2108
2086
|
}
|
|
2109
2087
|
}
|
|
2110
2088
|
}
|
|
@@ -2163,7 +2141,7 @@ export default defineComponent({
|
|
|
2163
2141
|
const expandOpts = computeExpandOpts.value;
|
|
2164
2142
|
const { expandAll, expandRowKeys } = expandOpts;
|
|
2165
2143
|
if (expandAll) {
|
|
2166
|
-
|
|
2144
|
+
$xeTable.setAllRowExpand(true);
|
|
2167
2145
|
}
|
|
2168
2146
|
else if (expandRowKeys) {
|
|
2169
2147
|
const defExpandeds = [];
|
|
@@ -2172,7 +2150,7 @@ export default defineComponent({
|
|
|
2172
2150
|
defExpandeds.push(fullDataRowIdData[rowid].row);
|
|
2173
2151
|
}
|
|
2174
2152
|
});
|
|
2175
|
-
|
|
2153
|
+
$xeTable.setRowExpand(defExpandeds, true);
|
|
2176
2154
|
}
|
|
2177
2155
|
}
|
|
2178
2156
|
};
|
|
@@ -2533,13 +2511,13 @@ export default defineComponent({
|
|
|
2533
2511
|
const handleDefaultMergeCells = () => {
|
|
2534
2512
|
const { mergeCells } = props;
|
|
2535
2513
|
if (mergeCells) {
|
|
2536
|
-
|
|
2514
|
+
$xeTable.setMergeCells(mergeCells);
|
|
2537
2515
|
}
|
|
2538
2516
|
};
|
|
2539
2517
|
const handleDefaultMergeFooterItems = () => {
|
|
2540
2518
|
const { mergeFooterItems } = props;
|
|
2541
2519
|
if (mergeFooterItems) {
|
|
2542
|
-
|
|
2520
|
+
$xeTable.setMergeFooterItems(mergeFooterItems);
|
|
2543
2521
|
}
|
|
2544
2522
|
};
|
|
2545
2523
|
// 计算可视渲染相关数据
|
|
@@ -2629,7 +2607,7 @@ export default defineComponent({
|
|
|
2629
2607
|
*/
|
|
2630
2608
|
const loadTableData = (datas, isReset) => {
|
|
2631
2609
|
const { keepSource, treeConfig } = props;
|
|
2632
|
-
const {
|
|
2610
|
+
const { scrollYLoad: oldScrollYLoad } = reactData;
|
|
2633
2611
|
const { scrollYStore, scrollXStore, lastScrollLeft, lastScrollTop } = internalData;
|
|
2634
2612
|
const treeOpts = computeTreeOpts.value;
|
|
2635
2613
|
const { transform } = treeOpts;
|
|
@@ -2680,8 +2658,8 @@ export default defineComponent({
|
|
|
2680
2658
|
scrollXStore.endIndex = 1;
|
|
2681
2659
|
reactData.isRowLoading = true;
|
|
2682
2660
|
reactData.scrollVMLoading = false;
|
|
2683
|
-
|
|
2684
|
-
|
|
2661
|
+
internalData.insertRowMaps = {};
|
|
2662
|
+
internalData.removeRowMaps = {};
|
|
2685
2663
|
const sYLoad = updateScrollYStatus(fullData);
|
|
2686
2664
|
reactData.isDragColMove = false;
|
|
2687
2665
|
reactData.isDragRowMove = false;
|
|
@@ -2703,10 +2681,10 @@ export default defineComponent({
|
|
|
2703
2681
|
$xeTable.clearCellAreas();
|
|
2704
2682
|
$xeTable.clearCopyCellArea();
|
|
2705
2683
|
}
|
|
2706
|
-
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
|
|
2684
|
+
$xeTable.clearMergeCells();
|
|
2685
|
+
$xeTable.clearMergeFooterItems();
|
|
2686
|
+
$xeTable.handleTableData(true);
|
|
2687
|
+
$xeTable.updateFooter();
|
|
2710
2688
|
return nextTick().then(() => {
|
|
2711
2689
|
updateHeight();
|
|
2712
2690
|
updateStyle();
|
|
@@ -2737,20 +2715,20 @@ export default defineComponent({
|
|
|
2737
2715
|
}
|
|
2738
2716
|
}
|
|
2739
2717
|
handleReserveStatus();
|
|
2740
|
-
|
|
2718
|
+
$xeTable.checkSelectionStatus();
|
|
2741
2719
|
return new Promise(resolve => {
|
|
2742
2720
|
nextTick()
|
|
2743
|
-
.then(() =>
|
|
2721
|
+
.then(() => $xeTable.recalculate())
|
|
2744
2722
|
.then(() => {
|
|
2745
2723
|
let targetScrollLeft = lastScrollLeft;
|
|
2746
2724
|
let targetScrollTop = lastScrollTop;
|
|
2747
|
-
const
|
|
2748
|
-
const
|
|
2725
|
+
const virtualXOpts = computeVirtualXOpts.value;
|
|
2726
|
+
const virtualYOpts = computeVirtualYOpts.value;
|
|
2749
2727
|
// 是否在更新数据之后自动滚动重置滚动条
|
|
2750
|
-
if (
|
|
2728
|
+
if (virtualXOpts.scrollToLeftOnChange) {
|
|
2751
2729
|
targetScrollLeft = 0;
|
|
2752
2730
|
}
|
|
2753
|
-
if (
|
|
2731
|
+
if (virtualYOpts.scrollToTopOnChange) {
|
|
2754
2732
|
targetScrollTop = 0;
|
|
2755
2733
|
}
|
|
2756
2734
|
reactData.isRowLoading = false;
|
|
@@ -2786,7 +2764,7 @@ export default defineComponent({
|
|
|
2786
2764
|
handleDefaultTreeExpand();
|
|
2787
2765
|
handleDefaultMergeCells();
|
|
2788
2766
|
handleDefaultMergeFooterItems();
|
|
2789
|
-
nextTick(() => setTimeout(() =>
|
|
2767
|
+
nextTick(() => setTimeout(() => $xeTable.recalculate()));
|
|
2790
2768
|
};
|
|
2791
2769
|
/**
|
|
2792
2770
|
* 处理初始化的默认行为
|
|
@@ -2852,7 +2830,7 @@ export default defineComponent({
|
|
|
2852
2830
|
const centerList = [];
|
|
2853
2831
|
const rightList = [];
|
|
2854
2832
|
const { isGroup, columnStore } = reactData;
|
|
2855
|
-
const
|
|
2833
|
+
const virtualXOpts = computeVirtualXOpts.value;
|
|
2856
2834
|
const { collectColumn, tableFullColumn, scrollXStore, fullColumnIdData } = internalData;
|
|
2857
2835
|
// 如果是分组表头,如果子列全部被隐藏,则根列也隐藏
|
|
2858
2836
|
if (isGroup) {
|
|
@@ -2916,7 +2894,7 @@ export default defineComponent({
|
|
|
2916
2894
|
}
|
|
2917
2895
|
const visibleColumn = leftList.concat(centerList).concat(rightList);
|
|
2918
2896
|
// 如果gt为0,则总是启用
|
|
2919
|
-
const scrollXLoad = !!
|
|
2897
|
+
const scrollXLoad = !!virtualXOpts.enabled && virtualXOpts.gt > -1 && (virtualXOpts.gt === 0 || virtualXOpts.gt < tableFullColumn.length);
|
|
2920
2898
|
reactData.hasFixedColumn = leftList.length > 0 || rightList.length > 0;
|
|
2921
2899
|
Object.assign(columnStore, { leftList, centerList, rightList });
|
|
2922
2900
|
if (scrollXLoad) {
|
|
@@ -3025,12 +3003,12 @@ export default defineComponent({
|
|
|
3025
3003
|
};
|
|
3026
3004
|
const updateScrollYStatus = (fullData) => {
|
|
3027
3005
|
const { treeConfig } = props;
|
|
3028
|
-
const
|
|
3006
|
+
const virtualYOpts = computeVirtualYOpts.value;
|
|
3029
3007
|
const treeOpts = computeTreeOpts.value;
|
|
3030
3008
|
const { transform } = treeOpts;
|
|
3031
3009
|
const allList = fullData || internalData.tableFullData;
|
|
3032
3010
|
// 如果gt为0,则总是启用
|
|
3033
|
-
const scrollYLoad = (transform || !treeConfig) && !!
|
|
3011
|
+
const scrollYLoad = (transform || !treeConfig) && !!virtualYOpts.enabled && virtualYOpts.gt > -1 && (virtualYOpts.gt === 0 || virtualYOpts.gt < allList.length);
|
|
3034
3012
|
reactData.scrollYLoad = scrollYLoad;
|
|
3035
3013
|
return scrollYLoad;
|
|
3036
3014
|
};
|
|
@@ -3732,9 +3710,7 @@ export default defineComponent({
|
|
|
3732
3710
|
*/
|
|
3733
3711
|
revertData(rows, field) {
|
|
3734
3712
|
const { keepSource, treeConfig } = props;
|
|
3735
|
-
const {
|
|
3736
|
-
const { fullAllDataRowIdData, fullDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData } = internalData;
|
|
3737
|
-
const removeTempMaps = Object.assign({}, editStore.removeMaps);
|
|
3713
|
+
const { fullAllDataRowIdData, fullDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData, removeRowMaps } = internalData;
|
|
3738
3714
|
const treeOpts = computeTreeOpts.value;
|
|
3739
3715
|
const { transform } = treeOpts;
|
|
3740
3716
|
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
@@ -3770,7 +3746,9 @@ export default defineComponent({
|
|
|
3770
3746
|
XEUtils.destructuring(row, XEUtils.clone(oRow, true));
|
|
3771
3747
|
}
|
|
3772
3748
|
if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
|
|
3773
|
-
|
|
3749
|
+
if (removeRowMaps[rowid]) {
|
|
3750
|
+
delete removeRowMaps[rowid];
|
|
3751
|
+
}
|
|
3774
3752
|
tableFullData.unshift(row);
|
|
3775
3753
|
afterFullData.unshift(row);
|
|
3776
3754
|
reDelFlag = true;
|
|
@@ -3782,7 +3760,7 @@ export default defineComponent({
|
|
|
3782
3760
|
}
|
|
3783
3761
|
if (rows) {
|
|
3784
3762
|
if (reDelFlag) {
|
|
3785
|
-
|
|
3763
|
+
reactData.removeRowFlag++;
|
|
3786
3764
|
$xeTable.updateFooter();
|
|
3787
3765
|
$xeTable.cacheRowMap(false);
|
|
3788
3766
|
$xeTable.handleTableData(treeConfig && transform);
|
|
@@ -3915,22 +3893,19 @@ export default defineComponent({
|
|
|
3915
3893
|
* @param {Row} row 行对象
|
|
3916
3894
|
*/
|
|
3917
3895
|
isInsertByRow(row) {
|
|
3918
|
-
const { editStore } = reactData;
|
|
3919
3896
|
const rowid = getRowid($xeTable, row);
|
|
3920
|
-
return !!
|
|
3897
|
+
return !!reactData.insertRowFlag && !!internalData.insertRowMaps[rowid];
|
|
3921
3898
|
},
|
|
3922
3899
|
isRemoveByRow(row) {
|
|
3923
|
-
const { editStore } = reactData;
|
|
3924
3900
|
const rowid = getRowid($xeTable, row);
|
|
3925
|
-
return !!
|
|
3901
|
+
return !!reactData.removeRowFlag && !!internalData.removeRowMaps[rowid];
|
|
3926
3902
|
},
|
|
3927
3903
|
/**
|
|
3928
3904
|
* 删除所有新增的临时数据
|
|
3929
3905
|
* @returns
|
|
3930
3906
|
*/
|
|
3931
3907
|
removeInsertRow() {
|
|
3932
|
-
|
|
3933
|
-
editStore.insertMaps = {};
|
|
3908
|
+
internalData.insertRowMaps = {};
|
|
3934
3909
|
return $xeTable.remove($xeTable.getInsertRecords());
|
|
3935
3910
|
},
|
|
3936
3911
|
/**
|
|
@@ -3969,8 +3944,8 @@ export default defineComponent({
|
|
|
3969
3944
|
* @param {Number} columnIndex 索引
|
|
3970
3945
|
*/
|
|
3971
3946
|
getColumns(columnIndex) {
|
|
3972
|
-
const
|
|
3973
|
-
return XEUtils.isUndefined(columnIndex) ?
|
|
3947
|
+
const { visibleColumn } = internalData;
|
|
3948
|
+
return XEUtils.isUndefined(columnIndex) ? visibleColumn.slice(0) : visibleColumn[columnIndex];
|
|
3974
3949
|
},
|
|
3975
3950
|
/**
|
|
3976
3951
|
* 根据列获取列的唯一主键
|
|
@@ -3984,7 +3959,7 @@ export default defineComponent({
|
|
|
3984
3959
|
* @param {String} colid 列主键
|
|
3985
3960
|
*/
|
|
3986
3961
|
getColumnById(colid) {
|
|
3987
|
-
const fullColumnIdData = internalData
|
|
3962
|
+
const { fullColumnIdData } = internalData;
|
|
3988
3963
|
return colid && fullColumnIdData[colid] ? fullColumnIdData[colid].column : null;
|
|
3989
3964
|
},
|
|
3990
3965
|
/**
|
|
@@ -3996,7 +3971,7 @@ export default defineComponent({
|
|
|
3996
3971
|
return field && fullColumnFieldData[field] ? fullColumnFieldData[field].column : null;
|
|
3997
3972
|
},
|
|
3998
3973
|
getParentColumn(fieldOrColumn) {
|
|
3999
|
-
const fullColumnIdData = internalData
|
|
3974
|
+
const { fullColumnIdData } = internalData;
|
|
4000
3975
|
const column = handleFieldOrColumn($xeTable, fieldOrColumn);
|
|
4001
3976
|
return column && column.parentId && fullColumnIdData[column.parentId] ? fullColumnIdData[column.parentId].column : null;
|
|
4002
3977
|
},
|
|
@@ -6682,7 +6657,7 @@ export default defineComponent({
|
|
|
6682
6657
|
* @param {Event} evnt 事件
|
|
6683
6658
|
* @param {Row} row 行对象
|
|
6684
6659
|
*/
|
|
6685
|
-
const handleTooltip = (evnt, tdEl, overflowElem, params) => {
|
|
6660
|
+
const handleTooltip = (evnt, tdEl, overflowElem, tipElem, params) => {
|
|
6686
6661
|
const tipOverEl = overflowElem || tdEl;
|
|
6687
6662
|
if (!tipOverEl) {
|
|
6688
6663
|
return nextTick();
|
|
@@ -6695,7 +6670,8 @@ export default defineComponent({
|
|
|
6695
6670
|
const customContent = contentMethod ? contentMethod(params) : null;
|
|
6696
6671
|
const useCustom = contentMethod && !XEUtils.eqNull(customContent);
|
|
6697
6672
|
const content = useCustom ? customContent : XEUtils.toString(column.type === 'html' ? tipOverEl.innerText : tipOverEl.textContent).trim();
|
|
6698
|
-
|
|
6673
|
+
const isOver = tipOverEl.scrollWidth > tipOverEl.clientWidth;
|
|
6674
|
+
if (content && (showAll || useCustom || isOver)) {
|
|
6699
6675
|
Object.assign(tooltipStore, {
|
|
6700
6676
|
row,
|
|
6701
6677
|
column,
|
|
@@ -6705,7 +6681,7 @@ export default defineComponent({
|
|
|
6705
6681
|
nextTick(() => {
|
|
6706
6682
|
const $tooltip = refTooltip.value;
|
|
6707
6683
|
if ($tooltip && $tooltip.open) {
|
|
6708
|
-
$tooltip.open(tipOverEl, formatText(content));
|
|
6684
|
+
$tooltip.open(isOver ? tipOverEl : tipElem, formatText(content));
|
|
6709
6685
|
}
|
|
6710
6686
|
});
|
|
6711
6687
|
}
|
|
@@ -7672,7 +7648,7 @@ export default defineComponent({
|
|
|
7672
7648
|
return;
|
|
7673
7649
|
}
|
|
7674
7650
|
if (tooltipStore.column !== column || !tooltipStore.visible) {
|
|
7675
|
-
handleTooltip(evnt, thEl, thEl.querySelector('.vxe-cell--title') || cellEl, params);
|
|
7651
|
+
handleTooltip(evnt, thEl, thEl.querySelector('.vxe-cell--wrapper'), thEl.querySelector('.vxe-cell--title') || cellEl, params);
|
|
7676
7652
|
}
|
|
7677
7653
|
},
|
|
7678
7654
|
/**
|
|
@@ -7699,7 +7675,7 @@ export default defineComponent({
|
|
|
7699
7675
|
}
|
|
7700
7676
|
}
|
|
7701
7677
|
if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
|
|
7702
|
-
handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
|
|
7678
|
+
handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--wrapper'), tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
|
|
7703
7679
|
}
|
|
7704
7680
|
},
|
|
7705
7681
|
/**
|
|
@@ -7711,7 +7687,7 @@ export default defineComponent({
|
|
|
7711
7687
|
const tdEl = evnt.currentTarget;
|
|
7712
7688
|
handleTargetEnterEvent(tooltipStore.column !== column || !!tooltipStore.row);
|
|
7713
7689
|
if (tooltipStore.column !== column || !tooltipStore.visible) {
|
|
7714
|
-
handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
|
|
7690
|
+
handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--wrapper'), tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
|
|
7715
7691
|
}
|
|
7716
7692
|
},
|
|
7717
7693
|
handleTargetLeaveEvent() {
|
|
@@ -8884,8 +8860,8 @@ export default defineComponent({
|
|
|
8884
8860
|
* 横向 X 可视渲染事件处理
|
|
8885
8861
|
*/
|
|
8886
8862
|
triggerScrollXEvent() {
|
|
8887
|
-
const
|
|
8888
|
-
if (
|
|
8863
|
+
const virtualXOpts = computeVirtualXOpts.value;
|
|
8864
|
+
if (virtualXOpts.immediate) {
|
|
8889
8865
|
loadScrollXData();
|
|
8890
8866
|
}
|
|
8891
8867
|
else {
|
|
@@ -8896,8 +8872,8 @@ export default defineComponent({
|
|
|
8896
8872
|
* 纵向 Y 可视渲染事件处理
|
|
8897
8873
|
*/
|
|
8898
8874
|
triggerScrollYEvent() {
|
|
8899
|
-
const
|
|
8900
|
-
if (
|
|
8875
|
+
const virtualYOpts = computeVirtualYOpts.value;
|
|
8876
|
+
if (virtualYOpts.immediate) {
|
|
8901
8877
|
loadScrollYData();
|
|
8902
8878
|
}
|
|
8903
8879
|
else {
|
|
@@ -9093,8 +9069,8 @@ export default defineComponent({
|
|
|
9093
9069
|
return;
|
|
9094
9070
|
}
|
|
9095
9071
|
const wheelSpeed = getWheelSpeed(reactData.lastScrollTime);
|
|
9096
|
-
const deltaTop =
|
|
9097
|
-
const deltaLeft = Math.ceil((shiftKey ? deltaY : deltaX) * wheelSpeed);
|
|
9072
|
+
const deltaTop = shiftKey ? 0 : Math.ceil(deltaY * wheelSpeed);
|
|
9073
|
+
const deltaLeft = shiftKey ? Math.ceil((shiftKey ? (deltaY || deltaX) : deltaX) * wheelSpeed) : 0;
|
|
9098
9074
|
const isTopWheel = deltaTop < 0;
|
|
9099
9075
|
const currScrollTop = bodyScrollElem.scrollTop;
|
|
9100
9076
|
// 如果滚动位置已经是顶部或底部,则不需要触发
|
|
@@ -9113,6 +9089,7 @@ export default defineComponent({
|
|
|
9113
9089
|
evnt.preventDefault();
|
|
9114
9090
|
internalData.inWheelScroll = true;
|
|
9115
9091
|
wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
|
|
9092
|
+
internalData.inWheelScroll = true;
|
|
9116
9093
|
const currLeftNum = offsetLeft;
|
|
9117
9094
|
setScrollLeft(xHandleEl, currLeftNum);
|
|
9118
9095
|
setScrollLeft(bodyScrollElem, currLeftNum);
|
|
@@ -9129,9 +9106,10 @@ export default defineComponent({
|
|
|
9129
9106
|
}
|
|
9130
9107
|
if (isRollY) {
|
|
9131
9108
|
evnt.preventDefault();
|
|
9109
|
+
internalData.inWheelScroll = true;
|
|
9132
9110
|
wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop) => {
|
|
9133
|
-
const currTopNum = bodyScrollElem.scrollTop + offsetTop;
|
|
9134
9111
|
internalData.inWheelScroll = true;
|
|
9112
|
+
const currTopNum = bodyScrollElem.scrollTop + offsetTop;
|
|
9135
9113
|
setScrollTop(yHandleEl, currTopNum);
|
|
9136
9114
|
setScrollTop(bodyScrollElem, currTopNum);
|
|
9137
9115
|
setScrollTop(leftScrollElem, currTopNum);
|
|
@@ -10188,6 +10166,9 @@ export default defineComponent({
|
|
|
10188
10166
|
watch(computeScrollbarYToLeft, () => {
|
|
10189
10167
|
reLayoutFlag.value++;
|
|
10190
10168
|
});
|
|
10169
|
+
watch(() => VxeUI.getLanguage(), () => {
|
|
10170
|
+
reLayoutFlag.value++;
|
|
10171
|
+
});
|
|
10191
10172
|
watch(reLayoutFlag, () => {
|
|
10192
10173
|
nextTick(() => tableMethods.recalculate(true));
|
|
10193
10174
|
});
|
|
@@ -10274,7 +10255,6 @@ export default defineComponent({
|
|
|
10274
10255
|
nextTick(() => {
|
|
10275
10256
|
const { data, exportConfig, importConfig, treeConfig, showOverflow } = props;
|
|
10276
10257
|
const { scrollXStore, scrollYStore } = internalData;
|
|
10277
|
-
const sYOpts = computeSYOpts.value;
|
|
10278
10258
|
const editOpts = computeEditOpts.value;
|
|
10279
10259
|
const treeOpts = computeTreeOpts.value;
|
|
10280
10260
|
const radioOpts = computeRadioOpts.value;
|
|
@@ -10400,8 +10380,7 @@ export default defineComponent({
|
|
|
10400
10380
|
Object.assign(scrollYStore, {
|
|
10401
10381
|
startIndex: 0,
|
|
10402
10382
|
endIndex: 0,
|
|
10403
|
-
visibleSize: 0
|
|
10404
|
-
adaptive: sYOpts.adaptive !== false
|
|
10383
|
+
visibleSize: 0
|
|
10405
10384
|
});
|
|
10406
10385
|
Object.assign(scrollXStore, {
|
|
10407
10386
|
startIndex: 0,
|
package/es/ui/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VxeUI } from '@vxe-ui/core';
|
|
2
2
|
import { getFuncText } from './src/utils';
|
|
3
|
-
export const version = "4.12.
|
|
3
|
+
export const version = "4.12.2";
|
|
4
4
|
VxeUI.version = version;
|
|
5
5
|
VxeUI.tableVersion = version;
|
|
6
6
|
VxeUI.setConfig({
|
|
@@ -193,13 +193,13 @@ VxeUI.setConfig({
|
|
|
193
193
|
enabled: true,
|
|
194
194
|
gt: 60,
|
|
195
195
|
preSize: 1,
|
|
196
|
-
oSize:
|
|
196
|
+
oSize: 0
|
|
197
197
|
},
|
|
198
198
|
virtualYConfig: {
|
|
199
199
|
enabled: true,
|
|
200
200
|
gt: 100,
|
|
201
201
|
preSize: 1,
|
|
202
|
-
oSize:
|
|
202
|
+
oSize: 0
|
|
203
203
|
},
|
|
204
204
|
scrollbarConfig: {
|
|
205
205
|
// width: 0,
|
package/es/ui/src/dom.js
CHANGED
package/es/ui/src/log.js
CHANGED