vxe-pc-ui 3.19.8 → 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 (97) 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 +409 -21
  7. package/es/list/style.css +43 -0
  8. package/es/list/style.min.css +1 -1
  9. package/es/scrollbar/src/scrollbar.js +69 -17
  10. package/es/scrollbar/style.css +1 -0
  11. package/es/style.css +1 -1
  12. package/es/style.min.css +1 -1
  13. package/es/tabs/src/tabs.js +19 -3
  14. package/es/tree/src/tree.js +439 -56
  15. package/es/tree/style.css +43 -0
  16. package/es/tree/style.min.css +1 -1
  17. package/es/ui/index.js +1 -1
  18. package/es/ui/src/log.js +1 -1
  19. package/es/ui/src/utils.js +12 -0
  20. package/es/vxe-list/style.css +43 -0
  21. package/es/vxe-list/style.min.css +1 -1
  22. package/es/vxe-scrollbar/style.css +1 -0
  23. package/es/vxe-tree/style.css +43 -0
  24. package/es/vxe-tree/style.min.css +1 -1
  25. package/lib/card/src/card.js +18 -3
  26. package/lib/card/src/card.min.js +1 -1
  27. package/lib/icon/style/style.css +1 -1
  28. package/lib/icon/style/style.min.css +1 -1
  29. package/lib/index.umd.js +956 -126
  30. package/lib/index.umd.min.js +1 -1
  31. package/lib/language/fr-FR.js +29 -29
  32. package/lib/language/fr-FR.min.js +1 -1
  33. package/lib/language/fr-FR.umd.js +29 -29
  34. package/lib/layout-aside/src/layout-aside.js +8 -8
  35. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  36. package/lib/layout-body/src/layout-body.js +26 -19
  37. package/lib/layout-body/src/layout-body.min.js +1 -1
  38. package/lib/list/src/list.js +383 -22
  39. package/lib/list/src/list.min.js +1 -1
  40. package/lib/list/style/style.css +43 -0
  41. package/lib/list/style/style.min.css +1 -1
  42. package/lib/scrollbar/src/scrollbar.js +74 -15
  43. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  44. package/lib/scrollbar/style/style.css +1 -0
  45. package/lib/style.css +1 -1
  46. package/lib/style.min.css +1 -1
  47. package/lib/tabs/src/tabs.js +20 -7
  48. package/lib/tabs/src/tabs.min.js +1 -1
  49. package/lib/tree/src/tree.js +416 -53
  50. package/lib/tree/src/tree.min.js +1 -1
  51. package/lib/tree/style/style.css +43 -0
  52. package/lib/tree/style/style.min.css +1 -1
  53. package/lib/ui/index.js +1 -1
  54. package/lib/ui/index.min.js +1 -1
  55. package/lib/ui/src/log.js +1 -1
  56. package/lib/ui/src/log.min.js +1 -1
  57. package/lib/ui/src/utils.js +14 -0
  58. package/lib/ui/src/utils.min.js +1 -1
  59. package/lib/vxe-list/style/style.css +43 -0
  60. package/lib/vxe-list/style/style.min.css +1 -1
  61. package/lib/vxe-scrollbar/style/style.css +1 -0
  62. package/lib/vxe-tree/style/style.css +43 -0
  63. package/lib/vxe-tree/style/style.min.css +1 -1
  64. package/package.json +1 -1
  65. package/packages/card/src/card.ts +19 -3
  66. package/packages/language/fr-FR.ts +903 -903
  67. package/packages/layout-aside/src/layout-aside.ts +8 -5
  68. package/packages/layout-body/src/layout-body.ts +26 -14
  69. package/packages/list/src/list.ts +444 -25
  70. package/packages/scrollbar/src/scrollbar.ts +79 -17
  71. package/packages/tabs/src/tabs.ts +20 -7
  72. package/packages/tree/src/tree.ts +482 -67
  73. package/packages/ui/src/utils.ts +14 -0
  74. package/styles/components/list.scss +76 -0
  75. package/styles/components/scrollbar.scss +3 -0
  76. package/styles/components/tree.scss +76 -0
  77. package/types/components/card.d.ts +10 -1
  78. package/types/components/layout-aside.d.ts +10 -1
  79. package/types/components/layout-body.d.ts +10 -1
  80. package/types/components/list.d.ts +33 -2
  81. package/types/components/scrollbar.d.ts +16 -2
  82. package/types/components/table-plugins/extend-cell-area.d.ts +1 -1
  83. package/types/components/table.d.ts +71 -4
  84. package/types/components/tabs.d.ts +10 -1
  85. package/types/components/tree.d.ts +33 -2
  86. /package/es/icon/{iconfont.1791862954819.ttf → iconfont.1791950618327.ttf} +0 -0
  87. /package/es/icon/{iconfont.1791862954819.woff → iconfont.1791950618327.woff} +0 -0
  88. /package/es/icon/{iconfont.1791862954819.woff2 → iconfont.1791950618327.woff2} +0 -0
  89. /package/es/{iconfont.1791862954819.ttf → iconfont.1791950618327.ttf} +0 -0
  90. /package/es/{iconfont.1791862954819.woff → iconfont.1791950618327.woff} +0 -0
  91. /package/es/{iconfont.1791862954819.woff2 → iconfont.1791950618327.woff2} +0 -0
  92. /package/lib/icon/style/{iconfont.1791862954819.ttf → iconfont.1791950618327.ttf} +0 -0
  93. /package/lib/icon/style/{iconfont.1791862954819.woff → iconfont.1791950618327.woff} +0 -0
  94. /package/lib/icon/style/{iconfont.1791862954819.woff2 → iconfont.1791950618327.woff2} +0 -0
  95. /package/lib/{iconfont.1791862954819.ttf → iconfont.1791950618327.ttf} +0 -0
  96. /package/lib/{iconfont.1791862954819.woff → iconfont.1791950618327.woff} +0 -0
  97. /package/lib/{iconfont.1791862954819.woff2 → iconfont.1791950618327.woff2} +0 -0
@@ -14,7 +14,8 @@ var _utils = require("../../ui/src/utils");
14
14
  var _vn = require("../../ui/src/vn");
15
15
  var _log = require("../../ui/src/log");
16
16
  var _anime = require("../../ui/src/anime");
17
- var _util = require("./util");
17
+ var _util = require("../../scrollbar/src/util");
18
+ var _util2 = require("./util");
18
19
  var _loading = _interopRequireDefault(require("../../loading"));
19
20
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
21
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -60,6 +61,9 @@ function createReactData() {
60
61
  updateCheckboxFlag: 1,
61
62
  isAllChecked: false,
62
63
  isAllIndeterminate: false,
64
+ // 滚动条
65
+ yThumbHeight: 0,
66
+ xThumbWidth: 0,
63
67
  insertRowFlag: 1,
64
68
  removeRowFlag: 1,
65
69
  dragRow: null,
@@ -69,13 +73,18 @@ function createReactData() {
69
73
  }
70
74
  function createInternalData() {
71
75
  return {
72
- resizeObserver: undefined,
73
76
  fullData: [],
74
77
  afterList: [],
75
78
  fullKeyMaps: {},
76
79
  rowMaps: {},
77
- lastScrollLeft: 0,
80
+ // 滚动条
81
+ // resizeObserver: undefined,
82
+ // isThumbDrag: false,
83
+ thumbDragOffset: 0,
84
+ yThumbTop: 0,
85
+ xThumbLeft: 0,
78
86
  lastScrollTop: 0,
87
+ lastScrollLeft: 0,
79
88
  scrollYStore: {
80
89
  startIndex: 0,
81
90
  endIndex: 0,
@@ -139,7 +148,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
139
148
  dragConfig: Object,
140
149
  menuConfig: Object,
141
150
  virtualYConfig: Object,
142
- scrollY: Object
151
+ scrollY: Object,
152
+ useScrollbar: {
153
+ type: Boolean,
154
+ default: function _default() {
155
+ return (0, _ui.getConfig)().list.useScrollbar;
156
+ }
157
+ },
158
+ scrollbarConfig: Object
143
159
  },
144
160
  data: function data() {
145
161
  var xID = _xeUtils.default.uniqueId();
@@ -208,11 +224,20 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
208
224
  computeWrapperStyles: function computeWrapperStyles() {
209
225
  var $xeList = this;
210
226
  var rowHeight = $xeList.computeRowHeight;
211
- var style = {};
227
+ var scrollbarOpts = $xeList.computeScrollbarOpts;
228
+ var scrollbarXOpts = $xeList.computeScrollbarXOpts;
229
+ var scrollbarYOpts = $xeList.computeScrollbarYOpts;
230
+ var barWidth = (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.width, scrollbarOpts.width), (0, _ui.getConfig)().scrollbar.width);
231
+ var barHeight = (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.height, scrollbarOpts.height), (0, _ui.getConfig)().scrollbar.height);
232
+ var stys = {};
212
233
  if (rowHeight) {
213
- style['--vxe-ui-list-row-height'] = (0, _dom.toCssUnit)(rowHeight);
234
+ stys['--vxe-ui-list-row-height'] = (0, _dom.toCssUnit)(rowHeight);
214
235
  }
215
- return style;
236
+ if (barWidth || barHeight) {
237
+ stys['--vxe-ui-scrollbar-y-width'] = (0, _dom.toCssUnit)(barWidth || barHeight);
238
+ stys['--vxe-ui-scrollbar-x-height'] = (0, _dom.toCssUnit)(barHeight || barWidth);
239
+ }
240
+ return stys;
216
241
  },
217
242
  computeVirtualStyles: function computeVirtualStyles() {
218
243
  var $xeList = this;
@@ -232,6 +257,76 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
232
257
  style.maxHeight = (0, _dom.toCssUnit)(Math.max(20, customMaxHeight - headHeight - footHeight));
233
258
  }
234
259
  return style;
260
+ },
261
+ computeScrollbarOpts: function computeScrollbarOpts() {
262
+ var $xeList = this;
263
+ var props = $xeList;
264
+ return Object.assign({}, (0, _ui.getConfig)().list.scrollbarConfig, props.scrollbarConfig);
265
+ },
266
+ computeScrollbarXOpts: function computeScrollbarXOpts() {
267
+ var $xeList = this;
268
+ var scrollbarOpts = $xeList.computeScrollbarOpts;
269
+ return Object.assign({}, (0, _ui.getConfig)().scrollbar.xConfig, scrollbarOpts.xConfig);
270
+ },
271
+ computeScrollbarYOpts: function computeScrollbarYOpts() {
272
+ var $xeList = this;
273
+ var scrollbarOpts = $xeList.computeScrollbarOpts;
274
+ return Object.assign({}, (0, _ui.getConfig)().scrollbar.yConfig, scrollbarOpts.yConfig);
275
+ },
276
+ computeScrollXVisible: function computeScrollXVisible() {
277
+ var $xeList = this;
278
+ var scrollbarOpts = $xeList.computeScrollbarOpts;
279
+ var scrollbarXOpts = $xeList.computeScrollbarXOpts;
280
+ return (0, _utils.getDefaultConfig)(scrollbarXOpts.visible, scrollbarOpts.visible);
281
+ },
282
+ computeScrollYVisible: function computeScrollYVisible() {
283
+ var $xeList = this;
284
+ var scrollbarOpts = $xeList.computeScrollbarOpts;
285
+ var scrollbarYOpts = $xeList.computeScrollbarYOpts;
286
+ return (0, _utils.getDefaultConfig)(scrollbarYOpts.visible, scrollbarOpts.visible);
287
+ },
288
+ computeScrollXAutoHide: function computeScrollXAutoHide() {
289
+ var $xeList = this;
290
+ var scrollbarOpts = $xeList.computeScrollbarOpts;
291
+ var scrollbarXOpts = $xeList.computeScrollbarXOpts;
292
+ return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), (0, _ui.getConfig)().scrollbar.autoHide);
293
+ },
294
+ computeScrollYAutoHide: function computeScrollYAutoHide() {
295
+ var $xeList = this;
296
+ var scrollbarOpts = $xeList.computeScrollbarOpts;
297
+ var scrollbarYOpts = $xeList.computeScrollbarYOpts;
298
+ return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), (0, _ui.getConfig)().scrollbar.autoHide);
299
+ },
300
+ computeScrollbarWrapperClss: function computeScrollbarWrapperClss() {
301
+ var $xeList = this;
302
+ var reactData = $xeList.reactData;
303
+ var scrollbarOpts = $xeList.computeScrollbarOpts;
304
+ var padding = scrollbarOpts.padding;
305
+ var yThumbHeight = reactData.yThumbHeight,
306
+ xThumbWidth = reactData.xThumbWidth;
307
+ var scrollbarXToTop = $xeList.computeScrollbarXToTop;
308
+ var scrollbarYToLeft = $xeList.computeScrollbarYToLeft;
309
+ var scrollXVisible = $xeList.computeScrollXVisible;
310
+ var scrollYVisible = $xeList.computeScrollYVisible;
311
+ var scrollXAutoHide = $xeList.computeScrollXAutoHide;
312
+ var scrollYAutoHide = $xeList.computeScrollYAutoHide;
313
+ 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')], {
314
+ 'is--padding': padding,
315
+ 'ov-x--auto-hide': scrollXAutoHide,
316
+ 'ov-y--auto-hide': scrollYAutoHide,
317
+ 'overflow-y': yThumbHeight,
318
+ 'overflow-x': xThumbWidth
319
+ });
320
+ },
321
+ computeScrollbarXToTop: function computeScrollbarXToTop() {
322
+ var $xeList = this;
323
+ var scrollbarXOpts = $xeList.computeScrollbarXOpts;
324
+ return scrollbarXOpts.position === 'top';
325
+ },
326
+ computeScrollbarYToLeft: function computeScrollbarYToLeft() {
327
+ var $xeList = this;
328
+ var scrollbarYOpts = $xeList.computeScrollbarYOpts;
329
+ return scrollbarYOpts.position === 'left';
235
330
  }
236
331
  }),
237
332
  methods: {
@@ -570,6 +665,11 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
570
665
  }
571
666
  });
572
667
  },
668
+ updateScrollbar: function updateScrollbar() {
669
+ var $xeList = this;
670
+ $xeList.updateThumbSize();
671
+ $xeList.updateThumbOffset();
672
+ },
573
673
  /**
574
674
  * 重新计算列表
575
675
  */
@@ -589,6 +689,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
589
689
  parentHeight = parentEl.clientHeight - Math.ceil(_xeUtils.default.toNumber(parentStyle.paddingLeft) + _xeUtils.default.toNumber(parentStyle.paddingRight));
590
690
  }
591
691
  reactData.parentHeight = parentHeight;
692
+ $xeList.updateScrollbar();
592
693
  $xeList.updateHeight();
593
694
  if (el.clientWidth && el.clientHeight) {
594
695
  return $xeList.computeScrollLoad();
@@ -627,6 +728,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
627
728
  var scrollLeft = scrollBodyElem.scrollLeft;
628
729
  var isX = scrollLeft !== internalData.lastScrollLeft;
629
730
  var isY = scrollTop !== internalData.lastScrollTop;
731
+ $xeList.updateThumbOffset();
630
732
  internalData.lastScrollTop = scrollTop;
631
733
  internalData.lastScrollLeft = scrollLeft;
632
734
  if (reactData.scrollYLoad) {
@@ -1517,7 +1619,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1517
1619
  var funcName = isAppend ? 'push' : 'unshift';
1518
1620
  newRecords.forEach(function (item) {
1519
1621
  var rowid = getRowIdByField(item, keyField);
1520
- var rowRest = (0, _util.getItemCacheObj)(item);
1622
+ var rowRest = (0, _util2.getItemCacheObj)(item);
1521
1623
  fullData[funcName](item);
1522
1624
  rowMaps[rowid] = rowRest;
1523
1625
  });
@@ -1569,7 +1671,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1569
1671
  if (rowIndex > -1) {
1570
1672
  newRecords.forEach(function (item) {
1571
1673
  var rowid = getRowIdByField(item, keyField);
1572
- var rowRest = (0, _util.getItemCacheObj)(item);
1674
+ var rowRest = (0, _util2.getItemCacheObj)(item);
1573
1675
  rowMaps[rowid] = rowRest;
1574
1676
  });
1575
1677
  var targetIndex = rowIndex;
@@ -1986,6 +2088,189 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1986
2088
  row: row
1987
2089
  }, evnt);
1988
2090
  },
2091
+ // 滚动条
2092
+ updateThumbSize: function updateThumbSize() {
2093
+ var $xeList = this;
2094
+ var reactData = $xeList.reactData;
2095
+ var viewEl = $xeList.$refs.refVirtualWrapper;
2096
+ if (!viewEl) {
2097
+ return;
2098
+ }
2099
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
2100
+ return;
2101
+ }
2102
+ var trackXEl = $xeList.$refs.refTrackXElem;
2103
+ var xThumbWidth = trackXEl ? (0, _util.getThumbSize)(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
2104
+ var thumbXElem = $xeList.$refs.refThumbXElem;
2105
+ if (thumbXElem) {
2106
+ thumbXElem.style.width = xThumbWidth + 'px';
2107
+ }
2108
+ reactData.xThumbWidth = xThumbWidth;
2109
+ var trackYEl = $xeList.$refs.refTrackYElem;
2110
+ var yThumbHeight = trackYEl ? (0, _util.getThumbSize)(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
2111
+ var thumbYElem = $xeList.$refs.refThumbYElem;
2112
+ if (thumbYElem) {
2113
+ thumbYElem.style.height = yThumbHeight + 'px';
2114
+ }
2115
+ reactData.yThumbHeight = yThumbHeight;
2116
+ },
2117
+ updateThumbOffset: function updateThumbOffset() {
2118
+ var $xeList = this;
2119
+ var reactData = $xeList.reactData;
2120
+ var internalData = $xeList.internalData;
2121
+ var viewEl = $xeList.$refs.refVirtualWrapper;
2122
+ if (!viewEl) {
2123
+ return;
2124
+ }
2125
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
2126
+ return;
2127
+ }
2128
+ var xThumbWidth = reactData.xThumbWidth,
2129
+ yThumbHeight = reactData.yThumbHeight;
2130
+ var trackXEl = $xeList.$refs.refTrackXElem;
2131
+ var thumbXElem = $xeList.$refs.refThumbXElem;
2132
+ var xThumbLeft = trackXEl && xThumbWidth ? (0, _util.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
2133
+ internalData.xThumbLeft = xThumbLeft;
2134
+ if (thumbXElem && xThumbWidth) {
2135
+ thumbXElem.style.width = xThumbWidth + 'px';
2136
+ thumbXElem.style.transform = "translateX(".concat(xThumbLeft, "px)");
2137
+ }
2138
+ var trackYEl = $xeList.$refs.refTrackYElem;
2139
+ var thumbYElem = $xeList.$refs.refThumbYElem;
2140
+ var yThumbTop = trackYEl && yThumbHeight ? (0, _util.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
2141
+ internalData.yThumbTop = yThumbTop;
2142
+ if (thumbYElem && yThumbHeight) {
2143
+ thumbYElem.style.height = yThumbHeight + 'px';
2144
+ thumbYElem.style.transform = "translateY(".concat(yThumbTop, "px)");
2145
+ }
2146
+ },
2147
+ clickTrackXEvent: function clickTrackXEvent(evnt) {
2148
+ var $xeList = this;
2149
+ var reactData = $xeList.reactData;
2150
+ var trackEl = evnt.currentTarget;
2151
+ if (trackEl !== evnt.target) {
2152
+ return;
2153
+ }
2154
+ var viewEl = $xeList.$refs.refVirtualWrapper;
2155
+ if (!viewEl) {
2156
+ return;
2157
+ }
2158
+ var xThumbWidth = reactData.xThumbWidth;
2159
+ var trackRect = trackEl.getBoundingClientRect();
2160
+ viewEl.scrollTo({
2161
+ left: (0, _util.getScrollFromClick)(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
2162
+ behavior: 'auto'
2163
+ });
2164
+ },
2165
+ clickTrackYEvent: function clickTrackYEvent(evnt) {
2166
+ var $xeList = this;
2167
+ var reactData = $xeList.reactData;
2168
+ var trackEl = evnt.currentTarget;
2169
+ if (trackEl !== evnt.target) {
2170
+ return;
2171
+ }
2172
+ var viewEl = $xeList.$refs.refVirtualWrapper;
2173
+ if (!viewEl) {
2174
+ return;
2175
+ }
2176
+ var yThumbHeight = reactData.yThumbHeight;
2177
+ var trackRect = trackEl.getBoundingClientRect();
2178
+ viewEl.scrollTo({
2179
+ top: (0, _util.getScrollFromClick)(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
2180
+ behavior: 'auto'
2181
+ });
2182
+ },
2183
+ pointerdownThumbXEvent: function pointerdownThumbXEvent(evnt) {
2184
+ var $xeList = this;
2185
+ var reactData = $xeList.reactData;
2186
+ var internalData = $xeList.internalData;
2187
+ var thumbEl = evnt.currentTarget;
2188
+ internalData.isThumbDrag = true;
2189
+ thumbEl.setPointerCapture(evnt.pointerId);
2190
+ var viewEl = $xeList.$refs.refVirtualWrapper;
2191
+ if (!viewEl) {
2192
+ return;
2193
+ }
2194
+ var xThumbWidth = reactData.xThumbWidth;
2195
+ var trackEl = thumbEl.parentElement;
2196
+ var trackRect = trackEl.getBoundingClientRect();
2197
+ var pointerPosition = evnt.clientX - trackRect.left;
2198
+ // 记录 thumb 的偏移
2199
+ var thumbOffset = (0, _util.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
2200
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
2201
+ },
2202
+ pointermoveThumbXEvent: function pointermoveThumbXEvent(evnt) {
2203
+ var $xeList = this;
2204
+ var reactData = $xeList.reactData;
2205
+ var internalData = $xeList.internalData;
2206
+ var thumbEl = evnt.currentTarget;
2207
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
2208
+ return;
2209
+ }
2210
+ var isThumbDrag = internalData.isThumbDrag,
2211
+ thumbDragOffset = internalData.thumbDragOffset;
2212
+ if (isThumbDrag) {
2213
+ var viewEl = $xeList.$refs.refVirtualWrapper;
2214
+ if (!viewEl) {
2215
+ return;
2216
+ }
2217
+ var xThumbWidth = reactData.xThumbWidth;
2218
+ var _thumbEl = evnt.currentTarget;
2219
+ var trackEl = _thumbEl.parentElement;
2220
+ var trackRect = trackEl.getBoundingClientRect();
2221
+ // 更新偏移
2222
+ viewEl.scrollLeft = (0, _util.getScrollFromDrag)(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
2223
+ }
2224
+ },
2225
+ cleatPointerThumbEvent: function cleatPointerThumbEvent(evnt) {
2226
+ var $xeList = this;
2227
+ var internalData = $xeList.internalData;
2228
+ var thumbEl = evnt.currentTarget;
2229
+ thumbEl.releasePointerCapture(evnt.pointerId);
2230
+ internalData.isThumbDrag = false;
2231
+ },
2232
+ pointerdownThumbYEvent: function pointerdownThumbYEvent(evnt) {
2233
+ var $xeList = this;
2234
+ var reactData = $xeList.reactData;
2235
+ var internalData = $xeList.internalData;
2236
+ var thumbEl = evnt.currentTarget;
2237
+ internalData.isThumbDrag = true;
2238
+ thumbEl.setPointerCapture(evnt.pointerId);
2239
+ var viewEl = $xeList.$refs.refVirtualWrapper;
2240
+ if (!viewEl) {
2241
+ return;
2242
+ }
2243
+ var yThumbHeight = reactData.yThumbHeight;
2244
+ var trackEl = thumbEl.parentElement;
2245
+ var trackRect = trackEl.getBoundingClientRect();
2246
+ var pointerPosition = evnt.clientY - trackRect.top;
2247
+ // 记录 thumb 的偏移
2248
+ var thumbOffset = (0, _util.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
2249
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
2250
+ },
2251
+ pointermoveThumbYEvent: function pointermoveThumbYEvent(evnt) {
2252
+ var $xeList = this;
2253
+ var reactData = $xeList.reactData;
2254
+ var internalData = $xeList.internalData;
2255
+ var thumbEl = evnt.currentTarget;
2256
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
2257
+ return;
2258
+ }
2259
+ var isThumbDrag = internalData.isThumbDrag,
2260
+ thumbDragOffset = internalData.thumbDragOffset;
2261
+ if (isThumbDrag) {
2262
+ var viewEl = $xeList.$refs.refVirtualWrapper;
2263
+ if (!viewEl) {
2264
+ return;
2265
+ }
2266
+ var yThumbHeight = reactData.yThumbHeight;
2267
+ var _thumbEl2 = evnt.currentTarget;
2268
+ var trackEl = _thumbEl2.parentElement;
2269
+ var trackRect = trackEl.getBoundingClientRect();
2270
+ // 更新偏移
2271
+ viewEl.scrollTop = (0, _util.getScrollFromDrag)(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
2272
+ }
2273
+ },
1989
2274
  //
1990
2275
  // Render
1991
2276
  //
@@ -2222,12 +2507,15 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
2222
2507
  var slots = $xeList.$scopedSlots;
2223
2508
  var showCheckbox = props.showCheckbox,
2224
2509
  className = props.className,
2225
- loading = props.loading;
2510
+ loading = props.loading,
2511
+ useScrollbar = props.useScrollbar;
2226
2512
  var bodyHeight = reactData.bodyHeight,
2227
2513
  topSpaceHeight = reactData.topSpaceHeight,
2228
2514
  rowList = reactData.rowList,
2229
2515
  isAllChecked = reactData.isAllChecked,
2230
- isAllIndeterminate = reactData.isAllIndeterminate;
2516
+ isAllIndeterminate = reactData.isAllIndeterminate,
2517
+ xThumbWidth = reactData.xThumbWidth,
2518
+ yThumbHeight = reactData.yThumbHeight;
2231
2519
  var defaultSlot = slots.default;
2232
2520
  var headerSlot = slots.header;
2233
2521
  var footerSlot = slots.footer;
@@ -2242,6 +2530,15 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
2242
2530
  var rowOpts = $xeList.computeRowOpts;
2243
2531
  var isHover = rowOpts.isHover,
2244
2532
  padding = rowOpts.padding;
2533
+ var isDrag = $xeList.computeIsDrag;
2534
+ var scrollbarOpts = $xeList.computeScrollbarOpts;
2535
+ var scrollXVisible = $xeList.computeScrollXVisible;
2536
+ var scrollYVisible = $xeList.computeScrollYVisible;
2537
+ var scrollbarXToTop = $xeList.computeScrollbarXToTop;
2538
+ var scrollbarYToLeft = $xeList.computeScrollbarYToLeft;
2539
+ var scrollXAutoHide = $xeList.computeScrollXAutoHide;
2540
+ var scrollYAutoHide = $xeList.computeScrollYAutoHide;
2541
+ var scrollbarWrapperClss = $xeList.computeScrollbarWrapperClss;
2245
2542
  var showDefChekboxHead = showCheckbox && checkboxOpts.showHeader !== false;
2246
2543
  var leOns = {};
2247
2544
  if (isCrossListDrag && !rowList.length) {
@@ -2249,9 +2546,9 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
2249
2546
  }
2250
2547
  return h('div', {
2251
2548
  ref: 'refElem',
2252
- class: ['vxe-list', className ? _xeUtils.default.isFunction(className) ? className({
2549
+ class: ['vxe-list', 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') : '', className ? _xeUtils.default.isFunction(className) ? className({
2253
2550
  $list: $xeList
2254
- }) : className : '', _defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'is--loading', loading)],
2551
+ }) : className : '', _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), '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), 'is--drag', isDrag), 'is--loading', loading)],
2255
2552
  on: leOns,
2256
2553
  style: wrapperStyles
2257
2554
  }, [headerSlot || showDefChekboxHead ? h('div', {
@@ -2310,6 +2607,44 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
2310
2607
  items: rowList,
2311
2608
  $list: $xeList
2312
2609
  })) : (0, _ui.renderEmptyElement)($xeList),
2610
+ /**
2611
+ * 滚动条
2612
+ */
2613
+ useScrollbar ? h('div', {
2614
+ class: scrollbarWrapperClss
2615
+ }, [scrollXVisible === false ? (0, _ui.renderEmptyElement)($xeList) : h('div', {
2616
+ ref: 'refTrackXElem',
2617
+ class: 'vxe-scrollbar--track-x',
2618
+ on: {
2619
+ click: $xeList.clickTrackXEvent
2620
+ }
2621
+ }, [h('div', {
2622
+ ref: 'refThumbXElem',
2623
+ class: 'vxe-scrollbar--thumb-x',
2624
+ on: {
2625
+ pointerdown: $xeList.pointerdownThumbXEvent,
2626
+ pointermove: $xeList.pointermoveThumbXEvent,
2627
+ pointerup: $xeList.cleatPointerThumbEvent,
2628
+ pointercancel: $xeList.cleatPointerThumbEvent,
2629
+ lostpointercapture: $xeList.cleatPointerThumbEvent
2630
+ }
2631
+ })]), scrollYVisible === false ? (0, _ui.renderEmptyElement)($xeList) : h('div', {
2632
+ ref: 'refTrackYElem',
2633
+ class: 'vxe-scrollbar--track-y',
2634
+ on: {
2635
+ click: $xeList.clickTrackYEvent
2636
+ }
2637
+ }, [h('div', {
2638
+ ref: 'refThumbYElem',
2639
+ class: 'vxe-scrollbar--thumb-y',
2640
+ on: {
2641
+ pointerdown: $xeList.pointerdownThumbYEvent,
2642
+ pointermove: $xeList.pointermoveThumbYEvent,
2643
+ pointerup: $xeList.cleatPointerThumbEvent,
2644
+ pointercancel: $xeList.cleatPointerThumbEvent,
2645
+ lostpointercapture: $xeList.cleatPointerThumbEvent
2646
+ }
2647
+ })])]) : (0, _ui.renderEmptyElement)($xeList),
2313
2648
  /**
2314
2649
  * 拖拽提示
2315
2650
  */
@@ -2343,13 +2678,29 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
2343
2678
  var $xeList = this;
2344
2679
  $xeList.reFlag++;
2345
2680
  },
2681
+ useScrollbar: function useScrollbar() {
2682
+ var $xeList = this;
2683
+ $xeList.reFlag++;
2684
+ },
2346
2685
  computeRowHeight: function computeRowHeight() {
2347
2686
  var $xeList = this;
2348
2687
  $xeList.reFlag++;
2349
2688
  },
2350
- reFlag: function reFlag() {
2689
+ computeScrollXVisible: function computeScrollXVisible() {
2690
+ var $xeList = this;
2691
+ $xeList.$nextTick(function () {
2692
+ $xeList.reFlag++;
2693
+ });
2694
+ },
2695
+ computeScrollYVisible: function computeScrollYVisible() {
2351
2696
  var $xeList = this;
2352
2697
  $xeList.$nextTick(function () {
2698
+ $xeList.reFlag++;
2699
+ });
2700
+ },
2701
+ reFlag: function reFlag() {
2702
+ var $xeList = this;
2703
+ $xeList.recalculate().then(function () {
2353
2704
  $xeList.recalculate();
2354
2705
  });
2355
2706
  },
@@ -2375,7 +2726,9 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
2375
2726
  var internalData = $xeList.internalData;
2376
2727
  var showSeq = props.showSeq,
2377
2728
  showRadio = props.showRadio,
2378
- showCheckbox = props.showCheckbox;
2729
+ showCheckbox = props.showCheckbox,
2730
+ autoResize = props.autoResize,
2731
+ useScrollbar = props.useScrollbar;
2379
2732
  var rowOpts = $xeList.computeRowOpts;
2380
2733
  var useKey = rowOpts.useKey,
2381
2734
  keyField = rowOpts.keyField;
@@ -2397,24 +2750,32 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
2397
2750
  if (useKey && !keyField) {
2398
2751
  errLog('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField']);
2399
2752
  }
2400
- if (props.autoResize) {
2753
+ if (useScrollbar || autoResize) {
2401
2754
  var el = $xeList.$refs.refElem;
2755
+ var viewInnerEl = $xeList.$refs.refVirtualBody;
2402
2756
  var resizeObserver = _ui.globalResize.create(function () {
2403
- return $xeList.recalculate();
2757
+ $xeList.reFlag++;
2404
2758
  });
2405
- resizeObserver.observe(el);
2406
2759
  if (el) {
2407
- resizeObserver.observe(el.parentElement);
2760
+ resizeObserver.observe(el);
2761
+ if (autoResize) {
2762
+ resizeObserver.observe(el.parentElement);
2763
+ }
2764
+ }
2765
+ if (viewInnerEl) {
2766
+ resizeObserver.observe(viewInnerEl);
2408
2767
  }
2409
2768
  internalData.resizeObserver = resizeObserver;
2410
2769
  }
2411
- $xeList.recalculate();
2412
- _ui.globalEvents.on($xeList, 'resize', $xeList.recalculate);
2770
+ $xeList.reFlag++;
2771
+ _ui.globalEvents.on($xeList, 'resize', function () {
2772
+ $xeList.reFlag++;
2773
+ });
2413
2774
  },
2414
2775
  activated: function activated() {
2415
2776
  var $xeList = this;
2416
2777
  $xeList.recalculate().then(function () {
2417
- return $xeList.refreshScroll();
2778
+ $xeList.refreshScroll();
2418
2779
  });
2419
2780
  },
2420
2781
  beforeDestroy: function beforeDestroy() {