vxe-table 4.23.0-beta.1 → 4.23.0-beta.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/README.md +2 -2
- package/dist/all.esm.js +499 -87
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/src/props.js +6 -2
- package/es/table/src/scrollbar.js +54 -0
- package/es/table/src/table.js +427 -81
- package/es/table/src/util.js +11 -2
- package/es/table/style.css +30 -0
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +30 -0
- package/es/vxe-table/style.min.css +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +106 -28
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/src/props.js +6 -2
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/scrollbar.js +63 -0
- package/lib/table/src/scrollbar.min.js +1 -0
- package/lib/table/src/table.js +32 -22
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +11 -2
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +30 -0
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +1 -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 +30 -0
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/table/src/props.ts +6 -2
- package/packages/table/src/scrollbar.ts +57 -0
- package/packages/table/src/table.ts +459 -83
- package/packages/table/src/util.ts +15 -2
- package/styles/components/table.scss +65 -0
- /package/es/{iconfont.1791954193706.ttf → iconfont.1792035024476.ttf} +0 -0
- /package/es/{iconfont.1791954193706.woff → iconfont.1792035024476.woff} +0 -0
- /package/es/{iconfont.1791954193706.woff2 → iconfont.1792035024476.woff2} +0 -0
- /package/lib/{iconfont.1791954193706.ttf → iconfont.1792035024476.ttf} +0 -0
- /package/lib/{iconfont.1791954193706.woff → iconfont.1792035024476.woff} +0 -0
- /package/lib/{iconfont.1791954193706.woff2 → iconfont.1792035024476.woff2} +0 -0
package/dist/all.esm.js
CHANGED
|
@@ -56,7 +56,7 @@ function getDefaultConfig(val1, def1) {
|
|
|
56
56
|
return XEUtils.eqNull(val1) ? def1 : val1;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
const version = "4.23.0-beta.
|
|
59
|
+
const version = "4.23.0-beta.2";
|
|
60
60
|
VxeUI.version = version;
|
|
61
61
|
VxeUI.tableVersion = version;
|
|
62
62
|
VxeUI.setConfig({
|
|
@@ -938,7 +938,7 @@ function getPopupWrapperElement(panelElem) {
|
|
|
938
938
|
}
|
|
939
939
|
|
|
940
940
|
const { log } = VxeUI;
|
|
941
|
-
const tableVersion = `table v${"4.23.0-beta.
|
|
941
|
+
const tableVersion = `table v${"4.23.0-beta.2"}`;
|
|
942
942
|
function createComponentLog(name) {
|
|
943
943
|
const uiVersion = VxeUI.uiVersion ? `ui v${VxeUI.uiVersion}` : '';
|
|
944
944
|
const ganttVersion = VxeUI.ganttVersion ? `gantt v${VxeUI.ganttVersion}` : '';
|
|
@@ -1190,9 +1190,15 @@ function createInternalData$3() {
|
|
|
1190
1190
|
// 当前行
|
|
1191
1191
|
currentRow: null,
|
|
1192
1192
|
currentCol: null,
|
|
1193
|
-
//
|
|
1194
|
-
|
|
1193
|
+
// resizeObserver: undefined,
|
|
1194
|
+
// 滚动条
|
|
1195
|
+
// scrollObserver: undefined,
|
|
1196
|
+
// isThumbDrag: false,
|
|
1197
|
+
thumbDragOffset: 0,
|
|
1198
|
+
yThumbTop: 0,
|
|
1199
|
+
xThumbLeft: 0,
|
|
1195
1200
|
lastScrollTop: 0,
|
|
1201
|
+
lastScrollLeft: 0,
|
|
1196
1202
|
// 单选框属性,已选中保留的行
|
|
1197
1203
|
radioReserveRow: null,
|
|
1198
1204
|
// 复选框属性,已选中保留的行集合
|
|
@@ -1325,6 +1331,9 @@ function createReactData$2() {
|
|
|
1325
1331
|
scrollbarWidth: 0,
|
|
1326
1332
|
// 横向滚动条的高度
|
|
1327
1333
|
scrollbarHeight: 0,
|
|
1334
|
+
// 滚动条
|
|
1335
|
+
yThumbHeight: 0,
|
|
1336
|
+
xThumbWidth: 0,
|
|
1328
1337
|
// 行高
|
|
1329
1338
|
rowHeight: 0,
|
|
1330
1339
|
// 表格父容器的高度
|
|
@@ -3850,7 +3859,10 @@ const tableProps = {
|
|
|
3850
3859
|
type: Boolean,
|
|
3851
3860
|
default: () => getConfig$7().table.highlightCurrentRow
|
|
3852
3861
|
},
|
|
3853
|
-
|
|
3862
|
+
/**
|
|
3863
|
+
* (即将废弃)鼠标移到行是否要高亮显示
|
|
3864
|
+
* @deprecated
|
|
3865
|
+
*/
|
|
3854
3866
|
highlightHoverRow: {
|
|
3855
3867
|
type: Boolean,
|
|
3856
3868
|
default: () => getConfig$7().table.highlightHoverRow
|
|
@@ -4075,7 +4087,7 @@ const tableProps = {
|
|
|
4075
4087
|
virtualYConfig: Object,
|
|
4076
4088
|
useScrollbar: {
|
|
4077
4089
|
type: Boolean,
|
|
4078
|
-
default: () => getConfig$7().table.useScrollbar
|
|
4090
|
+
default: () => getDefaultConfig(getConfig$7().table.useScrollbar, getConfig$7().useScrollbar)
|
|
4079
4091
|
},
|
|
4080
4092
|
// 滚动条配置项
|
|
4081
4093
|
scrollbarConfig: Object,
|
|
@@ -4287,6 +4299,61 @@ function clearColAnimate(elem, clss) {
|
|
|
4287
4299
|
}, 500);
|
|
4288
4300
|
}
|
|
4289
4301
|
|
|
4302
|
+
/**
|
|
4303
|
+
* 计算滚动条滑块的长度
|
|
4304
|
+
*/
|
|
4305
|
+
function getThumbSize(viewportSize, contentSize, trackSize) {
|
|
4306
|
+
if (contentSize <= viewportSize) {
|
|
4307
|
+
return 0;
|
|
4308
|
+
}
|
|
4309
|
+
const ratio = viewportSize / contentSize;
|
|
4310
|
+
const ideal = trackSize * ratio;
|
|
4311
|
+
return Math.max(20, Math.min(ideal, trackSize));
|
|
4312
|
+
}
|
|
4313
|
+
/**
|
|
4314
|
+
* 计算滚动条滑块的偏移位置
|
|
4315
|
+
*/
|
|
4316
|
+
function getThumbOffsetSize(offsetSize, viewportSize, contentSize, trackSize, thumbSize) {
|
|
4317
|
+
const maxScroll = contentSize - viewportSize;
|
|
4318
|
+
if (maxScroll <= 0) {
|
|
4319
|
+
return 0;
|
|
4320
|
+
}
|
|
4321
|
+
const maxThumbOffset = trackSize - thumbSize;
|
|
4322
|
+
if (maxThumbOffset <= 0) {
|
|
4323
|
+
return 0;
|
|
4324
|
+
}
|
|
4325
|
+
const clamped = Math.min(Math.max(offsetSize, 0), maxScroll);
|
|
4326
|
+
const ratio = clamped / maxScroll;
|
|
4327
|
+
return ratio * maxThumbOffset;
|
|
4328
|
+
}
|
|
4329
|
+
/**
|
|
4330
|
+
* 根据点击轨道的位置,计算滑块的偏移位置
|
|
4331
|
+
*/
|
|
4332
|
+
function getScrollFromClick(clickPosition, viewportSize, contentSize, trackSize, thumbSize) {
|
|
4333
|
+
const maxThumbOffset = trackSize - thumbSize;
|
|
4334
|
+
const maxScroll = contentSize - viewportSize;
|
|
4335
|
+
if (maxScroll <= 0 || maxThumbOffset <= 0) {
|
|
4336
|
+
return 0;
|
|
4337
|
+
}
|
|
4338
|
+
let thumbOffset = clickPosition - thumbSize / 2;
|
|
4339
|
+
thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
|
|
4340
|
+
const scrollOffset = (thumbOffset / maxThumbOffset) * maxScroll;
|
|
4341
|
+
return scrollOffset;
|
|
4342
|
+
}
|
|
4343
|
+
/**
|
|
4344
|
+
* 拖拽 thumb 时,根据鼠标位置计算滑块的偏移位置
|
|
4345
|
+
*/
|
|
4346
|
+
function getScrollFromDrag(pointerPosition, dragOffset, viewportSize, contentSize, trackSize, thumbSize) {
|
|
4347
|
+
const maxScroll = contentSize - viewportSize;
|
|
4348
|
+
const maxThumbOffset = trackSize - thumbSize;
|
|
4349
|
+
if (maxScroll <= 0 || maxThumbOffset <= 0) {
|
|
4350
|
+
return 0;
|
|
4351
|
+
}
|
|
4352
|
+
let thumbOffset = pointerPosition - dragOffset;
|
|
4353
|
+
thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
|
|
4354
|
+
return (thumbOffset / maxThumbOffset) * maxScroll;
|
|
4355
|
+
}
|
|
4356
|
+
|
|
4290
4357
|
// 跨表拖拽
|
|
4291
4358
|
const crossTableDragRowInfo = reactive({
|
|
4292
4359
|
row: null
|
|
@@ -15976,7 +16043,7 @@ renderer$2.mixin({
|
|
|
15976
16043
|
});
|
|
15977
16044
|
|
|
15978
16045
|
const { warnLog: warnLog$2, errLog: errLog$2 } = createComponentLog('table');
|
|
15979
|
-
const { getConfig: getConfig$2, getIcon: getIcon$1, getI18n: getI18n$2, renderer: renderer$1, formats, createEvent: createEvent$2, globalResize, interceptor, hooks: hooks$1, globalEvents: globalEvents$1, GLOBAL_EVENT_KEYS: GLOBAL_EVENT_KEYS$1, useFns: useFns$2, renderEmptyElement: renderEmptyElement$1 } = VxeUI;
|
|
16046
|
+
const { getConfig: getConfig$2, getIcon: getIcon$1, getI18n: getI18n$2, renderer: renderer$1, formats, createEvent: createEvent$2, globalResize, interceptor, hooks: hooks$1, domUtils, globalEvents: globalEvents$1, GLOBAL_EVENT_KEYS: GLOBAL_EVENT_KEYS$1, useFns: useFns$2, renderEmptyElement: renderEmptyElement$1 } = VxeUI;
|
|
15980
16047
|
const supportMaxRow = 5e6;
|
|
15981
16048
|
const customStorageKey = 'VXE_CUSTOM_STORE';
|
|
15982
16049
|
const maxYHeight = 5e6;
|
|
@@ -16051,6 +16118,10 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
16051
16118
|
const refScrollYBottomCornerElem = ref();
|
|
16052
16119
|
const refScrollXSpaceElem = ref();
|
|
16053
16120
|
const refScrollYSpaceElem = ref();
|
|
16121
|
+
const refTrackXElem = ref();
|
|
16122
|
+
const refTrackYElem = ref();
|
|
16123
|
+
const refThumbXElem = ref();
|
|
16124
|
+
const refThumbYElem = ref();
|
|
16054
16125
|
let $xeToolbar;
|
|
16055
16126
|
const computeTableId = computed(() => {
|
|
16056
16127
|
const { id } = props;
|
|
@@ -16141,6 +16212,36 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
16141
16212
|
const scrollbarOpts = computeScrollbarOpts.value;
|
|
16142
16213
|
return scrollbarOpts.y ? Object.assign({}, scrollbarOpts.y, scrollbarOpts.yConfig) : (scrollbarOpts.yConfig || {});
|
|
16143
16214
|
});
|
|
16215
|
+
const computeScrollXHeight = computed(() => {
|
|
16216
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
16217
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
16218
|
+
return XEUtils.toNumber(getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), scrollDefaultConf.height));
|
|
16219
|
+
});
|
|
16220
|
+
const computeScrollYWidth = computed(() => {
|
|
16221
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
16222
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
16223
|
+
return XEUtils.toNumber(getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), scrollDefaultConf.width));
|
|
16224
|
+
});
|
|
16225
|
+
const computeScrollXVisible = computed(() => {
|
|
16226
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
16227
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
16228
|
+
return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible);
|
|
16229
|
+
});
|
|
16230
|
+
const computeScrollYVisible = computed(() => {
|
|
16231
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
16232
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
16233
|
+
return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible);
|
|
16234
|
+
});
|
|
16235
|
+
const computeScrollXAutoHide = computed(() => {
|
|
16236
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
16237
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
16238
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), scrollDefaultConf.autoHide);
|
|
16239
|
+
});
|
|
16240
|
+
const computeScrollYAutoHide = computed(() => {
|
|
16241
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
16242
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
16243
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), scrollDefaultConf.autoHide);
|
|
16244
|
+
});
|
|
16144
16245
|
const computeScrollbarXToTop = computed(() => {
|
|
16145
16246
|
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
16146
16247
|
return scrollbarXOpts.position === 'top';
|
|
@@ -16149,6 +16250,23 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
16149
16250
|
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
16150
16251
|
return scrollbarYOpts.position === 'left';
|
|
16151
16252
|
});
|
|
16253
|
+
const computeScrollbarWrapperClss = computed(() => {
|
|
16254
|
+
const { yThumbHeight, xThumbWidth } = reactData;
|
|
16255
|
+
const scrollbarXToTop = computeScrollbarXToTop.value;
|
|
16256
|
+
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
16257
|
+
const scrollXVisible = computeScrollXVisible.value;
|
|
16258
|
+
const scrollYVisible = computeScrollYVisible.value;
|
|
16259
|
+
return domUtils.buildClass([
|
|
16260
|
+
'vxe-scrollbar is--virtual',
|
|
16261
|
+
`ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`,
|
|
16262
|
+
`ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`,
|
|
16263
|
+
`sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
|
|
16264
|
+
`sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
|
|
16265
|
+
], {
|
|
16266
|
+
'overflow-y': yThumbHeight,
|
|
16267
|
+
'overflow-x': xThumbWidth
|
|
16268
|
+
});
|
|
16269
|
+
});
|
|
16152
16270
|
const computeScrollYThreshold = computed(() => {
|
|
16153
16271
|
const virtualYOpts = computeVirtualYOpts.value;
|
|
16154
16272
|
const { threshold } = virtualYOpts;
|
|
@@ -16178,6 +16296,10 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
16178
16296
|
}
|
|
16179
16297
|
return cellOpts;
|
|
16180
16298
|
});
|
|
16299
|
+
const computeCellHeitht = computed(() => {
|
|
16300
|
+
const cellOpts = computeCellOpts.value;
|
|
16301
|
+
return cellOpts.height;
|
|
16302
|
+
});
|
|
16181
16303
|
const computeHeaderCellOpts = computed(() => {
|
|
16182
16304
|
const headerCellOpts = Object.assign({}, getConfig$2().table.headerCellConfig, props.headerCellConfig);
|
|
16183
16305
|
const defaultRowHeight = computeDefaultRowHeight.value;
|
|
@@ -16477,11 +16599,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
16477
16599
|
return '';
|
|
16478
16600
|
});
|
|
16479
16601
|
const computeTableStyle = computed(() => {
|
|
16480
|
-
const
|
|
16481
|
-
const
|
|
16482
|
-
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
16483
|
-
const barWidth = getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), scrollDefaultConf.width);
|
|
16484
|
-
const barHeight = getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), scrollDefaultConf.height);
|
|
16602
|
+
const barWidth = computeScrollYWidth.value;
|
|
16603
|
+
const barHeight = computeScrollXHeight.value;
|
|
16485
16604
|
const stys = {};
|
|
16486
16605
|
if (barWidth || barHeight) {
|
|
16487
16606
|
stys['--vxe-ui-table-view-scrollbar-width'] = toCssUnit(barWidth || barHeight);
|
|
@@ -16677,8 +16796,15 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
16677
16796
|
computeScrollbarOpts,
|
|
16678
16797
|
computeScrollbarXOpts,
|
|
16679
16798
|
computeScrollbarYOpts,
|
|
16799
|
+
computeScrollXHeight,
|
|
16800
|
+
computeScrollYWidth,
|
|
16801
|
+
computeScrollXVisible,
|
|
16802
|
+
computeScrollYVisible,
|
|
16803
|
+
computeScrollXAutoHide,
|
|
16804
|
+
computeScrollYAutoHide,
|
|
16680
16805
|
computeScrollbarXToTop,
|
|
16681
16806
|
computeScrollbarYToLeft,
|
|
16807
|
+
computeScrollbarWrapperClss,
|
|
16682
16808
|
computeColumnOpts,
|
|
16683
16809
|
computeCurrentColumnOpts,
|
|
16684
16810
|
computeScrollXThreshold,
|
|
@@ -17795,14 +17921,6 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
17795
17921
|
if (!bodyWrapperElem) {
|
|
17796
17922
|
return;
|
|
17797
17923
|
}
|
|
17798
|
-
const yHandleEl = refScrollYHandleElem.value;
|
|
17799
|
-
if (!yHandleEl) {
|
|
17800
|
-
return;
|
|
17801
|
-
}
|
|
17802
|
-
const xHandleEl = refScrollXHandleElem.value;
|
|
17803
|
-
if (!xHandleEl) {
|
|
17804
|
-
return;
|
|
17805
|
-
}
|
|
17806
17924
|
const columnOpts = computeColumnOpts.value;
|
|
17807
17925
|
let tWidth = 0;
|
|
17808
17926
|
const minCellWidth = 40; // 列宽最少限制 40px
|
|
@@ -18402,12 +18520,12 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
18402
18520
|
emptyPlaceholderElem.style.top = `${tHeaderHeight}px`;
|
|
18403
18521
|
emptyPlaceholderElem.style.height = bodyWrapperElem ? `${bodyWrapperElem.offsetHeight - osbHeight}px` : '';
|
|
18404
18522
|
}
|
|
18405
|
-
const
|
|
18406
|
-
const
|
|
18523
|
+
const scrollXVisible = computeScrollXVisible.value;
|
|
18524
|
+
const scrollYVisible = computeScrollYVisible.value;
|
|
18407
18525
|
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
18408
18526
|
let xScrollbarVisible = overflowX ? 'visible' : 'hidden';
|
|
18409
|
-
const hideXScroll =
|
|
18410
|
-
if (
|
|
18527
|
+
const hideXScroll = scrollXVisible === false || scrollXVisible === 'hidden';
|
|
18528
|
+
if (scrollXVisible === 'visible' || $xeGanttView) {
|
|
18411
18529
|
osbHeight = scrollbarHeight;
|
|
18412
18530
|
xScrollbarVisible = 'visible';
|
|
18413
18531
|
}
|
|
@@ -18416,12 +18534,12 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
18416
18534
|
xScrollbarVisible = 'hidden';
|
|
18417
18535
|
}
|
|
18418
18536
|
let yScrollbarVisible = overflowY ? 'visible' : 'hidden';
|
|
18419
|
-
const
|
|
18420
|
-
if (
|
|
18537
|
+
const hideYScroll = scrollYVisible === false || scrollYVisible === 'hidden';
|
|
18538
|
+
if (hideYScroll || (($xeGantt && $xeGanttView && $xeGantt.reactData.showRightView) && !scrollbarYToLeft)) {
|
|
18421
18539
|
osbWidth = 0;
|
|
18422
18540
|
yScrollbarVisible = 'hidden';
|
|
18423
18541
|
}
|
|
18424
|
-
else if (
|
|
18542
|
+
else if (scrollYVisible === 'visible') {
|
|
18425
18543
|
osbWidth = scrollbarWidth;
|
|
18426
18544
|
yScrollbarVisible = 'visible';
|
|
18427
18545
|
}
|
|
@@ -19229,7 +19347,6 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
19229
19347
|
const calcScrollbar = () => {
|
|
19230
19348
|
const { scrollXWidth, scrollYHeight } = reactData;
|
|
19231
19349
|
const { elemStore } = internalData;
|
|
19232
|
-
const scrollbarOpts = computeScrollbarOpts.value;
|
|
19233
19350
|
const el = refElem.value;
|
|
19234
19351
|
if (!el || !el.clientWidth) {
|
|
19235
19352
|
return;
|
|
@@ -19239,20 +19356,29 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
19239
19356
|
const footerTableElem = getRefElem(elemStore['main-footer-table']);
|
|
19240
19357
|
const xHandleEl = refScrollXHandleElem.value;
|
|
19241
19358
|
const yHandleEl = refScrollYHandleElem.value;
|
|
19359
|
+
const thumbXElem = refThumbXElem.value;
|
|
19360
|
+
const thumbYElem = refThumbYElem.value;
|
|
19242
19361
|
let overflowY = false;
|
|
19243
19362
|
let overflowX = false;
|
|
19244
19363
|
if (bodyWrapperElem) {
|
|
19245
|
-
const
|
|
19246
|
-
const
|
|
19247
|
-
const
|
|
19248
|
-
const barHeight = XEUtils.toNumber(getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), scrollDefaultConf.height));
|
|
19364
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
19365
|
+
const barWidth = computeScrollYWidth.value;
|
|
19366
|
+
const barHeight = computeScrollXHeight.value;
|
|
19249
19367
|
overflowY = scrollYHeight > bodyWrapperElem.clientHeight;
|
|
19250
|
-
|
|
19368
|
+
// 如果是虚拟滚动条
|
|
19369
|
+
if (thumbYElem) {
|
|
19370
|
+
reactData.scrollbarHeight = scrollbarOpts.padding ? thumbYElem.offsetWidth : 0;
|
|
19371
|
+
}
|
|
19372
|
+
else if (yHandleEl) {
|
|
19251
19373
|
reactData.scrollbarWidth = (barWidth || barHeight) || (yHandleEl.offsetWidth - yHandleEl.clientWidth) || 14;
|
|
19252
19374
|
}
|
|
19253
19375
|
reactData.overflowY = overflowY;
|
|
19254
19376
|
overflowX = scrollXWidth > bodyWrapperElem.clientWidth;
|
|
19255
|
-
|
|
19377
|
+
// 如果是虚拟滚动条
|
|
19378
|
+
if (thumbXElem) {
|
|
19379
|
+
reactData.scrollbarHeight = scrollbarOpts.padding ? thumbXElem.offsetHeight : 0;
|
|
19380
|
+
}
|
|
19381
|
+
else if (xHandleEl) {
|
|
19256
19382
|
reactData.scrollbarHeight = (barHeight || barWidth) || (xHandleEl.offsetHeight - xHandleEl.clientHeight) || 14;
|
|
19257
19383
|
}
|
|
19258
19384
|
const hHeight = headerTableElem ? headerTableElem.clientHeight : 0;
|
|
@@ -19319,6 +19445,10 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
19319
19445
|
}
|
|
19320
19446
|
});
|
|
19321
19447
|
};
|
|
19448
|
+
const updateScrollbar = () => {
|
|
19449
|
+
updateThumbSize();
|
|
19450
|
+
updateThumbOffset();
|
|
19451
|
+
};
|
|
19322
19452
|
const defaultMinRunDelay = 50;
|
|
19323
19453
|
const handleLazyRecalculate = (reFull, reWidth, reHeight, options) => {
|
|
19324
19454
|
const minRunDelay = (options ? options.minRunDelay : defaultMinRunDelay) || defaultMinRunDelay;
|
|
@@ -19339,6 +19469,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
19339
19469
|
const refreshDelay = resizeOpts.refreshDelay || 30;
|
|
19340
19470
|
const reDelay = rceDelay + refreshDelay;
|
|
19341
19471
|
const el = refElem.value;
|
|
19472
|
+
updateScrollbar();
|
|
19342
19473
|
if (el && el.clientWidth) {
|
|
19343
19474
|
autoCellWidth();
|
|
19344
19475
|
updateRowExpandStyle();
|
|
@@ -27340,6 +27471,18 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
27340
27471
|
}
|
|
27341
27472
|
return nextTick();
|
|
27342
27473
|
},
|
|
27474
|
+
/**
|
|
27475
|
+
* @private
|
|
27476
|
+
*/
|
|
27477
|
+
updateScrollbar() {
|
|
27478
|
+
return updateScrollbar();
|
|
27479
|
+
},
|
|
27480
|
+
/**
|
|
27481
|
+
* @private
|
|
27482
|
+
*/
|
|
27483
|
+
updateThumbOffset() {
|
|
27484
|
+
return updateThumbOffset();
|
|
27485
|
+
},
|
|
27343
27486
|
/**
|
|
27344
27487
|
* 表头单元格按下事件
|
|
27345
27488
|
*/
|
|
@@ -28487,19 +28630,18 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
28487
28630
|
},
|
|
28488
28631
|
handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, params) {
|
|
28489
28632
|
const { highlightHoverRow } = props;
|
|
28490
|
-
const { lastScrollLeft, lastScrollTop } = internalData;
|
|
28491
|
-
const
|
|
28492
|
-
|
|
28493
|
-
if (!xHandleEl || !yHandleEl) {
|
|
28633
|
+
const { elemStore, lastScrollLeft, lastScrollTop } = internalData;
|
|
28634
|
+
const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
|
|
28635
|
+
if (!bodyScrollElem) {
|
|
28494
28636
|
return;
|
|
28495
28637
|
}
|
|
28496
28638
|
const rowOpts = computeRowOpts.value;
|
|
28497
28639
|
const validTip = refValidTooltip.value;
|
|
28498
28640
|
const tooltip = refTooltip.value;
|
|
28499
|
-
const bodyHeight =
|
|
28500
|
-
const bodyWidth =
|
|
28501
|
-
const scrollHeight =
|
|
28502
|
-
const scrollWidth =
|
|
28641
|
+
const bodyHeight = bodyScrollElem.clientHeight;
|
|
28642
|
+
const bodyWidth = bodyScrollElem.clientWidth;
|
|
28643
|
+
const scrollHeight = bodyScrollElem.scrollHeight;
|
|
28644
|
+
const scrollWidth = bodyScrollElem.scrollWidth;
|
|
28503
28645
|
let isTop = false;
|
|
28504
28646
|
let isBottom = false;
|
|
28505
28647
|
let isLeft = false;
|
|
@@ -28561,6 +28703,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
28561
28703
|
isLeft,
|
|
28562
28704
|
isRight,
|
|
28563
28705
|
direction }, params);
|
|
28706
|
+
updateThumbOffset();
|
|
28564
28707
|
updateRowExpandStyle();
|
|
28565
28708
|
checkLastSyncScroll(isRollX, isRollY);
|
|
28566
28709
|
if (isRollX) {
|
|
@@ -28605,6 +28748,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
28605
28748
|
}
|
|
28606
28749
|
},
|
|
28607
28750
|
triggerBodyScrollEvent(evnt, fixedType) {
|
|
28751
|
+
const { useScrollbar } = props;
|
|
28608
28752
|
const { scrollYLoad, scrollXLoad } = reactData;
|
|
28609
28753
|
const { elemStore, intoRunScroll, lastScrollTop, lastScrollLeft, inWheelScroll, inVirtualScroll, inHeaderScroll, inBodyScroll, scrollRenderType, inFooterScroll } = internalData;
|
|
28610
28754
|
if (inWheelScroll || inVirtualScroll || inHeaderScroll || inFooterScroll) {
|
|
@@ -28624,19 +28768,21 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
28624
28768
|
if (!bodyScrollElem) {
|
|
28625
28769
|
return;
|
|
28626
28770
|
}
|
|
28627
|
-
if (!
|
|
28628
|
-
|
|
28629
|
-
|
|
28630
|
-
|
|
28631
|
-
|
|
28771
|
+
if (!useScrollbar) {
|
|
28772
|
+
if (!xHandleEl) {
|
|
28773
|
+
return;
|
|
28774
|
+
}
|
|
28775
|
+
if (!yHandleEl) {
|
|
28776
|
+
return;
|
|
28777
|
+
}
|
|
28632
28778
|
}
|
|
28633
28779
|
if (inBodyScroll) {
|
|
28634
28780
|
if (scrollRenderType !== fixedType) {
|
|
28635
28781
|
return;
|
|
28636
28782
|
}
|
|
28637
28783
|
}
|
|
28638
|
-
let scrollTop =
|
|
28639
|
-
let scrollLeft =
|
|
28784
|
+
let scrollTop = 0;
|
|
28785
|
+
let scrollLeft = 0;
|
|
28640
28786
|
if (leftScrollElem && fixedType === 'left') {
|
|
28641
28787
|
scrollTop = leftScrollElem.scrollTop;
|
|
28642
28788
|
}
|
|
@@ -28777,8 +28923,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
28777
28923
|
const rightFixedWidth = computeRightFixedWidth.value;
|
|
28778
28924
|
const { elemStore, lastScrollTop, lastScrollLeft } = internalData;
|
|
28779
28925
|
const rowOpts = computeRowOpts.value;
|
|
28780
|
-
const
|
|
28781
|
-
const
|
|
28926
|
+
const scrollXVisible = computeScrollXVisible.value;
|
|
28927
|
+
const scrollYVisible = computeScrollYVisible.value;
|
|
28782
28928
|
const xHandleEl = refScrollXHandleElem.value;
|
|
28783
28929
|
const yHandleEl = refScrollYHandleElem.value;
|
|
28784
28930
|
const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
|
|
@@ -28801,14 +28947,14 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
28801
28947
|
const isRollY = overflowY && scrollTop !== lastScrollTop;
|
|
28802
28948
|
if (isRollX) {
|
|
28803
28949
|
// 如果禁用滚动
|
|
28804
|
-
if (
|
|
28950
|
+
if (scrollXVisible === false || scrollXVisible === 'hidden') {
|
|
28805
28951
|
evnt.preventDefault();
|
|
28806
28952
|
return;
|
|
28807
28953
|
}
|
|
28808
28954
|
}
|
|
28809
28955
|
if (isRollY) {
|
|
28810
28956
|
// 如果禁用滚动
|
|
28811
|
-
if (
|
|
28957
|
+
if (scrollYVisible === false || scrollYVisible === 'hidden') {
|
|
28812
28958
|
evnt.preventDefault();
|
|
28813
28959
|
return;
|
|
28814
28960
|
}
|
|
@@ -29373,6 +29519,168 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
29373
29519
|
return nextTick();
|
|
29374
29520
|
}
|
|
29375
29521
|
};
|
|
29522
|
+
const updateThumbSize = () => {
|
|
29523
|
+
const { elemStore } = internalData;
|
|
29524
|
+
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
29525
|
+
if (!viewEl) {
|
|
29526
|
+
return;
|
|
29527
|
+
}
|
|
29528
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
29529
|
+
return;
|
|
29530
|
+
}
|
|
29531
|
+
const trackXEl = refTrackXElem.value;
|
|
29532
|
+
const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
|
|
29533
|
+
const thumbXElem = refThumbXElem.value;
|
|
29534
|
+
if (thumbXElem) {
|
|
29535
|
+
thumbXElem.style.width = xThumbWidth + 'px';
|
|
29536
|
+
}
|
|
29537
|
+
reactData.xThumbWidth = xThumbWidth;
|
|
29538
|
+
const trackYEl = refTrackYElem.value;
|
|
29539
|
+
const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
|
|
29540
|
+
const thumbYElem = refThumbYElem.value;
|
|
29541
|
+
if (thumbYElem) {
|
|
29542
|
+
thumbYElem.style.height = yThumbHeight + 'px';
|
|
29543
|
+
}
|
|
29544
|
+
reactData.yThumbHeight = yThumbHeight;
|
|
29545
|
+
};
|
|
29546
|
+
const updateThumbOffset = () => {
|
|
29547
|
+
const { elemStore } = internalData;
|
|
29548
|
+
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
29549
|
+
if (!viewEl) {
|
|
29550
|
+
return;
|
|
29551
|
+
}
|
|
29552
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
29553
|
+
return;
|
|
29554
|
+
}
|
|
29555
|
+
const { xThumbWidth, yThumbHeight } = reactData;
|
|
29556
|
+
const trackXEl = refTrackXElem.value;
|
|
29557
|
+
const thumbXElem = refThumbXElem.value;
|
|
29558
|
+
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
|
|
29559
|
+
internalData.xThumbLeft = xThumbLeft;
|
|
29560
|
+
if (thumbXElem && xThumbWidth) {
|
|
29561
|
+
thumbXElem.style.width = xThumbWidth + 'px';
|
|
29562
|
+
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
|
|
29563
|
+
}
|
|
29564
|
+
const trackYEl = refTrackYElem.value;
|
|
29565
|
+
const thumbYElem = refThumbYElem.value;
|
|
29566
|
+
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
|
|
29567
|
+
internalData.yThumbTop = yThumbTop;
|
|
29568
|
+
if (thumbYElem && yThumbHeight) {
|
|
29569
|
+
thumbYElem.style.height = yThumbHeight + 'px';
|
|
29570
|
+
thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
|
|
29571
|
+
}
|
|
29572
|
+
};
|
|
29573
|
+
const clickTrackXEvent = (evnt) => {
|
|
29574
|
+
const { elemStore } = internalData;
|
|
29575
|
+
const trackEl = evnt.currentTarget;
|
|
29576
|
+
if (trackEl !== evnt.target) {
|
|
29577
|
+
return;
|
|
29578
|
+
}
|
|
29579
|
+
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
29580
|
+
if (!viewEl) {
|
|
29581
|
+
return;
|
|
29582
|
+
}
|
|
29583
|
+
const { xThumbWidth } = reactData;
|
|
29584
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
29585
|
+
viewEl.scrollTo({
|
|
29586
|
+
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
29587
|
+
behavior: 'auto'
|
|
29588
|
+
});
|
|
29589
|
+
};
|
|
29590
|
+
const clickTrackYEvent = (evnt) => {
|
|
29591
|
+
const { elemStore } = internalData;
|
|
29592
|
+
const trackEl = evnt.currentTarget;
|
|
29593
|
+
if (trackEl !== evnt.target) {
|
|
29594
|
+
return;
|
|
29595
|
+
}
|
|
29596
|
+
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
29597
|
+
if (!viewEl) {
|
|
29598
|
+
return;
|
|
29599
|
+
}
|
|
29600
|
+
const { yThumbHeight } = reactData;
|
|
29601
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
29602
|
+
viewEl.scrollTo({
|
|
29603
|
+
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
29604
|
+
behavior: 'auto'
|
|
29605
|
+
});
|
|
29606
|
+
};
|
|
29607
|
+
const pointerdownThumbXEvent = (evnt) => {
|
|
29608
|
+
const { elemStore } = internalData;
|
|
29609
|
+
const thumbEl = evnt.currentTarget;
|
|
29610
|
+
internalData.isThumbDrag = true;
|
|
29611
|
+
thumbEl.setPointerCapture(evnt.pointerId);
|
|
29612
|
+
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
29613
|
+
if (!viewEl) {
|
|
29614
|
+
return;
|
|
29615
|
+
}
|
|
29616
|
+
const { xThumbWidth } = reactData;
|
|
29617
|
+
const trackEl = thumbEl.parentElement;
|
|
29618
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
29619
|
+
const pointerPosition = evnt.clientX - trackRect.left;
|
|
29620
|
+
// 记录 thumb 的偏移
|
|
29621
|
+
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
29622
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
29623
|
+
};
|
|
29624
|
+
const pointermoveThumbXEvent = (evnt) => {
|
|
29625
|
+
const thumbEl = evnt.currentTarget;
|
|
29626
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
29627
|
+
return;
|
|
29628
|
+
}
|
|
29629
|
+
const { elemStore, isThumbDrag, thumbDragOffset } = internalData;
|
|
29630
|
+
if (isThumbDrag) {
|
|
29631
|
+
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
29632
|
+
if (!viewEl) {
|
|
29633
|
+
return;
|
|
29634
|
+
}
|
|
29635
|
+
const { xThumbWidth } = reactData;
|
|
29636
|
+
const thumbEl = evnt.currentTarget;
|
|
29637
|
+
const trackEl = thumbEl.parentElement;
|
|
29638
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
29639
|
+
// 更新偏移
|
|
29640
|
+
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
29641
|
+
}
|
|
29642
|
+
};
|
|
29643
|
+
const cleatPointerThumbEvent = (evnt) => {
|
|
29644
|
+
const thumbEl = evnt.currentTarget;
|
|
29645
|
+
thumbEl.releasePointerCapture(evnt.pointerId);
|
|
29646
|
+
internalData.isThumbDrag = false;
|
|
29647
|
+
};
|
|
29648
|
+
const pointerdownThumbYEvent = (evnt) => {
|
|
29649
|
+
const { elemStore } = internalData;
|
|
29650
|
+
const thumbEl = evnt.currentTarget;
|
|
29651
|
+
internalData.isThumbDrag = true;
|
|
29652
|
+
thumbEl.setPointerCapture(evnt.pointerId);
|
|
29653
|
+
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
29654
|
+
if (!viewEl) {
|
|
29655
|
+
return;
|
|
29656
|
+
}
|
|
29657
|
+
const { yThumbHeight } = reactData;
|
|
29658
|
+
const trackEl = thumbEl.parentElement;
|
|
29659
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
29660
|
+
const pointerPosition = evnt.clientY - trackRect.top;
|
|
29661
|
+
// 记录 thumb 的偏移
|
|
29662
|
+
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
29663
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
29664
|
+
};
|
|
29665
|
+
const pointermoveThumbYEvent = (evnt) => {
|
|
29666
|
+
const thumbEl = evnt.currentTarget;
|
|
29667
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
29668
|
+
return;
|
|
29669
|
+
}
|
|
29670
|
+
const { elemStore, isThumbDrag, thumbDragOffset } = internalData;
|
|
29671
|
+
if (isThumbDrag) {
|
|
29672
|
+
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
29673
|
+
if (!viewEl) {
|
|
29674
|
+
return;
|
|
29675
|
+
}
|
|
29676
|
+
const { yThumbHeight } = reactData;
|
|
29677
|
+
const thumbEl = evnt.currentTarget;
|
|
29678
|
+
const trackEl = thumbEl.parentElement;
|
|
29679
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
29680
|
+
// 更新偏移
|
|
29681
|
+
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
29682
|
+
}
|
|
29683
|
+
};
|
|
29376
29684
|
// 检测对应模块是否安装
|
|
29377
29685
|
// 'openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').forEach(name => {
|
|
29378
29686
|
// ($xeTable as any)[name] = function () {
|
|
@@ -29397,6 +29705,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
29397
29705
|
const scrollbarOpts = computeScrollbarOpts.value;
|
|
29398
29706
|
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
29399
29707
|
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
29708
|
+
const scrollXVisible = computeScrollXVisible.value;
|
|
29709
|
+
const scrollYVisible = computeScrollYVisible.value;
|
|
29400
29710
|
const { overscrollBehavior: overscrollXBehavior } = scrollbarXOpts;
|
|
29401
29711
|
const { overscrollBehavior: overscrollYBehavior } = scrollbarYOpts;
|
|
29402
29712
|
const isFixedLeft = fixedType === 'left';
|
|
@@ -29407,8 +29717,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
29407
29717
|
ref: isFixedLeft ? refLeftContainer : refRightContainer,
|
|
29408
29718
|
class: [
|
|
29409
29719
|
`vxe-table--fixed-${fixedType}-wrapper`,
|
|
29410
|
-
`sx--${(
|
|
29411
|
-
`sy--${(
|
|
29720
|
+
`sx--${(scrollXVisible === false || scrollXVisible === 'hidden') ? 'hidden' : 'visible'}`,
|
|
29721
|
+
`sy--${(scrollYVisible === false || scrollYVisible === 'hidden') ? 'hidden' : 'visible'}`,
|
|
29412
29722
|
{
|
|
29413
29723
|
[`x-ob--${osXBehavior}`]: osXBehavior,
|
|
29414
29724
|
[`y-ob--${osYBehavior}`]: osYBehavior
|
|
@@ -29672,6 +29982,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
29672
29982
|
};
|
|
29673
29983
|
const renderScrollY = () => {
|
|
29674
29984
|
return h('div', {
|
|
29985
|
+
key: 'vsy',
|
|
29675
29986
|
ref: refScrollYVirtualElem,
|
|
29676
29987
|
class: 'vxe-table--scroll-y-virtual'
|
|
29677
29988
|
}, [
|
|
@@ -29709,12 +30020,15 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
29709
30020
|
const scrollbarOpts = computeScrollbarOpts.value;
|
|
29710
30021
|
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
29711
30022
|
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
30023
|
+
const scrollXVisible = computeScrollXVisible.value;
|
|
30024
|
+
const scrollYVisible = computeScrollYVisible.value;
|
|
29712
30025
|
const { overscrollBehavior: overscrollXBehavior } = scrollbarXOpts;
|
|
29713
30026
|
const { overscrollBehavior: overscrollYBehavior } = scrollbarYOpts;
|
|
29714
30027
|
const { leftList, rightList } = columnStore;
|
|
29715
30028
|
const osXBehavior = XEUtils.eqNull(overscrollXBehavior) ? scrollbarOpts.overscrollBehavior : overscrollXBehavior;
|
|
29716
30029
|
const osYBehavior = XEUtils.eqNull(overscrollYBehavior) ? scrollbarOpts.overscrollBehavior : overscrollYBehavior;
|
|
29717
30030
|
return h('div', {
|
|
30031
|
+
key: 'tvw',
|
|
29718
30032
|
ref: refTableViewportElem,
|
|
29719
30033
|
class: ['vxe-table--viewport-wrapper', {
|
|
29720
30034
|
[`x-ob--${osXBehavior}`]: osXBehavior,
|
|
@@ -29724,8 +30038,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
29724
30038
|
h('div', {
|
|
29725
30039
|
class: [
|
|
29726
30040
|
'vxe-table--main-wrapper',
|
|
29727
|
-
`sx--${(
|
|
29728
|
-
`sy--${(
|
|
30041
|
+
`sx--${(scrollXVisible === false || scrollXVisible === 'hidden') ? 'hidden' : 'visible'}`,
|
|
30042
|
+
`sy--${(scrollYVisible === false || scrollYVisible === 'hidden') ? 'hidden' : 'visible'}`
|
|
29729
30043
|
]
|
|
29730
30044
|
}, [
|
|
29731
30045
|
/**
|
|
@@ -29767,9 +30081,10 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
29767
30081
|
renderRowExpandedVNs()
|
|
29768
30082
|
]);
|
|
29769
30083
|
};
|
|
29770
|
-
const
|
|
30084
|
+
const renderNativeBody = () => {
|
|
29771
30085
|
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
29772
30086
|
return h('div', {
|
|
30087
|
+
key: 'lnb',
|
|
29773
30088
|
class: 'vxe-table--layout-wrapper'
|
|
29774
30089
|
}, scrollbarYToLeft
|
|
29775
30090
|
? [
|
|
@@ -29781,6 +30096,72 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
29781
30096
|
renderScrollY()
|
|
29782
30097
|
]);
|
|
29783
30098
|
};
|
|
30099
|
+
const renderVirtualBody = () => {
|
|
30100
|
+
const $xeGanttView = internalData.xeGanttView;
|
|
30101
|
+
const { useScrollbar } = props;
|
|
30102
|
+
const { xThumbWidth, yThumbHeight } = reactData;
|
|
30103
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
30104
|
+
const scrollXAutoHide = computeScrollXAutoHide.value;
|
|
30105
|
+
const scrollYAutoHide = computeScrollYAutoHide.value;
|
|
30106
|
+
const scrollXVisible = computeScrollXVisible.value;
|
|
30107
|
+
const scrollYVisible = computeScrollYVisible.value;
|
|
30108
|
+
const scrollbarXToTop = computeScrollbarXToTop.value;
|
|
30109
|
+
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
30110
|
+
const scrollbarWrapperClss = computeScrollbarWrapperClss.value;
|
|
30111
|
+
const hideXScroll = scrollXVisible === false || scrollXVisible === 'hidden';
|
|
30112
|
+
const hideYScroll = scrollYVisible === false || scrollYVisible === 'hidden';
|
|
30113
|
+
return h('div', {
|
|
30114
|
+
key: 'lvb',
|
|
30115
|
+
class: ['vxe-table--layout-wrapper', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
|
|
30116
|
+
'is--virtual-scrollbar': useScrollbar,
|
|
30117
|
+
'ov-padding': useScrollbar && scrollbarOpts.padding,
|
|
30118
|
+
'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
|
|
30119
|
+
'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
|
|
30120
|
+
'overflow-y': yThumbHeight,
|
|
30121
|
+
'overflow-x': xThumbWidth
|
|
30122
|
+
}]
|
|
30123
|
+
}, [
|
|
30124
|
+
renderViewport(),
|
|
30125
|
+
h('div', {
|
|
30126
|
+
class: scrollbarWrapperClss
|
|
30127
|
+
}, [
|
|
30128
|
+
hideXScroll
|
|
30129
|
+
? renderEmptyElement$1($xeTable)
|
|
30130
|
+
: h('div', {
|
|
30131
|
+
ref: refTrackXElem,
|
|
30132
|
+
class: 'vxe-scrollbar--track-x',
|
|
30133
|
+
onClick: clickTrackXEvent
|
|
30134
|
+
}, [
|
|
30135
|
+
h('div', {
|
|
30136
|
+
ref: refThumbXElem,
|
|
30137
|
+
class: 'vxe-scrollbar--thumb-x',
|
|
30138
|
+
onPointerdown: pointerdownThumbXEvent,
|
|
30139
|
+
onPointermove: pointermoveThumbXEvent,
|
|
30140
|
+
onPointerup: cleatPointerThumbEvent,
|
|
30141
|
+
onPointercancel: cleatPointerThumbEvent,
|
|
30142
|
+
onLostpointercapture: cleatPointerThumbEvent
|
|
30143
|
+
})
|
|
30144
|
+
]),
|
|
30145
|
+
hideYScroll || (($xeGantt && $xeGanttView && $xeGantt.reactData.showRightView) && !scrollbarYToLeft)
|
|
30146
|
+
? renderEmptyElement$1($xeTable)
|
|
30147
|
+
: h('div', {
|
|
30148
|
+
ref: refTrackYElem,
|
|
30149
|
+
class: 'vxe-scrollbar--track-y',
|
|
30150
|
+
onClick: clickTrackYEvent
|
|
30151
|
+
}, [
|
|
30152
|
+
h('div', {
|
|
30153
|
+
ref: refThumbYElem,
|
|
30154
|
+
class: 'vxe-scrollbar--thumb-y',
|
|
30155
|
+
onPointerdown: pointerdownThumbYEvent,
|
|
30156
|
+
onPointermove: pointermoveThumbYEvent,
|
|
30157
|
+
onPointerup: cleatPointerThumbEvent,
|
|
30158
|
+
onPointercancel: cleatPointerThumbEvent,
|
|
30159
|
+
onLostpointercapture: cleatPointerThumbEvent
|
|
30160
|
+
})
|
|
30161
|
+
])
|
|
30162
|
+
])
|
|
30163
|
+
]);
|
|
30164
|
+
};
|
|
29784
30165
|
const renderVN = () => {
|
|
29785
30166
|
const { loading, stripe, useScrollbar, showHeader, height, treeConfig, mouseConfig, showFooter, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, editRules, importConfig, exportConfig, printConfig } = props;
|
|
29786
30167
|
const { isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, tableData, initStore, isRowGroupStatus, columnStore, filterStore, customStore, tooltipStore } = reactData;
|
|
@@ -29886,15 +30267,17 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
29886
30267
|
h('div', {
|
|
29887
30268
|
key: 'tw',
|
|
29888
30269
|
class: 'vxe-table--render-wrapper'
|
|
29889
|
-
},
|
|
29890
|
-
? [
|
|
29891
|
-
|
|
29892
|
-
|
|
29893
|
-
|
|
29894
|
-
|
|
29895
|
-
|
|
29896
|
-
|
|
29897
|
-
|
|
30270
|
+
}, useScrollbar
|
|
30271
|
+
? [renderVirtualBody()]
|
|
30272
|
+
: (scrollbarXToTop
|
|
30273
|
+
? [
|
|
30274
|
+
renderScrollX(),
|
|
30275
|
+
renderNativeBody()
|
|
30276
|
+
]
|
|
30277
|
+
: [
|
|
30278
|
+
renderNativeBody(),
|
|
30279
|
+
renderScrollX()
|
|
30280
|
+
])),
|
|
29898
30281
|
/**
|
|
29899
30282
|
* 空数据
|
|
29900
30283
|
*/
|
|
@@ -30201,6 +30584,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30201
30584
|
$xeTable.refreshColumn();
|
|
30202
30585
|
});
|
|
30203
30586
|
});
|
|
30587
|
+
const reScrollFlag = ref(0);
|
|
30204
30588
|
const reLayoutFlag = ref(0);
|
|
30205
30589
|
watch(computeSize, () => {
|
|
30206
30590
|
reLayoutFlag.value++;
|
|
@@ -30233,36 +30617,47 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30233
30617
|
watch(() => props.maxHeight, () => {
|
|
30234
30618
|
reLayoutFlag.value++;
|
|
30235
30619
|
});
|
|
30620
|
+
watch(() => VxeUI.getLanguage(), () => {
|
|
30621
|
+
reLayoutFlag.value++;
|
|
30622
|
+
});
|
|
30236
30623
|
watch(computeScrollbarXToTop, () => {
|
|
30624
|
+
reScrollFlag.value++;
|
|
30237
30625
|
reLayoutFlag.value++;
|
|
30238
30626
|
});
|
|
30239
30627
|
watch(computeScrollbarYToLeft, () => {
|
|
30628
|
+
reScrollFlag.value++;
|
|
30240
30629
|
reLayoutFlag.value++;
|
|
30241
30630
|
});
|
|
30242
|
-
watch(
|
|
30631
|
+
watch(computeScrollXVisible, () => {
|
|
30632
|
+
reScrollFlag.value++;
|
|
30243
30633
|
reLayoutFlag.value++;
|
|
30244
30634
|
});
|
|
30245
|
-
watch(() => {
|
|
30246
|
-
|
|
30247
|
-
return scrollbarXOpts.visible;
|
|
30248
|
-
}, () => {
|
|
30635
|
+
watch(computeScrollYVisible, () => {
|
|
30636
|
+
reScrollFlag.value++;
|
|
30249
30637
|
reLayoutFlag.value++;
|
|
30250
30638
|
});
|
|
30251
|
-
watch(() => {
|
|
30252
|
-
|
|
30253
|
-
return scrollbarYOpts.visible;
|
|
30254
|
-
}, () => {
|
|
30639
|
+
watch(computeScrollXHeight, () => {
|
|
30640
|
+
reScrollFlag.value++;
|
|
30255
30641
|
reLayoutFlag.value++;
|
|
30256
30642
|
});
|
|
30257
|
-
watch(() => {
|
|
30258
|
-
|
|
30259
|
-
|
|
30260
|
-
}
|
|
30643
|
+
watch(computeScrollYWidth, () => {
|
|
30644
|
+
reScrollFlag.value++;
|
|
30645
|
+
reLayoutFlag.value++;
|
|
30646
|
+
});
|
|
30647
|
+
watch(computeCellHeitht, () => {
|
|
30261
30648
|
reLayoutFlag.value++;
|
|
30262
30649
|
});
|
|
30263
30650
|
watch(reLayoutFlag, () => {
|
|
30264
30651
|
$xeTable.recalculate(true);
|
|
30265
30652
|
});
|
|
30653
|
+
watch(reScrollFlag, () => {
|
|
30654
|
+
nextTick(() => {
|
|
30655
|
+
$xeTable.updateScrollbar();
|
|
30656
|
+
nextTick(() => {
|
|
30657
|
+
$xeTable.updateScrollbar();
|
|
30658
|
+
});
|
|
30659
|
+
});
|
|
30660
|
+
});
|
|
30266
30661
|
const footFlag = ref(0);
|
|
30267
30662
|
watch(() => props.footerData ? props.footerData.length : -1, () => {
|
|
30268
30663
|
footFlag.value++;
|
|
@@ -30378,7 +30773,6 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30378
30773
|
}
|
|
30379
30774
|
});
|
|
30380
30775
|
$xeTable.preventEvent(null, 'created', { $table: $xeTable });
|
|
30381
|
-
let resizeObserver;
|
|
30382
30776
|
onActivated(() => {
|
|
30383
30777
|
$xeTable.recalculate().then(() => $xeTable.refreshScroll());
|
|
30384
30778
|
$xeTable.preventEvent(null, 'activated', { $table: $xeTable });
|
|
@@ -30394,7 +30788,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30394
30788
|
});
|
|
30395
30789
|
onMounted(() => {
|
|
30396
30790
|
const { editConfig, exportConfig, importConfig, treeConfig, minHeight, keepSource, areaConfig } = props;
|
|
30397
|
-
const { scrollXStore, scrollYStore } = internalData;
|
|
30791
|
+
const { elemStore, scrollXStore, scrollYStore } = internalData;
|
|
30398
30792
|
const columnOpts = computeColumnOpts.value;
|
|
30399
30793
|
const columnDragOpts = computeColumnDragOpts.value;
|
|
30400
30794
|
const aggregateOpts = computeAggregateOpts.value;
|
|
@@ -30667,12 +31061,26 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30667
31061
|
handleUpdateRowGroup(groupFields);
|
|
30668
31062
|
initData();
|
|
30669
31063
|
nextTick(() => {
|
|
30670
|
-
|
|
30671
|
-
|
|
31064
|
+
const { useScrollbar, autoResize } = props;
|
|
31065
|
+
const el = refElem.value;
|
|
31066
|
+
if (useScrollbar) {
|
|
31067
|
+
const viewInnerEl = getRefElem(elemStore['main-body-table']);
|
|
31068
|
+
const scrollObserver = globalResize.create(() => {
|
|
31069
|
+
reScrollFlag.value++;
|
|
31070
|
+
});
|
|
31071
|
+
if (el) {
|
|
31072
|
+
scrollObserver.observe(el);
|
|
31073
|
+
}
|
|
31074
|
+
if (viewInnerEl) {
|
|
31075
|
+
scrollObserver.observe(viewInnerEl);
|
|
31076
|
+
}
|
|
31077
|
+
internalData.scrollObserver = scrollObserver;
|
|
31078
|
+
}
|
|
31079
|
+
if (autoResize) {
|
|
30672
31080
|
const parentEl = $xeTable.getParentElem();
|
|
30673
|
-
resizeObserver = globalResize.create(() => {
|
|
31081
|
+
const resizeObserver = globalResize.create(() => {
|
|
30674
31082
|
if (props.autoResize) {
|
|
30675
|
-
|
|
31083
|
+
handleResizeEvent();
|
|
30676
31084
|
}
|
|
30677
31085
|
});
|
|
30678
31086
|
if (el) {
|
|
@@ -30681,6 +31089,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30681
31089
|
if (parentEl) {
|
|
30682
31090
|
resizeObserver.observe(parentEl);
|
|
30683
31091
|
}
|
|
31092
|
+
internalData.resizeObserver = resizeObserver;
|
|
30684
31093
|
}
|
|
30685
31094
|
});
|
|
30686
31095
|
if (virtualYOpts.mode !== 'scroll') {
|
|
@@ -30702,7 +31111,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30702
31111
|
$xeTable.preventEvent(null, 'mounted', { $table: $xeTable });
|
|
30703
31112
|
});
|
|
30704
31113
|
onBeforeUnmount(() => {
|
|
30705
|
-
const { _sToTime } = internalData;
|
|
31114
|
+
const { resizeObserver, scrollObserver, _sToTime } = internalData;
|
|
30706
31115
|
if (_sToTime) {
|
|
30707
31116
|
clearTimeout(_sToTime);
|
|
30708
31117
|
}
|
|
@@ -30713,6 +31122,9 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30713
31122
|
internalData.cvCacheMaps = {};
|
|
30714
31123
|
internalData.prevDragRow = null;
|
|
30715
31124
|
internalData.prevDragCol = null;
|
|
31125
|
+
if (scrollObserver) {
|
|
31126
|
+
scrollObserver.disconnect();
|
|
31127
|
+
}
|
|
30716
31128
|
if (resizeObserver) {
|
|
30717
31129
|
resizeObserver.disconnect();
|
|
30718
31130
|
}
|