vxe-pc-ui 3.20.0 → 3.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.
Files changed (91) hide show
  1. package/es/card/src/card.js +18 -3
  2. package/es/icon/style.css +1 -1
  3. package/es/language/fr-FR.js +29 -29
  4. package/es/layout-aside/src/layout-aside.js +8 -5
  5. package/es/layout-body/src/layout-body.js +22 -11
  6. package/es/list/src/list.js +86 -35
  7. package/es/list/style.css +25 -8
  8. package/es/list/style.min.css +1 -1
  9. package/es/scrollbar/src/scrollbar.js +69 -17
  10. package/es/style.css +1 -1
  11. package/es/style.min.css +1 -1
  12. package/es/tabs/src/tabs.js +19 -3
  13. package/es/tree/src/tree.js +439 -56
  14. package/es/tree/style.css +43 -0
  15. package/es/tree/style.min.css +1 -1
  16. package/es/ui/index.js +1 -1
  17. package/es/ui/src/log.js +1 -1
  18. package/es/ui/src/utils.js +3 -0
  19. package/es/vxe-list/style.css +25 -8
  20. package/es/vxe-list/style.min.css +1 -1
  21. package/es/vxe-tree/style.css +43 -0
  22. package/es/vxe-tree/style.min.css +1 -1
  23. package/lib/card/src/card.js +18 -3
  24. package/lib/card/src/card.min.js +1 -1
  25. package/lib/icon/style/style.css +1 -1
  26. package/lib/icon/style/style.min.css +1 -1
  27. package/lib/index.umd.js +640 -139
  28. package/lib/index.umd.min.js +1 -1
  29. package/lib/language/fr-FR.js +29 -29
  30. package/lib/language/fr-FR.min.js +1 -1
  31. package/lib/language/fr-FR.umd.js +29 -29
  32. package/lib/layout-aside/src/layout-aside.js +8 -8
  33. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  34. package/lib/layout-body/src/layout-body.js +26 -19
  35. package/lib/layout-body/src/layout-body.min.js +1 -1
  36. package/lib/list/src/list.js +73 -32
  37. package/lib/list/src/list.min.js +1 -1
  38. package/lib/list/style/style.css +25 -8
  39. package/lib/list/style/style.min.css +1 -1
  40. package/lib/scrollbar/src/scrollbar.js +74 -15
  41. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  42. package/lib/style.css +1 -1
  43. package/lib/style.min.css +1 -1
  44. package/lib/tabs/src/tabs.js +20 -7
  45. package/lib/tabs/src/tabs.min.js +1 -1
  46. package/lib/tree/src/tree.js +416 -53
  47. package/lib/tree/src/tree.min.js +1 -1
  48. package/lib/tree/style/style.css +43 -0
  49. package/lib/tree/style/style.min.css +1 -1
  50. package/lib/ui/index.js +1 -1
  51. package/lib/ui/index.min.js +1 -1
  52. package/lib/ui/src/log.js +1 -1
  53. package/lib/ui/src/log.min.js +1 -1
  54. package/lib/ui/src/utils.js +4 -0
  55. package/lib/ui/src/utils.min.js +1 -1
  56. package/lib/vxe-list/style/style.css +25 -8
  57. package/lib/vxe-list/style/style.min.css +1 -1
  58. package/lib/vxe-tree/style/style.css +43 -0
  59. package/lib/vxe-tree/style/style.min.css +1 -1
  60. package/package.json +1 -1
  61. package/packages/card/src/card.ts +19 -3
  62. package/packages/language/fr-FR.ts +903 -903
  63. package/packages/layout-aside/src/layout-aside.ts +8 -5
  64. package/packages/layout-body/src/layout-body.ts +26 -14
  65. package/packages/list/src/list.ts +97 -41
  66. package/packages/scrollbar/src/scrollbar.ts +79 -17
  67. package/packages/tabs/src/tabs.ts +20 -7
  68. package/packages/tree/src/tree.ts +482 -67
  69. package/packages/ui/src/utils.ts +4 -0
  70. package/styles/components/list.scss +35 -10
  71. package/styles/components/tree.scss +76 -0
  72. package/types/components/card.d.ts +10 -1
  73. package/types/components/layout-aside.d.ts +10 -1
  74. package/types/components/layout-body.d.ts +10 -1
  75. package/types/components/list.d.ts +10 -1
  76. package/types/components/scrollbar.d.ts +16 -2
  77. package/types/components/table.d.ts +47 -4
  78. package/types/components/tabs.d.ts +10 -1
  79. package/types/components/tree.d.ts +33 -2
  80. /package/es/icon/{iconfont.1791880407207.ttf → iconfont.1791950618327.ttf} +0 -0
  81. /package/es/icon/{iconfont.1791880407207.woff → iconfont.1791950618327.woff} +0 -0
  82. /package/es/icon/{iconfont.1791880407207.woff2 → iconfont.1791950618327.woff2} +0 -0
  83. /package/es/{iconfont.1791880407207.ttf → iconfont.1791950618327.ttf} +0 -0
  84. /package/es/{iconfont.1791880407207.woff → iconfont.1791950618327.woff} +0 -0
  85. /package/es/{iconfont.1791880407207.woff2 → iconfont.1791950618327.woff2} +0 -0
  86. /package/lib/icon/style/{iconfont.1791880407207.ttf → iconfont.1791950618327.ttf} +0 -0
  87. /package/lib/icon/style/{iconfont.1791880407207.woff → iconfont.1791950618327.woff} +0 -0
  88. /package/lib/icon/style/{iconfont.1791880407207.woff2 → iconfont.1791950618327.woff2} +0 -0
  89. /package/lib/{iconfont.1791880407207.ttf → iconfont.1791950618327.ttf} +0 -0
  90. /package/lib/{iconfont.1791880407207.woff → iconfont.1791950618327.woff} +0 -0
  91. /package/lib/{iconfont.1791880407207.woff2 → iconfont.1791950618327.woff2} +0 -0
@@ -14,6 +14,7 @@ var _store = require("./store");
14
14
  var _dom = require("../../ui/src/dom");
15
15
  var _utils = require("../../ui/src/utils");
16
16
  var _anime = require("../../ui/src/anime");
17
+ var _util2 = require("../../scrollbar/src/util");
17
18
  var _loading = _interopRequireDefault(require("../../loading"));
18
19
  var _tooltip = _interopRequireDefault(require("../../tooltip"));
19
20
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -522,6 +523,34 @@ function insertTreeNode($xeTree, newRecords, isAppend) {
522
523
  nodeMaps[nodeid] = itemRest;
523
524
  });
524
525
  }
526
+ function createReactData() {
527
+ return {
528
+ parentHeight: 0,
529
+ customHeight: 0,
530
+ customMinHeight: 0,
531
+ customMaxHeight: 0,
532
+ currentNode: null,
533
+ scrollYLoad: false,
534
+ bodyHeight: 0,
535
+ topSpaceHeight: 0,
536
+ selectRadioKey: null,
537
+ treeList: [],
538
+ updateExpandedFlag: 1,
539
+ updateCheckboxFlag: 1,
540
+ // 滚动条
541
+ yThumbHeight: 0,
542
+ xThumbWidth: 0,
543
+ insertNodeFlag: 1,
544
+ removeNodeFlag: 1,
545
+ dragNode: null,
546
+ dragTipText: '',
547
+ isCrossDragNode: false,
548
+ tooltipStore: {
549
+ visible: false,
550
+ node: null
551
+ }
552
+ };
553
+ }
525
554
  function createInternalData() {
526
555
  return {
527
556
  // initialized: false,
@@ -534,8 +563,14 @@ function createInternalData() {
534
563
  indeterminateNodeMaps: {},
535
564
  treeExpandedMaps: {},
536
565
  treeExpandLazyLoadedMaps: {},
537
- lastScrollLeft: 0,
566
+ // 滚动条
567
+ // resizeObserver: undefined,
568
+ // isThumbDrag: false,
569
+ thumbDragOffset: 0,
570
+ yThumbTop: 0,
571
+ xThumbLeft: 0,
538
572
  lastScrollTop: 0,
573
+ lastScrollLeft: 0,
539
574
  scrollYStore: {
540
575
  startIndex: 0,
541
576
  endIndex: 0,
@@ -552,31 +587,6 @@ function createInternalData() {
552
587
  // hpTimeout: undefined
553
588
  };
554
589
  }
555
- function createReactData() {
556
- return {
557
- parentHeight: 0,
558
- customHeight: 0,
559
- customMinHeight: 0,
560
- customMaxHeight: 0,
561
- currentNode: null,
562
- scrollYLoad: false,
563
- bodyHeight: 0,
564
- topSpaceHeight: 0,
565
- selectRadioKey: null,
566
- treeList: [],
567
- updateExpandedFlag: 1,
568
- updateCheckboxFlag: 1,
569
- insertNodeFlag: 1,
570
- removeNodeFlag: 1,
571
- dragNode: null,
572
- dragTipText: '',
573
- isCrossDragNode: false,
574
- tooltipStore: {
575
- visible: false,
576
- node: null
577
- }
578
- };
579
- }
580
590
  var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defineVxeComponent)({
581
591
  name: 'VxeTree',
582
592
  mixins: [_ui.globalMixins.sizeMixin],
@@ -755,7 +765,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
755
765
  return getConfig().tree.size || getConfig().size;
756
766
  }
757
767
  },
758
- virtualYConfig: Object
768
+ virtualYConfig: Object,
769
+ useScrollbar: {
770
+ type: Boolean,
771
+ default: function _default() {
772
+ return getConfig().tree.useScrollbar;
773
+ }
774
+ },
775
+ scrollbarConfig: Object
759
776
  },
760
777
  provide: function provide() {
761
778
  var $xeTree = this;
@@ -770,7 +787,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
770
787
  xID: xID,
771
788
  reactData: reactData,
772
789
  crossTreeDragNodeInfo: _store.crossTreeDragNodeGlobal,
773
- hFlag: 0,
790
+ reFlag: 0,
774
791
  dataFlag: 0
775
792
  });
776
793
  },
@@ -875,6 +892,20 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
875
892
  var props = $xeTree;
876
893
  return Object.assign({}, getConfig().tree.menuConfig, props.menuConfig);
877
894
  },
895
+ computeWrapperStyles: function computeWrapperStyles() {
896
+ var $xeTree = this;
897
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
898
+ var scrollbarXOpts = $xeTree.computeScrollbarXOpts;
899
+ var scrollbarYOpts = $xeTree.computeScrollbarYOpts;
900
+ var barWidth = (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
901
+ var barHeight = (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
902
+ var stys = {};
903
+ if (barWidth || barHeight) {
904
+ stys['--vxe-ui-scrollbar-y-width'] = (0, _dom.toCssUnit)(barWidth || barHeight);
905
+ stys['--vxe-ui-scrollbar-x-height'] = (0, _dom.toCssUnit)(barHeight || barWidth);
906
+ }
907
+ return stys;
908
+ },
878
909
  computeTreeStyle: function computeTreeStyle() {
879
910
  var $xeTree = this;
880
911
  var props = $xeTree;
@@ -914,6 +945,78 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
914
945
  var $xeTree = this;
915
946
  var props = $xeTree;
916
947
  return Object.assign({}, getConfig().tree.filterConfig, props.filterConfig);
948
+ },
949
+ computeScrollbarOpts: function computeScrollbarOpts() {
950
+ var $xeTree = this;
951
+ var props = $xeTree;
952
+ return Object.assign({}, getConfig().tree.scrollbarConfig, props.scrollbarConfig);
953
+ },
954
+ computeScrollbarXOpts: function computeScrollbarXOpts() {
955
+ var $xeTree = this;
956
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
957
+ return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig, {
958
+ visible: false
959
+ });
960
+ },
961
+ computeScrollbarYOpts: function computeScrollbarYOpts() {
962
+ var $xeTree = this;
963
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
964
+ return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
965
+ },
966
+ computeScrollXVisible: function computeScrollXVisible() {
967
+ var $xeTree = this;
968
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
969
+ var scrollbarXOpts = $xeTree.computeScrollbarXOpts;
970
+ return (0, _utils.getDefaultConfig)(scrollbarXOpts.visible, scrollbarOpts.visible);
971
+ },
972
+ computeScrollYVisible: function computeScrollYVisible() {
973
+ var $xeTree = this;
974
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
975
+ var scrollbarYOpts = $xeTree.computeScrollbarYOpts;
976
+ return (0, _utils.getDefaultConfig)(scrollbarYOpts.visible, scrollbarOpts.visible);
977
+ },
978
+ computeScrollXAutoHide: function computeScrollXAutoHide() {
979
+ var $xeTree = this;
980
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
981
+ var scrollbarXOpts = $xeTree.computeScrollbarXOpts;
982
+ return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
983
+ },
984
+ computeScrollYAutoHide: function computeScrollYAutoHide() {
985
+ var $xeTree = this;
986
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
987
+ var scrollbarYOpts = $xeTree.computeScrollbarYOpts;
988
+ return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
989
+ },
990
+ computeScrollbarWrapperClss: function computeScrollbarWrapperClss() {
991
+ var $xeTree = this;
992
+ var reactData = $xeTree.reactData;
993
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
994
+ var padding = scrollbarOpts.padding;
995
+ var yThumbHeight = reactData.yThumbHeight,
996
+ xThumbWidth = reactData.xThumbWidth;
997
+ var scrollbarXToTop = $xeTree.computeScrollbarXToTop;
998
+ var scrollbarYToLeft = $xeTree.computeScrollbarYToLeft;
999
+ var scrollXVisible = $xeTree.computeScrollXVisible;
1000
+ var scrollYVisible = $xeTree.computeScrollYVisible;
1001
+ var scrollXAutoHide = $xeTree.computeScrollXAutoHide;
1002
+ var scrollYAutoHide = $xeTree.computeScrollYAutoHide;
1003
+ return _ui.domUtils.buildClass(['vxe-scrollbar is--virtual', "ov-x--".concat(scrollXVisible === false ? 'hidden' : 'visible'), "ov-y--".concat(scrollYVisible === false ? 'hidden' : 'visible'), "sx-pos--".concat(scrollbarXToTop ? 'top' : 'bottom'), "sy-pos--".concat(scrollbarYToLeft ? 'left' : 'right')], {
1004
+ 'is--padding': padding,
1005
+ 'ov-x--auto-hide': scrollXAutoHide,
1006
+ 'ov-y--auto-hide': scrollYAutoHide,
1007
+ 'overflow-y': yThumbHeight,
1008
+ 'overflow-x': xThumbWidth
1009
+ });
1010
+ },
1011
+ computeScrollbarXToTop: function computeScrollbarXToTop() {
1012
+ var $xeTree = this;
1013
+ var scrollbarXOpts = $xeTree.computeScrollbarXOpts;
1014
+ return scrollbarXOpts.position === 'top';
1015
+ },
1016
+ computeScrollbarYToLeft: function computeScrollbarYToLeft() {
1017
+ var $xeTree = this;
1018
+ var scrollbarYOpts = $xeTree.computeScrollbarYOpts;
1019
+ return scrollbarYOpts.position === 'left';
917
1020
  }
918
1021
  }),
919
1022
  methods: {
@@ -1563,6 +1666,11 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1563
1666
  }
1564
1667
  });
1565
1668
  },
1669
+ updateScrollbar: function updateScrollbar() {
1670
+ var $xeTree = this;
1671
+ $xeTree.updateThumbSize();
1672
+ $xeTree.updateThumbOffset();
1673
+ },
1566
1674
  /**
1567
1675
  * 重新计算列表
1568
1676
  */
@@ -1587,6 +1695,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1587
1695
  var parentPaddingSize = (0, _dom.getPaddingTopBottomSize)(parentEl);
1588
1696
  reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight);
1589
1697
  }
1698
+ $xeTree.updateScrollbar();
1590
1699
  $xeTree.updateHeight();
1591
1700
  return $xeTree.computeScrollLoad().then(function () {
1592
1701
  $xeTree.updateHeight();
@@ -1635,6 +1744,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1635
1744
  var scrollLeft = scrollBodyElem.scrollLeft;
1636
1745
  var isX = scrollLeft !== internalData.lastScrollLeft;
1637
1746
  var isY = scrollTop !== internalData.lastScrollTop;
1747
+ $xeTree.updateThumbOffset();
1638
1748
  internalData.lastScrollTop = scrollTop;
1639
1749
  internalData.lastScrollLeft = scrollLeft;
1640
1750
  if (reactData.scrollYLoad) {
@@ -2623,14 +2733,6 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
2623
2733
  checked: isChecked
2624
2734
  }, evnt);
2625
2735
  },
2626
- handleGlobalResizeEvent: function handleGlobalResizeEvent() {
2627
- var $xeTree = this;
2628
- var el = $xeTree.$refs.refElem;
2629
- if (!el || !el.clientWidth) {
2630
- return;
2631
- }
2632
- $xeTree.recalculate();
2633
- },
2634
2736
  reloadData: function reloadData(data) {
2635
2737
  var $xeTree = this;
2636
2738
  return $xeTree.loadData(data || []);
@@ -3429,6 +3531,189 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3429
3531
  }, evnt);
3430
3532
  }
3431
3533
  },
3534
+ // 滚动条
3535
+ updateThumbSize: function updateThumbSize() {
3536
+ var $xeTree = this;
3537
+ var reactData = $xeTree.reactData;
3538
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3539
+ if (!viewEl) {
3540
+ return;
3541
+ }
3542
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
3543
+ return;
3544
+ }
3545
+ var trackXEl = $xeTree.$refs.refTrackXElem;
3546
+ var xThumbWidth = trackXEl ? (0, _util2.getThumbSize)(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
3547
+ var thumbXElem = $xeTree.$refs.refThumbXElem;
3548
+ if (thumbXElem) {
3549
+ thumbXElem.style.width = xThumbWidth + 'px';
3550
+ }
3551
+ reactData.xThumbWidth = xThumbWidth;
3552
+ var trackYEl = $xeTree.$refs.refTrackYElem;
3553
+ var yThumbHeight = trackYEl ? (0, _util2.getThumbSize)(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
3554
+ var thumbYElem = $xeTree.$refs.refThumbYElem;
3555
+ if (thumbYElem) {
3556
+ thumbYElem.style.height = yThumbHeight + 'px';
3557
+ }
3558
+ reactData.yThumbHeight = yThumbHeight;
3559
+ },
3560
+ updateThumbOffset: function updateThumbOffset() {
3561
+ var $xeTree = this;
3562
+ var reactData = $xeTree.reactData;
3563
+ var internalData = $xeTree.internalData;
3564
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3565
+ if (!viewEl) {
3566
+ return;
3567
+ }
3568
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
3569
+ return;
3570
+ }
3571
+ var xThumbWidth = reactData.xThumbWidth,
3572
+ yThumbHeight = reactData.yThumbHeight;
3573
+ var trackXEl = $xeTree.$refs.refTrackXElem;
3574
+ var thumbXElem = $xeTree.$refs.refThumbXElem;
3575
+ var xThumbLeft = trackXEl && xThumbWidth ? (0, _util2.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
3576
+ internalData.xThumbLeft = xThumbLeft;
3577
+ if (thumbXElem && xThumbWidth) {
3578
+ thumbXElem.style.width = xThumbWidth + 'px';
3579
+ thumbXElem.style.transform = "translateX(".concat(xThumbLeft, "px)");
3580
+ }
3581
+ var trackYEl = $xeTree.$refs.refTrackYElem;
3582
+ var thumbYElem = $xeTree.$refs.refThumbYElem;
3583
+ var yThumbTop = trackYEl && yThumbHeight ? (0, _util2.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
3584
+ internalData.yThumbTop = yThumbTop;
3585
+ if (thumbYElem && yThumbHeight) {
3586
+ thumbYElem.style.height = yThumbHeight + 'px';
3587
+ thumbYElem.style.transform = "translateY(".concat(yThumbTop, "px)");
3588
+ }
3589
+ },
3590
+ clickTrackXEvent: function clickTrackXEvent(evnt) {
3591
+ var $xeTree = this;
3592
+ var reactData = $xeTree.reactData;
3593
+ var trackEl = evnt.currentTarget;
3594
+ if (trackEl !== evnt.target) {
3595
+ return;
3596
+ }
3597
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3598
+ if (!viewEl) {
3599
+ return;
3600
+ }
3601
+ var xThumbWidth = reactData.xThumbWidth;
3602
+ var trackRect = trackEl.getBoundingClientRect();
3603
+ viewEl.scrollTo({
3604
+ left: (0, _util2.getScrollFromClick)(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
3605
+ behavior: 'auto'
3606
+ });
3607
+ },
3608
+ clickTrackYEvent: function clickTrackYEvent(evnt) {
3609
+ var $xeTree = this;
3610
+ var reactData = $xeTree.reactData;
3611
+ var trackEl = evnt.currentTarget;
3612
+ if (trackEl !== evnt.target) {
3613
+ return;
3614
+ }
3615
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3616
+ if (!viewEl) {
3617
+ return;
3618
+ }
3619
+ var yThumbHeight = reactData.yThumbHeight;
3620
+ var trackRect = trackEl.getBoundingClientRect();
3621
+ viewEl.scrollTo({
3622
+ top: (0, _util2.getScrollFromClick)(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
3623
+ behavior: 'auto'
3624
+ });
3625
+ },
3626
+ pointerdownThumbXEvent: function pointerdownThumbXEvent(evnt) {
3627
+ var $xeTree = this;
3628
+ var reactData = $xeTree.reactData;
3629
+ var internalData = $xeTree.internalData;
3630
+ var thumbEl = evnt.currentTarget;
3631
+ internalData.isThumbDrag = true;
3632
+ thumbEl.setPointerCapture(evnt.pointerId);
3633
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3634
+ if (!viewEl) {
3635
+ return;
3636
+ }
3637
+ var xThumbWidth = reactData.xThumbWidth;
3638
+ var trackEl = thumbEl.parentElement;
3639
+ var trackRect = trackEl.getBoundingClientRect();
3640
+ var pointerPosition = evnt.clientX - trackRect.left;
3641
+ // 记录 thumb 的偏移
3642
+ var thumbOffset = (0, _util2.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
3643
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
3644
+ },
3645
+ pointermoveThumbXEvent: function pointermoveThumbXEvent(evnt) {
3646
+ var $xeTree = this;
3647
+ var reactData = $xeTree.reactData;
3648
+ var internalData = $xeTree.internalData;
3649
+ var thumbEl = evnt.currentTarget;
3650
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
3651
+ return;
3652
+ }
3653
+ var isThumbDrag = internalData.isThumbDrag,
3654
+ thumbDragOffset = internalData.thumbDragOffset;
3655
+ if (isThumbDrag) {
3656
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3657
+ if (!viewEl) {
3658
+ return;
3659
+ }
3660
+ var xThumbWidth = reactData.xThumbWidth;
3661
+ var _thumbEl = evnt.currentTarget;
3662
+ var trackEl = _thumbEl.parentElement;
3663
+ var trackRect = trackEl.getBoundingClientRect();
3664
+ // 更新偏移
3665
+ viewEl.scrollLeft = (0, _util2.getScrollFromDrag)(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
3666
+ }
3667
+ },
3668
+ cleatPointerThumbEvent: function cleatPointerThumbEvent(evnt) {
3669
+ var $xeTree = this;
3670
+ var internalData = $xeTree.internalData;
3671
+ var thumbEl = evnt.currentTarget;
3672
+ thumbEl.releasePointerCapture(evnt.pointerId);
3673
+ internalData.isThumbDrag = false;
3674
+ },
3675
+ pointerdownThumbYEvent: function pointerdownThumbYEvent(evnt) {
3676
+ var $xeTree = this;
3677
+ var reactData = $xeTree.reactData;
3678
+ var internalData = $xeTree.internalData;
3679
+ var thumbEl = evnt.currentTarget;
3680
+ internalData.isThumbDrag = true;
3681
+ thumbEl.setPointerCapture(evnt.pointerId);
3682
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3683
+ if (!viewEl) {
3684
+ return;
3685
+ }
3686
+ var yThumbHeight = reactData.yThumbHeight;
3687
+ var trackEl = thumbEl.parentElement;
3688
+ var trackRect = trackEl.getBoundingClientRect();
3689
+ var pointerPosition = evnt.clientY - trackRect.top;
3690
+ // 记录 thumb 的偏移
3691
+ var thumbOffset = (0, _util2.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
3692
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
3693
+ },
3694
+ pointermoveThumbYEvent: function pointermoveThumbYEvent(evnt) {
3695
+ var $xeTree = this;
3696
+ var reactData = $xeTree.reactData;
3697
+ var internalData = $xeTree.internalData;
3698
+ var thumbEl = evnt.currentTarget;
3699
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
3700
+ return;
3701
+ }
3702
+ var isThumbDrag = internalData.isThumbDrag,
3703
+ thumbDragOffset = internalData.thumbDragOffset;
3704
+ if (isThumbDrag) {
3705
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3706
+ if (!viewEl) {
3707
+ return;
3708
+ }
3709
+ var yThumbHeight = reactData.yThumbHeight;
3710
+ var _thumbEl2 = evnt.currentTarget;
3711
+ var trackEl = _thumbEl2.parentElement;
3712
+ var trackRect = trackEl.getBoundingClientRect();
3713
+ // 更新偏移
3714
+ viewEl.scrollTop = (0, _util2.getScrollFromDrag)(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
3715
+ }
3716
+ },
3432
3717
  //
3433
3718
  // Render
3434
3719
  //
@@ -3756,22 +4041,27 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3756
4041
  return (0, _ui.renderEmptyElement)($xeTree);
3757
4042
  },
3758
4043
  renderVN: function renderVN(h) {
4044
+ var _ref;
3759
4045
  var $xeTree = this;
3760
4046
  var props = $xeTree;
3761
4047
  var slots = $xeTree.$scopedSlots;
3762
4048
  var reactData = $xeTree.reactData;
3763
4049
  var loading = props.loading,
3764
4050
  trigger = props.trigger,
3765
- showLine = props.showLine;
4051
+ showLine = props.showLine,
4052
+ useScrollbar = props.useScrollbar;
3766
4053
  var bodyHeight = reactData.bodyHeight,
3767
4054
  topSpaceHeight = reactData.topSpaceHeight,
3768
4055
  treeList = reactData.treeList,
3769
- tooltipStore = reactData.tooltipStore;
4056
+ tooltipStore = reactData.tooltipStore,
4057
+ xThumbWidth = reactData.xThumbWidth,
4058
+ yThumbHeight = reactData.yThumbHeight;
3770
4059
  var vSize = $xeTree.computeSize;
3771
4060
  var radioOpts = $xeTree.computeRadioOpts;
3772
4061
  var checkboxOpts = $xeTree.computeCheckboxOpts;
3773
4062
  var loadingOpts = $xeTree.computeLoadingOpts;
3774
4063
  var isNodeHover = $xeTree.computeIsNodeHover;
4064
+ var wrapperStyles = $xeTree.computeWrapperStyles;
3775
4065
  var treeStyle = $xeTree.computeTreeStyle;
3776
4066
  var dragOpts = $xeTree.computeDragOpts;
3777
4067
  var tooltipOpts = $xeTree.computeTooltipOpts;
@@ -3779,13 +4069,22 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3779
4069
  var headerSlot = slots.header;
3780
4070
  var footerSlot = slots.footer;
3781
4071
  var tooltipSlot = slots.tooltip;
4072
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
4073
+ var scrollXVisible = $xeTree.computeScrollXVisible;
4074
+ var scrollYVisible = $xeTree.computeScrollYVisible;
4075
+ var scrollbarXToTop = $xeTree.computeScrollbarXToTop;
4076
+ var scrollbarYToLeft = $xeTree.computeScrollbarYToLeft;
4077
+ var scrollXAutoHide = $xeTree.computeScrollXAutoHide;
4078
+ var scrollYAutoHide = $xeTree.computeScrollYAutoHide;
4079
+ var scrollbarWrapperClss = $xeTree.computeScrollbarWrapperClss;
3782
4080
  var teOns = {};
3783
4081
  if (dragOpts.isCrossTreeDrag && !treeList.length) {
3784
4082
  teOns.dragover = $xeTree.handleCrossTreeNodeDragoverEmptyEvent;
3785
4083
  }
3786
4084
  return h('div', {
3787
4085
  ref: 'refElem',
3788
- class: ['vxe-tree', _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'show--line', showLine), 'checkbox--highlight', checkboxOpts.highlight), 'radio--highlight', radioOpts.highlight), 'node--hover', isNodeHover), 'node--trigger', trigger === 'node'), 'is--loading', loading)],
4086
+ class: ['vxe-tree', useScrollbar ? "ov-x--".concat(scrollXVisible === false ? 'hidden' : 'visible') : '', useScrollbar ? "ov-y--".concat(scrollYVisible === false ? 'hidden' : 'visible') : '', useScrollbar ? "sx-pos--".concat(scrollbarXToTop ? 'top' : 'bottom') : '', useScrollbar ? "sy-pos--".concat(scrollbarYToLeft ? 'left' : 'right') : '', (_ref = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ref, "size--".concat(vSize), vSize), 'show--line', showLine), 'is--virtual-scrollbar', useScrollbar), 'ov-padding', useScrollbar && scrollbarOpts.padding), 'ov-x--auto-hide', useScrollbar && scrollXAutoHide), 'ov-y--auto-hide', useScrollbar && scrollYAutoHide), 'overflow-y', yThumbHeight), 'overflow-x', xThumbWidth), 'checkbox--highlight', checkboxOpts.highlight), 'radio--highlight', radioOpts.highlight), _defineProperty(_defineProperty(_defineProperty(_ref, 'node--hover', isNodeHover), 'node--trigger', trigger === 'node'), 'is--loading', loading))],
4087
+ style: wrapperStyles,
3789
4088
  on: teOns
3790
4089
  }, [headerSlot ? h('div', {
3791
4090
  ref: 'refHeaderWrapperElem',
@@ -3816,6 +4115,44 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3816
4115
  }, footerSlot({
3817
4116
  $tree: $xeTree
3818
4117
  })) : (0, _ui.renderEmptyElement)($xeTree),
4118
+ /**
4119
+ * 滚动条
4120
+ */
4121
+ useScrollbar ? h('div', {
4122
+ class: scrollbarWrapperClss
4123
+ }, [scrollXVisible === false ? (0, _ui.renderEmptyElement)($xeTree) : h('div', {
4124
+ ref: 'refTrackXElem',
4125
+ class: 'vxe-scrollbar--track-x',
4126
+ on: {
4127
+ click: $xeTree.clickTrackXEvent
4128
+ }
4129
+ }, [h('div', {
4130
+ ref: 'refThumbXElem',
4131
+ class: 'vxe-scrollbar--thumb-x',
4132
+ on: {
4133
+ pointerdown: $xeTree.pointerdownThumbXEvent,
4134
+ pointermove: $xeTree.pointermoveThumbXEvent,
4135
+ pointerup: $xeTree.cleatPointerThumbEvent,
4136
+ pointercancel: $xeTree.cleatPointerThumbEvent,
4137
+ lostpointercapture: $xeTree.cleatPointerThumbEvent
4138
+ }
4139
+ })]), scrollYVisible === false ? (0, _ui.renderEmptyElement)($xeTree) : h('div', {
4140
+ ref: 'refTrackYElem',
4141
+ class: 'vxe-scrollbar--track-y',
4142
+ on: {
4143
+ click: $xeTree.clickTrackYEvent
4144
+ }
4145
+ }, [h('div', {
4146
+ ref: 'refThumbYElem',
4147
+ class: 'vxe-scrollbar--thumb-y',
4148
+ on: {
4149
+ pointerdown: $xeTree.pointerdownThumbYEvent,
4150
+ pointermove: $xeTree.pointermoveThumbYEvent,
4151
+ pointerup: $xeTree.cleatPointerThumbEvent,
4152
+ pointercancel: $xeTree.cleatPointerThumbEvent,
4153
+ lostpointercapture: $xeTree.cleatPointerThumbEvent
4154
+ }
4155
+ })])]) : (0, _ui.renderEmptyElement)($xeTree),
3819
4156
  /**
3820
4157
  * 拖拽提示
3821
4158
  */
@@ -3905,19 +4242,37 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3905
4242
  },
3906
4243
  height: function height() {
3907
4244
  var $xeTree = this;
3908
- $xeTree.hFlag++;
4245
+ $xeTree.reFlag++;
3909
4246
  },
3910
4247
  minHeight: function minHeight() {
3911
4248
  var $xeTree = this;
3912
- $xeTree.hFlag++;
4249
+ $xeTree.reFlag++;
3913
4250
  },
3914
4251
  maxHeight: function maxHeight() {
3915
4252
  var $xeTree = this;
3916
- $xeTree.hFlag++;
4253
+ $xeTree.reFlag++;
3917
4254
  },
3918
- hFlag: function hFlag() {
4255
+ useScrollbar: function useScrollbar() {
3919
4256
  var $xeTree = this;
3920
- $xeTree.recalculate();
4257
+ $xeTree.reFlag++;
4258
+ },
4259
+ computeScrollXVisible: function computeScrollXVisible() {
4260
+ var $xeTree = this;
4261
+ $xeTree.$nextTick(function () {
4262
+ $xeTree.reFlag++;
4263
+ });
4264
+ },
4265
+ computeScrollYVisible: function computeScrollYVisible() {
4266
+ var $xeTree = this;
4267
+ $xeTree.$nextTick(function () {
4268
+ $xeTree.reFlag++;
4269
+ });
4270
+ },
4271
+ reFlag: function reFlag() {
4272
+ var $xeTree = this;
4273
+ $xeTree.recalculate().then(function () {
4274
+ $xeTree.recalculate();
4275
+ });
3921
4276
  }
3922
4277
  },
3923
4278
  created: function created() {
@@ -3937,7 +4292,9 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3937
4292
  menuConfig = props.menuConfig,
3938
4293
  showOverflow = props.showOverflow,
3939
4294
  lazy = props.lazy,
3940
- loadMethod = props.loadMethod;
4295
+ loadMethod = props.loadMethod,
4296
+ autoResize = props.autoResize,
4297
+ useScrollbar = props.useScrollbar;
3941
4298
  var dragOpts = $xeTree.computeDragOpts;
3942
4299
  if (!showOverflow) {
3943
4300
  errLog('vxe.error.errProp', ['show-overflow=false', 'show-overflow=true']);
@@ -3958,24 +4315,30 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3958
4315
  if (menuConfig && !VxeUIContextMenu) {
3959
4316
  errLog('vxe.error.reqComp', ['vxe-context-menu']);
3960
4317
  }
3961
- if (props.autoResize) {
4318
+ if (useScrollbar || autoResize) {
3962
4319
  var el = $xeTree.$refs.refElem;
4320
+ var viewInnerEl = $xeTree.$refs.refVirtualBody;
3963
4321
  var parentEl = $xeTree.getParentElem();
3964
4322
  var resizeObserver = _ui.globalResize.create(function () {
3965
- if (props.autoResize) {
3966
- $xeTree.recalculate();
3967
- }
4323
+ $xeTree.reFlag++;
3968
4324
  });
3969
4325
  if (el) {
3970
4326
  resizeObserver.observe(el);
4327
+ if (autoResize) {
4328
+ if (parentEl) {
4329
+ resizeObserver.observe(parentEl);
4330
+ }
4331
+ }
3971
4332
  }
3972
- if (parentEl) {
3973
- resizeObserver.observe(parentEl);
4333
+ if (viewInnerEl) {
4334
+ resizeObserver.observe(viewInnerEl);
3974
4335
  }
3975
4336
  internalData.resizeObserver = resizeObserver;
3976
4337
  }
3977
- $xeTree.recalculate();
3978
- _ui.globalEvents.on($xeTree, 'resize', $xeTree.handleGlobalResizeEvent);
4338
+ $xeTree.reFlag++;
4339
+ _ui.globalEvents.on($xeTree, 'resize', function () {
4340
+ $xeTree.reFlag++;
4341
+ });
3979
4342
  },
3980
4343
  beforeDestroy: function beforeDestroy() {
3981
4344
  var $xeTree = this;