vxe-pc-ui 4.19.8 → 4.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/all.esm.js +878 -115
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/card/src/card.js +17 -3
- package/es/icon/style.css +1 -1
- package/es/language/fr-FR.js +29 -29
- package/es/layout-aside/src/layout-aside.js +8 -5
- package/es/layout-body/src/layout-body.js +19 -11
- package/es/list/src/list.js +364 -21
- package/es/list/style.css +43 -0
- package/es/list/style.min.css +1 -1
- package/es/scrollbar/src/scrollbar.js +59 -17
- package/es/scrollbar/style.css +1 -0
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tabs/src/tabs.js +19 -4
- package/es/tree/src/tree.js +393 -55
- package/es/tree/style.css +43 -0
- package/es/tree/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 +12 -0
- package/es/vxe-list/style.css +43 -0
- package/es/vxe-list/style.min.css +1 -1
- package/es/vxe-scrollbar/style.css +1 -0
- package/es/vxe-tree/style.css +43 -0
- package/es/vxe-tree/style.min.css +1 -1
- package/lib/card/src/card.js +17 -3
- package/lib/card/src/card.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +914 -126
- package/lib/index.umd.min.js +1 -1
- package/lib/language/fr-FR.js +29 -29
- package/lib/language/fr-FR.min.js +1 -1
- package/lib/language/fr-FR.umd.js +29 -29
- package/lib/layout-aside/src/layout-aside.js +7 -7
- package/lib/layout-aside/src/layout-aside.min.js +1 -1
- package/lib/layout-body/src/layout-body.js +27 -21
- package/lib/layout-body/src/layout-body.min.js +1 -1
- package/lib/list/src/list.js +368 -21
- package/lib/list/src/list.min.js +1 -1
- package/lib/list/style/style.css +43 -0
- package/lib/list/style/style.min.css +1 -1
- package/lib/scrollbar/src/scrollbar.js +67 -15
- package/lib/scrollbar/src/scrollbar.min.js +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/tabs/src/tabs.js +22 -10
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tree/src/tree.js +397 -53
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree/style/style.css +43 -0
- package/lib/tree/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/ui/src/utils.js +14 -0
- package/lib/ui/src/utils.min.js +1 -1
- package/lib/vxe-list/style/style.css +43 -0
- package/lib/vxe-list/style/style.min.css +1 -1
- package/lib/vxe-scrollbar/style/style.css +1 -0
- package/lib/vxe-tree/style/style.css +43 -0
- package/lib/vxe-tree/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/card/src/card.ts +18 -3
- package/packages/language/fr-FR.ts +903 -903
- package/packages/layout-aside/src/layout-aside.ts +8 -5
- package/packages/layout-body/src/layout-body.ts +23 -14
- package/packages/list/src/list.ts +397 -24
- package/packages/scrollbar/src/scrollbar.ts +63 -16
- package/packages/tabs/src/tabs.ts +19 -5
- package/packages/tree/src/tree.ts +432 -64
- package/packages/ui/src/utils.ts +14 -0
- package/styles/components/list.scss +76 -0
- package/styles/components/scrollbar.scss +3 -0
- package/styles/components/tree.scss +76 -0
- package/types/components/card.d.ts +10 -1
- package/types/components/layout-aside.d.ts +10 -1
- package/types/components/layout-body.d.ts +10 -1
- package/types/components/list.d.ts +33 -2
- package/types/components/scrollbar.d.ts +17 -2
- package/types/components/table-plugins/extend-cell-area.d.ts +1 -1
- package/types/components/table.d.ts +71 -4
- package/types/components/tabs.d.ts +10 -1
- package/types/components/tree.d.ts +33 -2
- /package/es/icon/{iconfont.1791862962954.ttf → iconfont.1791950625324.ttf} +0 -0
- /package/es/icon/{iconfont.1791862962954.woff → iconfont.1791950625324.woff} +0 -0
- /package/es/icon/{iconfont.1791862962954.woff2 → iconfont.1791950625324.woff2} +0 -0
- /package/es/{iconfont.1791862962954.ttf → iconfont.1791950625324.ttf} +0 -0
- /package/es/{iconfont.1791862962954.woff → iconfont.1791950625324.woff} +0 -0
- /package/es/{iconfont.1791862962954.woff2 → iconfont.1791950625324.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1791862962954.ttf → iconfont.1791950625324.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1791862962954.woff → iconfont.1791950625324.woff} +0 -0
- /package/lib/icon/style/{iconfont.1791862962954.woff2 → iconfont.1791950625324.woff2} +0 -0
- /package/lib/{iconfont.1791862962954.ttf → iconfont.1791950625324.ttf} +0 -0
- /package/lib/{iconfont.1791862962954.woff → iconfont.1791950625324.woff} +0 -0
- /package/lib/{iconfont.1791862962954.woff2 → iconfont.1791950625324.woff2} +0 -0
package/lib/tree/src/tree.js
CHANGED
|
@@ -15,6 +15,7 @@ var _vn = require("../../ui/src/vn");
|
|
|
15
15
|
var _dom = require("../../ui/src/dom");
|
|
16
16
|
var _utils = require("../../ui/src/utils");
|
|
17
17
|
var _anime = require("../../ui/src/anime");
|
|
18
|
+
var _util2 = require("../../scrollbar/src/util");
|
|
18
19
|
var _loading = _interopRequireDefault(require("../../loading"));
|
|
19
20
|
var _tooltip = _interopRequireDefault(require("../../tooltip"));
|
|
20
21
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -34,6 +35,34 @@ const {
|
|
|
34
35
|
function getNodeUniqueId() {
|
|
35
36
|
return _xeUtils.default.uniqueId('node_');
|
|
36
37
|
}
|
|
38
|
+
function createReactData() {
|
|
39
|
+
return {
|
|
40
|
+
parentHeight: 0,
|
|
41
|
+
customHeight: 0,
|
|
42
|
+
customMinHeight: 0,
|
|
43
|
+
customMaxHeight: 0,
|
|
44
|
+
currentNode: null,
|
|
45
|
+
scrollYLoad: false,
|
|
46
|
+
bodyHeight: 0,
|
|
47
|
+
topSpaceHeight: 0,
|
|
48
|
+
selectRadioKey: null,
|
|
49
|
+
treeList: [],
|
|
50
|
+
updateExpandedFlag: 1,
|
|
51
|
+
updateCheckboxFlag: 1,
|
|
52
|
+
// 滚动条
|
|
53
|
+
yThumbHeight: 0,
|
|
54
|
+
xThumbWidth: 0,
|
|
55
|
+
insertNodeFlag: 1,
|
|
56
|
+
removeNodeFlag: 1,
|
|
57
|
+
dragNode: null,
|
|
58
|
+
dragTipText: '',
|
|
59
|
+
isCrossDragNode: false,
|
|
60
|
+
tooltipStore: {
|
|
61
|
+
visible: false,
|
|
62
|
+
node: null
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
37
66
|
function createInternalData() {
|
|
38
67
|
return {
|
|
39
68
|
// initialized: false,
|
|
@@ -46,8 +75,14 @@ function createInternalData() {
|
|
|
46
75
|
indeterminateNodeMaps: {},
|
|
47
76
|
treeExpandedMaps: {},
|
|
48
77
|
treeExpandLazyLoadedMaps: {},
|
|
49
|
-
|
|
78
|
+
// 滚动条
|
|
79
|
+
// resizeObserver: undefined,
|
|
80
|
+
// isThumbDrag: false,
|
|
81
|
+
thumbDragOffset: 0,
|
|
82
|
+
yThumbTop: 0,
|
|
83
|
+
xThumbLeft: 0,
|
|
50
84
|
lastScrollTop: 0,
|
|
85
|
+
lastScrollLeft: 0,
|
|
51
86
|
scrollYStore: {
|
|
52
87
|
startIndex: 0,
|
|
53
88
|
endIndex: 0,
|
|
@@ -64,31 +99,6 @@ function createInternalData() {
|
|
|
64
99
|
// hpTimeout: undefined
|
|
65
100
|
};
|
|
66
101
|
}
|
|
67
|
-
function createReactData() {
|
|
68
|
-
return {
|
|
69
|
-
parentHeight: 0,
|
|
70
|
-
customHeight: 0,
|
|
71
|
-
customMinHeight: 0,
|
|
72
|
-
customMaxHeight: 0,
|
|
73
|
-
currentNode: null,
|
|
74
|
-
scrollYLoad: false,
|
|
75
|
-
bodyHeight: 0,
|
|
76
|
-
topSpaceHeight: 0,
|
|
77
|
-
selectRadioKey: null,
|
|
78
|
-
treeList: [],
|
|
79
|
-
updateExpandedFlag: 1,
|
|
80
|
-
updateCheckboxFlag: 1,
|
|
81
|
-
insertNodeFlag: 1,
|
|
82
|
-
removeNodeFlag: 1,
|
|
83
|
-
dragNode: null,
|
|
84
|
-
dragTipText: '',
|
|
85
|
-
isCrossDragNode: false,
|
|
86
|
-
tooltipStore: {
|
|
87
|
-
visible: false,
|
|
88
|
-
node: null
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
102
|
let crossTreeDragNodeObj = null;
|
|
93
103
|
var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
94
104
|
name: 'VxeTree',
|
|
@@ -219,7 +229,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
219
229
|
type: String,
|
|
220
230
|
default: () => getConfig().tree.size || getConfig().size
|
|
221
231
|
},
|
|
222
|
-
virtualYConfig: Object
|
|
232
|
+
virtualYConfig: Object,
|
|
233
|
+
useScrollbar: {
|
|
234
|
+
type: Boolean,
|
|
235
|
+
default: () => getConfig().tree.useScrollbar
|
|
236
|
+
},
|
|
237
|
+
scrollbarConfig: Object
|
|
223
238
|
},
|
|
224
239
|
emits: ['update:modelValue', 'update:checkNodeKey', 'update:checkNodeKeys', 'node-click', 'node-dblclick', 'current-change', 'radio-change', 'checkbox-change', 'load-success', 'load-error', 'scroll', 'node-dragstart', 'node-dragover', 'node-dragend', 'node-remove-dragend', 'node-insert-dragend', 'node-expand', 'node-menu', 'menu-click'],
|
|
225
240
|
setup(props, context) {
|
|
@@ -236,6 +251,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
236
251
|
const refFooterWrapperElem = (0, _vue.ref)();
|
|
237
252
|
const refVirtualWrapper = (0, _vue.ref)();
|
|
238
253
|
const refVirtualBody = (0, _vue.ref)();
|
|
254
|
+
const refTrackXElem = (0, _vue.ref)();
|
|
255
|
+
const refTrackYElem = (0, _vue.ref)();
|
|
256
|
+
const refThumbXElem = (0, _vue.ref)();
|
|
257
|
+
const refThumbYElem = (0, _vue.ref)();
|
|
239
258
|
const refDragNodeLineElem = (0, _vue.ref)();
|
|
240
259
|
const refDragTipElem = (0, _vue.ref)();
|
|
241
260
|
const refTooltip = (0, _vue.ref)();
|
|
@@ -315,6 +334,19 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
315
334
|
const computeMenuOpts = (0, _vue.computed)(() => {
|
|
316
335
|
return Object.assign({}, getConfig().tree.menuConfig, props.menuConfig);
|
|
317
336
|
});
|
|
337
|
+
const computeWrapperStyles = (0, _vue.computed)(() => {
|
|
338
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
339
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
340
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
341
|
+
const barWidth = (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
|
|
342
|
+
const barHeight = (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
|
|
343
|
+
const stys = {};
|
|
344
|
+
if (barWidth || barHeight) {
|
|
345
|
+
stys['--vxe-ui-scrollbar-y-width'] = (0, _dom.toCssUnit)(barWidth || barHeight);
|
|
346
|
+
stys['--vxe-ui-scrollbar-x-height'] = (0, _dom.toCssUnit)(barHeight || barWidth);
|
|
347
|
+
}
|
|
348
|
+
return stys;
|
|
349
|
+
});
|
|
318
350
|
const computeTreeStyle = (0, _vue.computed)(() => {
|
|
319
351
|
const {
|
|
320
352
|
indent
|
|
@@ -358,6 +390,70 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
358
390
|
const computeFilterOpts = (0, _vue.computed)(() => {
|
|
359
391
|
return Object.assign({}, getConfig().tree.filterConfig, props.filterConfig);
|
|
360
392
|
});
|
|
393
|
+
const computeScrollbarOpts = (0, _vue.computed)(() => {
|
|
394
|
+
return Object.assign({}, getConfig().tree.scrollbarConfig, props.scrollbarConfig);
|
|
395
|
+
});
|
|
396
|
+
const computeScrollbarXOpts = (0, _vue.computed)(() => {
|
|
397
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
398
|
+
return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig, {
|
|
399
|
+
visible: false
|
|
400
|
+
});
|
|
401
|
+
});
|
|
402
|
+
const computeScrollbarYOpts = (0, _vue.computed)(() => {
|
|
403
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
404
|
+
return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
|
|
405
|
+
});
|
|
406
|
+
const computeScrollXVisible = (0, _vue.computed)(() => {
|
|
407
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
408
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
409
|
+
return (0, _utils.getDefaultConfig)(scrollbarXOpts.visible, scrollbarOpts.visible);
|
|
410
|
+
});
|
|
411
|
+
const computeScrollYVisible = (0, _vue.computed)(() => {
|
|
412
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
413
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
414
|
+
return (0, _utils.getDefaultConfig)(scrollbarYOpts.visible, scrollbarOpts.visible);
|
|
415
|
+
});
|
|
416
|
+
const computeScrollXAutoHide = (0, _vue.computed)(() => {
|
|
417
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
418
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
419
|
+
return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
|
|
420
|
+
});
|
|
421
|
+
const computeScrollYAutoHide = (0, _vue.computed)(() => {
|
|
422
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
423
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
424
|
+
return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
|
|
425
|
+
});
|
|
426
|
+
const computeScrollbarWrapperClss = (0, _vue.computed)(() => {
|
|
427
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
428
|
+
const {
|
|
429
|
+
padding
|
|
430
|
+
} = scrollbarOpts;
|
|
431
|
+
const {
|
|
432
|
+
yThumbHeight,
|
|
433
|
+
xThumbWidth
|
|
434
|
+
} = reactData;
|
|
435
|
+
const scrollbarXToTop = computeScrollbarXToTop.value;
|
|
436
|
+
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
437
|
+
const scrollXVisible = computeScrollXVisible.value;
|
|
438
|
+
const scrollYVisible = computeScrollYVisible.value;
|
|
439
|
+
const scrollXAutoHide = computeScrollXAutoHide.value;
|
|
440
|
+
const scrollYAutoHide = computeScrollYAutoHide.value;
|
|
441
|
+
return _ui.domUtils.buildClass(['vxe-scrollbar is--virtual', `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`, `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`], {
|
|
442
|
+
'is--padding': padding,
|
|
443
|
+
'ov-x--auto-hide': scrollXAutoHide,
|
|
444
|
+
'ov-y--auto-hide': scrollYAutoHide,
|
|
445
|
+
'overflow-y': yThumbHeight,
|
|
446
|
+
'overflow-x': xThumbWidth
|
|
447
|
+
});
|
|
448
|
+
});
|
|
449
|
+
const computeScrollbarXToTop = (0, _vue.computed)(() => {
|
|
450
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
451
|
+
return scrollbarXOpts.position === 'top';
|
|
452
|
+
});
|
|
453
|
+
const computeScrollbarYToLeft = (0, _vue.computed)(() => {
|
|
454
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
455
|
+
return scrollbarYOpts.position === 'left';
|
|
456
|
+
});
|
|
361
457
|
const computeMaps = {
|
|
362
458
|
computeKeyField,
|
|
363
459
|
computeParentField,
|
|
@@ -952,6 +1048,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
952
1048
|
}
|
|
953
1049
|
});
|
|
954
1050
|
};
|
|
1051
|
+
const updateScrollbar = () => {
|
|
1052
|
+
updateThumbSize();
|
|
1053
|
+
updateThumbOffset();
|
|
1054
|
+
};
|
|
955
1055
|
/**
|
|
956
1056
|
* 重新计算列表
|
|
957
1057
|
*/
|
|
@@ -977,6 +1077,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
977
1077
|
const parentPaddingSize = (0, _dom.getPaddingTopBottomSize)(parentEl);
|
|
978
1078
|
reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight);
|
|
979
1079
|
}
|
|
1080
|
+
updateScrollbar();
|
|
980
1081
|
updateHeight();
|
|
981
1082
|
return computeScrollLoad().then(() => {
|
|
982
1083
|
updateHeight();
|
|
@@ -1018,6 +1119,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1018
1119
|
const scrollLeft = scrollBodyElem.scrollLeft;
|
|
1019
1120
|
const isX = scrollLeft !== internalData.lastScrollLeft;
|
|
1020
1121
|
const isY = scrollTop !== internalData.lastScrollTop;
|
|
1122
|
+
updateThumbOffset();
|
|
1021
1123
|
internalData.lastScrollTop = scrollTop;
|
|
1022
1124
|
internalData.lastScrollLeft = scrollLeft;
|
|
1023
1125
|
if (reactData.scrollYLoad) {
|
|
@@ -1693,13 +1795,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1693
1795
|
checked: isChecked
|
|
1694
1796
|
}, evnt);
|
|
1695
1797
|
};
|
|
1696
|
-
const handleGlobalResizeEvent = () => {
|
|
1697
|
-
const el = refElem.value;
|
|
1698
|
-
if (!el || !el.clientWidth) {
|
|
1699
|
-
return;
|
|
1700
|
-
}
|
|
1701
|
-
recalculate();
|
|
1702
|
-
};
|
|
1703
1798
|
const insertTreeNode = (newRecords, isAppend) => {
|
|
1704
1799
|
const {
|
|
1705
1800
|
treeFullData,
|
|
@@ -3362,6 +3457,183 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
3362
3457
|
hideDropTip();
|
|
3363
3458
|
}
|
|
3364
3459
|
};
|
|
3460
|
+
const updateThumbSize = () => {
|
|
3461
|
+
const viewEl = refVirtualWrapper.value;
|
|
3462
|
+
if (!viewEl) {
|
|
3463
|
+
return;
|
|
3464
|
+
}
|
|
3465
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
3466
|
+
return;
|
|
3467
|
+
}
|
|
3468
|
+
const trackXEl = refTrackXElem.value;
|
|
3469
|
+
const xThumbWidth = trackXEl ? (0, _util2.getThumbSize)(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
|
|
3470
|
+
const thumbXElem = refThumbXElem.value;
|
|
3471
|
+
if (thumbXElem) {
|
|
3472
|
+
thumbXElem.style.width = xThumbWidth + 'px';
|
|
3473
|
+
}
|
|
3474
|
+
reactData.xThumbWidth = xThumbWidth;
|
|
3475
|
+
const trackYEl = refTrackYElem.value;
|
|
3476
|
+
const yThumbHeight = trackYEl ? (0, _util2.getThumbSize)(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
|
|
3477
|
+
const thumbYElem = refThumbYElem.value;
|
|
3478
|
+
if (thumbYElem) {
|
|
3479
|
+
thumbYElem.style.height = yThumbHeight + 'px';
|
|
3480
|
+
}
|
|
3481
|
+
reactData.yThumbHeight = yThumbHeight;
|
|
3482
|
+
};
|
|
3483
|
+
const updateThumbOffset = () => {
|
|
3484
|
+
const viewEl = refVirtualWrapper.value;
|
|
3485
|
+
if (!viewEl) {
|
|
3486
|
+
return;
|
|
3487
|
+
}
|
|
3488
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
3489
|
+
return;
|
|
3490
|
+
}
|
|
3491
|
+
const {
|
|
3492
|
+
xThumbWidth,
|
|
3493
|
+
yThumbHeight
|
|
3494
|
+
} = reactData;
|
|
3495
|
+
const trackXEl = refTrackXElem.value;
|
|
3496
|
+
const thumbXElem = refThumbXElem.value;
|
|
3497
|
+
const xThumbLeft = trackXEl && xThumbWidth ? (0, _util2.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
|
|
3498
|
+
internalData.xThumbLeft = xThumbLeft;
|
|
3499
|
+
if (thumbXElem && xThumbWidth) {
|
|
3500
|
+
thumbXElem.style.width = xThumbWidth + 'px';
|
|
3501
|
+
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
|
|
3502
|
+
}
|
|
3503
|
+
const trackYEl = refTrackYElem.value;
|
|
3504
|
+
const thumbYElem = refThumbYElem.value;
|
|
3505
|
+
const yThumbTop = trackYEl && yThumbHeight ? (0, _util2.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
|
|
3506
|
+
internalData.yThumbTop = yThumbTop;
|
|
3507
|
+
if (thumbYElem && yThumbHeight) {
|
|
3508
|
+
thumbYElem.style.height = yThumbHeight + 'px';
|
|
3509
|
+
thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
|
|
3510
|
+
}
|
|
3511
|
+
};
|
|
3512
|
+
const clickTrackXEvent = evnt => {
|
|
3513
|
+
const trackEl = evnt.currentTarget;
|
|
3514
|
+
if (trackEl !== evnt.target) {
|
|
3515
|
+
return;
|
|
3516
|
+
}
|
|
3517
|
+
const viewEl = refVirtualWrapper.value;
|
|
3518
|
+
if (!viewEl) {
|
|
3519
|
+
return;
|
|
3520
|
+
}
|
|
3521
|
+
const {
|
|
3522
|
+
xThumbWidth
|
|
3523
|
+
} = reactData;
|
|
3524
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3525
|
+
viewEl.scrollTo({
|
|
3526
|
+
left: (0, _util2.getScrollFromClick)(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
3527
|
+
behavior: 'auto'
|
|
3528
|
+
});
|
|
3529
|
+
};
|
|
3530
|
+
const clickTrackYEvent = evnt => {
|
|
3531
|
+
const trackEl = evnt.currentTarget;
|
|
3532
|
+
if (trackEl !== evnt.target) {
|
|
3533
|
+
return;
|
|
3534
|
+
}
|
|
3535
|
+
const viewEl = refVirtualWrapper.value;
|
|
3536
|
+
if (!viewEl) {
|
|
3537
|
+
return;
|
|
3538
|
+
}
|
|
3539
|
+
const {
|
|
3540
|
+
yThumbHeight
|
|
3541
|
+
} = reactData;
|
|
3542
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3543
|
+
viewEl.scrollTo({
|
|
3544
|
+
top: (0, _util2.getScrollFromClick)(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
3545
|
+
behavior: 'auto'
|
|
3546
|
+
});
|
|
3547
|
+
};
|
|
3548
|
+
const pointerdownThumbXEvent = evnt => {
|
|
3549
|
+
const thumbEl = evnt.currentTarget;
|
|
3550
|
+
internalData.isThumbDrag = true;
|
|
3551
|
+
thumbEl.setPointerCapture(evnt.pointerId);
|
|
3552
|
+
const viewEl = refVirtualWrapper.value;
|
|
3553
|
+
if (!viewEl) {
|
|
3554
|
+
return;
|
|
3555
|
+
}
|
|
3556
|
+
const {
|
|
3557
|
+
xThumbWidth
|
|
3558
|
+
} = reactData;
|
|
3559
|
+
const trackEl = thumbEl.parentElement;
|
|
3560
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3561
|
+
const pointerPosition = evnt.clientX - trackRect.left;
|
|
3562
|
+
// 记录 thumb 的偏移
|
|
3563
|
+
const thumbOffset = (0, _util2.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
3564
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
3565
|
+
};
|
|
3566
|
+
const pointermoveThumbXEvent = evnt => {
|
|
3567
|
+
const thumbEl = evnt.currentTarget;
|
|
3568
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
3569
|
+
return;
|
|
3570
|
+
}
|
|
3571
|
+
const {
|
|
3572
|
+
isThumbDrag,
|
|
3573
|
+
thumbDragOffset
|
|
3574
|
+
} = internalData;
|
|
3575
|
+
if (isThumbDrag) {
|
|
3576
|
+
const viewEl = refVirtualWrapper.value;
|
|
3577
|
+
if (!viewEl) {
|
|
3578
|
+
return;
|
|
3579
|
+
}
|
|
3580
|
+
const {
|
|
3581
|
+
xThumbWidth
|
|
3582
|
+
} = reactData;
|
|
3583
|
+
const thumbEl = evnt.currentTarget;
|
|
3584
|
+
const trackEl = thumbEl.parentElement;
|
|
3585
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3586
|
+
// 更新偏移
|
|
3587
|
+
viewEl.scrollLeft = (0, _util2.getScrollFromDrag)(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
3588
|
+
}
|
|
3589
|
+
};
|
|
3590
|
+
const cleatPointerThumbEvent = evnt => {
|
|
3591
|
+
const thumbEl = evnt.currentTarget;
|
|
3592
|
+
thumbEl.releasePointerCapture(evnt.pointerId);
|
|
3593
|
+
internalData.isThumbDrag = false;
|
|
3594
|
+
};
|
|
3595
|
+
const pointerdownThumbYEvent = evnt => {
|
|
3596
|
+
const thumbEl = evnt.currentTarget;
|
|
3597
|
+
internalData.isThumbDrag = true;
|
|
3598
|
+
thumbEl.setPointerCapture(evnt.pointerId);
|
|
3599
|
+
const viewEl = refVirtualWrapper.value;
|
|
3600
|
+
if (!viewEl) {
|
|
3601
|
+
return;
|
|
3602
|
+
}
|
|
3603
|
+
const {
|
|
3604
|
+
yThumbHeight
|
|
3605
|
+
} = reactData;
|
|
3606
|
+
const trackEl = thumbEl.parentElement;
|
|
3607
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3608
|
+
const pointerPosition = evnt.clientY - trackRect.top;
|
|
3609
|
+
// 记录 thumb 的偏移
|
|
3610
|
+
const thumbOffset = (0, _util2.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
3611
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
3612
|
+
};
|
|
3613
|
+
const pointermoveThumbYEvent = evnt => {
|
|
3614
|
+
const thumbEl = evnt.currentTarget;
|
|
3615
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
3616
|
+
return;
|
|
3617
|
+
}
|
|
3618
|
+
const {
|
|
3619
|
+
isThumbDrag,
|
|
3620
|
+
thumbDragOffset
|
|
3621
|
+
} = internalData;
|
|
3622
|
+
if (isThumbDrag) {
|
|
3623
|
+
const viewEl = refVirtualWrapper.value;
|
|
3624
|
+
if (!viewEl) {
|
|
3625
|
+
return;
|
|
3626
|
+
}
|
|
3627
|
+
const {
|
|
3628
|
+
yThumbHeight
|
|
3629
|
+
} = reactData;
|
|
3630
|
+
const thumbEl = evnt.currentTarget;
|
|
3631
|
+
const trackEl = thumbEl.parentElement;
|
|
3632
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3633
|
+
// 更新偏移
|
|
3634
|
+
viewEl.scrollTop = (0, _util2.getScrollFromDrag)(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
3635
|
+
}
|
|
3636
|
+
};
|
|
3365
3637
|
Object.assign($xeTree, treeMethods, treePrivateMethods);
|
|
3366
3638
|
const renderDragIcon = (node, nodeid) => {
|
|
3367
3639
|
const {
|
|
@@ -3704,19 +3976,23 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
3704
3976
|
const {
|
|
3705
3977
|
loading,
|
|
3706
3978
|
trigger,
|
|
3707
|
-
showLine
|
|
3979
|
+
showLine,
|
|
3980
|
+
useScrollbar
|
|
3708
3981
|
} = props;
|
|
3709
3982
|
const {
|
|
3710
3983
|
bodyHeight,
|
|
3711
3984
|
topSpaceHeight,
|
|
3712
3985
|
treeList,
|
|
3713
|
-
tooltipStore
|
|
3986
|
+
tooltipStore,
|
|
3987
|
+
xThumbWidth,
|
|
3988
|
+
yThumbHeight
|
|
3714
3989
|
} = reactData;
|
|
3715
3990
|
const vSize = computeSize.value;
|
|
3716
3991
|
const radioOpts = computeRadioOpts.value;
|
|
3717
3992
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
3718
3993
|
const loadingOpts = computeLoadingOpts.value;
|
|
3719
3994
|
const isNodeHover = computeIsNodeHover.value;
|
|
3995
|
+
const wrapperStyles = computeWrapperStyles.value;
|
|
3720
3996
|
const treeStyle = computeTreeStyle.value;
|
|
3721
3997
|
const dragOpts = computeDragOpts.value;
|
|
3722
3998
|
const tooltipOpts = computeTooltipOpts.value;
|
|
@@ -3724,21 +4000,36 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
3724
4000
|
const headerSlot = slots.header;
|
|
3725
4001
|
const footerSlot = slots.footer;
|
|
3726
4002
|
const tooltipSlot = slots.tooltip;
|
|
4003
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
4004
|
+
const scrollXVisible = computeScrollXVisible.value;
|
|
4005
|
+
const scrollYVisible = computeScrollYVisible.value;
|
|
4006
|
+
const scrollbarXToTop = computeScrollbarXToTop.value;
|
|
4007
|
+
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
4008
|
+
const scrollXAutoHide = computeScrollXAutoHide.value;
|
|
4009
|
+
const scrollYAutoHide = computeScrollYAutoHide.value;
|
|
4010
|
+
const scrollbarWrapperClss = computeScrollbarWrapperClss.value;
|
|
3727
4011
|
const teOns = {};
|
|
3728
4012
|
if (dragOpts.isCrossTreeDrag && !treeList.length) {
|
|
3729
4013
|
teOns.onDragover = $xeTree.handleCrossTreeNodeDragoverEmptyEvent;
|
|
3730
4014
|
}
|
|
3731
4015
|
return (0, _vue.h)('div', Object.assign({
|
|
3732
4016
|
ref: refElem,
|
|
3733
|
-
class: ['vxe-tree', {
|
|
4017
|
+
class: ['vxe-tree', useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '', useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '', useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '', useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '', {
|
|
3734
4018
|
[`size--${vSize}`]: vSize,
|
|
3735
4019
|
'show--line': showLine,
|
|
4020
|
+
'is--virtual-scrollbar': useScrollbar,
|
|
4021
|
+
'ov-padding': useScrollbar && scrollbarOpts.padding,
|
|
4022
|
+
'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
|
|
4023
|
+
'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
|
|
4024
|
+
'overflow-y': yThumbHeight,
|
|
4025
|
+
'overflow-x': xThumbWidth,
|
|
3736
4026
|
'checkbox--highlight': checkboxOpts.highlight,
|
|
3737
4027
|
'radio--highlight': radioOpts.highlight,
|
|
3738
4028
|
'node--hover': isNodeHover,
|
|
3739
4029
|
'node--trigger': trigger === 'node',
|
|
3740
4030
|
'is--loading': loading
|
|
3741
|
-
}]
|
|
4031
|
+
}],
|
|
4032
|
+
style: wrapperStyles
|
|
3742
4033
|
}, teOns), [headerSlot ? (0, _vue.h)('div', {
|
|
3743
4034
|
ref: refHeaderWrapperElem,
|
|
3744
4035
|
class: 'vxe-tree--header-wrapper'
|
|
@@ -3766,6 +4057,36 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
3766
4057
|
}, footerSlot({
|
|
3767
4058
|
$tree: $xeTree
|
|
3768
4059
|
})) : (0, _ui.renderEmptyElement)($xeTree),
|
|
4060
|
+
/**
|
|
4061
|
+
* 滚动条
|
|
4062
|
+
*/
|
|
4063
|
+
useScrollbar ? (0, _vue.h)('div', {
|
|
4064
|
+
class: scrollbarWrapperClss
|
|
4065
|
+
}, [scrollXVisible === false ? (0, _ui.renderEmptyElement)($xeTree) : (0, _vue.h)('div', {
|
|
4066
|
+
ref: refTrackXElem,
|
|
4067
|
+
class: 'vxe-scrollbar--track-x',
|
|
4068
|
+
onClick: clickTrackXEvent
|
|
4069
|
+
}, [(0, _vue.h)('div', {
|
|
4070
|
+
ref: refThumbXElem,
|
|
4071
|
+
class: 'vxe-scrollbar--thumb-x',
|
|
4072
|
+
onPointerdown: pointerdownThumbXEvent,
|
|
4073
|
+
onPointermove: pointermoveThumbXEvent,
|
|
4074
|
+
onPointerup: cleatPointerThumbEvent,
|
|
4075
|
+
onPointercancel: cleatPointerThumbEvent,
|
|
4076
|
+
onLostpointercapture: cleatPointerThumbEvent
|
|
4077
|
+
})]), scrollYVisible === false ? (0, _ui.renderEmptyElement)($xeTree) : (0, _vue.h)('div', {
|
|
4078
|
+
ref: refTrackYElem,
|
|
4079
|
+
class: 'vxe-scrollbar--track-y',
|
|
4080
|
+
onClick: clickTrackYEvent
|
|
4081
|
+
}, [(0, _vue.h)('div', {
|
|
4082
|
+
ref: refThumbYElem,
|
|
4083
|
+
class: 'vxe-scrollbar--thumb-y',
|
|
4084
|
+
onPointerdown: pointerdownThumbYEvent,
|
|
4085
|
+
onPointermove: pointermoveThumbYEvent,
|
|
4086
|
+
onPointerup: cleatPointerThumbEvent,
|
|
4087
|
+
onPointercancel: cleatPointerThumbEvent,
|
|
4088
|
+
onLostpointercapture: cleatPointerThumbEvent
|
|
4089
|
+
})])]) : (0, _ui.renderEmptyElement)($xeTree),
|
|
3769
4090
|
/**
|
|
3770
4091
|
* 拖拽提示
|
|
3771
4092
|
*/
|
|
@@ -3849,18 +4170,33 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
3849
4170
|
(0, _vue.watch)(() => props.filterValue, () => {
|
|
3850
4171
|
triggerSearchEvent(new Event('filter'));
|
|
3851
4172
|
});
|
|
3852
|
-
const
|
|
4173
|
+
const reFlag = (0, _vue.ref)(0);
|
|
3853
4174
|
(0, _vue.watch)(() => props.height, () => {
|
|
3854
|
-
|
|
4175
|
+
reFlag.value++;
|
|
3855
4176
|
});
|
|
3856
4177
|
(0, _vue.watch)(() => props.minHeight, () => {
|
|
3857
|
-
|
|
4178
|
+
reFlag.value++;
|
|
3858
4179
|
});
|
|
3859
4180
|
(0, _vue.watch)(() => props.maxHeight, () => {
|
|
3860
|
-
|
|
4181
|
+
reFlag.value++;
|
|
3861
4182
|
});
|
|
3862
|
-
(0, _vue.watch)(
|
|
3863
|
-
|
|
4183
|
+
(0, _vue.watch)(() => props.useScrollbar, () => {
|
|
4184
|
+
reFlag.value++;
|
|
4185
|
+
});
|
|
4186
|
+
(0, _vue.watch)(computeScrollXVisible, () => {
|
|
4187
|
+
(0, _vue.nextTick)(() => {
|
|
4188
|
+
reFlag.value++;
|
|
4189
|
+
});
|
|
4190
|
+
});
|
|
4191
|
+
(0, _vue.watch)(computeScrollYVisible, () => {
|
|
4192
|
+
(0, _vue.nextTick)(() => {
|
|
4193
|
+
reFlag.value++;
|
|
4194
|
+
});
|
|
4195
|
+
});
|
|
4196
|
+
(0, _vue.watch)(reFlag, () => {
|
|
4197
|
+
recalculate().then(() => {
|
|
4198
|
+
recalculate();
|
|
4199
|
+
});
|
|
3864
4200
|
});
|
|
3865
4201
|
(0, _vue.onMounted)(() => {
|
|
3866
4202
|
const {
|
|
@@ -3869,7 +4205,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
3869
4205
|
menuConfig,
|
|
3870
4206
|
showOverflow,
|
|
3871
4207
|
lazy,
|
|
3872
|
-
loadMethod
|
|
4208
|
+
loadMethod,
|
|
4209
|
+
autoResize,
|
|
4210
|
+
useScrollbar
|
|
3873
4211
|
} = props;
|
|
3874
4212
|
const dragOpts = computeDragOpts.value;
|
|
3875
4213
|
if (!showOverflow) {
|
|
@@ -3891,24 +4229,30 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
3891
4229
|
if (menuConfig && !VxeUIContextMenu) {
|
|
3892
4230
|
errLog('vxe.error.reqComp', ['vxe-context-menu']);
|
|
3893
4231
|
}
|
|
3894
|
-
if (
|
|
4232
|
+
if (useScrollbar || autoResize) {
|
|
3895
4233
|
const el = refElem.value;
|
|
4234
|
+
const viewInnerEl = refVirtualBody.value;
|
|
3896
4235
|
const parentEl = getParentElem();
|
|
3897
4236
|
const resizeObserver = _ui.globalResize.create(() => {
|
|
3898
|
-
|
|
3899
|
-
recalculate();
|
|
3900
|
-
}
|
|
4237
|
+
reFlag.value++;
|
|
3901
4238
|
});
|
|
3902
4239
|
if (el) {
|
|
3903
4240
|
resizeObserver.observe(el);
|
|
4241
|
+
if (autoResize) {
|
|
4242
|
+
if (parentEl) {
|
|
4243
|
+
resizeObserver.observe(parentEl);
|
|
4244
|
+
}
|
|
4245
|
+
}
|
|
3904
4246
|
}
|
|
3905
|
-
if (
|
|
3906
|
-
resizeObserver.observe(
|
|
4247
|
+
if (viewInnerEl) {
|
|
4248
|
+
resizeObserver.observe(viewInnerEl);
|
|
3907
4249
|
}
|
|
3908
4250
|
internalData.resizeObserver = resizeObserver;
|
|
3909
4251
|
}
|
|
3910
|
-
|
|
3911
|
-
_ui.globalEvents.on($xeTree, 'resize',
|
|
4252
|
+
reFlag.value++;
|
|
4253
|
+
_ui.globalEvents.on($xeTree, 'resize', () => {
|
|
4254
|
+
reFlag.value++;
|
|
4255
|
+
});
|
|
3912
4256
|
});
|
|
3913
4257
|
(0, _vue.onBeforeUnmount)(() => {
|
|
3914
4258
|
const {
|