vxe-pc-ui 4.20.8 → 4.20.10
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 +2041 -2125
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/card/src/card.js +8 -6
- package/es/date-panel/src/date-panel.js +58 -36
- package/es/date-panel/style.css +22 -20
- package/es/date-panel/style.min.css +1 -1
- package/es/drawer/src/drawer.js +7 -5
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +74 -38
- package/es/icon-picker/style.css +9 -3
- package/es/icon-picker/style.min.css +1 -1
- package/es/layout-aside/src/layout-aside.js +6 -4
- package/es/layout-body/src/layout-body.js +6 -4
- package/es/layout-container/src/layout-container.js +11 -3
- package/es/list/src/list.js +81 -208
- package/es/menu/src/menu.js +7 -5
- package/es/modal/src/modal.js +7 -5
- package/es/scrollbar/src/scrollbar.js +28 -173
- package/es/select/src/select.js +243 -8
- package/es/select/style.css +44 -0
- package/es/select/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tabs/src/tabs.js +5 -4
- package/es/tooltip/src/tooltip.js +7 -5
- package/es/tooltip/style.css +2 -0
- package/es/tooltip/style.min.css +1 -1
- package/es/tree/src/tree.js +86 -212
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-date-panel/style.css +22 -20
- package/es/vxe-date-panel/style.min.css +1 -1
- package/es/vxe-icon-picker/style.css +9 -3
- package/es/vxe-icon-picker/style.min.css +1 -1
- package/es/vxe-select/style.css +44 -0
- package/es/vxe-select/style.min.css +1 -1
- package/es/vxe-tooltip/style.css +2 -0
- package/es/vxe-tooltip/style.min.css +1 -1
- package/lib/card/src/card.js +9 -6
- package/lib/card/src/card.min.js +1 -1
- package/lib/date-panel/src/date-panel.js +56 -34
- package/lib/date-panel/src/date-panel.min.js +1 -1
- package/lib/date-panel/style/style.css +22 -20
- package/lib/date-panel/style/style.min.css +1 -1
- package/lib/drawer/src/drawer.js +7 -4
- package/lib/drawer/src/drawer.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/icon-picker/src/icon-picker.js +101 -45
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/icon-picker/style/style.css +9 -3
- package/lib/icon-picker/style/style.min.css +1 -1
- package/lib/index.umd.js +1049 -859
- package/lib/index.umd.min.js +1 -1
- package/lib/layout-aside/src/layout-aside.js +7 -4
- package/lib/layout-aside/src/layout-aside.min.js +1 -1
- package/lib/layout-body/src/layout-body.js +7 -4
- package/lib/layout-body/src/layout-body.min.js +1 -1
- package/lib/layout-container/src/layout-container.js +20 -4
- package/lib/layout-container/src/layout-container.min.js +1 -1
- package/lib/list/src/list.js +95 -232
- package/lib/list/src/list.min.js +1 -1
- package/lib/menu/src/menu.js +8 -4
- package/lib/menu/src/menu.min.js +1 -1
- package/lib/modal/src/modal.js +7 -4
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/scrollbar/src/scrollbar.js +42 -199
- package/lib/scrollbar/src/scrollbar.min.js +1 -1
- package/lib/select/src/select.js +315 -68
- package/lib/select/src/select.min.js +1 -1
- package/lib/select/style/style.css +44 -0
- package/lib/select/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tabs/src/tabs.js +6 -5
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tooltip/src/tooltip.js +7 -4
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/tooltip/style/style.css +2 -0
- package/lib/tooltip/style/style.min.css +1 -1
- package/lib/tree/src/tree.js +101 -235
- package/lib/tree/src/tree.min.js +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-date-panel/style/style.css +22 -20
- package/lib/vxe-date-panel/style/style.min.css +1 -1
- package/lib/vxe-icon-picker/style/style.css +9 -3
- package/lib/vxe-icon-picker/style/style.min.css +1 -1
- package/lib/vxe-select/style/style.css +44 -0
- package/lib/vxe-select/style/style.min.css +1 -1
- package/lib/vxe-tooltip/style/style.css +2 -0
- package/lib/vxe-tooltip/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/card/src/card.ts +8 -6
- package/packages/date-panel/src/date-panel.ts +58 -36
- package/packages/drawer/src/drawer.ts +7 -5
- package/packages/icon-picker/src/icon-picker.ts +80 -38
- package/packages/layout-aside/src/layout-aside.ts +6 -4
- package/packages/layout-body/src/layout-body.ts +6 -4
- package/packages/layout-container/src/layout-container.ts +13 -3
- package/packages/list/src/list.ts +98 -224
- package/packages/menu/src/menu.ts +7 -5
- package/packages/modal/src/modal.ts +7 -5
- package/packages/scrollbar/src/scrollbar.ts +44 -189
- package/packages/select/src/select.ts +278 -8
- package/packages/tabs/src/tabs.ts +5 -4
- package/packages/tooltip/src/tooltip.ts +7 -5
- package/packages/tree/src/tree.ts +103 -228
- package/styles/components/date-panel.scss +31 -29
- package/styles/components/icon-picker.scss +9 -3
- package/styles/components/select.scss +77 -0
- package/styles/components/tooltip.scss +1 -0
- package/types/components/card.d.ts +2 -2
- package/types/components/drawer.d.ts +2 -2
- package/types/components/gantt-module/gantt-view.d.ts +7 -16
- package/types/components/grid.d.ts +3 -1
- package/types/components/icon-picker.d.ts +21 -1
- package/types/components/layout-aside.d.ts +2 -2
- package/types/components/layout-body.d.ts +2 -2
- package/types/components/layout-container.d.ts +3 -1
- package/types/components/list.d.ts +6 -2
- package/types/components/menu.d.ts +2 -2
- package/types/components/modal.d.ts +2 -2
- package/types/components/scrollbar.d.ts +17 -14
- package/types/components/select.d.ts +28 -3
- package/types/components/table.d.ts +28 -22
- package/types/components/tabs.d.ts +2 -2
- package/types/components/tooltip.d.ts +2 -2
- package/types/components/tree.d.ts +8 -17
- /package/es/icon/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
- /package/es/icon/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
- /package/es/icon/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
- /package/es/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
- /package/es/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
- /package/es/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
- /package/lib/icon/style/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
- /package/lib/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
- /package/lib/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
- /package/lib/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
package/es/list/src/list.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { h, ref, computed, onBeforeUnmount, watch, reactive, nextTick, onActivated, onMounted } from 'vue';
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
3
3
|
import XEUtils from 'xe-utils';
|
|
4
|
-
import { VxeUI,
|
|
4
|
+
import { VxeUI, createEvent, renderEmptyElement } from '../../ui';
|
|
5
5
|
import { getCrossListDragRowInfo } from './store';
|
|
6
6
|
import { isScale, removeClass, addClass, getTpImg, toCssUnit, hasClass } from '../../ui/src/dom';
|
|
7
7
|
import { isEnableConf, getText, enModelValue, deModelValue, getDefaultConfig } from '../../ui/src/utils';
|
|
@@ -9,8 +9,7 @@ import { createComponentLog } from '../../ui/src/log';
|
|
|
9
9
|
import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime';
|
|
10
10
|
import { getItemCacheObj } from './util';
|
|
11
11
|
import VxeLoadingComponent from '../../loading';
|
|
12
|
-
const { getConfig, getIcon, getI18n, domUtils,
|
|
13
|
-
const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils;
|
|
12
|
+
const { getConfig, getIcon, getI18n, domUtils, useFns, menus, globalEvents, globalResize } = VxeUI;
|
|
14
13
|
const { warnLog, errLog } = createComponentLog('tree');
|
|
15
14
|
function getRowKeyByField(row, keyField) {
|
|
16
15
|
return row ? ('' + (row[keyField] || '')) : '';
|
|
@@ -145,7 +144,6 @@ export default defineVxeComponent({
|
|
|
145
144
|
const { slots, emit } = context;
|
|
146
145
|
const xID = XEUtils.uniqueId();
|
|
147
146
|
const browseObj = XEUtils.browse();
|
|
148
|
-
const { computeSize } = useSize(props);
|
|
149
147
|
const reactData = reactive(createReactData());
|
|
150
148
|
const internalData = createInternalData();
|
|
151
149
|
const crossListDragRowInfo = getCrossListDragRowInfo();
|
|
@@ -153,13 +151,12 @@ export default defineVxeComponent({
|
|
|
153
151
|
const refHeaderElem = ref();
|
|
154
152
|
const refFooterElem = ref();
|
|
155
153
|
const refVirtualWrapper = ref();
|
|
154
|
+
const refVirtualSpaceElem = ref();
|
|
156
155
|
const refVirtualBody = ref();
|
|
157
|
-
const refTrackXElem = ref();
|
|
158
|
-
const refTrackYElem = ref();
|
|
159
|
-
const refThumbXElem = ref();
|
|
160
|
-
const refThumbYElem = ref();
|
|
161
156
|
const refDragRowLineElem = ref();
|
|
162
157
|
const refDragTipElem = ref();
|
|
158
|
+
const { computeSize } = useFns.useSize(props);
|
|
159
|
+
const { computeIsVScrollbar } = useFns.useVScrollbar(props);
|
|
163
160
|
const refMaps = {
|
|
164
161
|
refElem
|
|
165
162
|
};
|
|
@@ -171,6 +168,7 @@ export default defineVxeComponent({
|
|
|
171
168
|
internalData,
|
|
172
169
|
getRefMaps: () => refMaps
|
|
173
170
|
};
|
|
171
|
+
const { refTrackXElem, refTrackYElem, refThumbXElem, refThumbYElem, updateThumbSize, updateThumbOffset, clickTrackXEvent, clickTrackYEvent, pointerdownThumbXEvent, pointermoveThumbXEvent, cleatPointerThumbEvent, pointerdownThumbYEvent, pointermoveThumbYEvent } = useFns.useInitVScrollbar($xeList);
|
|
174
172
|
const computeRowOpts = computed(() => {
|
|
175
173
|
return Object.assign({}, getConfig().list.rowConfig, props.rowConfig);
|
|
176
174
|
});
|
|
@@ -457,7 +455,6 @@ export default defineVxeComponent({
|
|
|
457
455
|
*/
|
|
458
456
|
const refreshScroll = () => {
|
|
459
457
|
const { lastScrollLeft, lastScrollTop } = internalData;
|
|
460
|
-
updateScrollbar();
|
|
461
458
|
return clearScroll().then(() => {
|
|
462
459
|
if (lastScrollLeft || lastScrollTop) {
|
|
463
460
|
internalData.lastScrollLeft = 0;
|
|
@@ -467,8 +464,14 @@ export default defineVxeComponent({
|
|
|
467
464
|
});
|
|
468
465
|
};
|
|
469
466
|
const updateScrollbar = () => {
|
|
470
|
-
|
|
471
|
-
|
|
467
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
468
|
+
if (isVScrollbar) {
|
|
469
|
+
return nextTick().then(() => {
|
|
470
|
+
updateThumbSize();
|
|
471
|
+
updateThumbOffset();
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
return Promise.resolve();
|
|
472
475
|
};
|
|
473
476
|
/**
|
|
474
477
|
* 重新计算列表
|
|
@@ -487,10 +490,11 @@ export default defineVxeComponent({
|
|
|
487
490
|
parentHeight = parentEl.clientHeight - Math.ceil(XEUtils.toNumber(parentStyle.paddingLeft) + XEUtils.toNumber(parentStyle.paddingRight));
|
|
488
491
|
}
|
|
489
492
|
reactData.parentHeight = parentHeight;
|
|
490
|
-
updateScrollbar();
|
|
491
493
|
updateHeight();
|
|
492
494
|
if (el.clientWidth && el.clientHeight) {
|
|
493
|
-
return computeScrollLoad()
|
|
495
|
+
return computeScrollLoad().then(() => {
|
|
496
|
+
updateScrollbar();
|
|
497
|
+
});
|
|
494
498
|
}
|
|
495
499
|
}
|
|
496
500
|
return nextTick();
|
|
@@ -498,7 +502,7 @@ export default defineVxeComponent({
|
|
|
498
502
|
const loadYData = (evnt) => {
|
|
499
503
|
const { scrollYStore } = internalData;
|
|
500
504
|
const { startIndex, endIndex, visibleSize, offsetSize, rowHeight } = scrollYStore;
|
|
501
|
-
const scrollBodyElem = evnt.
|
|
505
|
+
const scrollBodyElem = evnt.currentTarget;
|
|
502
506
|
const scrollTop = scrollBodyElem.scrollTop;
|
|
503
507
|
const toVisibleIndex = Math.floor(scrollTop / rowHeight);
|
|
504
508
|
const offsetStartIndex = Math.max(0, toVisibleIndex - 1 - offsetSize);
|
|
@@ -512,7 +516,7 @@ export default defineVxeComponent({
|
|
|
512
516
|
}
|
|
513
517
|
};
|
|
514
518
|
const scrollEvent = (evnt) => {
|
|
515
|
-
const scrollBodyElem = evnt.
|
|
519
|
+
const scrollBodyElem = evnt.currentTarget;
|
|
516
520
|
const scrollTop = scrollBodyElem.scrollTop;
|
|
517
521
|
const scrollLeft = scrollBodyElem.scrollLeft;
|
|
518
522
|
const isX = scrollLeft !== internalData.lastScrollLeft;
|
|
@@ -1487,6 +1491,10 @@ export default defineVxeComponent({
|
|
|
1487
1491
|
};
|
|
1488
1492
|
const listMethods = {
|
|
1489
1493
|
dispatchEvent,
|
|
1494
|
+
getScrollViewElem() {
|
|
1495
|
+
const viewEl = refVirtualWrapper.value;
|
|
1496
|
+
return viewEl || null;
|
|
1497
|
+
},
|
|
1490
1498
|
loadData,
|
|
1491
1499
|
/**
|
|
1492
1500
|
* 重新加载数据
|
|
@@ -1814,160 +1822,24 @@ export default defineVxeComponent({
|
|
|
1814
1822
|
hideDropTip();
|
|
1815
1823
|
}
|
|
1816
1824
|
};
|
|
1817
|
-
const
|
|
1818
|
-
const
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
const thumbYElem = refThumbYElem.value;
|
|
1835
|
-
if (thumbYElem) {
|
|
1836
|
-
thumbYElem.style.height = yThumbHeight + 'px';
|
|
1837
|
-
}
|
|
1838
|
-
reactData.yThumbHeight = yThumbHeight;
|
|
1839
|
-
};
|
|
1840
|
-
const updateThumbOffset = () => {
|
|
1841
|
-
const viewEl = refVirtualWrapper.value;
|
|
1842
|
-
if (!viewEl) {
|
|
1843
|
-
return;
|
|
1844
|
-
}
|
|
1845
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
1846
|
-
return;
|
|
1847
|
-
}
|
|
1848
|
-
const { xThumbWidth, yThumbHeight } = reactData;
|
|
1849
|
-
const trackXEl = refTrackXElem.value;
|
|
1850
|
-
const thumbXElem = refThumbXElem.value;
|
|
1851
|
-
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
|
|
1852
|
-
internalData.xThumbLeft = xThumbLeft;
|
|
1853
|
-
if (thumbXElem && xThumbWidth) {
|
|
1854
|
-
thumbXElem.style.width = xThumbWidth + 'px';
|
|
1855
|
-
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
|
|
1856
|
-
}
|
|
1857
|
-
const trackYEl = refTrackYElem.value;
|
|
1858
|
-
const thumbYElem = refThumbYElem.value;
|
|
1859
|
-
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
|
|
1860
|
-
internalData.yThumbTop = yThumbTop;
|
|
1861
|
-
if (thumbYElem && yThumbHeight) {
|
|
1862
|
-
thumbYElem.style.height = yThumbHeight + 'px';
|
|
1863
|
-
thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
|
|
1864
|
-
}
|
|
1865
|
-
};
|
|
1866
|
-
const clickTrackXEvent = (evnt) => {
|
|
1867
|
-
const trackEl = evnt.currentTarget;
|
|
1868
|
-
if (trackEl !== evnt.target) {
|
|
1869
|
-
return;
|
|
1870
|
-
}
|
|
1871
|
-
const viewEl = refVirtualWrapper.value;
|
|
1872
|
-
if (!viewEl) {
|
|
1873
|
-
return;
|
|
1874
|
-
}
|
|
1875
|
-
const { xThumbWidth } = reactData;
|
|
1876
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
1877
|
-
viewEl.scrollTo({
|
|
1878
|
-
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
1879
|
-
behavior: 'auto'
|
|
1880
|
-
});
|
|
1881
|
-
};
|
|
1882
|
-
const clickTrackYEvent = (evnt) => {
|
|
1883
|
-
const trackEl = evnt.currentTarget;
|
|
1884
|
-
if (trackEl !== evnt.target) {
|
|
1885
|
-
return;
|
|
1886
|
-
}
|
|
1887
|
-
const viewEl = refVirtualWrapper.value;
|
|
1888
|
-
if (!viewEl) {
|
|
1889
|
-
return;
|
|
1890
|
-
}
|
|
1891
|
-
const { yThumbHeight } = reactData;
|
|
1892
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
1893
|
-
viewEl.scrollTo({
|
|
1894
|
-
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
1895
|
-
behavior: 'auto'
|
|
1896
|
-
});
|
|
1897
|
-
};
|
|
1898
|
-
const pointerdownThumbXEvent = (evnt) => {
|
|
1899
|
-
const thumbEl = evnt.currentTarget;
|
|
1900
|
-
internalData.isThumbDrag = true;
|
|
1901
|
-
thumbEl.setPointerCapture(evnt.pointerId);
|
|
1902
|
-
const viewEl = refVirtualWrapper.value;
|
|
1903
|
-
if (!viewEl) {
|
|
1904
|
-
return;
|
|
1905
|
-
}
|
|
1906
|
-
const { xThumbWidth } = reactData;
|
|
1907
|
-
const trackEl = thumbEl.parentElement;
|
|
1908
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
1909
|
-
const pointerPosition = evnt.clientX - trackRect.left;
|
|
1910
|
-
// 记录 thumb 的偏移
|
|
1911
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
1912
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
1913
|
-
};
|
|
1914
|
-
const pointermoveThumbXEvent = (evnt) => {
|
|
1915
|
-
const thumbEl = evnt.currentTarget;
|
|
1916
|
-
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
1917
|
-
return;
|
|
1918
|
-
}
|
|
1919
|
-
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
1920
|
-
if (isThumbDrag) {
|
|
1921
|
-
const viewEl = refVirtualWrapper.value;
|
|
1922
|
-
if (!viewEl) {
|
|
1923
|
-
return;
|
|
1924
|
-
}
|
|
1925
|
-
const { xThumbWidth } = reactData;
|
|
1926
|
-
const thumbEl = evnt.currentTarget;
|
|
1927
|
-
const trackEl = thumbEl.parentElement;
|
|
1928
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
1929
|
-
// 更新偏移
|
|
1930
|
-
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
1931
|
-
}
|
|
1932
|
-
};
|
|
1933
|
-
const cleatPointerThumbEvent = (evnt) => {
|
|
1934
|
-
const thumbEl = evnt.currentTarget;
|
|
1935
|
-
thumbEl.releasePointerCapture(evnt.pointerId);
|
|
1936
|
-
internalData.isThumbDrag = false;
|
|
1937
|
-
};
|
|
1938
|
-
const pointerdownThumbYEvent = (evnt) => {
|
|
1939
|
-
const thumbEl = evnt.currentTarget;
|
|
1940
|
-
internalData.isThumbDrag = true;
|
|
1941
|
-
thumbEl.setPointerCapture(evnt.pointerId);
|
|
1942
|
-
const viewEl = refVirtualWrapper.value;
|
|
1943
|
-
if (!viewEl) {
|
|
1944
|
-
return;
|
|
1945
|
-
}
|
|
1946
|
-
const { yThumbHeight } = reactData;
|
|
1947
|
-
const trackEl = thumbEl.parentElement;
|
|
1948
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
1949
|
-
const pointerPosition = evnt.clientY - trackRect.top;
|
|
1950
|
-
// 记录 thumb 的偏移
|
|
1951
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
1952
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
1953
|
-
};
|
|
1954
|
-
const pointermoveThumbYEvent = (evnt) => {
|
|
1955
|
-
const thumbEl = evnt.currentTarget;
|
|
1956
|
-
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
1957
|
-
return;
|
|
1958
|
-
}
|
|
1959
|
-
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
1960
|
-
if (isThumbDrag) {
|
|
1961
|
-
const viewEl = refVirtualWrapper.value;
|
|
1962
|
-
if (!viewEl) {
|
|
1963
|
-
return;
|
|
1825
|
+
const bindScrollbarResize = () => {
|
|
1826
|
+
const { scrollObserver } = internalData;
|
|
1827
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
1828
|
+
if (isVScrollbar) {
|
|
1829
|
+
if (!scrollObserver) {
|
|
1830
|
+
const el = refElem.value;
|
|
1831
|
+
const viewInnerEl = refVirtualSpaceElem.value;
|
|
1832
|
+
const scrollObserver = globalResize.create(() => {
|
|
1833
|
+
reScrollFlag.value++;
|
|
1834
|
+
});
|
|
1835
|
+
if (el) {
|
|
1836
|
+
scrollObserver.observe(el);
|
|
1837
|
+
}
|
|
1838
|
+
if (viewInnerEl) {
|
|
1839
|
+
scrollObserver.observe(viewInnerEl);
|
|
1840
|
+
}
|
|
1841
|
+
internalData.scrollObserver = scrollObserver;
|
|
1964
1842
|
}
|
|
1965
|
-
const { yThumbHeight } = reactData;
|
|
1966
|
-
const thumbEl = evnt.currentTarget;
|
|
1967
|
-
const trackEl = thumbEl.parentElement;
|
|
1968
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
1969
|
-
// 更新偏移
|
|
1970
|
-
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
1971
1843
|
}
|
|
1972
1844
|
};
|
|
1973
1845
|
Object.assign($xeList, listMethods, listPrivateMethods);
|
|
@@ -2166,12 +2038,13 @@ export default defineVxeComponent({
|
|
|
2166
2038
|
}], rowid: hasKey && keyField ? rowid : undefined }, rowOns), ctVNs);
|
|
2167
2039
|
};
|
|
2168
2040
|
const renderVN = () => {
|
|
2169
|
-
const { showCheckbox, className, loading
|
|
2041
|
+
const { showCheckbox, className, loading } = props;
|
|
2170
2042
|
const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate, xThumbWidth, yThumbHeight } = reactData;
|
|
2171
2043
|
const defaultSlot = slots.default;
|
|
2172
2044
|
const headerSlot = slots.header;
|
|
2173
2045
|
const footerSlot = slots.footer;
|
|
2174
2046
|
const vSize = computeSize.value;
|
|
2047
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
2175
2048
|
const wrapperStyles = computeWrapperStyles.value;
|
|
2176
2049
|
const virtualStyles = computeVirtualStyles.value;
|
|
2177
2050
|
const radioOpts = computeRadioOpts.value;
|
|
@@ -2197,17 +2070,17 @@ export default defineVxeComponent({
|
|
|
2197
2070
|
}
|
|
2198
2071
|
return h('div', Object.assign({ ref: refElem, class: [
|
|
2199
2072
|
'vxe-list',
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2073
|
+
isVScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
|
|
2074
|
+
isVScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
|
|
2075
|
+
isVScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
|
|
2076
|
+
isVScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
|
|
2204
2077
|
className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '',
|
|
2205
2078
|
{
|
|
2206
2079
|
[`size--${vSize}`]: vSize,
|
|
2207
|
-
'is--virtual-scrollbar':
|
|
2208
|
-
'ov-padding':
|
|
2209
|
-
'ov-x--auto-hide':
|
|
2210
|
-
'ov-y--auto-hide':
|
|
2080
|
+
'is--virtual-scrollbar': isVScrollbar,
|
|
2081
|
+
'ov-padding': isVScrollbar && scrollbarOpts.padding,
|
|
2082
|
+
'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
|
|
2083
|
+
'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
|
|
2211
2084
|
'overflow-y': yThumbHeight,
|
|
2212
2085
|
'overflow-x': xThumbWidth,
|
|
2213
2086
|
'is--drag': isDrag,
|
|
@@ -2253,6 +2126,7 @@ export default defineVxeComponent({
|
|
|
2253
2126
|
onScroll: scrollEvent
|
|
2254
2127
|
}, [
|
|
2255
2128
|
h('div', {
|
|
2129
|
+
ref: refVirtualSpaceElem,
|
|
2256
2130
|
class: 'vxe-list--y-space',
|
|
2257
2131
|
style: {
|
|
2258
2132
|
height: bodyHeight ? `${bodyHeight}px` : ''
|
|
@@ -2281,7 +2155,7 @@ export default defineVxeComponent({
|
|
|
2281
2155
|
/**
|
|
2282
2156
|
* 滚动条
|
|
2283
2157
|
*/
|
|
2284
|
-
|
|
2158
|
+
isVScrollbar
|
|
2285
2159
|
? h('div', {
|
|
2286
2160
|
class: scrollbarWrapperClss
|
|
2287
2161
|
}, [
|
|
@@ -2344,43 +2218,54 @@ export default defineVxeComponent({
|
|
|
2344
2218
|
watch(dataFlag, () => {
|
|
2345
2219
|
loadData(props.data || []);
|
|
2346
2220
|
});
|
|
2347
|
-
const
|
|
2221
|
+
const reScrollFlag = ref(0);
|
|
2222
|
+
const reLayoutFlag = ref(0);
|
|
2348
2223
|
watch(() => props.height, () => {
|
|
2349
|
-
|
|
2224
|
+
reLayoutFlag.value++;
|
|
2350
2225
|
});
|
|
2351
2226
|
watch(() => props.maxHeight, () => {
|
|
2352
|
-
|
|
2227
|
+
reLayoutFlag.value++;
|
|
2353
2228
|
});
|
|
2354
2229
|
watch(() => props.syncResize, () => {
|
|
2355
|
-
|
|
2230
|
+
reLayoutFlag.value++;
|
|
2356
2231
|
});
|
|
2357
|
-
watch(
|
|
2358
|
-
|
|
2232
|
+
watch(computeIsVScrollbar, () => {
|
|
2233
|
+
nextTick(() => {
|
|
2234
|
+
bindScrollbarResize();
|
|
2235
|
+
nextTick(() => {
|
|
2236
|
+
reLayoutFlag.value++;
|
|
2237
|
+
});
|
|
2238
|
+
});
|
|
2359
2239
|
});
|
|
2360
2240
|
watch(computeRowHeight, () => {
|
|
2361
|
-
|
|
2241
|
+
reLayoutFlag.value++;
|
|
2362
2242
|
});
|
|
2363
2243
|
watch(computeScrollYWidth, () => {
|
|
2364
|
-
|
|
2244
|
+
reLayoutFlag.value++;
|
|
2365
2245
|
});
|
|
2366
2246
|
watch(computeScrollXHeight, () => {
|
|
2367
|
-
|
|
2247
|
+
reLayoutFlag.value++;
|
|
2368
2248
|
});
|
|
2369
2249
|
watch(computeScrollXVisible, () => {
|
|
2370
2250
|
nextTick(() => {
|
|
2371
|
-
|
|
2251
|
+
reLayoutFlag.value++;
|
|
2372
2252
|
});
|
|
2373
2253
|
});
|
|
2374
2254
|
watch(computeScrollYVisible, () => {
|
|
2375
2255
|
nextTick(() => {
|
|
2376
|
-
|
|
2256
|
+
reLayoutFlag.value++;
|
|
2377
2257
|
});
|
|
2378
2258
|
});
|
|
2379
|
-
watch(
|
|
2259
|
+
watch(reLayoutFlag, () => {
|
|
2380
2260
|
recalculate().then(() => {
|
|
2381
2261
|
recalculate();
|
|
2382
2262
|
});
|
|
2383
2263
|
});
|
|
2264
|
+
watch(reScrollFlag, () => {
|
|
2265
|
+
updateScrollbar().then(() => {
|
|
2266
|
+
updateScrollbar();
|
|
2267
|
+
});
|
|
2268
|
+
});
|
|
2384
2269
|
watch(() => props.checkRowKey, () => {
|
|
2385
2270
|
updateRadioModeValue();
|
|
2386
2271
|
});
|
|
@@ -2403,7 +2288,7 @@ export default defineVxeComponent({
|
|
|
2403
2288
|
loadData(props.data || []);
|
|
2404
2289
|
});
|
|
2405
2290
|
onMounted(() => {
|
|
2406
|
-
const { showSeq, showRadio, showCheckbox, autoResize
|
|
2291
|
+
const { showSeq, showRadio, showCheckbox, autoResize } = props;
|
|
2407
2292
|
const rowOpts = computeRowOpts.value;
|
|
2408
2293
|
const { useKey } = rowOpts;
|
|
2409
2294
|
const isDrag = computeIsDrag.value;
|
|
@@ -2425,25 +2310,12 @@ export default defineVxeComponent({
|
|
|
2425
2310
|
if (useKey && !keyField) {
|
|
2426
2311
|
errLog('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField']);
|
|
2427
2312
|
}
|
|
2428
|
-
const el = refElem.value;
|
|
2429
|
-
if (useScrollbar) {
|
|
2430
|
-
const viewInnerEl = refVirtualBody.value;
|
|
2431
|
-
const scrollObserver = globalResize.create(() => {
|
|
2432
|
-
reFlag.value++;
|
|
2433
|
-
});
|
|
2434
|
-
if (el) {
|
|
2435
|
-
scrollObserver.observe(el);
|
|
2436
|
-
}
|
|
2437
|
-
if (viewInnerEl) {
|
|
2438
|
-
scrollObserver.observe(viewInnerEl);
|
|
2439
|
-
}
|
|
2440
|
-
internalData.scrollObserver = scrollObserver;
|
|
2441
|
-
}
|
|
2442
2313
|
if (autoResize) {
|
|
2314
|
+
const el = refElem.value;
|
|
2443
2315
|
const parentEl = getParentElem();
|
|
2444
2316
|
const resizeObserver = globalResize.create(() => {
|
|
2445
2317
|
if (props.autoResize) {
|
|
2446
|
-
|
|
2318
|
+
reLayoutFlag.value++;
|
|
2447
2319
|
}
|
|
2448
2320
|
});
|
|
2449
2321
|
if (el) {
|
|
@@ -2454,9 +2326,10 @@ export default defineVxeComponent({
|
|
|
2454
2326
|
}
|
|
2455
2327
|
internalData.resizeObserver = resizeObserver;
|
|
2456
2328
|
}
|
|
2457
|
-
|
|
2329
|
+
reLayoutFlag.value++;
|
|
2330
|
+
bindScrollbarResize();
|
|
2458
2331
|
globalEvents.on($xeList, 'resize', () => {
|
|
2459
|
-
|
|
2332
|
+
reLayoutFlag.value++;
|
|
2460
2333
|
});
|
|
2461
2334
|
});
|
|
2462
2335
|
onBeforeUnmount(() => {
|
package/es/menu/src/menu.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, h, reactive, Teleport, inject, resolveComponent, watch, computed, nextTick, onBeforeUnmount, onMounted } from 'vue';
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
3
3
|
import XEUtils from 'xe-utils';
|
|
4
|
-
import { VxeUI, createEvent, permission,
|
|
4
|
+
import { VxeUI, createEvent, permission, globalEvents, renderEmptyElement } from '../../ui';
|
|
5
5
|
import { getPopupContainer, scrollToView, toCssUnit } from '../../ui/src/dom';
|
|
6
6
|
import { getLastZIndex, nextZIndex, isEnableConf, getDefaultConfig } from '../../ui/src/utils';
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
@@ -9,7 +9,7 @@ import { createComponentLog } from '../../ui/src/log';
|
|
|
9
9
|
import VxeLoadingComponent from '../../loading';
|
|
10
10
|
import VxeScrollbarComponent from '../../scrollbar';
|
|
11
11
|
const { errLog } = createComponentLog('menu');
|
|
12
|
-
const { menus, getConfig, getIcon } = VxeUI;
|
|
12
|
+
const { menus, useFns, getConfig, getIcon } = VxeUI;
|
|
13
13
|
function createInternalData() {
|
|
14
14
|
return {
|
|
15
15
|
lastActiveTime: 0,
|
|
@@ -88,7 +88,8 @@ export default defineVxeComponent({
|
|
|
88
88
|
const refCollapseElem = ref();
|
|
89
89
|
const refCollapseBodyElem = ref();
|
|
90
90
|
const refCollapseBodyScrollbar = ref();
|
|
91
|
-
const { computeSize } = useSize(props);
|
|
91
|
+
const { computeSize } = useFns.useSize(props);
|
|
92
|
+
const { computeIsVScrollbar } = useFns.useVScrollbar(props);
|
|
92
93
|
const reactData = reactive(createReactData());
|
|
93
94
|
const internalData = createInternalData();
|
|
94
95
|
const refMaps = {
|
|
@@ -619,9 +620,10 @@ export default defineVxeComponent({
|
|
|
619
620
|
]);
|
|
620
621
|
};
|
|
621
622
|
const renderVN = () => {
|
|
622
|
-
const { loading, collapseFixed, appendTo
|
|
623
|
+
const { loading, collapseFixed, appendTo } = props;
|
|
623
624
|
const { initialized, menuList, collapseStyle, isEnterCollapse } = reactData;
|
|
624
625
|
const vSize = computeSize.value;
|
|
626
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
625
627
|
const isCollapsed = computeIsCollapsed.value;
|
|
626
628
|
const currBorder = computeCurrBorder.value;
|
|
627
629
|
const varStyle = computeVarStyle.value;
|
|
@@ -675,7 +677,7 @@ export default defineVxeComponent({
|
|
|
675
677
|
class: 'vxe-menu--header'
|
|
676
678
|
}, headerSlot(stParams))
|
|
677
679
|
: renderEmptyElement($xeMenu),
|
|
678
|
-
|
|
680
|
+
isVScrollbar && isEnterCollapse
|
|
679
681
|
? h(VxeScrollbarComponent, Object.assign(Object.assign({ ref: refCollapseBodyScrollbar, class: 'vxe-menu--scrollbar-body' }, scrollbarOpts), { viewClassName: 'vxe-menu--scrollbar-body-view' + (viewClassName ? (' ' + viewClassName) : ''), viewInnerClassName: 'vxe-menu--scrollbar-body-inner' + (viewClassName ? (' ' + viewInnerClassName) : '') }), {
|
|
680
682
|
default: () => menuList.map(child => renderDefaultChildren(child, menuList))
|
|
681
683
|
})
|
package/es/modal/src/modal.js
CHANGED
|
@@ -3,7 +3,7 @@ import { defineVxeComponent } from '../../ui/src/comp';
|
|
|
3
3
|
import XEUtils from 'xe-utils';
|
|
4
4
|
import { getEventTargetNode, getPopupContainer, getPopupWrapperElement, isScale, toCssUnit } from '../../ui/src/dom';
|
|
5
5
|
import { getLastZIndex, nextZIndex, getSubLastZIndex, nextSubZIndex, getFuncText, handleBooleanDefaultValue, getDefaultConfig } from '../../ui/src/utils';
|
|
6
|
-
import { VxeUI, getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent,
|
|
6
|
+
import { VxeUI, getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useFns, renderEmptyElement } from '../../ui';
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
8
8
|
import { createComponentLog } from '../../ui/src/log';
|
|
9
9
|
import { allActiveModals } from './store';
|
|
@@ -253,7 +253,8 @@ export default defineVxeComponent({
|
|
|
253
253
|
const $xeDrawer = inject('$xeDrawer', null);
|
|
254
254
|
const $xeTable = inject('$xeTable', null);
|
|
255
255
|
const $xeForm = inject('$xeForm', null);
|
|
256
|
-
const { computeSize } = useSize(props);
|
|
256
|
+
const { computeSize } = useFns.useSize(props);
|
|
257
|
+
const { computeIsVScrollbar } = useFns.useVScrollbar(props);
|
|
257
258
|
const reactData = reactive(createReactData());
|
|
258
259
|
const internalData = createInternalData();
|
|
259
260
|
const refElem = ref();
|
|
@@ -1330,8 +1331,9 @@ export default defineVxeComponent({
|
|
|
1330
1331
|
return renderEmptyElement($xeModal);
|
|
1331
1332
|
};
|
|
1332
1333
|
const renderBody = () => {
|
|
1333
|
-
const { slots: propSlots = {}, status, message, iconStatus,
|
|
1334
|
+
const { slots: propSlots = {}, status, message, iconStatus, useHtml } = props;
|
|
1334
1335
|
const content = props.content || message;
|
|
1336
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
1335
1337
|
const isMsg = computeIsMsg.value;
|
|
1336
1338
|
const scrollbarProps = computeScrollbarProps.value;
|
|
1337
1339
|
const defaultSlot = slots.default || propSlots.default;
|
|
@@ -1348,7 +1350,7 @@ export default defineVxeComponent({
|
|
|
1348
1350
|
]));
|
|
1349
1351
|
}
|
|
1350
1352
|
if (useHtml && !defaultSlot) {
|
|
1351
|
-
contVNs.push(
|
|
1353
|
+
contVNs.push(isVScrollbar
|
|
1352
1354
|
? h(VxeScrollbarComponent, Object.assign({ key: 'shc', class: 'vxe-modal--scrollbar-content' }, scrollbarProps), {
|
|
1353
1355
|
default() {
|
|
1354
1356
|
return [
|
|
@@ -1366,7 +1368,7 @@ export default defineVxeComponent({
|
|
|
1366
1368
|
}));
|
|
1367
1369
|
}
|
|
1368
1370
|
else {
|
|
1369
|
-
contVNs.push(
|
|
1371
|
+
contVNs.push(isVScrollbar
|
|
1370
1372
|
? h(VxeScrollbarComponent, Object.assign({ key: 'sdc', class: 'vxe-modal--scrollbar-content' }, scrollbarProps), {
|
|
1371
1373
|
default: () => defaultSlot ? getSlotVNs(defaultSlot({ $modal: $xeModal })) : getFuncText(content)
|
|
1372
1374
|
})
|