vxe-pc-ui 4.19.8 → 4.20.0

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 (60) hide show
  1. package/dist/all.esm.js +318 -19
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/icon/style.css +1 -1
  5. package/es/list/src/list.js +317 -17
  6. package/es/list/style.css +26 -0
  7. package/es/list/style.min.css +1 -1
  8. package/es/scrollbar/style.css +1 -0
  9. package/es/style.css +1 -1
  10. package/es/style.min.css +1 -1
  11. package/es/ui/index.js +1 -1
  12. package/es/ui/src/log.js +1 -1
  13. package/es/ui/src/utils.js +9 -0
  14. package/es/vxe-list/style.css +26 -0
  15. package/es/vxe-list/style.min.css +1 -1
  16. package/es/vxe-scrollbar/style.css +1 -0
  17. package/lib/icon/style/style.css +1 -1
  18. package/lib/icon/style/style.min.css +1 -1
  19. package/lib/index.umd.js +336 -18
  20. package/lib/index.umd.min.js +1 -1
  21. package/lib/list/src/list.js +328 -19
  22. package/lib/list/src/list.min.js +1 -1
  23. package/lib/list/style/style.css +26 -0
  24. package/lib/list/style/style.min.css +1 -1
  25. package/lib/scrollbar/style/style.css +1 -0
  26. package/lib/style.css +1 -1
  27. package/lib/style.min.css +1 -1
  28. package/lib/ui/index.js +1 -1
  29. package/lib/ui/index.min.js +1 -1
  30. package/lib/ui/src/log.js +1 -1
  31. package/lib/ui/src/log.min.js +1 -1
  32. package/lib/ui/src/utils.js +10 -0
  33. package/lib/ui/src/utils.min.js +1 -1
  34. package/lib/vxe-list/style/style.css +26 -0
  35. package/lib/vxe-list/style/style.min.css +1 -1
  36. package/lib/vxe-scrollbar/style/style.css +1 -0
  37. package/package.json +1 -1
  38. package/packages/list/src/list.ts +345 -17
  39. package/packages/ui/src/utils.ts +10 -0
  40. package/styles/components/list.scss +51 -0
  41. package/styles/components/scrollbar.scss +3 -0
  42. package/types/components/card.d.ts +1 -1
  43. package/types/components/layout-aside.d.ts +1 -1
  44. package/types/components/layout-body.d.ts +1 -1
  45. package/types/components/list.d.ts +24 -2
  46. package/types/components/table-plugins/extend-cell-area.d.ts +1 -1
  47. package/types/components/table.d.ts +24 -0
  48. package/types/components/tabs.d.ts +1 -1
  49. /package/es/icon/{iconfont.1791862962954.ttf → iconfont.1791880413927.ttf} +0 -0
  50. /package/es/icon/{iconfont.1791862962954.woff → iconfont.1791880413927.woff} +0 -0
  51. /package/es/icon/{iconfont.1791862962954.woff2 → iconfont.1791880413927.woff2} +0 -0
  52. /package/es/{iconfont.1791862962954.ttf → iconfont.1791880413927.ttf} +0 -0
  53. /package/es/{iconfont.1791862962954.woff → iconfont.1791880413927.woff} +0 -0
  54. /package/es/{iconfont.1791862962954.woff2 → iconfont.1791880413927.woff2} +0 -0
  55. /package/lib/icon/style/{iconfont.1791862962954.ttf → iconfont.1791880413927.ttf} +0 -0
  56. /package/lib/icon/style/{iconfont.1791862962954.woff → iconfont.1791880413927.woff} +0 -0
  57. /package/lib/icon/style/{iconfont.1791862962954.woff2 → iconfont.1791880413927.woff2} +0 -0
  58. /package/lib/{iconfont.1791862962954.ttf → iconfont.1791880413927.ttf} +0 -0
  59. /package/lib/{iconfont.1791862962954.woff → iconfont.1791880413927.woff} +0 -0
  60. /package/lib/{iconfont.1791862962954.woff2 → iconfont.1791880413927.woff2} +0 -0
@@ -1,12 +1,13 @@
1
1
  import { h, ref, computed, onBeforeUnmount, watch, reactive, nextTick, onActivated, onMounted } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import XEUtils from 'xe-utils';
4
- import { VxeUI, getConfig, getIcon, getI18n, menus, globalEvents, globalResize, createEvent, useSize, renderEmptyElement } from '../../ui';
4
+ import { VxeUI, getConfig, getIcon, getI18n, domUtils, menus, globalEvents, globalResize, useSize, createEvent, renderEmptyElement } from '../../ui';
5
5
  import { getCrossListDragRowInfo } from './store';
6
6
  import { isScale, removeClass, addClass, getTpImg, toCssUnit, hasClass } from '../../ui/src/dom';
7
7
  import { isEnableConf, getText, enModelValue, deModelValue } from '../../ui/src/utils';
8
8
  import { createComponentLog } from '../../ui/src/log';
9
9
  import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime';
10
+ import { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } from '../../scrollbar/src/util';
10
11
  import { getItemCacheObj } from './util';
11
12
  import VxeLoadingComponent from '../../loading';
12
13
  const { warnLog, errLog } = createComponentLog('tree');
@@ -36,6 +37,9 @@ function createReactData() {
36
37
  updateCheckboxFlag: 1,
37
38
  isAllChecked: false,
38
39
  isAllIndeterminate: false,
40
+ // 滚动条
41
+ yThumbHeight: 0,
42
+ xThumbWidth: 0,
39
43
  insertRowFlag: 1,
40
44
  removeRowFlag: 1,
41
45
  dragRow: null,
@@ -45,13 +49,18 @@ function createReactData() {
45
49
  }
46
50
  function createInternalData() {
47
51
  return {
48
- resizeObserver: undefined,
49
52
  fullData: [],
50
53
  afterList: [],
51
54
  fullKeyMaps: {},
52
55
  rowMaps: {},
53
- lastScrollLeft: 0,
56
+ // 滚动条
57
+ // resizeObserver: undefined,
58
+ // isThumbDrag: false,
59
+ thumbDragOffset: 0,
60
+ yThumbTop: 0,
61
+ xThumbLeft: 0,
54
62
  lastScrollTop: 0,
63
+ lastScrollLeft: 0,
55
64
  scrollYStore: {
56
65
  startIndex: 0,
57
66
  endIndex: 0,
@@ -105,7 +114,12 @@ export default defineVxeComponent({
105
114
  dragConfig: Object,
106
115
  menuConfig: Object,
107
116
  virtualYConfig: Object,
108
- scrollY: Object
117
+ scrollY: Object,
118
+ useScrollbar: {
119
+ type: Boolean,
120
+ default: () => getConfig().list.useScrollbar
121
+ },
122
+ scrollbarConfig: Object
109
123
  },
110
124
  emits: [
111
125
  'update:checkRowKey',
@@ -138,6 +152,11 @@ export default defineVxeComponent({
138
152
  const refFooterElem = ref();
139
153
  const refVirtualWrapper = ref();
140
154
  const refVirtualBody = ref();
155
+ const refViewInnerElem = ref();
156
+ const refTrackXElem = ref();
157
+ const refTrackYElem = ref();
158
+ const refThumbXElem = ref();
159
+ const refThumbYElem = ref();
141
160
  const refDragRowLineElem = ref();
142
161
  const refDragTipElem = ref();
143
162
  const refMaps = {
@@ -186,11 +205,19 @@ export default defineVxeComponent({
186
205
  });
187
206
  const computeWrapperStyles = computed(() => {
188
207
  const rowHeight = computeRowHeight.value;
189
- const style = {};
208
+ const scrollbarXOpts = computeScrollbarXOpts.value;
209
+ const scrollbarYOpts = computeScrollbarYOpts.value;
210
+ const stys = {};
190
211
  if (rowHeight) {
191
- style['--vxe-ui-list-row-height'] = toCssUnit(rowHeight);
212
+ stys['--vxe-ui-list-row-height'] = toCssUnit(rowHeight);
192
213
  }
193
- return style;
214
+ if (scrollbarYOpts.width) {
215
+ stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(scrollbarYOpts.width);
216
+ }
217
+ if (scrollbarXOpts.height) {
218
+ stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(scrollbarXOpts.height);
219
+ }
220
+ return stys;
194
221
  });
195
222
  const computeVirtualStyles = computed(() => {
196
223
  const { height, maxHeight } = props;
@@ -205,6 +232,47 @@ export default defineVxeComponent({
205
232
  }
206
233
  return style;
207
234
  });
235
+ const computeScrollbarOpts = computed(() => {
236
+ return Object.assign({}, getConfig().list.scrollbarConfig, props.scrollbarConfig);
237
+ });
238
+ const computeScrollbarXOpts = computed(() => {
239
+ const scrollbarOpts = computeScrollbarOpts.value;
240
+ return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig);
241
+ });
242
+ const computeScrollbarYOpts = computed(() => {
243
+ const scrollbarOpts = computeScrollbarOpts.value;
244
+ return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
245
+ });
246
+ const computeScrollbarWrapperClss = computed(() => {
247
+ const scrollbarOpts = computeScrollbarOpts.value;
248
+ const { padding } = scrollbarOpts;
249
+ const { yThumbHeight, xThumbWidth } = reactData;
250
+ const scrollbarXOpts = computeScrollbarXOpts.value;
251
+ const scrollbarYOpts = computeScrollbarYOpts.value;
252
+ const scrollbarXToTop = computeScrollbarXToTop.value;
253
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
254
+ return domUtils.buildClass([
255
+ 'vxe-scrollbar is--virtual',
256
+ `ov-x--${scrollbarXOpts.visible || 'visible'}`,
257
+ `ov-y--${scrollbarYOpts.visible || 'visible'}`,
258
+ `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
259
+ `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
260
+ ], {
261
+ 'is--padding': padding,
262
+ 'ov-x--auto-hide': scrollbarXOpts.autoHide,
263
+ 'ov-y--auto-hide': scrollbarYOpts.autoHide,
264
+ 'overflow-y': yThumbHeight,
265
+ 'overflow-x': xThumbWidth
266
+ });
267
+ });
268
+ const computeScrollbarXToTop = computed(() => {
269
+ const scrollbarXOpts = computeScrollbarXOpts.value;
270
+ return scrollbarXOpts.position === 'top';
271
+ });
272
+ const computeScrollbarYToLeft = computed(() => {
273
+ const scrollbarYOpts = computeScrollbarYOpts.value;
274
+ return scrollbarYOpts.position === 'left';
275
+ });
208
276
  const dispatchEvent = (type, params, evnt) => {
209
277
  emit(type, createEvent(evnt, { $list: $xeList }, params));
210
278
  };
@@ -361,6 +429,7 @@ export default defineVxeComponent({
361
429
  */
362
430
  const refreshScroll = () => {
363
431
  const { lastScrollLeft, lastScrollTop } = internalData;
432
+ updateScrollbar();
364
433
  return clearScroll().then(() => {
365
434
  if (lastScrollLeft || lastScrollTop) {
366
435
  internalData.lastScrollLeft = 0;
@@ -369,6 +438,10 @@ export default defineVxeComponent({
369
438
  }
370
439
  });
371
440
  };
441
+ const updateScrollbar = () => {
442
+ updateThumbSize();
443
+ updateThumbOffset();
444
+ };
372
445
  /**
373
446
  * 重新计算列表
374
447
  */
@@ -386,6 +459,7 @@ export default defineVxeComponent({
386
459
  parentHeight = parentEl.clientHeight - Math.ceil(XEUtils.toNumber(parentStyle.paddingLeft) + XEUtils.toNumber(parentStyle.paddingRight));
387
460
  }
388
461
  reactData.parentHeight = parentHeight;
462
+ updateScrollbar();
389
463
  updateHeight();
390
464
  if (el.clientWidth && el.clientHeight) {
391
465
  return computeScrollLoad();
@@ -415,6 +489,7 @@ export default defineVxeComponent({
415
489
  const scrollLeft = scrollBodyElem.scrollLeft;
416
490
  const isX = scrollLeft !== internalData.lastScrollLeft;
417
491
  const isY = scrollTop !== internalData.lastScrollTop;
492
+ updateThumbOffset();
418
493
  internalData.lastScrollTop = scrollTop;
419
494
  internalData.lastScrollLeft = scrollLeft;
420
495
  if (reactData.scrollYLoad) {
@@ -1711,6 +1786,162 @@ export default defineVxeComponent({
1711
1786
  hideDropTip();
1712
1787
  }
1713
1788
  };
1789
+ const updateThumbSize = () => {
1790
+ const viewEl = refVirtualWrapper.value;
1791
+ if (!viewEl) {
1792
+ return;
1793
+ }
1794
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
1795
+ return;
1796
+ }
1797
+ const trackXEl = refTrackXElem.value;
1798
+ const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
1799
+ const thumbXElem = refThumbXElem.value;
1800
+ if (thumbXElem) {
1801
+ thumbXElem.style.width = xThumbWidth + 'px';
1802
+ }
1803
+ reactData.xThumbWidth = xThumbWidth;
1804
+ const trackYEl = refTrackYElem.value;
1805
+ const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
1806
+ const thumbYElem = refThumbYElem.value;
1807
+ if (thumbYElem) {
1808
+ thumbYElem.style.height = yThumbHeight + 'px';
1809
+ }
1810
+ reactData.yThumbHeight = yThumbHeight;
1811
+ };
1812
+ const updateThumbOffset = () => {
1813
+ const viewEl = refVirtualWrapper.value;
1814
+ if (!viewEl) {
1815
+ return;
1816
+ }
1817
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
1818
+ return;
1819
+ }
1820
+ const { xThumbWidth, yThumbHeight } = reactData;
1821
+ const trackXEl = refTrackXElem.value;
1822
+ const thumbXElem = refThumbXElem.value;
1823
+ const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
1824
+ internalData.xThumbLeft = xThumbLeft;
1825
+ if (thumbXElem && xThumbWidth) {
1826
+ thumbXElem.style.width = xThumbWidth + 'px';
1827
+ thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
1828
+ }
1829
+ const trackYEl = refTrackYElem.value;
1830
+ const thumbYElem = refThumbYElem.value;
1831
+ const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
1832
+ internalData.yThumbTop = yThumbTop;
1833
+ if (thumbYElem && yThumbHeight) {
1834
+ thumbYElem.style.height = yThumbHeight + 'px';
1835
+ thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
1836
+ }
1837
+ };
1838
+ const clickTrackXEvent = (evnt) => {
1839
+ const trackEl = evnt.currentTarget;
1840
+ if (trackEl !== evnt.target) {
1841
+ return;
1842
+ }
1843
+ const viewEl = refVirtualWrapper.value;
1844
+ if (!viewEl) {
1845
+ return;
1846
+ }
1847
+ const { xThumbWidth } = reactData;
1848
+ const trackRect = trackEl.getBoundingClientRect();
1849
+ viewEl.scrollTo({
1850
+ left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
1851
+ behavior: 'auto'
1852
+ });
1853
+ };
1854
+ const clickTrackYEvent = (evnt) => {
1855
+ const trackEl = evnt.currentTarget;
1856
+ if (trackEl !== evnt.target) {
1857
+ return;
1858
+ }
1859
+ const viewEl = refVirtualWrapper.value;
1860
+ if (!viewEl) {
1861
+ return;
1862
+ }
1863
+ const { yThumbHeight } = reactData;
1864
+ const trackRect = trackEl.getBoundingClientRect();
1865
+ viewEl.scrollTo({
1866
+ top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
1867
+ behavior: 'auto'
1868
+ });
1869
+ };
1870
+ const pointerdownThumbXEvent = (evnt) => {
1871
+ const thumbEl = evnt.currentTarget;
1872
+ internalData.isThumbDrag = true;
1873
+ thumbEl.setPointerCapture(evnt.pointerId);
1874
+ const viewEl = refVirtualWrapper.value;
1875
+ if (!viewEl) {
1876
+ return;
1877
+ }
1878
+ const { xThumbWidth } = reactData;
1879
+ const trackEl = thumbEl.parentElement;
1880
+ const trackRect = trackEl.getBoundingClientRect();
1881
+ const pointerPosition = evnt.clientX - trackRect.left;
1882
+ // 记录 thumb 的偏移
1883
+ const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
1884
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
1885
+ };
1886
+ const pointermoveThumbXEvent = (evnt) => {
1887
+ const thumbEl = evnt.currentTarget;
1888
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
1889
+ return;
1890
+ }
1891
+ const { isThumbDrag, thumbDragOffset } = internalData;
1892
+ if (isThumbDrag) {
1893
+ const viewEl = refVirtualWrapper.value;
1894
+ if (!viewEl) {
1895
+ return;
1896
+ }
1897
+ const { xThumbWidth } = reactData;
1898
+ const thumbEl = evnt.currentTarget;
1899
+ const trackEl = thumbEl.parentElement;
1900
+ const trackRect = trackEl.getBoundingClientRect();
1901
+ // 更新偏移
1902
+ viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
1903
+ }
1904
+ };
1905
+ const cleatPointerThumbEvent = (evnt) => {
1906
+ const thumbEl = evnt.currentTarget;
1907
+ thumbEl.releasePointerCapture(evnt.pointerId);
1908
+ internalData.isThumbDrag = false;
1909
+ };
1910
+ const pointerdownThumbYEvent = (evnt) => {
1911
+ const thumbEl = evnt.currentTarget;
1912
+ internalData.isThumbDrag = true;
1913
+ thumbEl.setPointerCapture(evnt.pointerId);
1914
+ const viewEl = refVirtualWrapper.value;
1915
+ if (!viewEl) {
1916
+ return;
1917
+ }
1918
+ const { yThumbHeight } = reactData;
1919
+ const trackEl = thumbEl.parentElement;
1920
+ const trackRect = trackEl.getBoundingClientRect();
1921
+ const pointerPosition = evnt.clientY - trackRect.top;
1922
+ // 记录 thumb 的偏移
1923
+ const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
1924
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
1925
+ };
1926
+ const pointermoveThumbYEvent = (evnt) => {
1927
+ const thumbEl = evnt.currentTarget;
1928
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
1929
+ return;
1930
+ }
1931
+ const { isThumbDrag, thumbDragOffset } = internalData;
1932
+ if (isThumbDrag) {
1933
+ const viewEl = refVirtualWrapper.value;
1934
+ if (!viewEl) {
1935
+ return;
1936
+ }
1937
+ const { yThumbHeight } = reactData;
1938
+ const thumbEl = evnt.currentTarget;
1939
+ const trackEl = thumbEl.parentElement;
1940
+ const trackRect = trackEl.getBoundingClientRect();
1941
+ // 更新偏移
1942
+ viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
1943
+ }
1944
+ };
1714
1945
  Object.assign($xeList, listMethods, listPrivateMethods);
1715
1946
  const renderDragTip = () => {
1716
1947
  const { dragRow, dragTipText } = reactData;
@@ -1907,7 +2138,7 @@ export default defineVxeComponent({
1907
2138
  }], rowid: hasKey && keyField ? rowid : undefined }, rowOns), ctVNs);
1908
2139
  };
1909
2140
  const renderVN = () => {
1910
- const { showCheckbox, className, loading } = props;
2141
+ const { showCheckbox, className, loading, useScrollbar } = props;
1911
2142
  const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate } = reactData;
1912
2143
  const defaultSlot = slots.default;
1913
2144
  const headerSlot = slots.header;
@@ -1923,6 +2154,9 @@ export default defineVxeComponent({
1923
2154
  const rowOpts = computeRowOpts.value;
1924
2155
  const { isHover, padding } = rowOpts;
1925
2156
  const isDrag = computeIsDrag.value;
2157
+ const scrollbarXOpts = computeScrollbarXOpts.value;
2158
+ const scrollbarYOpts = computeScrollbarYOpts.value;
2159
+ const scrollbarWrapperClss = computeScrollbarWrapperClss.value;
1926
2160
  const showDefChekboxHead = showCheckbox && showHeader !== false;
1927
2161
  const leOns = {};
1928
2162
  if (isCrossListDrag && !rowList.length) {
@@ -1930,6 +2164,9 @@ export default defineVxeComponent({
1930
2164
  }
1931
2165
  return h('div', Object.assign({ ref: refElem, class: ['vxe-list', className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '', {
1932
2166
  [`size--${vSize}`]: vSize,
2167
+ 'is--virtual-scrollbar': useScrollbar,
2168
+ 'ov-x--auto-hide': useScrollbar && scrollbarXOpts.autoHide,
2169
+ 'ov-y--auto-hide': useScrollbar && scrollbarYOpts.autoHide,
1933
2170
  'is--drag': isDrag,
1934
2171
  'is--loading': loading
1935
2172
  }], style: wrapperStyles }, leOns), [
@@ -1989,7 +2226,15 @@ export default defineVxeComponent({
1989
2226
  style: {
1990
2227
  marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ''
1991
2228
  }
1992
- }, defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i)))
2229
+ }, useScrollbar
2230
+ ? (defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i)))
2231
+ : [
2232
+ h('div', {
2233
+ key: 'vi',
2234
+ ref: refViewInnerElem,
2235
+ class: 'vxe-scrollbar--view-inner'
2236
+ }, defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i)))
2237
+ ])
1993
2238
  ]),
1994
2239
  footerSlot
1995
2240
  ? h('div', {
@@ -1997,6 +2242,49 @@ export default defineVxeComponent({
1997
2242
  class: 'vxe-list--footer-wrapper'
1998
2243
  }, footerSlot({ items: rowList, $list: $xeList }))
1999
2244
  : renderEmptyElement($xeList),
2245
+ /**
2246
+ * 滚动条
2247
+ */
2248
+ useScrollbar
2249
+ ? h('div', {
2250
+ class: scrollbarWrapperClss
2251
+ }, [
2252
+ scrollbarXOpts.visible === 'hidden'
2253
+ ? renderEmptyElement($xeList)
2254
+ : h('div', {
2255
+ ref: refTrackXElem,
2256
+ class: 'vxe-scrollbar--track-x',
2257
+ onClick: clickTrackXEvent
2258
+ }, [
2259
+ h('div', {
2260
+ ref: refThumbXElem,
2261
+ class: 'vxe-scrollbar--thumb-x',
2262
+ onPointerdown: pointerdownThumbXEvent,
2263
+ onPointermove: pointermoveThumbXEvent,
2264
+ onPointerup: cleatPointerThumbEvent,
2265
+ onPointercancel: cleatPointerThumbEvent,
2266
+ onLostpointercapture: cleatPointerThumbEvent
2267
+ })
2268
+ ]),
2269
+ scrollbarYOpts.visible === 'hidden'
2270
+ ? renderEmptyElement($xeList)
2271
+ : h('div', {
2272
+ ref: refTrackYElem,
2273
+ class: 'vxe-scrollbar--track-y',
2274
+ onClick: clickTrackYEvent
2275
+ }, [
2276
+ h('div', {
2277
+ ref: refThumbYElem,
2278
+ class: 'vxe-scrollbar--thumb-y',
2279
+ onPointerdown: pointerdownThumbYEvent,
2280
+ onPointermove: pointermoveThumbYEvent,
2281
+ onPointerup: cleatPointerThumbEvent,
2282
+ onPointercancel: cleatPointerThumbEvent,
2283
+ onLostpointercapture: cleatPointerThumbEvent
2284
+ })
2285
+ ])
2286
+ ])
2287
+ : renderEmptyElement($xeList),
2000
2288
  /**
2001
2289
  * 拖拽提示
2002
2290
  */
@@ -2052,13 +2340,15 @@ export default defineVxeComponent({
2052
2340
  updateCheckboxModeValue();
2053
2341
  });
2054
2342
  onActivated(() => {
2055
- recalculate().then(() => refreshScroll());
2343
+ recalculate().then(() => {
2344
+ refreshScroll();
2345
+ });
2056
2346
  });
2057
2347
  nextTick(() => {
2058
2348
  loadData(props.data || []);
2059
2349
  });
2060
2350
  onMounted(() => {
2061
- const { showSeq, showRadio, showCheckbox } = props;
2351
+ const { showSeq, showRadio, showCheckbox, autoResize, useScrollbar } = props;
2062
2352
  const rowOpts = computeRowOpts.value;
2063
2353
  const { useKey } = rowOpts;
2064
2354
  const isDrag = computeIsDrag.value;
@@ -2080,17 +2370,27 @@ export default defineVxeComponent({
2080
2370
  if (useKey && !keyField) {
2081
2371
  errLog('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField']);
2082
2372
  }
2083
- if (props.autoResize) {
2373
+ if (useScrollbar || autoResize) {
2084
2374
  const el = refElem.value;
2085
- const resizeObserver = globalResize.create(() => recalculate());
2375
+ const viewInnerEl = refViewInnerElem.value;
2376
+ const resizeObserver = globalResize.create(() => {
2377
+ reFlag.value++;
2378
+ });
2086
2379
  resizeObserver.observe(el);
2087
- if (el) {
2088
- resizeObserver.observe(el.parentElement);
2380
+ if (autoResize) {
2381
+ if (el) {
2382
+ resizeObserver.observe(el.parentElement);
2383
+ }
2384
+ }
2385
+ if (viewInnerEl) {
2386
+ resizeObserver.observe(viewInnerEl);
2089
2387
  }
2090
2388
  internalData.resizeObserver = resizeObserver;
2091
2389
  }
2092
- recalculate();
2093
- globalEvents.on($xeList, 'resize', recalculate);
2390
+ reFlag.value++;
2391
+ globalEvents.on($xeList, 'resize', () => {
2392
+ reFlag.value++;
2393
+ });
2094
2394
  });
2095
2395
  onBeforeUnmount(() => {
2096
2396
  const { resizeObserver } = internalData;
package/es/list/style.css CHANGED
@@ -374,4 +374,30 @@
374
374
  .vxe-list--radio-option .vxe-radio--label {
375
375
  padding-left: 0.4em;
376
376
  vertical-align: middle;
377
+ }
378
+
379
+ .vxe-list > .vxe-scrollbar {
380
+ position: unset;
381
+ }
382
+ .vxe-list.is--virtual-scrollbar > .vxe-list--virtual-wrapper {
383
+ scrollbar-width: none;
384
+ -ms-overflow-style: none;
385
+ }
386
+ .vxe-list.is--virtual-scrollbar > .vxe-list--virtual-wrapper::-webkit-scrollbar {
387
+ display: none;
388
+ }
389
+
390
+ .vxe-list.is--virtual-scrollbar.ov-x--auto-hide:hover > .vxe-scrollbar > .vxe-scrollbar--track-x {
391
+ opacity: 1;
392
+ }
393
+ .vxe-list.is--virtual-scrollbar.ov-x--auto-hide > .vxe-scrollbar > .vxe-scrollbar--track-x {
394
+ opacity: 0;
395
+ transition: opacity 0.8s ease-in-out;
396
+ }
397
+ .vxe-list.is--virtual-scrollbar.ov-y--auto-hide:hover > .vxe-scrollbar > .vxe-scrollbar--track-y {
398
+ opacity: 1;
399
+ }
400
+ .vxe-list.is--virtual-scrollbar.ov-y--auto-hide > .vxe-scrollbar > .vxe-scrollbar--track-y {
401
+ opacity: 0;
402
+ transition: opacity 0.8s ease-in-out;
377
403
  }
@@ -1 +1 @@
1
- @charset "UTF-8";.vxe-list{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-default);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-default)}.vxe-list.size--medium{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-medium);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-medium)}.vxe-list.size--small{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-small);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-small)}.vxe-list.size--mini{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-mini);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-mini)}.vxe-list{position:relative;display:block;padding:0;font-size:var(--vxe-ui-list-current-font-size);color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);direction:ltr}.vxe-list .vxe-list--virtual-wrapper{position:relative;overflow-x:auto;overflow-y:auto;outline:0}.vxe-list .vxe-list--y-space{width:0;float:left}.vxe-list .vxe-list--body,.vxe-list .vxe-list--virtual-wrapper{padding:0;margin:0;border:0;outline:0}.vxe-list--header-wrapper{display:flex;flex-direction:row;align-items:center;min-height:var(--vxe-ui-list-row-height)}.vxe-list--header-left{display:flex;flex-direction:row;align-items:center;flex-shrink:0}.vxe-list--header-content{flex-grow:1;overflow:auto}.vxe-list--body.trigger--row>.vxe-list--row:not(.is--drag-disabled):active{cursor:grabbing}.vxe-list--body.is--padding>.vxe-list--row{padding:0 var(--vxe-ui-list-current-padding)}.vxe-list--body.checkbox--highlight .vxe-list--row.is-checkbox--checked{background-color:var(--vxe-ui-list-row-checkbox-checked-background-color)}.vxe-list--body.radio--highlight .vxe-list--row.is-radio--checked{background-color:var(--vxe-ui-list-row-radio-checked-background-color)}.vxe-list--body.row--hover .vxe-list--row:hover{background-color:var(--vxe-ui-list-row-hover-background-color)}.vxe-list--body.row--hover .vxe-list--row:hover.is--current{background-color:var(--vxe-ui-list-row-hover-current-background-color)}.vxe-list--body.row--hover.radio--highlight .vxe-list--row.is-radio--checked:hover{background-color:var(--vxe-ui-list-row-hover-radio-checked-background-color)}.vxe-list--body.row--hover.checkbox--highlight .vxe-list--row.is-checkbox--checked:hover{background-color:var(--vxe-ui-list-row-hover-checkbox-checked-background-color)}.vxe-list--row.is--current{background-color:var(--vxe-ui-list-row-current-background-color)}.vxe-list--virtual-wrapper{height:100px}.vxe-list--row{display:flex;flex-direction:row;align-items:center}.vxe-list--row-content,.vxe-list--row-drag,.vxe-list--row-extra{display:flex;flex-direction:row;align-items:center}.vxe-list--row-drag{flex-shrink:0;padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--row-content{flex-grow:1;height:var(--vxe-ui-list-row-height);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-list--row-extra{flex-shrink:0}.vxe-list--drag-handle:not(.is--disabled){cursor:grab}.vxe-list--drag-handle:not(.is--disabled):active{cursor:grabbing}.vxe-list--drag-handle:not(.is--disabled):hover{color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-handle.is--disabled{color:var(--vxe-ui-input-disabled-color);cursor:not-allowed}.vxe-list--row.row--drag-move{transition:transform .5s ease}.vxe-list--row.row--drag-origin{opacity:.3}.vxe-list--drag-row-line{display:none;position:absolute;top:0;left:0;z-index:11;pointer-events:none}.vxe-list--drag-row-line{width:100%;height:1px;border:2px solid transparent}.vxe-list--drag-row-line[drag-pos=top]{border-top-color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-row-line[drag-pos=bottom]{border-bottom-color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-row-line[drag-to-child=y]{border-top-color:transparent;border-bottom-color:transparent;border-left-color:var(--vxe-ui-status-success-color)}.vxe-list--drag-row-line.is--guides{background-color:var(--vxe-ui-list-drag-over-background-color)}.vxe-body--row-list-move{transition-property:transform;transition-duration:.35s}.vxe-list--drag-sort-tip{display:none;position:absolute;top:0;left:0;padding:.6em 1.4em;max-width:50%;min-width:100px;border-radius:var(--vxe-ui-border-radius);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;background-color:var(--vxe-ui-layout-background-color);box-shadow:0 0 10px 0 rgba(0,0,0,.2);z-index:33}.vxe-list--drag-sort-tip[drag-status=normal] .vxe-list--drag-sort-tip-normal-status{display:block}.vxe-list--drag-sort-tip[drag-status=sub] .vxe-list--drag-sort-tip-sub-status{display:block}.vxe-list--drag-sort-tip[drag-status=disabled] .vxe-list--drag-sort-tip-disabled-status{display:block}.vxe-list--drag-sort-tip-wrapper{display:flex;flex-direction:row;align-items:center}.vxe-list--drag-sort-tip-status{padding-right:.4em}.vxe-list--drag-sort-tip-disabled-status{display:none;flex-shrink:0;color:var(--vxe-ui-status-error-color)}.vxe-list--drag-sort-tip-normal-status,.vxe-list--drag-sort-tip-sub-status{display:none}.vxe-list--drag-sort-tip-content{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-list--checkbox-header{padding-right:var(--vxe-ui-list-current-padding);-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-header{cursor:pointer}.vxe-list--checkbox-header .vxe-checkbox--icon{font-size:1.22em;transition:all .2s ease-in-out}.vxe-list--checkbox-header .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-header.is--checked,.vxe-list--checkbox-header.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header.is--checked .vxe-checkbox--icon,.vxe-list--checkbox-header.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header.is--hidden{cursor:default}.vxe-list--checkbox-header.is--readonly{cursor:auto}.vxe-list--checkbox-header.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--checkbox-header.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--checkbox-header .vxe-checkbox--label{padding-left:.4em;vertical-align:middle}.vxe-list--checkbox-option{padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--checkbox-option{cursor:pointer}.vxe-list--checkbox-option .vxe-checkbox--icon{font-size:1.22em;transition:all .2s ease-in-out}.vxe-list--checkbox-option .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-option.is--checked,.vxe-list--checkbox-option.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option.is--checked .vxe-checkbox--icon,.vxe-list--checkbox-option.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option.is--hidden{cursor:default}.vxe-list--checkbox-option.is--readonly{cursor:auto}.vxe-list--checkbox-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--checkbox-option.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--checkbox-option .vxe-checkbox--label{padding-left:.4em;vertical-align:middle}.vxe-list--radio-option{padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--radio-option{cursor:pointer}.vxe-list--radio-option .vxe-radio--icon{font-size:1.26em;transition:all .2s ease-in-out}.vxe-list--radio-option .vxe-radio--icon{color:var(--vxe-ui-input-border-color);border-radius:50%;vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--radio-option.is--checked{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option.is--checked .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option:not(.is--disabled):hover .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option.is--readonly{cursor:auto}.vxe-list--radio-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--radio-option.is--disabled .vxe-radio--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--radio-option .vxe-radio--label{padding-left:.4em;vertical-align:middle}
1
+ @charset "UTF-8";.vxe-list{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-default);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-default)}.vxe-list.size--medium{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-medium);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-medium)}.vxe-list.size--small{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-small);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-small)}.vxe-list.size--mini{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-mini);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-mini)}.vxe-list{position:relative;display:block;padding:0;font-size:var(--vxe-ui-list-current-font-size);color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);direction:ltr}.vxe-list .vxe-list--virtual-wrapper{position:relative;overflow-x:auto;overflow-y:auto;outline:0}.vxe-list .vxe-list--y-space{width:0;float:left}.vxe-list .vxe-list--body,.vxe-list .vxe-list--virtual-wrapper{padding:0;margin:0;border:0;outline:0}.vxe-list--header-wrapper{display:flex;flex-direction:row;align-items:center;min-height:var(--vxe-ui-list-row-height)}.vxe-list--header-left{display:flex;flex-direction:row;align-items:center;flex-shrink:0}.vxe-list--header-content{flex-grow:1;overflow:auto}.vxe-list--body.trigger--row>.vxe-list--row:not(.is--drag-disabled):active{cursor:grabbing}.vxe-list--body.is--padding>.vxe-list--row{padding:0 var(--vxe-ui-list-current-padding)}.vxe-list--body.checkbox--highlight .vxe-list--row.is-checkbox--checked{background-color:var(--vxe-ui-list-row-checkbox-checked-background-color)}.vxe-list--body.radio--highlight .vxe-list--row.is-radio--checked{background-color:var(--vxe-ui-list-row-radio-checked-background-color)}.vxe-list--body.row--hover .vxe-list--row:hover{background-color:var(--vxe-ui-list-row-hover-background-color)}.vxe-list--body.row--hover .vxe-list--row:hover.is--current{background-color:var(--vxe-ui-list-row-hover-current-background-color)}.vxe-list--body.row--hover.radio--highlight .vxe-list--row.is-radio--checked:hover{background-color:var(--vxe-ui-list-row-hover-radio-checked-background-color)}.vxe-list--body.row--hover.checkbox--highlight .vxe-list--row.is-checkbox--checked:hover{background-color:var(--vxe-ui-list-row-hover-checkbox-checked-background-color)}.vxe-list--row.is--current{background-color:var(--vxe-ui-list-row-current-background-color)}.vxe-list--virtual-wrapper{height:100px}.vxe-list--row{display:flex;flex-direction:row;align-items:center}.vxe-list--row-content,.vxe-list--row-drag,.vxe-list--row-extra{display:flex;flex-direction:row;align-items:center}.vxe-list--row-drag{flex-shrink:0;padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--row-content{flex-grow:1;height:var(--vxe-ui-list-row-height);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-list--row-extra{flex-shrink:0}.vxe-list--drag-handle:not(.is--disabled){cursor:grab}.vxe-list--drag-handle:not(.is--disabled):active{cursor:grabbing}.vxe-list--drag-handle:not(.is--disabled):hover{color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-handle.is--disabled{color:var(--vxe-ui-input-disabled-color);cursor:not-allowed}.vxe-list--row.row--drag-move{transition:transform .5s ease}.vxe-list--row.row--drag-origin{opacity:.3}.vxe-list--drag-row-line{display:none;position:absolute;top:0;left:0;z-index:11;pointer-events:none}.vxe-list--drag-row-line{width:100%;height:1px;border:2px solid transparent}.vxe-list--drag-row-line[drag-pos=top]{border-top-color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-row-line[drag-pos=bottom]{border-bottom-color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-row-line[drag-to-child=y]{border-top-color:transparent;border-bottom-color:transparent;border-left-color:var(--vxe-ui-status-success-color)}.vxe-list--drag-row-line.is--guides{background-color:var(--vxe-ui-list-drag-over-background-color)}.vxe-body--row-list-move{transition-property:transform;transition-duration:.35s}.vxe-list--drag-sort-tip{display:none;position:absolute;top:0;left:0;padding:.6em 1.4em;max-width:50%;min-width:100px;border-radius:var(--vxe-ui-border-radius);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;background-color:var(--vxe-ui-layout-background-color);box-shadow:0 0 10px 0 rgba(0,0,0,.2);z-index:33}.vxe-list--drag-sort-tip[drag-status=normal] .vxe-list--drag-sort-tip-normal-status{display:block}.vxe-list--drag-sort-tip[drag-status=sub] .vxe-list--drag-sort-tip-sub-status{display:block}.vxe-list--drag-sort-tip[drag-status=disabled] .vxe-list--drag-sort-tip-disabled-status{display:block}.vxe-list--drag-sort-tip-wrapper{display:flex;flex-direction:row;align-items:center}.vxe-list--drag-sort-tip-status{padding-right:.4em}.vxe-list--drag-sort-tip-disabled-status{display:none;flex-shrink:0;color:var(--vxe-ui-status-error-color)}.vxe-list--drag-sort-tip-normal-status,.vxe-list--drag-sort-tip-sub-status{display:none}.vxe-list--drag-sort-tip-content{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-list--checkbox-header{padding-right:var(--vxe-ui-list-current-padding);-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-header{cursor:pointer}.vxe-list--checkbox-header .vxe-checkbox--icon{font-size:1.22em;transition:all .2s ease-in-out}.vxe-list--checkbox-header .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-header.is--checked,.vxe-list--checkbox-header.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header.is--checked .vxe-checkbox--icon,.vxe-list--checkbox-header.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header.is--hidden{cursor:default}.vxe-list--checkbox-header.is--readonly{cursor:auto}.vxe-list--checkbox-header.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--checkbox-header.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--checkbox-header .vxe-checkbox--label{padding-left:.4em;vertical-align:middle}.vxe-list--checkbox-option{padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--checkbox-option{cursor:pointer}.vxe-list--checkbox-option .vxe-checkbox--icon{font-size:1.22em;transition:all .2s ease-in-out}.vxe-list--checkbox-option .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-option.is--checked,.vxe-list--checkbox-option.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option.is--checked .vxe-checkbox--icon,.vxe-list--checkbox-option.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option.is--hidden{cursor:default}.vxe-list--checkbox-option.is--readonly{cursor:auto}.vxe-list--checkbox-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--checkbox-option.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--checkbox-option .vxe-checkbox--label{padding-left:.4em;vertical-align:middle}.vxe-list--radio-option{padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--radio-option{cursor:pointer}.vxe-list--radio-option .vxe-radio--icon{font-size:1.26em;transition:all .2s ease-in-out}.vxe-list--radio-option .vxe-radio--icon{color:var(--vxe-ui-input-border-color);border-radius:50%;vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--radio-option.is--checked{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option.is--checked .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option:not(.is--disabled):hover .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option.is--readonly{cursor:auto}.vxe-list--radio-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--radio-option.is--disabled .vxe-radio--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--radio-option .vxe-radio--label{padding-left:.4em;vertical-align:middle}.vxe-list>.vxe-scrollbar{position:unset}.vxe-list.is--virtual-scrollbar>.vxe-list--virtual-wrapper{scrollbar-width:none;-ms-overflow-style:none}.vxe-list.is--virtual-scrollbar>.vxe-list--virtual-wrapper::-webkit-scrollbar{display:none}.vxe-list.is--virtual-scrollbar.ov-x--auto-hide:hover>.vxe-scrollbar>.vxe-scrollbar--track-x{opacity:1}.vxe-list.is--virtual-scrollbar.ov-x--auto-hide>.vxe-scrollbar>.vxe-scrollbar--track-x{opacity:0;transition:opacity .8s ease-in-out}.vxe-list.is--virtual-scrollbar.ov-y--auto-hide:hover>.vxe-scrollbar>.vxe-scrollbar--track-y{opacity:1}.vxe-list.is--virtual-scrollbar.ov-y--auto-hide>.vxe-scrollbar>.vxe-scrollbar--track-y{opacity:0;transition:opacity .8s ease-in-out}
@@ -36,6 +36,7 @@
36
36
  .vxe-scrollbar.is--native > .vxe-scrollbar--view::-webkit-scrollbar-thumb:active {
37
37
  background-color: var(--vxe-ui-scrollbar-thumb-active-background-color);
38
38
  }
39
+
39
40
  .vxe-scrollbar.ov-x--hidden > .vxe-scrollbar--view {
40
41
  overflow-x: hidden;
41
42
  }