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.
Files changed (144) hide show
  1. package/dist/all.esm.js +2041 -2125
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/card/src/card.js +8 -6
  5. package/es/date-panel/src/date-panel.js +58 -36
  6. package/es/date-panel/style.css +22 -20
  7. package/es/date-panel/style.min.css +1 -1
  8. package/es/drawer/src/drawer.js +7 -5
  9. package/es/icon/style.css +1 -1
  10. package/es/icon-picker/src/icon-picker.js +74 -38
  11. package/es/icon-picker/style.css +9 -3
  12. package/es/icon-picker/style.min.css +1 -1
  13. package/es/layout-aside/src/layout-aside.js +6 -4
  14. package/es/layout-body/src/layout-body.js +6 -4
  15. package/es/layout-container/src/layout-container.js +11 -3
  16. package/es/list/src/list.js +81 -208
  17. package/es/menu/src/menu.js +7 -5
  18. package/es/modal/src/modal.js +7 -5
  19. package/es/scrollbar/src/scrollbar.js +28 -173
  20. package/es/select/src/select.js +243 -8
  21. package/es/select/style.css +44 -0
  22. package/es/select/style.min.css +1 -1
  23. package/es/style.css +1 -1
  24. package/es/style.min.css +1 -1
  25. package/es/tabs/src/tabs.js +5 -4
  26. package/es/tooltip/src/tooltip.js +7 -5
  27. package/es/tooltip/style.css +2 -0
  28. package/es/tooltip/style.min.css +1 -1
  29. package/es/tree/src/tree.js +86 -212
  30. package/es/ui/index.js +1 -1
  31. package/es/ui/src/log.js +1 -1
  32. package/es/vxe-date-panel/style.css +22 -20
  33. package/es/vxe-date-panel/style.min.css +1 -1
  34. package/es/vxe-icon-picker/style.css +9 -3
  35. package/es/vxe-icon-picker/style.min.css +1 -1
  36. package/es/vxe-select/style.css +44 -0
  37. package/es/vxe-select/style.min.css +1 -1
  38. package/es/vxe-tooltip/style.css +2 -0
  39. package/es/vxe-tooltip/style.min.css +1 -1
  40. package/lib/card/src/card.js +9 -6
  41. package/lib/card/src/card.min.js +1 -1
  42. package/lib/date-panel/src/date-panel.js +56 -34
  43. package/lib/date-panel/src/date-panel.min.js +1 -1
  44. package/lib/date-panel/style/style.css +22 -20
  45. package/lib/date-panel/style/style.min.css +1 -1
  46. package/lib/drawer/src/drawer.js +7 -4
  47. package/lib/drawer/src/drawer.min.js +1 -1
  48. package/lib/icon/style/style.css +1 -1
  49. package/lib/icon/style/style.min.css +1 -1
  50. package/lib/icon-picker/src/icon-picker.js +101 -45
  51. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  52. package/lib/icon-picker/style/style.css +9 -3
  53. package/lib/icon-picker/style/style.min.css +1 -1
  54. package/lib/index.umd.js +1049 -859
  55. package/lib/index.umd.min.js +1 -1
  56. package/lib/layout-aside/src/layout-aside.js +7 -4
  57. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  58. package/lib/layout-body/src/layout-body.js +7 -4
  59. package/lib/layout-body/src/layout-body.min.js +1 -1
  60. package/lib/layout-container/src/layout-container.js +20 -4
  61. package/lib/layout-container/src/layout-container.min.js +1 -1
  62. package/lib/list/src/list.js +95 -232
  63. package/lib/list/src/list.min.js +1 -1
  64. package/lib/menu/src/menu.js +8 -4
  65. package/lib/menu/src/menu.min.js +1 -1
  66. package/lib/modal/src/modal.js +7 -4
  67. package/lib/modal/src/modal.min.js +1 -1
  68. package/lib/scrollbar/src/scrollbar.js +42 -199
  69. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  70. package/lib/select/src/select.js +315 -68
  71. package/lib/select/src/select.min.js +1 -1
  72. package/lib/select/style/style.css +44 -0
  73. package/lib/select/style/style.min.css +1 -1
  74. package/lib/style.css +1 -1
  75. package/lib/style.min.css +1 -1
  76. package/lib/tabs/src/tabs.js +6 -5
  77. package/lib/tabs/src/tabs.min.js +1 -1
  78. package/lib/tooltip/src/tooltip.js +7 -4
  79. package/lib/tooltip/src/tooltip.min.js +1 -1
  80. package/lib/tooltip/style/style.css +2 -0
  81. package/lib/tooltip/style/style.min.css +1 -1
  82. package/lib/tree/src/tree.js +101 -235
  83. package/lib/tree/src/tree.min.js +1 -1
  84. package/lib/ui/index.js +1 -1
  85. package/lib/ui/index.min.js +1 -1
  86. package/lib/ui/src/log.js +1 -1
  87. package/lib/ui/src/log.min.js +1 -1
  88. package/lib/vxe-date-panel/style/style.css +22 -20
  89. package/lib/vxe-date-panel/style/style.min.css +1 -1
  90. package/lib/vxe-icon-picker/style/style.css +9 -3
  91. package/lib/vxe-icon-picker/style/style.min.css +1 -1
  92. package/lib/vxe-select/style/style.css +44 -0
  93. package/lib/vxe-select/style/style.min.css +1 -1
  94. package/lib/vxe-tooltip/style/style.css +2 -0
  95. package/lib/vxe-tooltip/style/style.min.css +1 -1
  96. package/package.json +2 -2
  97. package/packages/card/src/card.ts +8 -6
  98. package/packages/date-panel/src/date-panel.ts +58 -36
  99. package/packages/drawer/src/drawer.ts +7 -5
  100. package/packages/icon-picker/src/icon-picker.ts +80 -38
  101. package/packages/layout-aside/src/layout-aside.ts +6 -4
  102. package/packages/layout-body/src/layout-body.ts +6 -4
  103. package/packages/layout-container/src/layout-container.ts +13 -3
  104. package/packages/list/src/list.ts +98 -224
  105. package/packages/menu/src/menu.ts +7 -5
  106. package/packages/modal/src/modal.ts +7 -5
  107. package/packages/scrollbar/src/scrollbar.ts +44 -189
  108. package/packages/select/src/select.ts +278 -8
  109. package/packages/tabs/src/tabs.ts +5 -4
  110. package/packages/tooltip/src/tooltip.ts +7 -5
  111. package/packages/tree/src/tree.ts +103 -228
  112. package/styles/components/date-panel.scss +31 -29
  113. package/styles/components/icon-picker.scss +9 -3
  114. package/styles/components/select.scss +77 -0
  115. package/styles/components/tooltip.scss +1 -0
  116. package/types/components/card.d.ts +2 -2
  117. package/types/components/drawer.d.ts +2 -2
  118. package/types/components/gantt-module/gantt-view.d.ts +7 -16
  119. package/types/components/grid.d.ts +3 -1
  120. package/types/components/icon-picker.d.ts +21 -1
  121. package/types/components/layout-aside.d.ts +2 -2
  122. package/types/components/layout-body.d.ts +2 -2
  123. package/types/components/layout-container.d.ts +3 -1
  124. package/types/components/list.d.ts +6 -2
  125. package/types/components/menu.d.ts +2 -2
  126. package/types/components/modal.d.ts +2 -2
  127. package/types/components/scrollbar.d.ts +17 -14
  128. package/types/components/select.d.ts +28 -3
  129. package/types/components/table.d.ts +28 -22
  130. package/types/components/tabs.d.ts +2 -2
  131. package/types/components/tooltip.d.ts +2 -2
  132. package/types/components/tree.d.ts +8 -17
  133. /package/es/icon/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
  134. /package/es/icon/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
  135. /package/es/icon/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
  136. /package/es/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
  137. /package/es/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
  138. /package/es/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
  139. /package/lib/icon/style/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
  140. /package/lib/icon/style/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
  141. /package/lib/icon/style/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
  142. /package/lib/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
  143. /package/lib/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
  144. /package/lib/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
@@ -24,17 +24,14 @@ const {
24
24
  } = (0, _log.createComponentLog)('tree');
25
25
  const {
26
26
  menus,
27
- scrollbarUtils,
28
27
  getConfig,
29
28
  getI18n,
30
- getIcon
29
+ getIcon,
30
+ baseUtils
31
31
  } = _ui.VxeUI;
32
32
  const {
33
- getThumbOffsetSize,
34
- getThumbSize,
35
- getScrollFromClick,
36
- getScrollFromDrag
37
- } = scrollbarUtils;
33
+ getDefVal
34
+ } = baseUtils;
38
35
  /**
39
36
  * 生成节点的唯一主键
40
37
  */
@@ -239,7 +236,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
239
236
  virtualYConfig: Object,
240
237
  useScrollbar: {
241
238
  type: Boolean,
242
- default: () => (0, _utils.getDefaultConfig)(getConfig().tree.useScrollbar, getConfig().useScrollbar)
239
+ default: () => getDefVal(getConfig().tree.useScrollbar, getConfig().useScrollbar)
243
240
  },
244
241
  scrollbarConfig: Object
245
242
  },
@@ -250,24 +247,24 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
250
247
  slots
251
248
  } = context;
252
249
  const xID = _xeUtils.default.uniqueId();
253
- const {
254
- computeSize
255
- } = (0, _ui.useSize)(props);
256
250
  const refElem = (0, _vue.ref)();
257
251
  const refHeaderWrapperElem = (0, _vue.ref)();
258
252
  const refFooterWrapperElem = (0, _vue.ref)();
259
253
  const refVirtualWrapper = (0, _vue.ref)();
254
+ const refVirtualSpaceElem = (0, _vue.ref)();
260
255
  const refVirtualBody = (0, _vue.ref)();
261
- const refTrackXElem = (0, _vue.ref)();
262
- const refTrackYElem = (0, _vue.ref)();
263
- const refThumbXElem = (0, _vue.ref)();
264
- const refThumbYElem = (0, _vue.ref)();
265
256
  const refDragNodeLineElem = (0, _vue.ref)();
266
257
  const refDragTipElem = (0, _vue.ref)();
267
258
  const refTooltip = (0, _vue.ref)();
268
259
  const crossTreeDragNodeInfo = (0, _store.getCrossTreeDragNodeInfo)();
269
260
  const internalData = createInternalData();
270
261
  const reactData = (0, _vue.reactive)(createReactData());
262
+ const {
263
+ computeSize
264
+ } = _ui.useFns.useSize(props);
265
+ const {
266
+ computeIsVScrollbar
267
+ } = _ui.useFns.useVScrollbar(props);
271
268
  const refMaps = {
272
269
  refElem
273
270
  };
@@ -410,32 +407,32 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
410
407
  const computeScrollXHeight = (0, _vue.computed)(() => {
411
408
  const scrollbarOpts = computeScrollbarOpts.value;
412
409
  const scrollbarXOpts = computeScrollbarXOpts.value;
413
- return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
410
+ return getDefVal(getDefVal(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
414
411
  });
415
412
  const computeScrollYWidth = (0, _vue.computed)(() => {
416
413
  const scrollbarOpts = computeScrollbarOpts.value;
417
414
  const scrollbarYOpts = computeScrollbarYOpts.value;
418
- return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
415
+ return getDefVal(getDefVal(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
419
416
  });
420
417
  const computeScrollXVisible = (0, _vue.computed)(() => {
421
418
  const scrollbarOpts = computeScrollbarOpts.value;
422
419
  const scrollbarXOpts = computeScrollbarXOpts.value;
423
- return (0, _utils.getDefaultConfig)(scrollbarXOpts.visible, scrollbarOpts.visible);
420
+ return getDefVal(scrollbarXOpts.visible, scrollbarOpts.visible);
424
421
  });
425
422
  const computeScrollYVisible = (0, _vue.computed)(() => {
426
423
  const scrollbarOpts = computeScrollbarOpts.value;
427
424
  const scrollbarYOpts = computeScrollbarYOpts.value;
428
- return (0, _utils.getDefaultConfig)(scrollbarYOpts.visible, scrollbarOpts.visible);
425
+ return getDefVal(scrollbarYOpts.visible, scrollbarOpts.visible);
429
426
  });
430
427
  const computeScrollXAutoHide = (0, _vue.computed)(() => {
431
428
  const scrollbarOpts = computeScrollbarOpts.value;
432
429
  const scrollbarXOpts = computeScrollbarXOpts.value;
433
- return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
430
+ return getDefVal(getDefVal(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
434
431
  });
435
432
  const computeScrollYAutoHide = (0, _vue.computed)(() => {
436
433
  const scrollbarOpts = computeScrollbarOpts.value;
437
434
  const scrollbarYOpts = computeScrollbarYOpts.value;
438
- return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
435
+ return getDefVal(getDefVal(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
439
436
  });
440
437
  const computeScrollbarWrapperClss = (0, _vue.computed)(() => {
441
438
  const {
@@ -478,6 +475,21 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
478
475
  getRefMaps: () => refMaps,
479
476
  getComputeMaps: () => computeMaps
480
477
  };
478
+ const {
479
+ refTrackXElem,
480
+ refTrackYElem,
481
+ refThumbXElem,
482
+ refThumbYElem,
483
+ updateThumbSize,
484
+ updateThumbOffset,
485
+ clickTrackXEvent,
486
+ clickTrackYEvent,
487
+ pointerdownThumbXEvent,
488
+ pointermoveThumbXEvent,
489
+ cleatPointerThumbEvent,
490
+ pointerdownThumbYEvent,
491
+ pointermoveThumbYEvent
492
+ } = _ui.useFns.useInitVScrollbar($xeTree);
481
493
  const getNodeId = node => {
482
494
  if (!node) {
483
495
  return '';
@@ -1054,8 +1066,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1054
1066
  });
1055
1067
  };
1056
1068
  const updateScrollbar = () => {
1057
- updateThumbSize();
1058
- updateThumbOffset();
1069
+ const isVScrollbar = computeIsVScrollbar.value;
1070
+ if (isVScrollbar) {
1071
+ return (0, _vue.nextTick)().then(() => {
1072
+ updateThumbSize();
1073
+ updateThumbOffset();
1074
+ });
1075
+ }
1076
+ return Promise.resolve();
1059
1077
  };
1060
1078
  /**
1061
1079
  * 重新计算列表
@@ -1082,11 +1100,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1082
1100
  const parentPaddingSize = (0, _dom.getPaddingTopBottomSize)(parentEl);
1083
1101
  reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight);
1084
1102
  }
1085
- updateScrollbar();
1086
1103
  updateHeight();
1087
1104
  return computeScrollLoad().then(() => {
1088
1105
  updateHeight();
1089
1106
  updateYSpace();
1107
+ updateScrollbar();
1090
1108
  });
1091
1109
  }
1092
1110
  return (0, _vue.nextTick)();
@@ -1119,7 +1137,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1119
1137
  }
1120
1138
  };
1121
1139
  const scrollEvent = evnt => {
1122
- const scrollBodyElem = evnt.target;
1140
+ const scrollBodyElem = evnt.currentTarget;
1123
1141
  const scrollTop = scrollBodyElem.scrollTop;
1124
1142
  const scrollLeft = scrollBodyElem.scrollLeft;
1125
1143
  const isX = scrollLeft !== internalData.lastScrollLeft;
@@ -2021,6 +2039,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
2021
2039
  };
2022
2040
  const treeMethods = {
2023
2041
  dispatchEvent,
2042
+ getScrollViewElem() {
2043
+ const viewEl = refVirtualWrapper.value;
2044
+ return viewEl || null;
2045
+ },
2024
2046
  getNodeId,
2025
2047
  getNodeById(nodeid) {
2026
2048
  const {
@@ -3462,181 +3484,26 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
3462
3484
  hideDropTip();
3463
3485
  }
3464
3486
  };
3465
- const updateThumbSize = () => {
3466
- const viewEl = refVirtualWrapper.value;
3467
- if (!viewEl) {
3468
- return;
3469
- }
3470
- if (!viewEl.clientHeight || !viewEl.clientHeight) {
3471
- return;
3472
- }
3473
- const trackXEl = refTrackXElem.value;
3474
- const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
3475
- const thumbXElem = refThumbXElem.value;
3476
- if (thumbXElem) {
3477
- thumbXElem.style.width = xThumbWidth + 'px';
3478
- }
3479
- reactData.xThumbWidth = xThumbWidth;
3480
- const trackYEl = refTrackYElem.value;
3481
- const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
3482
- const thumbYElem = refThumbYElem.value;
3483
- if (thumbYElem) {
3484
- thumbYElem.style.height = yThumbHeight + 'px';
3485
- }
3486
- reactData.yThumbHeight = yThumbHeight;
3487
- };
3488
- const updateThumbOffset = () => {
3489
- const viewEl = refVirtualWrapper.value;
3490
- if (!viewEl) {
3491
- return;
3492
- }
3493
- if (!viewEl.clientHeight || !viewEl.clientHeight) {
3494
- return;
3495
- }
3496
- const {
3497
- xThumbWidth,
3498
- yThumbHeight
3499
- } = reactData;
3500
- const trackXEl = refTrackXElem.value;
3501
- const thumbXElem = refThumbXElem.value;
3502
- const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
3503
- internalData.xThumbLeft = xThumbLeft;
3504
- if (thumbXElem && xThumbWidth) {
3505
- thumbXElem.style.width = xThumbWidth + 'px';
3506
- thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
3507
- }
3508
- const trackYEl = refTrackYElem.value;
3509
- const thumbYElem = refThumbYElem.value;
3510
- const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
3511
- internalData.yThumbTop = yThumbTop;
3512
- if (thumbYElem && yThumbHeight) {
3513
- thumbYElem.style.height = yThumbHeight + 'px';
3514
- thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
3515
- }
3516
- };
3517
- const clickTrackXEvent = evnt => {
3518
- const trackEl = evnt.currentTarget;
3519
- if (trackEl !== evnt.target) {
3520
- return;
3521
- }
3522
- const viewEl = refVirtualWrapper.value;
3523
- if (!viewEl) {
3524
- return;
3525
- }
3526
- const {
3527
- xThumbWidth
3528
- } = reactData;
3529
- const trackRect = trackEl.getBoundingClientRect();
3530
- viewEl.scrollTo({
3531
- left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
3532
- behavior: 'auto'
3533
- });
3534
- };
3535
- const clickTrackYEvent = evnt => {
3536
- const trackEl = evnt.currentTarget;
3537
- if (trackEl !== evnt.target) {
3538
- return;
3539
- }
3540
- const viewEl = refVirtualWrapper.value;
3541
- if (!viewEl) {
3542
- return;
3543
- }
3544
- const {
3545
- yThumbHeight
3546
- } = reactData;
3547
- const trackRect = trackEl.getBoundingClientRect();
3548
- viewEl.scrollTo({
3549
- top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
3550
- behavior: 'auto'
3551
- });
3552
- };
3553
- const pointerdownThumbXEvent = evnt => {
3554
- const thumbEl = evnt.currentTarget;
3555
- internalData.isThumbDrag = true;
3556
- thumbEl.setPointerCapture(evnt.pointerId);
3557
- const viewEl = refVirtualWrapper.value;
3558
- if (!viewEl) {
3559
- return;
3560
- }
3561
- const {
3562
- xThumbWidth
3563
- } = reactData;
3564
- const trackEl = thumbEl.parentElement;
3565
- const trackRect = trackEl.getBoundingClientRect();
3566
- const pointerPosition = evnt.clientX - trackRect.left;
3567
- // 记录 thumb 的偏移
3568
- const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
3569
- internalData.thumbDragOffset = pointerPosition - thumbOffset;
3570
- };
3571
- const pointermoveThumbXEvent = evnt => {
3572
- const thumbEl = evnt.currentTarget;
3573
- if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
3574
- return;
3575
- }
3576
- const {
3577
- isThumbDrag,
3578
- thumbDragOffset
3579
- } = internalData;
3580
- if (isThumbDrag) {
3581
- const viewEl = refVirtualWrapper.value;
3582
- if (!viewEl) {
3583
- return;
3584
- }
3585
- const {
3586
- xThumbWidth
3587
- } = reactData;
3588
- const thumbEl = evnt.currentTarget;
3589
- const trackEl = thumbEl.parentElement;
3590
- const trackRect = trackEl.getBoundingClientRect();
3591
- // 更新偏移
3592
- viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
3593
- }
3594
- };
3595
- const cleatPointerThumbEvent = evnt => {
3596
- const thumbEl = evnt.currentTarget;
3597
- thumbEl.releasePointerCapture(evnt.pointerId);
3598
- internalData.isThumbDrag = false;
3599
- };
3600
- const pointerdownThumbYEvent = evnt => {
3601
- const thumbEl = evnt.currentTarget;
3602
- internalData.isThumbDrag = true;
3603
- thumbEl.setPointerCapture(evnt.pointerId);
3604
- const viewEl = refVirtualWrapper.value;
3605
- if (!viewEl) {
3606
- return;
3607
- }
3608
- const {
3609
- yThumbHeight
3610
- } = reactData;
3611
- const trackEl = thumbEl.parentElement;
3612
- const trackRect = trackEl.getBoundingClientRect();
3613
- const pointerPosition = evnt.clientY - trackRect.top;
3614
- // 记录 thumb 的偏移
3615
- const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
3616
- internalData.thumbDragOffset = pointerPosition - thumbOffset;
3617
- };
3618
- const pointermoveThumbYEvent = evnt => {
3619
- const thumbEl = evnt.currentTarget;
3620
- if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
3621
- return;
3622
- }
3487
+ const bindScrollbarResize = () => {
3488
+ const isVScrollbar = computeIsVScrollbar.value;
3623
3489
  const {
3624
- isThumbDrag,
3625
- thumbDragOffset
3490
+ scrollObserver
3626
3491
  } = internalData;
3627
- if (isThumbDrag) {
3628
- const viewEl = refVirtualWrapper.value;
3629
- if (!viewEl) {
3630
- return;
3492
+ if (isVScrollbar) {
3493
+ if (!scrollObserver) {
3494
+ const el = refElem.value;
3495
+ const viewInnerEl = refVirtualSpaceElem.value;
3496
+ const scrollObserver = _ui.globalResize.create(() => {
3497
+ reScrollFlag.value++;
3498
+ });
3499
+ if (el) {
3500
+ scrollObserver.observe(el);
3501
+ }
3502
+ if (viewInnerEl) {
3503
+ scrollObserver.observe(viewInnerEl);
3504
+ }
3505
+ internalData.scrollObserver = scrollObserver;
3631
3506
  }
3632
- const {
3633
- yThumbHeight
3634
- } = reactData;
3635
- const thumbEl = evnt.currentTarget;
3636
- const trackEl = thumbEl.parentElement;
3637
- const trackRect = trackEl.getBoundingClientRect();
3638
- // 更新偏移
3639
- viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
3640
3507
  }
3641
3508
  };
3642
3509
  Object.assign($xeTree, treeMethods, treePrivateMethods);
@@ -3981,8 +3848,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
3981
3848
  const {
3982
3849
  loading,
3983
3850
  trigger,
3984
- showLine,
3985
- useScrollbar
3851
+ showLine
3986
3852
  } = props;
3987
3853
  const {
3988
3854
  bodyHeight,
@@ -3993,6 +3859,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
3993
3859
  yThumbHeight
3994
3860
  } = reactData;
3995
3861
  const vSize = computeSize.value;
3862
+ const isVScrollbar = computeIsVScrollbar.value;
3996
3863
  const radioOpts = computeRadioOpts.value;
3997
3864
  const checkboxOpts = computeCheckboxOpts.value;
3998
3865
  const loadingOpts = computeLoadingOpts.value;
@@ -4019,13 +3886,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4019
3886
  }
4020
3887
  return (0, _vue.h)('div', Object.assign({
4021
3888
  ref: refElem,
4022
- 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'}` : '', {
3889
+ class: ['vxe-tree', isVScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '', isVScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '', isVScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '', isVScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '', {
4023
3890
  [`size--${vSize}`]: vSize,
4024
3891
  'show--line': showLine,
4025
- 'is--virtual-scrollbar': useScrollbar,
4026
- 'ov-padding': useScrollbar && scrollbarOpts.padding,
4027
- 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
4028
- 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
3892
+ 'is--virtual-scrollbar': isVScrollbar,
3893
+ 'ov-padding': isVScrollbar && scrollbarOpts.padding,
3894
+ 'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
3895
+ 'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
4029
3896
  'overflow-y': yThumbHeight,
4030
3897
  'overflow-x': xThumbWidth,
4031
3898
  'checkbox--highlight': checkboxOpts.highlight,
@@ -4046,6 +3913,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4046
3913
  style: treeStyle,
4047
3914
  onScroll: scrollEvent
4048
3915
  }, [(0, _vue.h)('div', {
3916
+ ref: refVirtualSpaceElem,
4049
3917
  class: 'vxe-tree--y-space',
4050
3918
  style: {
4051
3919
  height: bodyHeight ? `${bodyHeight}px` : ''
@@ -4065,7 +3933,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4065
3933
  /**
4066
3934
  * 滚动条
4067
3935
  */
4068
- useScrollbar ? (0, _vue.h)('div', {
3936
+ isVScrollbar ? (0, _vue.h)('div', {
4069
3937
  class: scrollbarWrapperClss
4070
3938
  }, [scrollXVisible === false ? (0, _ui.renderEmptyElement)($xeTree) : (0, _vue.h)('div', {
4071
3939
  ref: refTrackXElem,
@@ -4175,40 +4043,51 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4175
4043
  (0, _vue.watch)(() => props.filterValue, () => {
4176
4044
  triggerSearchEvent(new Event('filter'));
4177
4045
  });
4178
- const reFlag = (0, _vue.ref)(0);
4046
+ const reScrollFlag = (0, _vue.ref)(0);
4047
+ const reLayoutFlag = (0, _vue.ref)(0);
4179
4048
  (0, _vue.watch)(() => props.height, () => {
4180
- reFlag.value++;
4049
+ reLayoutFlag.value++;
4181
4050
  });
4182
4051
  (0, _vue.watch)(() => props.minHeight, () => {
4183
- reFlag.value++;
4052
+ reLayoutFlag.value++;
4184
4053
  });
4185
4054
  (0, _vue.watch)(() => props.maxHeight, () => {
4186
- reFlag.value++;
4055
+ reLayoutFlag.value++;
4187
4056
  });
4188
- (0, _vue.watch)(() => props.useScrollbar, () => {
4189
- reFlag.value++;
4057
+ (0, _vue.watch)(computeIsVScrollbar, () => {
4058
+ (0, _vue.nextTick)(() => {
4059
+ bindScrollbarResize();
4060
+ (0, _vue.nextTick)(() => {
4061
+ reLayoutFlag.value++;
4062
+ });
4063
+ });
4190
4064
  });
4191
4065
  (0, _vue.watch)(computeScrollYWidth, () => {
4192
- reFlag.value++;
4066
+ reLayoutFlag.value++;
4193
4067
  });
4194
4068
  (0, _vue.watch)(computeScrollXHeight, () => {
4195
- reFlag.value++;
4069
+ reLayoutFlag.value++;
4196
4070
  });
4197
4071
  (0, _vue.watch)(computeScrollXVisible, () => {
4198
4072
  (0, _vue.nextTick)(() => {
4199
- reFlag.value++;
4073
+ reLayoutFlag.value++;
4200
4074
  });
4201
4075
  });
4202
4076
  (0, _vue.watch)(computeScrollYVisible, () => {
4203
4077
  (0, _vue.nextTick)(() => {
4204
- reFlag.value++;
4078
+ reLayoutFlag.value++;
4205
4079
  });
4206
4080
  });
4207
- (0, _vue.watch)(reFlag, () => {
4081
+ (0, _vue.watch)(reLayoutFlag, () => {
4208
4082
  recalculate().then(() => {
4209
4083
  recalculate();
4210
4084
  });
4211
4085
  });
4086
+ (0, _vue.watch)(reScrollFlag, () => {
4087
+ updateScrollbar().then(() => {
4088
+ updateScrollbar();
4089
+ });
4090
+ });
4212
4091
  (0, _vue.onMounted)(() => {
4213
4092
  const {
4214
4093
  transform,
@@ -4217,8 +4096,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4217
4096
  showOverflow,
4218
4097
  lazy,
4219
4098
  loadMethod,
4220
- autoResize,
4221
- useScrollbar
4099
+ autoResize
4222
4100
  } = props;
4223
4101
  const dragOpts = computeDragOpts.value;
4224
4102
  if (!showOverflow) {
@@ -4240,25 +4118,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4240
4118
  if (menuConfig && !VxeUIContextMenu) {
4241
4119
  errLog('vxe.error.reqComp', ['vxe-context-menu']);
4242
4120
  }
4243
- const el = refElem.value;
4244
- if (useScrollbar || autoResize) {
4245
- const viewInnerEl = refVirtualBody.value;
4246
- const scrollObserver = _ui.globalResize.create(() => {
4247
- updateScrollbar();
4248
- });
4249
- if (el) {
4250
- scrollObserver.observe(el);
4251
- }
4252
- if (viewInnerEl) {
4253
- scrollObserver.observe(viewInnerEl);
4254
- }
4255
- internalData.scrollObserver = scrollObserver;
4256
- }
4257
4121
  if (autoResize) {
4122
+ const el = refElem.value;
4258
4123
  const parentEl = getParentElem();
4259
4124
  const resizeObserver = _ui.globalResize.create(() => {
4260
4125
  if (props.autoResize) {
4261
- reFlag.value++;
4126
+ reLayoutFlag.value++;
4262
4127
  }
4263
4128
  });
4264
4129
  if (el) {
@@ -4269,9 +4134,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4269
4134
  }
4270
4135
  internalData.resizeObserver = resizeObserver;
4271
4136
  }
4272
- reFlag.value++;
4137
+ reLayoutFlag.value++;
4138
+ bindScrollbarResize();
4273
4139
  _ui.globalEvents.on($xeTree, 'resize', () => {
4274
- reFlag.value++;
4140
+ reLayoutFlag.value++;
4275
4141
  });
4276
4142
  });
4277
4143
  (0, _vue.onBeforeUnmount)(() => {