vxe-pc-ui 3.20.8 → 3.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 (141) hide show
  1. package/es/card/src/card.js +2 -1
  2. package/es/date-panel/src/date-panel.js +70 -39
  3. package/es/date-panel/style.css +22 -20
  4. package/es/date-panel/style.min.css +1 -1
  5. package/es/drawer/src/drawer.js +1 -0
  6. package/es/icon/style.css +1 -1
  7. package/es/icon-picker/src/icon-picker.js +11 -3
  8. package/es/icon-picker/style.css +9 -3
  9. package/es/icon-picker/style.min.css +1 -1
  10. package/es/layout-aside/src/layout-aside.js +2 -1
  11. package/es/layout-body/src/layout-body.js +2 -1
  12. package/es/layout-container/src/layout-container.js +9 -2
  13. package/es/list/src/list.js +80 -223
  14. package/es/menu/src/menu.js +1 -0
  15. package/es/modal/src/modal.js +1 -0
  16. package/es/scrollbar/src/scrollbar.js +32 -188
  17. package/es/select/src/select.js +273 -8
  18. package/es/select/style.css +44 -0
  19. package/es/select/style.min.css +1 -1
  20. package/es/style.css +1 -1
  21. package/es/style.min.css +1 -1
  22. package/es/tabs/src/tabs.js +2 -1
  23. package/es/tooltip/src/tooltip.js +7 -6
  24. package/es/tooltip/style.css +2 -0
  25. package/es/tooltip/style.min.css +1 -1
  26. package/es/tree/src/tree.js +85 -228
  27. package/es/ui/index.js +1 -1
  28. package/es/ui/src/log.js +1 -1
  29. package/es/vxe-date-panel/style.css +22 -20
  30. package/es/vxe-date-panel/style.min.css +1 -1
  31. package/es/vxe-icon-picker/style.css +9 -3
  32. package/es/vxe-icon-picker/style.min.css +1 -1
  33. package/es/vxe-select/style.css +44 -0
  34. package/es/vxe-select/style.min.css +1 -1
  35. package/es/vxe-tooltip/style.css +2 -0
  36. package/es/vxe-tooltip/style.min.css +1 -1
  37. package/lib/card/src/card.js +1 -1
  38. package/lib/card/src/card.min.js +1 -1
  39. package/lib/date-panel/src/date-panel.js +74 -43
  40. package/lib/date-panel/src/date-panel.min.js +1 -1
  41. package/lib/date-panel/style/style.css +22 -20
  42. package/lib/date-panel/style/style.min.css +1 -1
  43. package/lib/drawer/src/drawer.js +1 -1
  44. package/lib/drawer/src/drawer.min.js +1 -1
  45. package/lib/icon/style/style.css +1 -1
  46. package/lib/icon/style/style.min.css +1 -1
  47. package/lib/icon-picker/src/icon-picker.js +56 -38
  48. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  49. package/lib/icon-picker/style/style.css +9 -3
  50. package/lib/icon-picker/style/style.min.css +1 -1
  51. package/lib/index.umd.js +894 -816
  52. package/lib/index.umd.min.js +1 -1
  53. package/lib/layout-aside/src/layout-aside.js +1 -1
  54. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  55. package/lib/layout-body/src/layout-body.js +1 -1
  56. package/lib/layout-body/src/layout-body.min.js +1 -1
  57. package/lib/layout-container/src/layout-container.js +13 -3
  58. package/lib/layout-container/src/layout-container.min.js +1 -1
  59. package/lib/list/src/list.js +72 -225
  60. package/lib/list/src/list.min.js +1 -1
  61. package/lib/menu/src/menu.js +1 -1
  62. package/lib/menu/src/menu.min.js +1 -1
  63. package/lib/modal/src/modal.js +1 -1
  64. package/lib/modal/src/modal.min.js +1 -1
  65. package/lib/scrollbar/src/scrollbar.js +29 -192
  66. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  67. package/lib/select/src/select.js +322 -69
  68. package/lib/select/src/select.min.js +1 -1
  69. package/lib/select/style/style.css +44 -0
  70. package/lib/select/style/style.min.css +1 -1
  71. package/lib/style.css +1 -1
  72. package/lib/style.min.css +1 -1
  73. package/lib/tabs/src/tabs.js +1 -1
  74. package/lib/tabs/src/tabs.min.js +1 -1
  75. package/lib/tooltip/src/tooltip.js +5 -6
  76. package/lib/tooltip/src/tooltip.min.js +1 -1
  77. package/lib/tooltip/style/style.css +2 -0
  78. package/lib/tooltip/style/style.min.css +1 -1
  79. package/lib/tree/src/tree.js +77 -229
  80. package/lib/tree/src/tree.min.js +1 -1
  81. package/lib/ui/index.js +1 -1
  82. package/lib/ui/index.min.js +1 -1
  83. package/lib/ui/src/log.js +1 -1
  84. package/lib/ui/src/log.min.js +1 -1
  85. package/lib/vxe-date-panel/style/style.css +22 -20
  86. package/lib/vxe-date-panel/style/style.min.css +1 -1
  87. package/lib/vxe-icon-picker/style/style.css +9 -3
  88. package/lib/vxe-icon-picker/style/style.min.css +1 -1
  89. package/lib/vxe-select/style/style.css +44 -0
  90. package/lib/vxe-select/style/style.min.css +1 -1
  91. package/lib/vxe-tooltip/style/style.css +2 -0
  92. package/lib/vxe-tooltip/style/style.min.css +1 -1
  93. package/package.json +2 -2
  94. package/packages/card/src/card.ts +4 -2
  95. package/packages/date-panel/src/date-panel.ts +70 -39
  96. package/packages/drawer/src/drawer.ts +4 -2
  97. package/packages/icon-picker/src/icon-picker.ts +12 -3
  98. package/packages/layout-aside/src/layout-aside.ts +4 -2
  99. package/packages/layout-body/src/layout-body.ts +4 -2
  100. package/packages/layout-container/src/layout-container.ts +13 -3
  101. package/packages/list/src/list.ts +85 -241
  102. package/packages/menu/src/menu.ts +3 -1
  103. package/packages/modal/src/modal.ts +3 -1
  104. package/packages/scrollbar/src/scrollbar.ts +32 -199
  105. package/packages/select/src/select.ts +304 -11
  106. package/packages/tabs/src/tabs.ts +4 -4
  107. package/packages/tooltip/src/tooltip.ts +10 -8
  108. package/packages/tree/src/tree.ts +90 -247
  109. package/styles/components/date-panel.scss +31 -29
  110. package/styles/components/icon-picker.scss +9 -3
  111. package/styles/components/select.scss +77 -0
  112. package/styles/components/tooltip.scss +1 -0
  113. package/types/components/card.d.ts +2 -2
  114. package/types/components/drawer.d.ts +2 -2
  115. package/types/components/gantt-module/gantt-view.d.ts +8 -17
  116. package/types/components/grid.d.ts +3 -2
  117. package/types/components/icon-picker.d.ts +21 -1
  118. package/types/components/layout-aside.d.ts +2 -2
  119. package/types/components/layout-body.d.ts +2 -2
  120. package/types/components/layout-container.d.ts +3 -1
  121. package/types/components/list.d.ts +6 -2
  122. package/types/components/menu.d.ts +2 -2
  123. package/types/components/modal.d.ts +2 -2
  124. package/types/components/scrollbar.d.ts +17 -14
  125. package/types/components/select.d.ts +28 -3
  126. package/types/components/table.d.ts +26 -22
  127. package/types/components/tabs.d.ts +2 -2
  128. package/types/components/tooltip.d.ts +2 -2
  129. package/types/components/tree.d.ts +8 -17
  130. /package/es/icon/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
  131. /package/es/icon/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
  132. /package/es/icon/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
  133. /package/es/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
  134. /package/es/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
  135. /package/es/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
  136. /package/lib/icon/style/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
  137. /package/lib/icon/style/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
  138. /package/lib/icon/style/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
  139. /package/lib/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
  140. /package/lib/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
  141. /package/lib/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
@@ -9,8 +9,7 @@ import { createComponentLog } from '../../ui/src/log';
9
9
  import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime';
10
10
  import { getItemCacheObj } from './util';
11
11
  import VxeLoadingComponent from '../../loading';
12
- const { getConfig, getIcon, getI18n, domUtils, scrollbarUtils, menus, globalEvents, globalResize } = VxeUI;
13
- const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils;
12
+ const { getConfig, getIcon, getI18n, domUtils, menus, globalEvents, globalResize } = VxeUI;
14
13
  const { warnLog, errLog } = createComponentLog('tree');
15
14
  let crossListDragRowObj = null;
16
15
  function eqRowKey(rowKey1, rowKey2) {
@@ -85,7 +84,9 @@ function createInternalData() {
85
84
  export default {
86
85
  name: 'VxeList',
87
86
  mixins: [
88
- globalMixins.sizeMixin
87
+ globalMixins.sizeMixin,
88
+ globalMixins.vScrollbarMixin,
89
+ globalMixins.initVScrollbarMixin
89
90
  ],
90
91
  props: {
91
92
  data: Array,
@@ -133,7 +134,7 @@ export default {
133
134
  const xID = XEUtils.uniqueId();
134
135
  const reactData = createReactData();
135
136
  return Object.assign(Object.assign({}, {}), { xID,
136
- reactData, crossListDragRowInfo: crossListDragRowGlobal, reFlag: 0 });
137
+ reactData, crossListDragRowInfo: crossListDragRowGlobal, reLayoutFlag: 0, reScrollFlag: 0 });
137
138
  },
138
139
  computed: Object.assign(Object.assign({}, {}), { computeRowOpts() {
139
140
  const $xeList = this;
@@ -324,6 +325,11 @@ export default {
324
325
  }
325
326
  return [];
326
327
  },
328
+ getScrollViewElem() {
329
+ const $xeList = this;
330
+ const viewEl = $xeList.$refs.refVirtualWrapper;
331
+ return viewEl || null;
332
+ },
327
333
  getRowId(row) {
328
334
  const $xeList = this;
329
335
  const keyField = $xeList.computeKeyField;
@@ -627,8 +633,14 @@ export default {
627
633
  },
628
634
  updateScrollbar() {
629
635
  const $xeList = this;
630
- $xeList.updateThumbSize();
631
- $xeList.updateThumbOffset();
636
+ const isVScrollbar = $xeList.computeIsVScrollbar;
637
+ if (isVScrollbar) {
638
+ return $xeList.$nextTick().then(() => {
639
+ $xeList.updateThumbSize();
640
+ $xeList.updateThumbOffset();
641
+ });
642
+ }
643
+ return Promise.resolve();
632
644
  },
633
645
  /**
634
646
  * 重新计算列表
@@ -649,10 +661,11 @@ export default {
649
661
  parentHeight = parentEl.clientHeight - Math.ceil(XEUtils.toNumber(parentStyle.paddingLeft) + XEUtils.toNumber(parentStyle.paddingRight));
650
662
  }
651
663
  reactData.parentHeight = parentHeight;
652
- $xeList.updateScrollbar();
653
664
  $xeList.updateHeight();
654
665
  if (el.clientWidth && el.clientHeight) {
655
- return $xeList.computeScrollLoad();
666
+ return $xeList.computeScrollLoad().then(() => {
667
+ $xeList.updateScrollbar();
668
+ });
656
669
  }
657
670
  }
658
671
  return $xeList.$nextTick();
@@ -662,7 +675,7 @@ export default {
662
675
  const internalData = $xeList.internalData;
663
676
  const { scrollYStore } = internalData;
664
677
  const { startIndex, endIndex, visibleSize, offsetSize, rowHeight } = scrollYStore;
665
- const scrollBodyElem = evnt.target;
678
+ const scrollBodyElem = evnt.currentTarget;
666
679
  const scrollTop = scrollBodyElem.scrollTop;
667
680
  const toVisibleIndex = Math.floor(scrollTop / rowHeight);
668
681
  const offsetStartIndex = Math.max(0, toVisibleIndex - 1 - offsetSize);
@@ -679,7 +692,7 @@ export default {
679
692
  const $xeList = this;
680
693
  const reactData = $xeList.reactData;
681
694
  const internalData = $xeList.internalData;
682
- const scrollBodyElem = evnt.target;
695
+ const scrollBodyElem = evnt.currentTarget;
683
696
  const scrollTop = scrollBodyElem.scrollTop;
684
697
  const scrollLeft = scrollBodyElem.scrollLeft;
685
698
  const isX = scrollLeft !== internalData.lastScrollLeft;
@@ -1942,183 +1955,26 @@ export default {
1942
1955
  $xeList.dispatchEvent('row-menu', { row }, evnt);
1943
1956
  },
1944
1957
  // 滚动条
1945
- updateThumbSize() {
1946
- const $xeList = this;
1947
- const reactData = $xeList.reactData;
1948
- const viewEl = $xeList.$refs.refVirtualWrapper;
1949
- if (!viewEl) {
1950
- return;
1951
- }
1952
- if (!viewEl.clientHeight || !viewEl.clientHeight) {
1953
- return;
1954
- }
1955
- const trackXEl = $xeList.$refs.refTrackXElem;
1956
- const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
1957
- const thumbXElem = $xeList.$refs.refThumbXElem;
1958
- if (thumbXElem) {
1959
- thumbXElem.style.width = xThumbWidth + 'px';
1960
- }
1961
- reactData.xThumbWidth = xThumbWidth;
1962
- const trackYEl = $xeList.$refs.refTrackYElem;
1963
- const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
1964
- const thumbYElem = $xeList.$refs.refThumbYElem;
1965
- if (thumbYElem) {
1966
- thumbYElem.style.height = yThumbHeight + 'px';
1967
- }
1968
- reactData.yThumbHeight = yThumbHeight;
1969
- },
1970
- updateThumbOffset() {
1958
+ bindScrollbarResize() {
1971
1959
  const $xeList = this;
1972
- const reactData = $xeList.reactData;
1973
1960
  const internalData = $xeList.internalData;
1974
- const viewEl = $xeList.$refs.refVirtualWrapper;
1975
- if (!viewEl) {
1976
- return;
1977
- }
1978
- if (!viewEl.clientHeight || !viewEl.clientHeight) {
1979
- return;
1980
- }
1981
- const { xThumbWidth, yThumbHeight } = reactData;
1982
- const trackXEl = $xeList.$refs.refTrackXElem;
1983
- const thumbXElem = $xeList.$refs.refThumbXElem;
1984
- const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
1985
- internalData.xThumbLeft = xThumbLeft;
1986
- if (thumbXElem && xThumbWidth) {
1987
- thumbXElem.style.width = xThumbWidth + 'px';
1988
- thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
1989
- }
1990
- const trackYEl = $xeList.$refs.refTrackYElem;
1991
- const thumbYElem = $xeList.$refs.refThumbYElem;
1992
- const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
1993
- internalData.yThumbTop = yThumbTop;
1994
- if (thumbYElem && yThumbHeight) {
1995
- thumbYElem.style.height = yThumbHeight + 'px';
1996
- thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
1997
- }
1998
- },
1999
- clickTrackXEvent(evnt) {
2000
- const $xeList = this;
2001
- const reactData = $xeList.reactData;
2002
- const trackEl = evnt.currentTarget;
2003
- if (trackEl !== evnt.target) {
2004
- return;
2005
- }
2006
- const viewEl = $xeList.$refs.refVirtualWrapper;
2007
- if (!viewEl) {
2008
- return;
2009
- }
2010
- const { xThumbWidth } = reactData;
2011
- const trackRect = trackEl.getBoundingClientRect();
2012
- viewEl.scrollTo({
2013
- left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
2014
- behavior: 'auto'
2015
- });
2016
- },
2017
- clickTrackYEvent(evnt) {
2018
- const $xeList = this;
2019
- const reactData = $xeList.reactData;
2020
- const trackEl = evnt.currentTarget;
2021
- if (trackEl !== evnt.target) {
2022
- return;
2023
- }
2024
- const viewEl = $xeList.$refs.refVirtualWrapper;
2025
- if (!viewEl) {
2026
- return;
2027
- }
2028
- const { yThumbHeight } = reactData;
2029
- const trackRect = trackEl.getBoundingClientRect();
2030
- viewEl.scrollTo({
2031
- top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
2032
- behavior: 'auto'
2033
- });
2034
- },
2035
- pointerdownThumbXEvent(evnt) {
2036
- const $xeList = this;
2037
- const reactData = $xeList.reactData;
2038
- const internalData = $xeList.internalData;
2039
- const thumbEl = evnt.currentTarget;
2040
- internalData.isThumbDrag = true;
2041
- thumbEl.setPointerCapture(evnt.pointerId);
2042
- const viewEl = $xeList.$refs.refVirtualWrapper;
2043
- if (!viewEl) {
2044
- return;
2045
- }
2046
- const { xThumbWidth } = reactData;
2047
- const trackEl = thumbEl.parentElement;
2048
- const trackRect = trackEl.getBoundingClientRect();
2049
- const pointerPosition = evnt.clientX - trackRect.left;
2050
- // 记录 thumb 的偏移
2051
- const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
2052
- internalData.thumbDragOffset = pointerPosition - thumbOffset;
2053
- },
2054
- pointermoveThumbXEvent(evnt) {
2055
- const $xeList = this;
2056
- const reactData = $xeList.reactData;
2057
- const internalData = $xeList.internalData;
2058
- const thumbEl = evnt.currentTarget;
2059
- if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
2060
- return;
2061
- }
2062
- const { isThumbDrag, thumbDragOffset } = internalData;
2063
- if (isThumbDrag) {
2064
- const viewEl = $xeList.$refs.refVirtualWrapper;
2065
- if (!viewEl) {
2066
- return;
2067
- }
2068
- const { xThumbWidth } = reactData;
2069
- const thumbEl = evnt.currentTarget;
2070
- const trackEl = thumbEl.parentElement;
2071
- const trackRect = trackEl.getBoundingClientRect();
2072
- // 更新偏移
2073
- viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
2074
- }
2075
- },
2076
- cleatPointerThumbEvent(evnt) {
2077
- const $xeList = this;
2078
- const internalData = $xeList.internalData;
2079
- const thumbEl = evnt.currentTarget;
2080
- thumbEl.releasePointerCapture(evnt.pointerId);
2081
- internalData.isThumbDrag = false;
2082
- },
2083
- pointerdownThumbYEvent(evnt) {
2084
- const $xeList = this;
2085
- const reactData = $xeList.reactData;
2086
- const internalData = $xeList.internalData;
2087
- const thumbEl = evnt.currentTarget;
2088
- internalData.isThumbDrag = true;
2089
- thumbEl.setPointerCapture(evnt.pointerId);
2090
- const viewEl = $xeList.$refs.refVirtualWrapper;
2091
- if (!viewEl) {
2092
- return;
2093
- }
2094
- const { yThumbHeight } = reactData;
2095
- const trackEl = thumbEl.parentElement;
2096
- const trackRect = trackEl.getBoundingClientRect();
2097
- const pointerPosition = evnt.clientY - trackRect.top;
2098
- // 记录 thumb 的偏移
2099
- const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
2100
- internalData.thumbDragOffset = pointerPosition - thumbOffset;
2101
- },
2102
- pointermoveThumbYEvent(evnt) {
2103
- const $xeList = this;
2104
- const reactData = $xeList.reactData;
2105
- const internalData = $xeList.internalData;
2106
- const thumbEl = evnt.currentTarget;
2107
- if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
2108
- return;
2109
- }
2110
- const { isThumbDrag, thumbDragOffset } = internalData;
2111
- if (isThumbDrag) {
2112
- const viewEl = $xeList.$refs.refVirtualWrapper;
2113
- if (!viewEl) {
2114
- return;
1961
+ const { scrollObserver } = internalData;
1962
+ const isVScrollbar = $xeList.computeIsVScrollbar;
1963
+ if (isVScrollbar) {
1964
+ if (!scrollObserver) {
1965
+ const el = $xeList.$refs.refElem;
1966
+ const viewInnerEl = $xeList.$refs.refVirtualSpaceElem;
1967
+ const scrollObserver = globalResize.create(() => {
1968
+ $xeList.reScrollFlag++;
1969
+ });
1970
+ if (el) {
1971
+ scrollObserver.observe(el);
1972
+ }
1973
+ if (viewInnerEl) {
1974
+ scrollObserver.observe(viewInnerEl);
1975
+ }
1976
+ internalData.scrollObserver = scrollObserver;
2115
1977
  }
2116
- const { yThumbHeight } = reactData;
2117
- const thumbEl = evnt.currentTarget;
2118
- const trackEl = thumbEl.parentElement;
2119
- const trackRect = trackEl.getBoundingClientRect();
2120
- // 更新偏移
2121
- viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
2122
1978
  }
2123
1979
  },
2124
1980
  //
@@ -2350,12 +2206,13 @@ export default {
2350
2206
  const props = $xeList;
2351
2207
  const reactData = $xeList.reactData;
2352
2208
  const slots = $xeList.$scopedSlots;
2353
- const { showCheckbox, className, loading, useScrollbar } = props;
2209
+ const { showCheckbox, className, loading } = props;
2354
2210
  const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate, xThumbWidth, yThumbHeight } = reactData;
2355
2211
  const defaultSlot = slots.default;
2356
2212
  const headerSlot = slots.header;
2357
2213
  const footerSlot = slots.footer;
2358
2214
  const vSize = $xeList.computeSize;
2215
+ const isVScrollbar = $xeList.computeIsVScrollbar;
2359
2216
  const wrapperStyles = $xeList.computeWrapperStyles;
2360
2217
  const virtualStyles = $xeList.computeVirtualStyles;
2361
2218
  const radioOpts = $xeList.computeRadioOpts;
@@ -2382,17 +2239,17 @@ export default {
2382
2239
  ref: 'refElem',
2383
2240
  class: [
2384
2241
  'vxe-list',
2385
- useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
2386
- useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
2387
- useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
2388
- useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
2242
+ isVScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
2243
+ isVScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
2244
+ isVScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
2245
+ isVScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
2389
2246
  className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '',
2390
2247
  {
2391
2248
  [`size--${vSize}`]: vSize,
2392
- 'is--virtual-scrollbar': useScrollbar,
2393
- 'ov-padding': useScrollbar && scrollbarOpts.padding,
2394
- 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
2395
- 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
2249
+ 'is--virtual-scrollbar': isVScrollbar,
2250
+ 'ov-padding': isVScrollbar && scrollbarOpts.padding,
2251
+ 'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
2252
+ 'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
2396
2253
  'overflow-y': yThumbHeight,
2397
2254
  'overflow-x': xThumbWidth,
2398
2255
  'is--drag': isDrag,
@@ -2442,6 +2299,7 @@ export default {
2442
2299
  }
2443
2300
  }, [
2444
2301
  h('div', {
2302
+ ref: 'refVirtualSpaceElem',
2445
2303
  class: 'vxe-list--y-space',
2446
2304
  style: {
2447
2305
  height: bodyHeight ? `${bodyHeight}px` : ''
@@ -2470,7 +2328,7 @@ export default {
2470
2328
  /**
2471
2329
  * 滚动条
2472
2330
  */
2473
- useScrollbar
2331
+ isVScrollbar
2474
2332
  ? h('div', {
2475
2333
  class: scrollbarWrapperClss
2476
2334
  }, [
@@ -2542,50 +2400,61 @@ export default {
2542
2400
  },
2543
2401
  height() {
2544
2402
  const $xeList = this;
2545
- $xeList.reFlag++;
2403
+ $xeList.reLayoutFlag++;
2546
2404
  },
2547
2405
  maxHeight() {
2548
2406
  const $xeList = this;
2549
- $xeList.reFlag++;
2407
+ $xeList.reLayoutFlag++;
2550
2408
  },
2551
2409
  syncResize() {
2552
2410
  const $xeList = this;
2553
- $xeList.reFlag++;
2411
+ $xeList.reLayoutFlag++;
2554
2412
  },
2555
- useScrollbar() {
2413
+ computeIsVScrollbar() {
2556
2414
  const $xeList = this;
2557
- $xeList.reFlag++;
2415
+ $xeList.$nextTick(() => {
2416
+ $xeList.bindScrollbarResize();
2417
+ $xeList.$nextTick(() => {
2418
+ $xeList.reLayoutFlag++;
2419
+ });
2420
+ });
2558
2421
  },
2559
2422
  computeRowHeight() {
2560
2423
  const $xeList = this;
2561
- $xeList.reFlag++;
2424
+ $xeList.reLayoutFlag++;
2562
2425
  },
2563
2426
  computeScrollYWidth() {
2564
2427
  const $xeList = this;
2565
- $xeList.reFlag++;
2428
+ $xeList.reLayoutFlag++;
2566
2429
  },
2567
2430
  computeScrollXHeight() {
2568
2431
  const $xeList = this;
2569
- $xeList.reFlag++;
2432
+ $xeList.reLayoutFlag++;
2570
2433
  },
2571
2434
  computeScrollXVisible() {
2572
2435
  const $xeList = this;
2573
2436
  $xeList.$nextTick(() => {
2574
- $xeList.reFlag++;
2437
+ $xeList.reLayoutFlag++;
2575
2438
  });
2576
2439
  },
2577
2440
  computeScrollYVisible() {
2578
2441
  const $xeList = this;
2579
2442
  $xeList.$nextTick(() => {
2580
- $xeList.reFlag++;
2443
+ $xeList.reLayoutFlag++;
2581
2444
  });
2582
2445
  },
2583
- reFlag() {
2446
+ reLayoutFlag() {
2584
2447
  const $xeList = this;
2585
2448
  $xeList.recalculate().then(() => {
2586
2449
  $xeList.recalculate();
2587
2450
  });
2588
2451
  },
2452
+ reScrollFlag() {
2453
+ const $xeList = this;
2454
+ $xeList.updateScrollbar().then(() => {
2455
+ $xeList.updateScrollbar();
2456
+ });
2457
+ },
2589
2458
  checkRowKey() {
2590
2459
  const $xeList = this;
2591
2460
  $xeList.updateRadioModeValue();
@@ -2606,7 +2475,7 @@ export default {
2606
2475
  const $xeList = this;
2607
2476
  const props = $xeList;
2608
2477
  const internalData = $xeList.internalData;
2609
- const { showSeq, showRadio, showCheckbox, autoResize, useScrollbar } = props;
2478
+ const { showSeq, showRadio, showCheckbox, autoResize } = props;
2610
2479
  const rowOpts = $xeList.computeRowOpts;
2611
2480
  const { useKey, keyField } = rowOpts;
2612
2481
  const isDrag = $xeList.computeIsDrag;
@@ -2627,25 +2496,12 @@ export default {
2627
2496
  if (useKey && !keyField) {
2628
2497
  errLog('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField']);
2629
2498
  }
2630
- const el = $xeList.$refs.refElem;
2631
- if (useScrollbar) {
2632
- const viewInnerEl = $xeList.$refs.refVirtualBody;
2633
- const scrollObserver = globalResize.create(() => {
2634
- $xeList.reFlag++;
2635
- });
2636
- if (el) {
2637
- scrollObserver.observe(el);
2638
- }
2639
- if (viewInnerEl) {
2640
- scrollObserver.observe(viewInnerEl);
2641
- }
2642
- internalData.scrollObserver = scrollObserver;
2643
- }
2644
2499
  if (autoResize) {
2500
+ const el = $xeList.$refs.refElem;
2645
2501
  const parentEl = $xeList.getParentElem();
2646
2502
  const resizeObserver = globalResize.create(() => {
2647
2503
  if (props.autoResize) {
2648
- $xeList.reFlag++;
2504
+ $xeList.reLayoutFlag++;
2649
2505
  }
2650
2506
  });
2651
2507
  if (el) {
@@ -2656,9 +2512,10 @@ export default {
2656
2512
  }
2657
2513
  internalData.resizeObserver = resizeObserver;
2658
2514
  }
2659
- $xeList.reFlag++;
2515
+ $xeList.reLayoutFlag++;
2516
+ $xeList.bindScrollbarResize();
2660
2517
  globalEvents.on($xeList, 'resize', () => {
2661
- $xeList.reFlag++;
2518
+ $xeList.reLayoutFlag++;
2662
2519
  });
2663
2520
  },
2664
2521
  activated() {
@@ -34,6 +34,7 @@ export default {
34
34
  name: 'VxeMenu',
35
35
  mixins: [
36
36
  globalMixins.sizeMixin,
37
+ globalMixins.vScrollbarMixin,
37
38
  globalMixins.permissionMixin
38
39
  ],
39
40
  props: {
@@ -39,6 +39,7 @@ export default {
39
39
  name: 'VxeModal',
40
40
  mixins: [
41
41
  globalMixins.sizeMixin,
42
+ globalMixins.vScrollbarMixin,
42
43
  globalMixins.permissionMixin
43
44
  ],
44
45
  props: {