vxe-pc-ui 4.19.8 → 4.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/all.esm.js +318 -19
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/list/src/list.js +317 -17
- package/es/list/style.css +26 -0
- package/es/list/style.min.css +1 -1
- package/es/scrollbar/style.css +1 -0
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/ui/src/utils.js +9 -0
- package/es/vxe-list/style.css +26 -0
- package/es/vxe-list/style.min.css +1 -1
- package/es/vxe-scrollbar/style.css +1 -0
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +336 -18
- package/lib/index.umd.min.js +1 -1
- package/lib/list/src/list.js +328 -19
- package/lib/list/src/list.min.js +1 -1
- package/lib/list/style/style.css +26 -0
- package/lib/list/style/style.min.css +1 -1
- package/lib/scrollbar/style/style.css +1 -0
- package/lib/style.css +1 -1
- package/lib/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/ui/src/utils.js +10 -0
- package/lib/ui/src/utils.min.js +1 -1
- package/lib/vxe-list/style/style.css +26 -0
- package/lib/vxe-list/style/style.min.css +1 -1
- package/lib/vxe-scrollbar/style/style.css +1 -0
- package/package.json +1 -1
- package/packages/list/src/list.ts +345 -17
- package/packages/ui/src/utils.ts +10 -0
- package/styles/components/list.scss +51 -0
- package/styles/components/scrollbar.scss +3 -0
- package/types/components/card.d.ts +1 -1
- package/types/components/layout-aside.d.ts +1 -1
- package/types/components/layout-body.d.ts +1 -1
- package/types/components/list.d.ts +24 -2
- package/types/components/table-plugins/extend-cell-area.d.ts +1 -1
- package/types/components/table.d.ts +24 -0
- package/types/components/tabs.d.ts +1 -1
- /package/es/icon/{iconfont.1791862962954.ttf → iconfont.1791880413927.ttf} +0 -0
- /package/es/icon/{iconfont.1791862962954.woff → iconfont.1791880413927.woff} +0 -0
- /package/es/icon/{iconfont.1791862962954.woff2 → iconfont.1791880413927.woff2} +0 -0
- /package/es/{iconfont.1791862962954.ttf → iconfont.1791880413927.ttf} +0 -0
- /package/es/{iconfont.1791862962954.woff → iconfont.1791880413927.woff} +0 -0
- /package/es/{iconfont.1791862962954.woff2 → iconfont.1791880413927.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1791862962954.ttf → iconfont.1791880413927.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1791862962954.woff → iconfont.1791880413927.woff} +0 -0
- /package/lib/icon/style/{iconfont.1791862962954.woff2 → iconfont.1791880413927.woff2} +0 -0
- /package/lib/{iconfont.1791862962954.ttf → iconfont.1791880413927.ttf} +0 -0
- /package/lib/{iconfont.1791862962954.woff → iconfont.1791880413927.woff} +0 -0
- /package/lib/{iconfont.1791862962954.woff2 → iconfont.1791880413927.woff2} +0 -0
package/dist/all.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as core from '@vxe-ui/core';
|
|
2
|
-
import { VxeUI, setConfig as setConfig$1, setIcon, getConfig as getConfig$4, createEvent as createEvent$1, getIcon as getIcon$2, renderEmptyElement as renderEmptyElement$1, useSize, globalEvents as globalEvents$1, usePermission, permission, renderer, getI18n as getI18n$2, globalResize as globalResize$1, menus as menus$3, GLOBAL_EVENT_KEYS, getSlotVNs as getSlotVNs$1, commands, formats, getComponent, validators } from '@vxe-ui/core';
|
|
2
|
+
import { VxeUI, setConfig as setConfig$1, setIcon, getConfig as getConfig$4, createEvent as createEvent$1, getIcon as getIcon$2, renderEmptyElement as renderEmptyElement$1, useSize, globalEvents as globalEvents$1, usePermission, permission, renderer, getI18n as getI18n$2, domUtils as domUtils$1, globalResize as globalResize$1, menus as menus$3, GLOBAL_EVENT_KEYS, getSlotVNs as getSlotVNs$1, commands, formats, getComponent, validators } from '@vxe-ui/core';
|
|
3
3
|
export * from '@vxe-ui/core';
|
|
4
4
|
import { defineComponent, ref, reactive, h, createCommentVNode, createApp, inject, computed, watch, onMounted, onUnmounted, provide, nextTick, onBeforeUnmount, resolveComponent, Teleport, onActivated, onDeactivated, TransitionGroup } from 'vue';
|
|
5
5
|
import XEUtils from 'xe-utils';
|
|
@@ -101,7 +101,7 @@ function checkDynamic() {
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
const { log } = VxeUI;
|
|
104
|
-
const uiVersion = `ui v${"4.
|
|
104
|
+
const uiVersion = `ui v${"4.20.0"}`;
|
|
105
105
|
function createComponentLog(name) {
|
|
106
106
|
const tableVersion = VxeUI.tableVersion ? `table v${VxeUI.tableVersion}` : '';
|
|
107
107
|
const ganttVersion = VxeUI.ganttVersion ? `gantt v${VxeUI.ganttVersion}` : '';
|
|
@@ -115,7 +115,7 @@ function createComponentLog(name) {
|
|
|
115
115
|
const warnLog$j = log.create('warn', uiVersion);
|
|
116
116
|
log.create('error', uiVersion);
|
|
117
117
|
|
|
118
|
-
const version = "4.
|
|
118
|
+
const version = "4.20.0";
|
|
119
119
|
VxeUI.uiVersion = version;
|
|
120
120
|
VxeUI.dynamicApp = dynamicApp;
|
|
121
121
|
function config(options) {
|
|
@@ -7787,6 +7787,9 @@ function createReactData$m() {
|
|
|
7787
7787
|
updateCheckboxFlag: 1,
|
|
7788
7788
|
isAllChecked: false,
|
|
7789
7789
|
isAllIndeterminate: false,
|
|
7790
|
+
// 滚动条
|
|
7791
|
+
yThumbHeight: 0,
|
|
7792
|
+
xThumbWidth: 0,
|
|
7790
7793
|
insertRowFlag: 1,
|
|
7791
7794
|
removeRowFlag: 1,
|
|
7792
7795
|
dragRow: null,
|
|
@@ -7796,13 +7799,18 @@ function createReactData$m() {
|
|
|
7796
7799
|
}
|
|
7797
7800
|
function createInternalData$l() {
|
|
7798
7801
|
return {
|
|
7799
|
-
resizeObserver: undefined,
|
|
7800
7802
|
fullData: [],
|
|
7801
7803
|
afterList: [],
|
|
7802
7804
|
fullKeyMaps: {},
|
|
7803
7805
|
rowMaps: {},
|
|
7804
|
-
|
|
7806
|
+
// 滚动条
|
|
7807
|
+
// resizeObserver: undefined,
|
|
7808
|
+
// isThumbDrag: false,
|
|
7809
|
+
thumbDragOffset: 0,
|
|
7810
|
+
yThumbTop: 0,
|
|
7811
|
+
xThumbLeft: 0,
|
|
7805
7812
|
lastScrollTop: 0,
|
|
7813
|
+
lastScrollLeft: 0,
|
|
7806
7814
|
scrollYStore: {
|
|
7807
7815
|
startIndex: 0,
|
|
7808
7816
|
endIndex: 0,
|
|
@@ -7856,7 +7864,12 @@ var VxeListComponent = defineVxeComponent({
|
|
|
7856
7864
|
dragConfig: Object,
|
|
7857
7865
|
menuConfig: Object,
|
|
7858
7866
|
virtualYConfig: Object,
|
|
7859
|
-
scrollY: Object
|
|
7867
|
+
scrollY: Object,
|
|
7868
|
+
useScrollbar: {
|
|
7869
|
+
type: Boolean,
|
|
7870
|
+
default: () => getConfig$4().list.useScrollbar
|
|
7871
|
+
},
|
|
7872
|
+
scrollbarConfig: Object
|
|
7860
7873
|
},
|
|
7861
7874
|
emits: [
|
|
7862
7875
|
'update:checkRowKey',
|
|
@@ -7889,6 +7902,11 @@ var VxeListComponent = defineVxeComponent({
|
|
|
7889
7902
|
const refFooterElem = ref();
|
|
7890
7903
|
const refVirtualWrapper = ref();
|
|
7891
7904
|
const refVirtualBody = ref();
|
|
7905
|
+
const refViewInnerElem = ref();
|
|
7906
|
+
const refTrackXElem = ref();
|
|
7907
|
+
const refTrackYElem = ref();
|
|
7908
|
+
const refThumbXElem = ref();
|
|
7909
|
+
const refThumbYElem = ref();
|
|
7892
7910
|
const refDragRowLineElem = ref();
|
|
7893
7911
|
const refDragTipElem = ref();
|
|
7894
7912
|
const refMaps = {
|
|
@@ -7937,11 +7955,19 @@ var VxeListComponent = defineVxeComponent({
|
|
|
7937
7955
|
});
|
|
7938
7956
|
const computeWrapperStyles = computed(() => {
|
|
7939
7957
|
const rowHeight = computeRowHeight.value;
|
|
7940
|
-
const
|
|
7958
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
7959
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
7960
|
+
const stys = {};
|
|
7941
7961
|
if (rowHeight) {
|
|
7942
|
-
|
|
7962
|
+
stys['--vxe-ui-list-row-height'] = toCssUnit(rowHeight);
|
|
7943
7963
|
}
|
|
7944
|
-
|
|
7964
|
+
if (scrollbarYOpts.width) {
|
|
7965
|
+
stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(scrollbarYOpts.width);
|
|
7966
|
+
}
|
|
7967
|
+
if (scrollbarXOpts.height) {
|
|
7968
|
+
stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(scrollbarXOpts.height);
|
|
7969
|
+
}
|
|
7970
|
+
return stys;
|
|
7945
7971
|
});
|
|
7946
7972
|
const computeVirtualStyles = computed(() => {
|
|
7947
7973
|
const { height, maxHeight } = props;
|
|
@@ -7956,6 +7982,47 @@ var VxeListComponent = defineVxeComponent({
|
|
|
7956
7982
|
}
|
|
7957
7983
|
return style;
|
|
7958
7984
|
});
|
|
7985
|
+
const computeScrollbarOpts = computed(() => {
|
|
7986
|
+
return Object.assign({}, getConfig$4().list.scrollbarConfig, props.scrollbarConfig);
|
|
7987
|
+
});
|
|
7988
|
+
const computeScrollbarXOpts = computed(() => {
|
|
7989
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
7990
|
+
return Object.assign({}, getConfig$4().scrollbar.xConfig, scrollbarOpts.xConfig);
|
|
7991
|
+
});
|
|
7992
|
+
const computeScrollbarYOpts = computed(() => {
|
|
7993
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
7994
|
+
return Object.assign({}, getConfig$4().scrollbar.yConfig, scrollbarOpts.yConfig);
|
|
7995
|
+
});
|
|
7996
|
+
const computeScrollbarWrapperClss = computed(() => {
|
|
7997
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
7998
|
+
const { padding } = scrollbarOpts;
|
|
7999
|
+
const { yThumbHeight, xThumbWidth } = reactData;
|
|
8000
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
8001
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
8002
|
+
const scrollbarXToTop = computeScrollbarXToTop.value;
|
|
8003
|
+
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
8004
|
+
return domUtils$1.buildClass([
|
|
8005
|
+
'vxe-scrollbar is--virtual',
|
|
8006
|
+
`ov-x--${scrollbarXOpts.visible || 'visible'}`,
|
|
8007
|
+
`ov-y--${scrollbarYOpts.visible || 'visible'}`,
|
|
8008
|
+
`sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
|
|
8009
|
+
`sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
|
|
8010
|
+
], {
|
|
8011
|
+
'is--padding': padding,
|
|
8012
|
+
'ov-x--auto-hide': scrollbarXOpts.autoHide,
|
|
8013
|
+
'ov-y--auto-hide': scrollbarYOpts.autoHide,
|
|
8014
|
+
'overflow-y': yThumbHeight,
|
|
8015
|
+
'overflow-x': xThumbWidth
|
|
8016
|
+
});
|
|
8017
|
+
});
|
|
8018
|
+
const computeScrollbarXToTop = computed(() => {
|
|
8019
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
8020
|
+
return scrollbarXOpts.position === 'top';
|
|
8021
|
+
});
|
|
8022
|
+
const computeScrollbarYToLeft = computed(() => {
|
|
8023
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
8024
|
+
return scrollbarYOpts.position === 'left';
|
|
8025
|
+
});
|
|
7959
8026
|
const dispatchEvent = (type, params, evnt) => {
|
|
7960
8027
|
emit(type, createEvent$1(evnt, { $list: $xeList }, params));
|
|
7961
8028
|
};
|
|
@@ -8112,6 +8179,7 @@ var VxeListComponent = defineVxeComponent({
|
|
|
8112
8179
|
*/
|
|
8113
8180
|
const refreshScroll = () => {
|
|
8114
8181
|
const { lastScrollLeft, lastScrollTop } = internalData;
|
|
8182
|
+
updateScrollbar();
|
|
8115
8183
|
return clearScroll().then(() => {
|
|
8116
8184
|
if (lastScrollLeft || lastScrollTop) {
|
|
8117
8185
|
internalData.lastScrollLeft = 0;
|
|
@@ -8120,6 +8188,10 @@ var VxeListComponent = defineVxeComponent({
|
|
|
8120
8188
|
}
|
|
8121
8189
|
});
|
|
8122
8190
|
};
|
|
8191
|
+
const updateScrollbar = () => {
|
|
8192
|
+
updateThumbSize();
|
|
8193
|
+
updateThumbOffset();
|
|
8194
|
+
};
|
|
8123
8195
|
/**
|
|
8124
8196
|
* 重新计算列表
|
|
8125
8197
|
*/
|
|
@@ -8137,6 +8209,7 @@ var VxeListComponent = defineVxeComponent({
|
|
|
8137
8209
|
parentHeight = parentEl.clientHeight - Math.ceil(XEUtils.toNumber(parentStyle.paddingLeft) + XEUtils.toNumber(parentStyle.paddingRight));
|
|
8138
8210
|
}
|
|
8139
8211
|
reactData.parentHeight = parentHeight;
|
|
8212
|
+
updateScrollbar();
|
|
8140
8213
|
updateHeight();
|
|
8141
8214
|
if (el.clientWidth && el.clientHeight) {
|
|
8142
8215
|
return computeScrollLoad();
|
|
@@ -8166,6 +8239,7 @@ var VxeListComponent = defineVxeComponent({
|
|
|
8166
8239
|
const scrollLeft = scrollBodyElem.scrollLeft;
|
|
8167
8240
|
const isX = scrollLeft !== internalData.lastScrollLeft;
|
|
8168
8241
|
const isY = scrollTop !== internalData.lastScrollTop;
|
|
8242
|
+
updateThumbOffset();
|
|
8169
8243
|
internalData.lastScrollTop = scrollTop;
|
|
8170
8244
|
internalData.lastScrollLeft = scrollLeft;
|
|
8171
8245
|
if (reactData.scrollYLoad) {
|
|
@@ -9462,6 +9536,162 @@ var VxeListComponent = defineVxeComponent({
|
|
|
9462
9536
|
hideDropTip();
|
|
9463
9537
|
}
|
|
9464
9538
|
};
|
|
9539
|
+
const updateThumbSize = () => {
|
|
9540
|
+
const viewEl = refVirtualWrapper.value;
|
|
9541
|
+
if (!viewEl) {
|
|
9542
|
+
return;
|
|
9543
|
+
}
|
|
9544
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
9545
|
+
return;
|
|
9546
|
+
}
|
|
9547
|
+
const trackXEl = refTrackXElem.value;
|
|
9548
|
+
const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
|
|
9549
|
+
const thumbXElem = refThumbXElem.value;
|
|
9550
|
+
if (thumbXElem) {
|
|
9551
|
+
thumbXElem.style.width = xThumbWidth + 'px';
|
|
9552
|
+
}
|
|
9553
|
+
reactData.xThumbWidth = xThumbWidth;
|
|
9554
|
+
const trackYEl = refTrackYElem.value;
|
|
9555
|
+
const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
|
|
9556
|
+
const thumbYElem = refThumbYElem.value;
|
|
9557
|
+
if (thumbYElem) {
|
|
9558
|
+
thumbYElem.style.height = yThumbHeight + 'px';
|
|
9559
|
+
}
|
|
9560
|
+
reactData.yThumbHeight = yThumbHeight;
|
|
9561
|
+
};
|
|
9562
|
+
const updateThumbOffset = () => {
|
|
9563
|
+
const viewEl = refVirtualWrapper.value;
|
|
9564
|
+
if (!viewEl) {
|
|
9565
|
+
return;
|
|
9566
|
+
}
|
|
9567
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
9568
|
+
return;
|
|
9569
|
+
}
|
|
9570
|
+
const { xThumbWidth, yThumbHeight } = reactData;
|
|
9571
|
+
const trackXEl = refTrackXElem.value;
|
|
9572
|
+
const thumbXElem = refThumbXElem.value;
|
|
9573
|
+
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
|
|
9574
|
+
internalData.xThumbLeft = xThumbLeft;
|
|
9575
|
+
if (thumbXElem && xThumbWidth) {
|
|
9576
|
+
thumbXElem.style.width = xThumbWidth + 'px';
|
|
9577
|
+
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
|
|
9578
|
+
}
|
|
9579
|
+
const trackYEl = refTrackYElem.value;
|
|
9580
|
+
const thumbYElem = refThumbYElem.value;
|
|
9581
|
+
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
|
|
9582
|
+
internalData.yThumbTop = yThumbTop;
|
|
9583
|
+
if (thumbYElem && yThumbHeight) {
|
|
9584
|
+
thumbYElem.style.height = yThumbHeight + 'px';
|
|
9585
|
+
thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
|
|
9586
|
+
}
|
|
9587
|
+
};
|
|
9588
|
+
const clickTrackXEvent = (evnt) => {
|
|
9589
|
+
const trackEl = evnt.currentTarget;
|
|
9590
|
+
if (trackEl !== evnt.target) {
|
|
9591
|
+
return;
|
|
9592
|
+
}
|
|
9593
|
+
const viewEl = refVirtualWrapper.value;
|
|
9594
|
+
if (!viewEl) {
|
|
9595
|
+
return;
|
|
9596
|
+
}
|
|
9597
|
+
const { xThumbWidth } = reactData;
|
|
9598
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
9599
|
+
viewEl.scrollTo({
|
|
9600
|
+
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
9601
|
+
behavior: 'auto'
|
|
9602
|
+
});
|
|
9603
|
+
};
|
|
9604
|
+
const clickTrackYEvent = (evnt) => {
|
|
9605
|
+
const trackEl = evnt.currentTarget;
|
|
9606
|
+
if (trackEl !== evnt.target) {
|
|
9607
|
+
return;
|
|
9608
|
+
}
|
|
9609
|
+
const viewEl = refVirtualWrapper.value;
|
|
9610
|
+
if (!viewEl) {
|
|
9611
|
+
return;
|
|
9612
|
+
}
|
|
9613
|
+
const { yThumbHeight } = reactData;
|
|
9614
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
9615
|
+
viewEl.scrollTo({
|
|
9616
|
+
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
9617
|
+
behavior: 'auto'
|
|
9618
|
+
});
|
|
9619
|
+
};
|
|
9620
|
+
const pointerdownThumbXEvent = (evnt) => {
|
|
9621
|
+
const thumbEl = evnt.currentTarget;
|
|
9622
|
+
internalData.isThumbDrag = true;
|
|
9623
|
+
thumbEl.setPointerCapture(evnt.pointerId);
|
|
9624
|
+
const viewEl = refVirtualWrapper.value;
|
|
9625
|
+
if (!viewEl) {
|
|
9626
|
+
return;
|
|
9627
|
+
}
|
|
9628
|
+
const { xThumbWidth } = reactData;
|
|
9629
|
+
const trackEl = thumbEl.parentElement;
|
|
9630
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
9631
|
+
const pointerPosition = evnt.clientX - trackRect.left;
|
|
9632
|
+
// 记录 thumb 的偏移
|
|
9633
|
+
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
9634
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
9635
|
+
};
|
|
9636
|
+
const pointermoveThumbXEvent = (evnt) => {
|
|
9637
|
+
const thumbEl = evnt.currentTarget;
|
|
9638
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
9639
|
+
return;
|
|
9640
|
+
}
|
|
9641
|
+
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
9642
|
+
if (isThumbDrag) {
|
|
9643
|
+
const viewEl = refVirtualWrapper.value;
|
|
9644
|
+
if (!viewEl) {
|
|
9645
|
+
return;
|
|
9646
|
+
}
|
|
9647
|
+
const { xThumbWidth } = reactData;
|
|
9648
|
+
const thumbEl = evnt.currentTarget;
|
|
9649
|
+
const trackEl = thumbEl.parentElement;
|
|
9650
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
9651
|
+
// 更新偏移
|
|
9652
|
+
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
9653
|
+
}
|
|
9654
|
+
};
|
|
9655
|
+
const cleatPointerThumbEvent = (evnt) => {
|
|
9656
|
+
const thumbEl = evnt.currentTarget;
|
|
9657
|
+
thumbEl.releasePointerCapture(evnt.pointerId);
|
|
9658
|
+
internalData.isThumbDrag = false;
|
|
9659
|
+
};
|
|
9660
|
+
const pointerdownThumbYEvent = (evnt) => {
|
|
9661
|
+
const thumbEl = evnt.currentTarget;
|
|
9662
|
+
internalData.isThumbDrag = true;
|
|
9663
|
+
thumbEl.setPointerCapture(evnt.pointerId);
|
|
9664
|
+
const viewEl = refVirtualWrapper.value;
|
|
9665
|
+
if (!viewEl) {
|
|
9666
|
+
return;
|
|
9667
|
+
}
|
|
9668
|
+
const { yThumbHeight } = reactData;
|
|
9669
|
+
const trackEl = thumbEl.parentElement;
|
|
9670
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
9671
|
+
const pointerPosition = evnt.clientY - trackRect.top;
|
|
9672
|
+
// 记录 thumb 的偏移
|
|
9673
|
+
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
9674
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
9675
|
+
};
|
|
9676
|
+
const pointermoveThumbYEvent = (evnt) => {
|
|
9677
|
+
const thumbEl = evnt.currentTarget;
|
|
9678
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
9679
|
+
return;
|
|
9680
|
+
}
|
|
9681
|
+
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
9682
|
+
if (isThumbDrag) {
|
|
9683
|
+
const viewEl = refVirtualWrapper.value;
|
|
9684
|
+
if (!viewEl) {
|
|
9685
|
+
return;
|
|
9686
|
+
}
|
|
9687
|
+
const { yThumbHeight } = reactData;
|
|
9688
|
+
const thumbEl = evnt.currentTarget;
|
|
9689
|
+
const trackEl = thumbEl.parentElement;
|
|
9690
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
9691
|
+
// 更新偏移
|
|
9692
|
+
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
9693
|
+
}
|
|
9694
|
+
};
|
|
9465
9695
|
Object.assign($xeList, listMethods, listPrivateMethods);
|
|
9466
9696
|
const renderDragTip = () => {
|
|
9467
9697
|
const { dragRow, dragTipText } = reactData;
|
|
@@ -9658,7 +9888,7 @@ var VxeListComponent = defineVxeComponent({
|
|
|
9658
9888
|
}], rowid: hasKey && keyField ? rowid : undefined }, rowOns), ctVNs);
|
|
9659
9889
|
};
|
|
9660
9890
|
const renderVN = () => {
|
|
9661
|
-
const { showCheckbox, className, loading } = props;
|
|
9891
|
+
const { showCheckbox, className, loading, useScrollbar } = props;
|
|
9662
9892
|
const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate } = reactData;
|
|
9663
9893
|
const defaultSlot = slots.default;
|
|
9664
9894
|
const headerSlot = slots.header;
|
|
@@ -9674,6 +9904,9 @@ var VxeListComponent = defineVxeComponent({
|
|
|
9674
9904
|
const rowOpts = computeRowOpts.value;
|
|
9675
9905
|
const { isHover, padding } = rowOpts;
|
|
9676
9906
|
const isDrag = computeIsDrag.value;
|
|
9907
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
9908
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
9909
|
+
const scrollbarWrapperClss = computeScrollbarWrapperClss.value;
|
|
9677
9910
|
const showDefChekboxHead = showCheckbox && showHeader !== false;
|
|
9678
9911
|
const leOns = {};
|
|
9679
9912
|
if (isCrossListDrag && !rowList.length) {
|
|
@@ -9681,6 +9914,9 @@ var VxeListComponent = defineVxeComponent({
|
|
|
9681
9914
|
}
|
|
9682
9915
|
return h('div', Object.assign({ ref: refElem, class: ['vxe-list', className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '', {
|
|
9683
9916
|
[`size--${vSize}`]: vSize,
|
|
9917
|
+
'is--virtual-scrollbar': useScrollbar,
|
|
9918
|
+
'ov-x--auto-hide': useScrollbar && scrollbarXOpts.autoHide,
|
|
9919
|
+
'ov-y--auto-hide': useScrollbar && scrollbarYOpts.autoHide,
|
|
9684
9920
|
'is--drag': isDrag,
|
|
9685
9921
|
'is--loading': loading
|
|
9686
9922
|
}], style: wrapperStyles }, leOns), [
|
|
@@ -9740,7 +9976,15 @@ var VxeListComponent = defineVxeComponent({
|
|
|
9740
9976
|
style: {
|
|
9741
9977
|
marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ''
|
|
9742
9978
|
}
|
|
9743
|
-
},
|
|
9979
|
+
}, useScrollbar
|
|
9980
|
+
? (defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i)))
|
|
9981
|
+
: [
|
|
9982
|
+
h('div', {
|
|
9983
|
+
key: 'vi',
|
|
9984
|
+
ref: refViewInnerElem,
|
|
9985
|
+
class: 'vxe-scrollbar--view-inner'
|
|
9986
|
+
}, defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i)))
|
|
9987
|
+
])
|
|
9744
9988
|
]),
|
|
9745
9989
|
footerSlot
|
|
9746
9990
|
? h('div', {
|
|
@@ -9748,6 +9992,49 @@ var VxeListComponent = defineVxeComponent({
|
|
|
9748
9992
|
class: 'vxe-list--footer-wrapper'
|
|
9749
9993
|
}, footerSlot({ items: rowList, $list: $xeList }))
|
|
9750
9994
|
: renderEmptyElement$1($xeList),
|
|
9995
|
+
/**
|
|
9996
|
+
* 滚动条
|
|
9997
|
+
*/
|
|
9998
|
+
useScrollbar
|
|
9999
|
+
? h('div', {
|
|
10000
|
+
class: scrollbarWrapperClss
|
|
10001
|
+
}, [
|
|
10002
|
+
scrollbarXOpts.visible === 'hidden'
|
|
10003
|
+
? renderEmptyElement$1($xeList)
|
|
10004
|
+
: h('div', {
|
|
10005
|
+
ref: refTrackXElem,
|
|
10006
|
+
class: 'vxe-scrollbar--track-x',
|
|
10007
|
+
onClick: clickTrackXEvent
|
|
10008
|
+
}, [
|
|
10009
|
+
h('div', {
|
|
10010
|
+
ref: refThumbXElem,
|
|
10011
|
+
class: 'vxe-scrollbar--thumb-x',
|
|
10012
|
+
onPointerdown: pointerdownThumbXEvent,
|
|
10013
|
+
onPointermove: pointermoveThumbXEvent,
|
|
10014
|
+
onPointerup: cleatPointerThumbEvent,
|
|
10015
|
+
onPointercancel: cleatPointerThumbEvent,
|
|
10016
|
+
onLostpointercapture: cleatPointerThumbEvent
|
|
10017
|
+
})
|
|
10018
|
+
]),
|
|
10019
|
+
scrollbarYOpts.visible === 'hidden'
|
|
10020
|
+
? renderEmptyElement$1($xeList)
|
|
10021
|
+
: h('div', {
|
|
10022
|
+
ref: refTrackYElem,
|
|
10023
|
+
class: 'vxe-scrollbar--track-y',
|
|
10024
|
+
onClick: clickTrackYEvent
|
|
10025
|
+
}, [
|
|
10026
|
+
h('div', {
|
|
10027
|
+
ref: refThumbYElem,
|
|
10028
|
+
class: 'vxe-scrollbar--thumb-y',
|
|
10029
|
+
onPointerdown: pointerdownThumbYEvent,
|
|
10030
|
+
onPointermove: pointermoveThumbYEvent,
|
|
10031
|
+
onPointerup: cleatPointerThumbEvent,
|
|
10032
|
+
onPointercancel: cleatPointerThumbEvent,
|
|
10033
|
+
onLostpointercapture: cleatPointerThumbEvent
|
|
10034
|
+
})
|
|
10035
|
+
])
|
|
10036
|
+
])
|
|
10037
|
+
: renderEmptyElement$1($xeList),
|
|
9751
10038
|
/**
|
|
9752
10039
|
* 拖拽提示
|
|
9753
10040
|
*/
|
|
@@ -9803,13 +10090,15 @@ var VxeListComponent = defineVxeComponent({
|
|
|
9803
10090
|
updateCheckboxModeValue();
|
|
9804
10091
|
});
|
|
9805
10092
|
onActivated(() => {
|
|
9806
|
-
recalculate().then(() =>
|
|
10093
|
+
recalculate().then(() => {
|
|
10094
|
+
refreshScroll();
|
|
10095
|
+
});
|
|
9807
10096
|
});
|
|
9808
10097
|
nextTick(() => {
|
|
9809
10098
|
loadData(props.data || []);
|
|
9810
10099
|
});
|
|
9811
10100
|
onMounted(() => {
|
|
9812
|
-
const { showSeq, showRadio, showCheckbox } = props;
|
|
10101
|
+
const { showSeq, showRadio, showCheckbox, autoResize, useScrollbar } = props;
|
|
9813
10102
|
const rowOpts = computeRowOpts.value;
|
|
9814
10103
|
const { useKey } = rowOpts;
|
|
9815
10104
|
const isDrag = computeIsDrag.value;
|
|
@@ -9831,17 +10120,27 @@ var VxeListComponent = defineVxeComponent({
|
|
|
9831
10120
|
if (useKey && !keyField) {
|
|
9832
10121
|
errLog$j('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField']);
|
|
9833
10122
|
}
|
|
9834
|
-
if (
|
|
10123
|
+
if (useScrollbar || autoResize) {
|
|
9835
10124
|
const el = refElem.value;
|
|
9836
|
-
const
|
|
10125
|
+
const viewInnerEl = refViewInnerElem.value;
|
|
10126
|
+
const resizeObserver = globalResize$1.create(() => {
|
|
10127
|
+
reFlag.value++;
|
|
10128
|
+
});
|
|
9837
10129
|
resizeObserver.observe(el);
|
|
9838
|
-
if (
|
|
9839
|
-
|
|
10130
|
+
if (autoResize) {
|
|
10131
|
+
if (el) {
|
|
10132
|
+
resizeObserver.observe(el.parentElement);
|
|
10133
|
+
}
|
|
10134
|
+
}
|
|
10135
|
+
if (viewInnerEl) {
|
|
10136
|
+
resizeObserver.observe(viewInnerEl);
|
|
9840
10137
|
}
|
|
9841
10138
|
internalData.resizeObserver = resizeObserver;
|
|
9842
10139
|
}
|
|
9843
|
-
|
|
9844
|
-
globalEvents$1.on($xeList, 'resize',
|
|
10140
|
+
reFlag.value++;
|
|
10141
|
+
globalEvents$1.on($xeList, 'resize', () => {
|
|
10142
|
+
reFlag.value++;
|
|
10143
|
+
});
|
|
9845
10144
|
});
|
|
9846
10145
|
onBeforeUnmount(() => {
|
|
9847
10146
|
const { resizeObserver } = internalData;
|