vxe-pc-ui 3.20.0 → 3.20.2

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 (125) hide show
  1. package/es/card/src/card.js +20 -4
  2. package/es/drawer/src/drawer.js +75 -16
  3. package/es/drawer/style.css +13 -6
  4. package/es/drawer/style.min.css +1 -1
  5. package/es/icon/style.css +1 -1
  6. package/es/language/fr-FR.js +29 -29
  7. package/es/layout-aside/src/layout-aside.js +10 -6
  8. package/es/layout-body/src/layout-body.js +24 -12
  9. package/es/list/src/list.js +131 -49
  10. package/es/list/style.css +25 -8
  11. package/es/list/style.min.css +1 -1
  12. package/es/menu/src/menu.js +2 -2
  13. package/es/modal/src/modal.js +73 -14
  14. package/es/modal/style.css +4 -0
  15. package/es/modal/style.min.css +1 -1
  16. package/es/scrollbar/src/scrollbar.js +87 -19
  17. package/es/style.css +1 -1
  18. package/es/style.min.css +1 -1
  19. package/es/tabs/src/tabs.js +21 -5
  20. package/es/tree/src/tree.js +460 -54
  21. package/es/tree/style.css +43 -0
  22. package/es/tree/style.min.css +1 -1
  23. package/es/ui/index.js +1 -1
  24. package/es/ui/src/log.js +1 -1
  25. package/es/ui/src/utils.js +3 -0
  26. package/es/vxe-drawer/style.css +13 -6
  27. package/es/vxe-drawer/style.min.css +1 -1
  28. package/es/vxe-list/style.css +25 -8
  29. package/es/vxe-list/style.min.css +1 -1
  30. package/es/vxe-modal/style.css +4 -0
  31. package/es/vxe-modal/style.min.css +1 -1
  32. package/es/vxe-tree/style.css +43 -0
  33. package/es/vxe-tree/style.min.css +1 -1
  34. package/lib/card/src/card.js +20 -4
  35. package/lib/card/src/card.min.js +1 -1
  36. package/lib/drawer/src/drawer.js +76 -12
  37. package/lib/drawer/src/drawer.min.js +1 -1
  38. package/lib/drawer/style/style.css +13 -6
  39. package/lib/drawer/style/style.min.css +1 -1
  40. package/lib/icon/style/style.css +1 -1
  41. package/lib/icon/style/style.min.css +1 -1
  42. package/lib/index.umd.js +956 -185
  43. package/lib/index.umd.min.js +1 -1
  44. package/lib/language/fr-FR.js +29 -29
  45. package/lib/language/fr-FR.min.js +1 -1
  46. package/lib/language/fr-FR.umd.js +29 -29
  47. package/lib/layout-aside/src/layout-aside.js +10 -9
  48. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  49. package/lib/layout-body/src/layout-body.js +28 -20
  50. package/lib/layout-body/src/layout-body.min.js +1 -1
  51. package/lib/list/src/list.js +119 -46
  52. package/lib/list/src/list.min.js +1 -1
  53. package/lib/list/style/style.css +25 -8
  54. package/lib/list/style/style.min.css +1 -1
  55. package/lib/menu/src/menu.js +1 -1
  56. package/lib/menu/src/menu.min.js +1 -1
  57. package/lib/modal/src/modal.js +74 -12
  58. package/lib/modal/src/modal.min.js +1 -1
  59. package/lib/modal/style/style.css +4 -0
  60. package/lib/modal/style/style.min.css +1 -1
  61. package/lib/scrollbar/src/scrollbar.js +92 -17
  62. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  63. package/lib/style.css +1 -1
  64. package/lib/style.min.css +1 -1
  65. package/lib/tabs/src/tabs.js +21 -8
  66. package/lib/tabs/src/tabs.min.js +1 -1
  67. package/lib/tree/src/tree.js +438 -51
  68. package/lib/tree/src/tree.min.js +1 -1
  69. package/lib/tree/style/style.css +43 -0
  70. package/lib/tree/style/style.min.css +1 -1
  71. package/lib/ui/index.js +1 -1
  72. package/lib/ui/index.min.js +1 -1
  73. package/lib/ui/src/log.js +1 -1
  74. package/lib/ui/src/log.min.js +1 -1
  75. package/lib/ui/src/utils.js +4 -0
  76. package/lib/ui/src/utils.min.js +1 -1
  77. package/lib/vxe-drawer/style/style.css +13 -6
  78. package/lib/vxe-drawer/style/style.min.css +1 -1
  79. package/lib/vxe-list/style/style.css +25 -8
  80. package/lib/vxe-list/style/style.min.css +1 -1
  81. package/lib/vxe-modal/style/style.css +4 -0
  82. package/lib/vxe-modal/style/style.min.css +1 -1
  83. package/lib/vxe-tree/style/style.css +43 -0
  84. package/lib/vxe-tree/style/style.min.css +1 -1
  85. package/package.json +2 -2
  86. package/packages/card/src/card.ts +21 -4
  87. package/packages/drawer/src/drawer.ts +80 -16
  88. package/packages/language/fr-FR.ts +903 -903
  89. package/packages/layout-aside/src/layout-aside.ts +10 -6
  90. package/packages/layout-body/src/layout-body.ts +28 -15
  91. package/packages/list/src/list.ts +149 -55
  92. package/packages/menu/src/menu.ts +2 -2
  93. package/packages/modal/src/modal.ts +83 -19
  94. package/packages/scrollbar/src/scrollbar.ts +101 -19
  95. package/packages/tabs/src/tabs.ts +22 -9
  96. package/packages/tree/src/tree.ts +508 -65
  97. package/packages/ui/src/utils.ts +4 -0
  98. package/styles/components/drawer.scss +13 -6
  99. package/styles/components/list.scss +35 -10
  100. package/styles/components/modal.scss +4 -0
  101. package/styles/components/tree.scss +76 -0
  102. package/types/components/card.d.ts +10 -1
  103. package/types/components/drawer.d.ts +20 -0
  104. package/types/components/gantt-module/gantt-view.d.ts +24 -1
  105. package/types/components/gantt.d.ts +2 -0
  106. package/types/components/layout-aside.d.ts +10 -1
  107. package/types/components/layout-body.d.ts +10 -1
  108. package/types/components/list.d.ts +13 -2
  109. package/types/components/modal.d.ts +20 -0
  110. package/types/components/scrollbar.d.ts +16 -2
  111. package/types/components/table.d.ts +80 -6
  112. package/types/components/tabs.d.ts +10 -1
  113. package/types/components/tree.d.ts +35 -2
  114. /package/es/icon/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
  115. /package/es/icon/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
  116. /package/es/icon/{iconfont.1791880407207.woff2 → iconfont.1792034961185.woff2} +0 -0
  117. /package/es/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
  118. /package/es/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
  119. /package/es/{iconfont.1791880407207.woff2 → iconfont.1792034961185.woff2} +0 -0
  120. /package/lib/icon/style/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
  121. /package/lib/icon/style/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
  122. /package/lib/icon/style/{iconfont.1791880407207.woff2 → iconfont.1792034961185.woff2} +0 -0
  123. /package/lib/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
  124. /package/lib/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
  125. /package/lib/{iconfont.1791880407207.woff2 → iconfont.1792034961185.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,15 @@ function createInternalData() {
534
563
  indeterminateNodeMaps: {},
535
564
  treeExpandedMaps: {},
536
565
  treeExpandLazyLoadedMaps: {},
537
- lastScrollLeft: 0,
566
+ // resizeObserver: undefined,
567
+ // 滚动条
568
+ // scrollObserver: undefined,
569
+ // isThumbDrag: false,
570
+ thumbDragOffset: 0,
571
+ yThumbTop: 0,
572
+ xThumbLeft: 0,
538
573
  lastScrollTop: 0,
574
+ lastScrollLeft: 0,
539
575
  scrollYStore: {
540
576
  startIndex: 0,
541
577
  endIndex: 0,
@@ -552,31 +588,6 @@ function createInternalData() {
552
588
  // hpTimeout: undefined
553
589
  };
554
590
  }
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
591
  var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defineVxeComponent)({
581
592
  name: 'VxeTree',
582
593
  mixins: [_ui.globalMixins.sizeMixin],
@@ -755,7 +766,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
755
766
  return getConfig().tree.size || getConfig().size;
756
767
  }
757
768
  },
758
- virtualYConfig: Object
769
+ virtualYConfig: Object,
770
+ useScrollbar: {
771
+ type: Boolean,
772
+ default: function _default() {
773
+ return (0, _utils.getDefaultConfig)(getConfig().tree.useScrollbar, getConfig().useScrollbar);
774
+ }
775
+ },
776
+ scrollbarConfig: Object
759
777
  },
760
778
  provide: function provide() {
761
779
  var $xeTree = this;
@@ -770,7 +788,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
770
788
  xID: xID,
771
789
  reactData: reactData,
772
790
  crossTreeDragNodeInfo: _store.crossTreeDragNodeGlobal,
773
- hFlag: 0,
791
+ reFlag: 0,
774
792
  dataFlag: 0
775
793
  });
776
794
  },
@@ -875,6 +893,17 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
875
893
  var props = $xeTree;
876
894
  return Object.assign({}, getConfig().tree.menuConfig, props.menuConfig);
877
895
  },
896
+ computeWrapperStyles: function computeWrapperStyles() {
897
+ var $xeTree = this;
898
+ var barWidth = $xeTree.computeScrollYWidth;
899
+ var barHeight = $xeTree.computeScrollXHeight;
900
+ var stys = {};
901
+ if (barWidth || barHeight) {
902
+ stys['--vxe-ui-scrollbar-y-width'] = (0, _dom.toCssUnit)(barWidth || barHeight);
903
+ stys['--vxe-ui-scrollbar-x-height'] = (0, _dom.toCssUnit)(barHeight || barWidth);
904
+ }
905
+ return stys;
906
+ },
878
907
  computeTreeStyle: function computeTreeStyle() {
879
908
  var $xeTree = this;
880
909
  var props = $xeTree;
@@ -914,6 +943,83 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
914
943
  var $xeTree = this;
915
944
  var props = $xeTree;
916
945
  return Object.assign({}, getConfig().tree.filterConfig, props.filterConfig);
946
+ },
947
+ computeScrollbarOpts: function computeScrollbarOpts() {
948
+ var $xeTree = this;
949
+ var props = $xeTree;
950
+ return Object.assign({}, getConfig().tree.scrollbarConfig, props.scrollbarConfig);
951
+ },
952
+ computeScrollbarXOpts: function computeScrollbarXOpts() {
953
+ var $xeTree = this;
954
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
955
+ return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig, {
956
+ visible: false
957
+ });
958
+ },
959
+ computeScrollbarYOpts: function computeScrollbarYOpts() {
960
+ var $xeTree = this;
961
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
962
+ return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
963
+ },
964
+ computeScrollXHeight: function computeScrollXHeight() {
965
+ var $xeTree = this;
966
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
967
+ var scrollbarXOpts = $xeTree.computeScrollbarXOpts;
968
+ return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
969
+ },
970
+ computeScrollYWidth: function computeScrollYWidth() {
971
+ var $xeTree = this;
972
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
973
+ var scrollbarYOpts = $xeTree.computeScrollbarYOpts;
974
+ return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
975
+ },
976
+ computeScrollXVisible: function computeScrollXVisible() {
977
+ var $xeTree = this;
978
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
979
+ var scrollbarXOpts = $xeTree.computeScrollbarXOpts;
980
+ return (0, _utils.getDefaultConfig)(scrollbarXOpts.visible, scrollbarOpts.visible);
981
+ },
982
+ computeScrollYVisible: function computeScrollYVisible() {
983
+ var $xeTree = this;
984
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
985
+ var scrollbarYOpts = $xeTree.computeScrollbarYOpts;
986
+ return (0, _utils.getDefaultConfig)(scrollbarYOpts.visible, scrollbarOpts.visible);
987
+ },
988
+ computeScrollXAutoHide: function computeScrollXAutoHide() {
989
+ var $xeTree = this;
990
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
991
+ var scrollbarXOpts = $xeTree.computeScrollbarXOpts;
992
+ return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
993
+ },
994
+ computeScrollYAutoHide: function computeScrollYAutoHide() {
995
+ var $xeTree = this;
996
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
997
+ var scrollbarYOpts = $xeTree.computeScrollbarYOpts;
998
+ return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
999
+ },
1000
+ computeScrollbarWrapperClss: function computeScrollbarWrapperClss() {
1001
+ var $xeTree = this;
1002
+ var reactData = $xeTree.reactData;
1003
+ var yThumbHeight = reactData.yThumbHeight,
1004
+ xThumbWidth = reactData.xThumbWidth;
1005
+ var scrollbarXToTop = $xeTree.computeScrollbarXToTop;
1006
+ var scrollbarYToLeft = $xeTree.computeScrollbarYToLeft;
1007
+ var scrollXVisible = $xeTree.computeScrollXVisible;
1008
+ var scrollYVisible = $xeTree.computeScrollYVisible;
1009
+ 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')], {
1010
+ 'overflow-y': yThumbHeight,
1011
+ 'overflow-x': xThumbWidth
1012
+ });
1013
+ },
1014
+ computeScrollbarXToTop: function computeScrollbarXToTop() {
1015
+ var $xeTree = this;
1016
+ var scrollbarXOpts = $xeTree.computeScrollbarXOpts;
1017
+ return scrollbarXOpts.position === 'top';
1018
+ },
1019
+ computeScrollbarYToLeft: function computeScrollbarYToLeft() {
1020
+ var $xeTree = this;
1021
+ var scrollbarYOpts = $xeTree.computeScrollbarYOpts;
1022
+ return scrollbarYOpts.position === 'left';
917
1023
  }
918
1024
  }),
919
1025
  methods: {
@@ -1563,6 +1669,11 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1563
1669
  }
1564
1670
  });
1565
1671
  },
1672
+ updateScrollbar: function updateScrollbar() {
1673
+ var $xeTree = this;
1674
+ $xeTree.updateThumbSize();
1675
+ $xeTree.updateThumbOffset();
1676
+ },
1566
1677
  /**
1567
1678
  * 重新计算列表
1568
1679
  */
@@ -1587,6 +1698,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1587
1698
  var parentPaddingSize = (0, _dom.getPaddingTopBottomSize)(parentEl);
1588
1699
  reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight);
1589
1700
  }
1701
+ $xeTree.updateScrollbar();
1590
1702
  $xeTree.updateHeight();
1591
1703
  return $xeTree.computeScrollLoad().then(function () {
1592
1704
  $xeTree.updateHeight();
@@ -1635,6 +1747,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1635
1747
  var scrollLeft = scrollBodyElem.scrollLeft;
1636
1748
  var isX = scrollLeft !== internalData.lastScrollLeft;
1637
1749
  var isY = scrollTop !== internalData.lastScrollTop;
1750
+ $xeTree.updateThumbOffset();
1638
1751
  internalData.lastScrollTop = scrollTop;
1639
1752
  internalData.lastScrollLeft = scrollLeft;
1640
1753
  if (reactData.scrollYLoad) {
@@ -2623,14 +2736,6 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
2623
2736
  checked: isChecked
2624
2737
  }, evnt);
2625
2738
  },
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
2739
  reloadData: function reloadData(data) {
2635
2740
  var $xeTree = this;
2636
2741
  return $xeTree.loadData(data || []);
@@ -3429,6 +3534,189 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3429
3534
  }, evnt);
3430
3535
  }
3431
3536
  },
3537
+ // 滚动条
3538
+ updateThumbSize: function updateThumbSize() {
3539
+ var $xeTree = this;
3540
+ var reactData = $xeTree.reactData;
3541
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3542
+ if (!viewEl) {
3543
+ return;
3544
+ }
3545
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
3546
+ return;
3547
+ }
3548
+ var trackXEl = $xeTree.$refs.refTrackXElem;
3549
+ var xThumbWidth = trackXEl ? (0, _util2.getThumbSize)(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
3550
+ var thumbXElem = $xeTree.$refs.refThumbXElem;
3551
+ if (thumbXElem) {
3552
+ thumbXElem.style.width = xThumbWidth + 'px';
3553
+ }
3554
+ reactData.xThumbWidth = xThumbWidth;
3555
+ var trackYEl = $xeTree.$refs.refTrackYElem;
3556
+ var yThumbHeight = trackYEl ? (0, _util2.getThumbSize)(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
3557
+ var thumbYElem = $xeTree.$refs.refThumbYElem;
3558
+ if (thumbYElem) {
3559
+ thumbYElem.style.height = yThumbHeight + 'px';
3560
+ }
3561
+ reactData.yThumbHeight = yThumbHeight;
3562
+ },
3563
+ updateThumbOffset: function updateThumbOffset() {
3564
+ var $xeTree = this;
3565
+ var reactData = $xeTree.reactData;
3566
+ var internalData = $xeTree.internalData;
3567
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3568
+ if (!viewEl) {
3569
+ return;
3570
+ }
3571
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
3572
+ return;
3573
+ }
3574
+ var xThumbWidth = reactData.xThumbWidth,
3575
+ yThumbHeight = reactData.yThumbHeight;
3576
+ var trackXEl = $xeTree.$refs.refTrackXElem;
3577
+ var thumbXElem = $xeTree.$refs.refThumbXElem;
3578
+ var xThumbLeft = trackXEl && xThumbWidth ? (0, _util2.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
3579
+ internalData.xThumbLeft = xThumbLeft;
3580
+ if (thumbXElem && xThumbWidth) {
3581
+ thumbXElem.style.width = xThumbWidth + 'px';
3582
+ thumbXElem.style.transform = "translateX(".concat(xThumbLeft, "px)");
3583
+ }
3584
+ var trackYEl = $xeTree.$refs.refTrackYElem;
3585
+ var thumbYElem = $xeTree.$refs.refThumbYElem;
3586
+ var yThumbTop = trackYEl && yThumbHeight ? (0, _util2.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
3587
+ internalData.yThumbTop = yThumbTop;
3588
+ if (thumbYElem && yThumbHeight) {
3589
+ thumbYElem.style.height = yThumbHeight + 'px';
3590
+ thumbYElem.style.transform = "translateY(".concat(yThumbTop, "px)");
3591
+ }
3592
+ },
3593
+ clickTrackXEvent: function clickTrackXEvent(evnt) {
3594
+ var $xeTree = this;
3595
+ var reactData = $xeTree.reactData;
3596
+ var trackEl = evnt.currentTarget;
3597
+ if (trackEl !== evnt.target) {
3598
+ return;
3599
+ }
3600
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3601
+ if (!viewEl) {
3602
+ return;
3603
+ }
3604
+ var xThumbWidth = reactData.xThumbWidth;
3605
+ var trackRect = trackEl.getBoundingClientRect();
3606
+ viewEl.scrollTo({
3607
+ left: (0, _util2.getScrollFromClick)(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
3608
+ behavior: 'auto'
3609
+ });
3610
+ },
3611
+ clickTrackYEvent: function clickTrackYEvent(evnt) {
3612
+ var $xeTree = this;
3613
+ var reactData = $xeTree.reactData;
3614
+ var trackEl = evnt.currentTarget;
3615
+ if (trackEl !== evnt.target) {
3616
+ return;
3617
+ }
3618
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3619
+ if (!viewEl) {
3620
+ return;
3621
+ }
3622
+ var yThumbHeight = reactData.yThumbHeight;
3623
+ var trackRect = trackEl.getBoundingClientRect();
3624
+ viewEl.scrollTo({
3625
+ top: (0, _util2.getScrollFromClick)(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
3626
+ behavior: 'auto'
3627
+ });
3628
+ },
3629
+ pointerdownThumbXEvent: function pointerdownThumbXEvent(evnt) {
3630
+ var $xeTree = this;
3631
+ var reactData = $xeTree.reactData;
3632
+ var internalData = $xeTree.internalData;
3633
+ var thumbEl = evnt.currentTarget;
3634
+ internalData.isThumbDrag = true;
3635
+ thumbEl.setPointerCapture(evnt.pointerId);
3636
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3637
+ if (!viewEl) {
3638
+ return;
3639
+ }
3640
+ var xThumbWidth = reactData.xThumbWidth;
3641
+ var trackEl = thumbEl.parentElement;
3642
+ var trackRect = trackEl.getBoundingClientRect();
3643
+ var pointerPosition = evnt.clientX - trackRect.left;
3644
+ // 记录 thumb 的偏移
3645
+ var thumbOffset = (0, _util2.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
3646
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
3647
+ },
3648
+ pointermoveThumbXEvent: function pointermoveThumbXEvent(evnt) {
3649
+ var $xeTree = this;
3650
+ var reactData = $xeTree.reactData;
3651
+ var internalData = $xeTree.internalData;
3652
+ var thumbEl = evnt.currentTarget;
3653
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
3654
+ return;
3655
+ }
3656
+ var isThumbDrag = internalData.isThumbDrag,
3657
+ thumbDragOffset = internalData.thumbDragOffset;
3658
+ if (isThumbDrag) {
3659
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3660
+ if (!viewEl) {
3661
+ return;
3662
+ }
3663
+ var xThumbWidth = reactData.xThumbWidth;
3664
+ var _thumbEl = evnt.currentTarget;
3665
+ var trackEl = _thumbEl.parentElement;
3666
+ var trackRect = trackEl.getBoundingClientRect();
3667
+ // 更新偏移
3668
+ viewEl.scrollLeft = (0, _util2.getScrollFromDrag)(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
3669
+ }
3670
+ },
3671
+ cleatPointerThumbEvent: function cleatPointerThumbEvent(evnt) {
3672
+ var $xeTree = this;
3673
+ var internalData = $xeTree.internalData;
3674
+ var thumbEl = evnt.currentTarget;
3675
+ thumbEl.releasePointerCapture(evnt.pointerId);
3676
+ internalData.isThumbDrag = false;
3677
+ },
3678
+ pointerdownThumbYEvent: function pointerdownThumbYEvent(evnt) {
3679
+ var $xeTree = this;
3680
+ var reactData = $xeTree.reactData;
3681
+ var internalData = $xeTree.internalData;
3682
+ var thumbEl = evnt.currentTarget;
3683
+ internalData.isThumbDrag = true;
3684
+ thumbEl.setPointerCapture(evnt.pointerId);
3685
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3686
+ if (!viewEl) {
3687
+ return;
3688
+ }
3689
+ var yThumbHeight = reactData.yThumbHeight;
3690
+ var trackEl = thumbEl.parentElement;
3691
+ var trackRect = trackEl.getBoundingClientRect();
3692
+ var pointerPosition = evnt.clientY - trackRect.top;
3693
+ // 记录 thumb 的偏移
3694
+ var thumbOffset = (0, _util2.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
3695
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
3696
+ },
3697
+ pointermoveThumbYEvent: function pointermoveThumbYEvent(evnt) {
3698
+ var $xeTree = this;
3699
+ var reactData = $xeTree.reactData;
3700
+ var internalData = $xeTree.internalData;
3701
+ var thumbEl = evnt.currentTarget;
3702
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
3703
+ return;
3704
+ }
3705
+ var isThumbDrag = internalData.isThumbDrag,
3706
+ thumbDragOffset = internalData.thumbDragOffset;
3707
+ if (isThumbDrag) {
3708
+ var viewEl = $xeTree.$refs.refVirtualWrapper;
3709
+ if (!viewEl) {
3710
+ return;
3711
+ }
3712
+ var yThumbHeight = reactData.yThumbHeight;
3713
+ var _thumbEl2 = evnt.currentTarget;
3714
+ var trackEl = _thumbEl2.parentElement;
3715
+ var trackRect = trackEl.getBoundingClientRect();
3716
+ // 更新偏移
3717
+ viewEl.scrollTop = (0, _util2.getScrollFromDrag)(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
3718
+ }
3719
+ },
3432
3720
  //
3433
3721
  // Render
3434
3722
  //
@@ -3756,22 +4044,27 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3756
4044
  return (0, _ui.renderEmptyElement)($xeTree);
3757
4045
  },
3758
4046
  renderVN: function renderVN(h) {
4047
+ var _ref;
3759
4048
  var $xeTree = this;
3760
4049
  var props = $xeTree;
3761
4050
  var slots = $xeTree.$scopedSlots;
3762
4051
  var reactData = $xeTree.reactData;
3763
4052
  var loading = props.loading,
3764
4053
  trigger = props.trigger,
3765
- showLine = props.showLine;
4054
+ showLine = props.showLine,
4055
+ useScrollbar = props.useScrollbar;
3766
4056
  var bodyHeight = reactData.bodyHeight,
3767
4057
  topSpaceHeight = reactData.topSpaceHeight,
3768
4058
  treeList = reactData.treeList,
3769
- tooltipStore = reactData.tooltipStore;
4059
+ tooltipStore = reactData.tooltipStore,
4060
+ xThumbWidth = reactData.xThumbWidth,
4061
+ yThumbHeight = reactData.yThumbHeight;
3770
4062
  var vSize = $xeTree.computeSize;
3771
4063
  var radioOpts = $xeTree.computeRadioOpts;
3772
4064
  var checkboxOpts = $xeTree.computeCheckboxOpts;
3773
4065
  var loadingOpts = $xeTree.computeLoadingOpts;
3774
4066
  var isNodeHover = $xeTree.computeIsNodeHover;
4067
+ var wrapperStyles = $xeTree.computeWrapperStyles;
3775
4068
  var treeStyle = $xeTree.computeTreeStyle;
3776
4069
  var dragOpts = $xeTree.computeDragOpts;
3777
4070
  var tooltipOpts = $xeTree.computeTooltipOpts;
@@ -3779,13 +4072,22 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3779
4072
  var headerSlot = slots.header;
3780
4073
  var footerSlot = slots.footer;
3781
4074
  var tooltipSlot = slots.tooltip;
4075
+ var scrollbarOpts = $xeTree.computeScrollbarOpts;
4076
+ var scrollXVisible = $xeTree.computeScrollXVisible;
4077
+ var scrollYVisible = $xeTree.computeScrollYVisible;
4078
+ var scrollbarXToTop = $xeTree.computeScrollbarXToTop;
4079
+ var scrollbarYToLeft = $xeTree.computeScrollbarYToLeft;
4080
+ var scrollXAutoHide = $xeTree.computeScrollXAutoHide;
4081
+ var scrollYAutoHide = $xeTree.computeScrollYAutoHide;
4082
+ var scrollbarWrapperClss = $xeTree.computeScrollbarWrapperClss;
3782
4083
  var teOns = {};
3783
4084
  if (dragOpts.isCrossTreeDrag && !treeList.length) {
3784
4085
  teOns.dragover = $xeTree.handleCrossTreeNodeDragoverEmptyEvent;
3785
4086
  }
3786
4087
  return h('div', {
3787
4088
  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)],
4089
+ 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))],
4090
+ style: wrapperStyles,
3789
4091
  on: teOns
3790
4092
  }, [headerSlot ? h('div', {
3791
4093
  ref: 'refHeaderWrapperElem',
@@ -3816,6 +4118,44 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3816
4118
  }, footerSlot({
3817
4119
  $tree: $xeTree
3818
4120
  })) : (0, _ui.renderEmptyElement)($xeTree),
4121
+ /**
4122
+ * 滚动条
4123
+ */
4124
+ useScrollbar ? h('div', {
4125
+ class: scrollbarWrapperClss
4126
+ }, [scrollXVisible === false ? (0, _ui.renderEmptyElement)($xeTree) : h('div', {
4127
+ ref: 'refTrackXElem',
4128
+ class: 'vxe-scrollbar--track-x',
4129
+ on: {
4130
+ click: $xeTree.clickTrackXEvent
4131
+ }
4132
+ }, [h('div', {
4133
+ ref: 'refThumbXElem',
4134
+ class: 'vxe-scrollbar--thumb-x',
4135
+ on: {
4136
+ pointerdown: $xeTree.pointerdownThumbXEvent,
4137
+ pointermove: $xeTree.pointermoveThumbXEvent,
4138
+ pointerup: $xeTree.cleatPointerThumbEvent,
4139
+ pointercancel: $xeTree.cleatPointerThumbEvent,
4140
+ lostpointercapture: $xeTree.cleatPointerThumbEvent
4141
+ }
4142
+ })]), scrollYVisible === false ? (0, _ui.renderEmptyElement)($xeTree) : h('div', {
4143
+ ref: 'refTrackYElem',
4144
+ class: 'vxe-scrollbar--track-y',
4145
+ on: {
4146
+ click: $xeTree.clickTrackYEvent
4147
+ }
4148
+ }, [h('div', {
4149
+ ref: 'refThumbYElem',
4150
+ class: 'vxe-scrollbar--thumb-y',
4151
+ on: {
4152
+ pointerdown: $xeTree.pointerdownThumbYEvent,
4153
+ pointermove: $xeTree.pointermoveThumbYEvent,
4154
+ pointerup: $xeTree.cleatPointerThumbEvent,
4155
+ pointercancel: $xeTree.cleatPointerThumbEvent,
4156
+ lostpointercapture: $xeTree.cleatPointerThumbEvent
4157
+ }
4158
+ })])]) : (0, _ui.renderEmptyElement)($xeTree),
3819
4159
  /**
3820
4160
  * 拖拽提示
3821
4161
  */
@@ -3905,19 +4245,45 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3905
4245
  },
3906
4246
  height: function height() {
3907
4247
  var $xeTree = this;
3908
- $xeTree.hFlag++;
4248
+ $xeTree.reFlag++;
3909
4249
  },
3910
4250
  minHeight: function minHeight() {
3911
4251
  var $xeTree = this;
3912
- $xeTree.hFlag++;
4252
+ $xeTree.reFlag++;
3913
4253
  },
3914
4254
  maxHeight: function maxHeight() {
3915
4255
  var $xeTree = this;
3916
- $xeTree.hFlag++;
4256
+ $xeTree.reFlag++;
4257
+ },
4258
+ useScrollbar: function useScrollbar() {
4259
+ var $xeTree = this;
4260
+ $xeTree.reFlag++;
4261
+ },
4262
+ computeScrollYWidth: function computeScrollYWidth() {
4263
+ var $xeTree = this;
4264
+ $xeTree.reFlag++;
4265
+ },
4266
+ computeScrollXHeight: function computeScrollXHeight() {
4267
+ var $xeTree = this;
4268
+ $xeTree.reFlag++;
4269
+ },
4270
+ computeScrollXVisible: function computeScrollXVisible() {
4271
+ var $xeTree = this;
4272
+ $xeTree.$nextTick(function () {
4273
+ $xeTree.reFlag++;
4274
+ });
4275
+ },
4276
+ computeScrollYVisible: function computeScrollYVisible() {
4277
+ var $xeTree = this;
4278
+ $xeTree.$nextTick(function () {
4279
+ $xeTree.reFlag++;
4280
+ });
3917
4281
  },
3918
- hFlag: function hFlag() {
4282
+ reFlag: function reFlag() {
3919
4283
  var $xeTree = this;
3920
- $xeTree.recalculate();
4284
+ $xeTree.recalculate().then(function () {
4285
+ $xeTree.recalculate();
4286
+ });
3921
4287
  }
3922
4288
  },
3923
4289
  created: function created() {
@@ -3937,7 +4303,9 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3937
4303
  menuConfig = props.menuConfig,
3938
4304
  showOverflow = props.showOverflow,
3939
4305
  lazy = props.lazy,
3940
- loadMethod = props.loadMethod;
4306
+ loadMethod = props.loadMethod,
4307
+ autoResize = props.autoResize,
4308
+ useScrollbar = props.useScrollbar;
3941
4309
  var dragOpts = $xeTree.computeDragOpts;
3942
4310
  if (!showOverflow) {
3943
4311
  errLog('vxe.error.errProp', ['show-overflow=false', 'show-overflow=true']);
@@ -3958,12 +4326,25 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3958
4326
  if (menuConfig && !VxeUIContextMenu) {
3959
4327
  errLog('vxe.error.reqComp', ['vxe-context-menu']);
3960
4328
  }
3961
- if (props.autoResize) {
3962
- var el = $xeTree.$refs.refElem;
4329
+ var el = $xeTree.$refs.refElem;
4330
+ if (useScrollbar) {
4331
+ var viewInnerEl = $xeTree.$refs.refVirtualBody;
4332
+ var scrollObserver = _ui.globalResize.create(function () {
4333
+ $xeTree.updateScrollbar();
4334
+ });
4335
+ if (el) {
4336
+ scrollObserver.observe(el);
4337
+ }
4338
+ if (viewInnerEl) {
4339
+ scrollObserver.observe(viewInnerEl);
4340
+ }
4341
+ internalData.scrollObserver = scrollObserver;
4342
+ }
4343
+ if (autoResize) {
3963
4344
  var parentEl = $xeTree.getParentElem();
3964
4345
  var resizeObserver = _ui.globalResize.create(function () {
3965
4346
  if (props.autoResize) {
3966
- $xeTree.recalculate();
4347
+ $xeTree.reFlag++;
3967
4348
  }
3968
4349
  });
3969
4350
  if (el) {
@@ -3974,17 +4355,23 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
3974
4355
  }
3975
4356
  internalData.resizeObserver = resizeObserver;
3976
4357
  }
3977
- $xeTree.recalculate();
3978
- _ui.globalEvents.on($xeTree, 'resize', $xeTree.handleGlobalResizeEvent);
4358
+ $xeTree.reFlag++;
4359
+ _ui.globalEvents.on($xeTree, 'resize', function () {
4360
+ $xeTree.reFlag++;
4361
+ });
3979
4362
  },
3980
4363
  beforeDestroy: function beforeDestroy() {
3981
4364
  var $xeTree = this;
3982
4365
  var reactData = $xeTree.reactData;
3983
4366
  var internalData = $xeTree.internalData;
3984
- var resizeObserver = internalData.resizeObserver;
4367
+ var scrollObserver = internalData.scrollObserver,
4368
+ resizeObserver = internalData.resizeObserver;
3985
4369
  if (resizeObserver) {
3986
4370
  resizeObserver.disconnect();
3987
4371
  }
4372
+ if (scrollObserver) {
4373
+ scrollObserver.disconnect();
4374
+ }
3988
4375
  _ui.globalEvents.off($xeTree, 'resize');
3989
4376
  _xeUtils.default.assign(reactData, createReactData());
3990
4377
  _xeUtils.default.assign(internalData, createInternalData());