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
@@ -1,12 +1,14 @@
1
1
  import { defineVxeComponent } from '../../ui/src/comp';
2
2
  import XEUtils from 'xe-utils';
3
- import { VxeUI, getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, globalMixins, renderEmptyElement } from '../../ui';
3
+ import { VxeUI, globalMixins } from '../../ui';
4
4
  import { getEventTargetNode, getPopupAppendElement, toCssUnit, updatePanelPlacement } from '../../ui/src/dom';
5
5
  import { getLastZIndex, nextZIndex, getFuncText, eqEmptyValue } from '../../ui/src/utils';
6
6
  import { getSlotVNs } from '../../ui/src/vn';
7
7
  import { createComponentLog } from '../../ui/src/log';
8
8
  import VxeInputComponent from '../../input';
9
9
  import VxeButtonComponent from '../../button';
10
+ const { getConfig, getIcon, getI18n, baseUtils, domUtils, globalEvents, GLOBAL_EVENT_KEYS, globalResize, createEvent, renderEmptyElement } = VxeUI;
11
+ const { getDefVal } = baseUtils;
10
12
  const { errLog } = createComponentLog('select');
11
13
  function isOptionVisible(option) {
12
14
  return option.visible !== false;
@@ -26,6 +28,9 @@ function createReactData() {
26
28
  currentOption: null,
27
29
  searchValue: '',
28
30
  searchLoading: false,
31
+ // 滚动条
32
+ yThumbHeight: 0,
33
+ xThumbWidth: 0,
29
34
  panelIndex: 0,
30
35
  panelStyle: {},
31
36
  panelPlacement: null,
@@ -45,8 +50,14 @@ function createInternalData() {
45
50
  optGroupKeyMaps: {},
46
51
  optFullValMaps: {},
47
52
  remoteValMaps: {},
48
- lastScrollLeft: 0,
53
+ // 滚动条
54
+ // scrollObserver: undefined,
55
+ // isThumbDrag: false,
56
+ thumbDragOffset: 0,
57
+ yThumbTop: 0,
58
+ xThumbLeft: 0,
49
59
  lastScrollTop: 0,
60
+ lastScrollLeft: 0,
50
61
  scrollYStore: {
51
62
  startIndex: 0,
52
63
  endIndex: 0,
@@ -61,7 +72,9 @@ function createInternalData() {
61
72
  export default {
62
73
  name: 'VxeSelect',
63
74
  mixins: [
64
- globalMixins.sizeMixin
75
+ globalMixins.sizeMixin,
76
+ globalMixins.vScrollbarMixin,
77
+ globalMixins.initVScrollbarMixin
65
78
  ],
66
79
  model: {
67
80
  prop: 'value',
@@ -176,6 +189,11 @@ export default {
176
189
  popupConfig: Object,
177
190
  virtualYConfig: Object,
178
191
  scrollY: Object,
192
+ useScrollbar: {
193
+ type: Boolean,
194
+ default: () => getDefVal(getConfig().select.useScrollbar, getConfig().useScrollbar)
195
+ },
196
+ scrollbarConfig: Object,
179
197
  /**
180
198
  * 已废弃,被 remote-config.queryMethod 替换
181
199
  * @deprecated
@@ -223,7 +241,7 @@ export default {
223
241
  const xID = XEUtils.uniqueId();
224
242
  const reactData = createReactData();
225
243
  return Object.assign(Object.assign({}, {}), { xID,
226
- reactData });
244
+ reactData, reLayoutFlag: 0, reScrollFlag: 0 });
227
245
  },
228
246
  computed: Object.assign(Object.assign({}, {}), { computeFormReadonly() {
229
247
  const $xeSelect = this;
@@ -445,6 +463,88 @@ export default {
445
463
  return `${labels.slice(0, multiMaxCharNum)}...`;
446
464
  }
447
465
  return labels.join(', ');
466
+ },
467
+ computeScrollbarOpts() {
468
+ const $xeSelect = this;
469
+ const props = $xeSelect;
470
+ return Object.assign({}, getConfig().tree.scrollbarConfig, props.scrollbarConfig);
471
+ },
472
+ computeScrollbarXOpts() {
473
+ const $xeSelect = this;
474
+ const scrollbarOpts = $xeSelect.computeScrollbarOpts;
475
+ return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig, {
476
+ visible: false
477
+ });
478
+ },
479
+ computeScrollbarYOpts() {
480
+ const $xeSelect = this;
481
+ const scrollbarOpts = $xeSelect.computeScrollbarOpts;
482
+ return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
483
+ },
484
+ computeScrollXHeight() {
485
+ const $xeSelect = this;
486
+ const scrollbarOpts = $xeSelect.computeScrollbarOpts;
487
+ const scrollbarXOpts = $xeSelect.computeScrollbarXOpts;
488
+ return getDefVal(getDefVal(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
489
+ },
490
+ computeScrollYWidth() {
491
+ const $xeSelect = this;
492
+ const scrollbarOpts = $xeSelect.computeScrollbarOpts;
493
+ const scrollbarYOpts = $xeSelect.computeScrollbarYOpts;
494
+ return getDefVal(getDefVal(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
495
+ },
496
+ computeScrollXVisible() {
497
+ const $xeSelect = this;
498
+ const scrollbarOpts = $xeSelect.computeScrollbarOpts;
499
+ const scrollbarXOpts = $xeSelect.computeScrollbarXOpts;
500
+ return getDefVal(scrollbarXOpts.visible, scrollbarOpts.visible);
501
+ },
502
+ computeScrollYVisible() {
503
+ const $xeSelect = this;
504
+ const scrollbarOpts = $xeSelect.computeScrollbarOpts;
505
+ const scrollbarYOpts = $xeSelect.computeScrollbarYOpts;
506
+ return getDefVal(scrollbarYOpts.visible, scrollbarOpts.visible);
507
+ },
508
+ computeScrollXAutoHide() {
509
+ const $xeSelect = this;
510
+ const scrollbarOpts = $xeSelect.computeScrollbarOpts;
511
+ const scrollbarXOpts = $xeSelect.computeScrollbarXOpts;
512
+ return getDefVal(getDefVal(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
513
+ },
514
+ computeScrollYAutoHide() {
515
+ const $xeSelect = this;
516
+ const scrollbarOpts = $xeSelect.computeScrollbarOpts;
517
+ const scrollbarYOpts = $xeSelect.computeScrollbarYOpts;
518
+ return getDefVal(getDefVal(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
519
+ },
520
+ computeScrollbarWrapperClss() {
521
+ const $xeSelect = this;
522
+ const reactData = $xeSelect.reactData;
523
+ const { yThumbHeight, xThumbWidth } = reactData;
524
+ const scrollbarXToTop = $xeSelect.computeScrollbarXToTop;
525
+ const scrollbarYToLeft = $xeSelect.computeScrollbarYToLeft;
526
+ const scrollXVisible = $xeSelect.computeScrollXVisible;
527
+ const scrollYVisible = $xeSelect.computeScrollYVisible;
528
+ return domUtils.buildClass([
529
+ 'vxe-scrollbar is--virtual',
530
+ `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`,
531
+ `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`,
532
+ `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
533
+ `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
534
+ ], {
535
+ 'overflow-y': yThumbHeight,
536
+ 'overflow-x': xThumbWidth
537
+ });
538
+ },
539
+ computeScrollbarXToTop() {
540
+ const $xeSelect = this;
541
+ const scrollbarXOpts = $xeSelect.computeScrollbarXOpts;
542
+ return scrollbarXOpts.position === 'top';
543
+ },
544
+ computeScrollbarYToLeft() {
545
+ const $xeSelect = this;
546
+ const scrollbarYOpts = $xeSelect.computeScrollbarYOpts;
547
+ return scrollbarYOpts.position === 'left';
448
548
  } }),
449
549
  methods: {
450
550
  //
@@ -469,6 +569,11 @@ export default {
469
569
  $xeSelect.emitModel(value);
470
570
  $xeSelect.dispatchEvent('default-change', { value }, null);
471
571
  },
572
+ getScrollViewElem() {
573
+ const $xeSelect = this;
574
+ const viewEl = $xeSelect.$refs.refVirtualWrapper;
575
+ return viewEl || null;
576
+ },
472
577
  isPanelVisible() {
473
578
  const $xeSelect = this;
474
579
  const reactData = $xeSelect.reactData;
@@ -1458,6 +1563,17 @@ export default {
1458
1563
  }
1459
1564
  });
1460
1565
  },
1566
+ updateScrollbar() {
1567
+ const $xeSelect = this;
1568
+ const isVScrollbar = $xeSelect.computeIsVScrollbar;
1569
+ if (isVScrollbar) {
1570
+ return $xeSelect.$nextTick().then(() => {
1571
+ $xeSelect.updateThumbSize();
1572
+ $xeSelect.updateThumbOffset();
1573
+ });
1574
+ }
1575
+ return Promise.resolve();
1576
+ },
1461
1577
  /**
1462
1578
  * 重新计算列表
1463
1579
  */
@@ -1465,7 +1581,9 @@ export default {
1465
1581
  const $xeSelect = this;
1466
1582
  const el = $xeSelect.$refs.refElem;
1467
1583
  if (el && el.clientWidth && el.clientHeight) {
1468
- return $xeSelect.computeScrollLoad();
1584
+ return $xeSelect.computeScrollLoad().then(() => {
1585
+ return $xeSelect.updateScrollbar();
1586
+ });
1469
1587
  }
1470
1588
  return Promise.resolve();
1471
1589
  },
@@ -1502,6 +1620,7 @@ export default {
1502
1620
  const scrollBodyElem = evnt.target;
1503
1621
  const scrollTop = scrollBodyElem.scrollTop;
1504
1622
  const scrollLeft = scrollBodyElem.scrollLeft;
1623
+ $xeSelect.updateThumbOffset();
1505
1624
  const isX = scrollLeft !== internalData.lastScrollLeft;
1506
1625
  const isY = scrollTop !== internalData.lastScrollTop;
1507
1626
  internalData.lastScrollTop = scrollTop;
@@ -1591,6 +1710,29 @@ export default {
1591
1710
  const { optGroupKeyMaps } = internalData;
1592
1711
  return !!optGroupKeyMaps[optid];
1593
1712
  },
1713
+ // 滚动条
1714
+ bindScrollbarResize() {
1715
+ const $xeSelect = this;
1716
+ const internalData = $xeSelect.internalData;
1717
+ const isVScrollbar = $xeSelect.computeIsVScrollbar;
1718
+ const { scrollObserver } = internalData;
1719
+ if (isVScrollbar) {
1720
+ if (!scrollObserver) {
1721
+ const el = $xeSelect.$refs.refElem;
1722
+ const viewInnerEl = $xeSelect.$refs.refVirtualSpaceElem;
1723
+ const scrollObserver = globalResize.create(() => {
1724
+ $xeSelect.reScrollFlag++;
1725
+ });
1726
+ if (el) {
1727
+ scrollObserver.observe(el);
1728
+ }
1729
+ if (viewInnerEl) {
1730
+ scrollObserver.observe(viewInnerEl);
1731
+ }
1732
+ internalData.scrollObserver = scrollObserver;
1733
+ }
1734
+ }
1735
+ },
1594
1736
  //
1595
1737
  // Render
1596
1738
  //
@@ -1797,8 +1939,9 @@ export default {
1797
1939
  const slots = $xeSelect.$scopedSlots;
1798
1940
  const reactData = $xeSelect.reactData;
1799
1941
  const { className, multiple, loading, filterable, showTotalButton, showCheckedButton, showClearButton, showCloseButton } = props;
1800
- const { initialized, isActivated, isAniVisible, optList, visiblePanel, bodyHeight, topSpaceHeight } = reactData;
1942
+ const { initialized, isActivated, isAniVisible, optList, visiblePanel, bodyHeight, topSpaceHeight, xThumbWidth, yThumbHeight } = reactData;
1801
1943
  const vSize = $xeSelect.computeSize;
1944
+ const isVScrollbar = $xeSelect.computeIsVScrollbar;
1802
1945
  const isDisabled = $xeSelect.computeIsDisabled;
1803
1946
  const selectLabel = $xeSelect.computeSelectLabel;
1804
1947
  const fullLabel = $xeSelect.computeFullLabel;
@@ -1831,6 +1974,14 @@ export default {
1831
1974
  const footerSlot = slots.footer;
1832
1975
  const prefixSlot = slots.prefix;
1833
1976
  const ppClassName = popupOpts.className || props.popupClassName;
1977
+ const scrollbarOpts = $xeSelect.computeScrollbarOpts;
1978
+ const scrollXVisible = $xeSelect.computeScrollXVisible;
1979
+ const scrollYVisible = $xeSelect.computeScrollYVisible;
1980
+ const scrollbarXToTop = $xeSelect.computeScrollbarXToTop;
1981
+ const scrollbarYToLeft = $xeSelect.computeScrollbarYToLeft;
1982
+ const scrollXAutoHide = $xeSelect.computeScrollXAutoHide;
1983
+ const scrollYAutoHide = $xeSelect.computeScrollYAutoHide;
1984
+ const scrollbarWrapperClss = $xeSelect.computeScrollbarWrapperClss;
1834
1985
  return h('div', {
1835
1986
  ref: 'refElem',
1836
1987
  class: ['vxe-select', className ? (XEUtils.isFunction(className) ? className({ $select: $xeSelect }) : className) : '', {
@@ -1956,7 +2107,21 @@ export default {
1956
2107
  ])
1957
2108
  : renderEmptyElement($xeSelect),
1958
2109
  h('div', {
1959
- class: 'vxe-select--panel-body'
2110
+ class: [
2111
+ 'vxe-select--panel-body',
2112
+ isVScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
2113
+ isVScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
2114
+ isVScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
2115
+ isVScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
2116
+ {
2117
+ 'is--virtual-scrollbar': isVScrollbar,
2118
+ 'ov-padding': isVScrollbar && scrollbarOpts.padding,
2119
+ 'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
2120
+ 'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
2121
+ 'overflow-y': yThumbHeight,
2122
+ 'overflow-x': xThumbWidth
2123
+ }
2124
+ ]
1960
2125
  }, [
1961
2126
  h('div', {
1962
2127
  ref: 'refVirtualWrapper',
@@ -1966,6 +2131,7 @@ export default {
1966
2131
  }
1967
2132
  }, [
1968
2133
  h('div', {
2134
+ ref: 'refVirtualSpaceElem',
1969
2135
  class: 'vxe-select--y-space',
1970
2136
  style: {
1971
2137
  height: bodyHeight ? `${bodyHeight}px` : ''
@@ -1978,7 +2144,58 @@ export default {
1978
2144
  transform: `translateY(${topSpaceHeight}px)`
1979
2145
  }
1980
2146
  }, $xeSelect.renderOpts(h))
1981
- ])
2147
+ ]),
2148
+ /**
2149
+ * 滚动条
2150
+ */
2151
+ isVScrollbar
2152
+ ? h('div', {
2153
+ class: scrollbarWrapperClss
2154
+ }, [
2155
+ scrollXVisible === false
2156
+ ? renderEmptyElement($xeSelect)
2157
+ : h('div', {
2158
+ ref: 'refTrackXElem',
2159
+ class: 'vxe-scrollbar--track-x',
2160
+ on: {
2161
+ click: $xeSelect.clickTrackXEvent
2162
+ }
2163
+ }, [
2164
+ h('div', {
2165
+ ref: 'refThumbXElem',
2166
+ class: 'vxe-scrollbar--thumb-x',
2167
+ on: {
2168
+ pointerdown: $xeSelect.pointerdownThumbXEvent,
2169
+ pointermove: $xeSelect.pointermoveThumbXEvent,
2170
+ pointerup: $xeSelect.cleatPointerThumbEvent,
2171
+ pointercancel: $xeSelect.cleatPointerThumbEvent,
2172
+ lostpointercapture: $xeSelect.cleatPointerThumbEvent
2173
+ }
2174
+ })
2175
+ ]),
2176
+ scrollYVisible === false
2177
+ ? renderEmptyElement($xeSelect)
2178
+ : h('div', {
2179
+ ref: 'refTrackYElem',
2180
+ class: 'vxe-scrollbar--track-y',
2181
+ on: {
2182
+ click: $xeSelect.clickTrackYEvent
2183
+ }
2184
+ }, [
2185
+ h('div', {
2186
+ ref: 'refThumbYElem',
2187
+ class: 'vxe-scrollbar--thumb-y',
2188
+ on: {
2189
+ pointerdown: $xeSelect.pointerdownThumbYEvent,
2190
+ pointermove: $xeSelect.pointermoveThumbYEvent,
2191
+ pointerup: $xeSelect.cleatPointerThumbEvent,
2192
+ pointercancel: $xeSelect.cleatPointerThumbEvent,
2193
+ lostpointercapture: $xeSelect.cleatPointerThumbEvent
2194
+ }
2195
+ })
2196
+ ])
2197
+ ])
2198
+ : renderEmptyElement($xeSelect)
1982
2199
  ]),
1983
2200
  footerSlot || showTotalButton || (showCloseButton && multiple)
1984
2201
  ? h('div', {
@@ -2030,6 +2247,47 @@ export default {
2030
2247
  optionGroups(val) {
2031
2248
  const $xeSelect = this;
2032
2249
  $xeSelect.loadData(val);
2250
+ },
2251
+ computeIsVScrollbar() {
2252
+ const $xeSelect = this;
2253
+ $xeSelect.$nextTick(() => {
2254
+ $xeSelect.bindScrollbarResize();
2255
+ $xeSelect.$nextTick(() => {
2256
+ $xeSelect.reLayoutFlag++;
2257
+ });
2258
+ });
2259
+ },
2260
+ computeScrollYWidth() {
2261
+ const $xeSelect = this;
2262
+ $xeSelect.reLayoutFlag++;
2263
+ },
2264
+ computeScrollXHeight() {
2265
+ const $xeSelect = this;
2266
+ $xeSelect.reLayoutFlag++;
2267
+ },
2268
+ computeScrollXVisible() {
2269
+ const $xeSelect = this;
2270
+ $xeSelect.$nextTick(() => {
2271
+ $xeSelect.reLayoutFlag++;
2272
+ });
2273
+ },
2274
+ computeScrollYVisible() {
2275
+ const $xeSelect = this;
2276
+ $xeSelect.$nextTick(() => {
2277
+ $xeSelect.reLayoutFlag++;
2278
+ });
2279
+ },
2280
+ reLayoutFlag() {
2281
+ const $xeSelect = this;
2282
+ $xeSelect.recalculate().then(() => {
2283
+ $xeSelect.recalculate();
2284
+ });
2285
+ },
2286
+ reScrollFlag() {
2287
+ const $xeSelect = this;
2288
+ $xeSelect.updateScrollbar().then(() => {
2289
+ $xeSelect.updateScrollbar();
2290
+ });
2033
2291
  }
2034
2292
  },
2035
2293
  created() {
@@ -2048,6 +2306,8 @@ export default {
2048
2306
  $xeSelect.loadData(options);
2049
2307
  }
2050
2308
  });
2309
+ $xeSelect.reLayoutFlag++;
2310
+ $xeSelect.bindScrollbarResize();
2051
2311
  globalEvents.on($xeSelect, 'mousedown', $xeSelect.handleGlobalMousedownEvent);
2052
2312
  globalEvents.on($xeSelect, 'keydown', $xeSelect.handleGlobalKeydownEvent);
2053
2313
  globalEvents.on($xeSelect, 'blur', $xeSelect.handleGlobalBlurEvent);
@@ -2056,10 +2316,15 @@ export default {
2056
2316
  },
2057
2317
  beforeDestroy() {
2058
2318
  const $xeSelect = this;
2319
+ const internalData = $xeSelect.internalData;
2320
+ const { scrollObserver } = internalData;
2059
2321
  const panelElem = $xeSelect.$refs.refOptionPanel;
2060
2322
  if (panelElem && panelElem.parentNode) {
2061
2323
  panelElem.parentNode.removeChild(panelElem);
2062
2324
  }
2325
+ if (scrollObserver) {
2326
+ scrollObserver.disconnect();
2327
+ }
2063
2328
  globalEvents.off($xeSelect, 'mousedown');
2064
2329
  globalEvents.off($xeSelect, 'keydown');
2065
2330
  globalEvents.off($xeSelect, 'blur');
@@ -144,6 +144,7 @@
144
144
  }
145
145
 
146
146
  .vxe-select--panel-body {
147
+ position: relative;
147
148
  display: flex;
148
149
  flex-direction: row;
149
150
  flex-grow: 1;
@@ -379,4 +380,47 @@
379
380
  .vxe-select--search-loading,
380
381
  .vxe-select--empty-placeholder {
381
382
  line-height: var(--vxe-ui-select-current-option-height);
383
+ }
384
+
385
+ .vxe-select--panel-body.ov-padding.overflow-x.sx-pos--top {
386
+ padding-top: var(--vxe-ui-scrollbar-x-height);
387
+ }
388
+ .vxe-select--panel-body.ov-padding.overflow-x.sx-pos--bottom {
389
+ padding-bottom: var(--vxe-ui-scrollbar-x-height);
390
+ }
391
+ .vxe-select--panel-body.ov-padding.overflow-y.sy-pos--left {
392
+ padding-left: var(--vxe-ui-scrollbar-y-width);
393
+ }
394
+ .vxe-select--panel-body.ov-padding.overflow-y.sy-pos--right {
395
+ padding-right: var(--vxe-ui-scrollbar-y-width);
396
+ }
397
+ .vxe-select--panel-body.ov-x--hidden > .vxe-select-option--wrapper {
398
+ overflow-x: hidden;
399
+ }
400
+ .vxe-select--panel-body.ov-y--hidden > .vxe-select-option--wrapper {
401
+ overflow-y: hidden;
402
+ }
403
+ .vxe-select--panel-body.is--virtual-scrollbar.ov-x--auto-hide:hover > .vxe-scrollbar > .vxe-scrollbar--track-x {
404
+ opacity: 1;
405
+ }
406
+ .vxe-select--panel-body.is--virtual-scrollbar.ov-x--auto-hide > .vxe-scrollbar > .vxe-scrollbar--track-x {
407
+ opacity: 0;
408
+ transition: opacity 0.8s ease-in-out;
409
+ }
410
+ .vxe-select--panel-body.is--virtual-scrollbar.ov-y--auto-hide:hover > .vxe-scrollbar > .vxe-scrollbar--track-y {
411
+ opacity: 1;
412
+ }
413
+ .vxe-select--panel-body.is--virtual-scrollbar.ov-y--auto-hide > .vxe-scrollbar > .vxe-scrollbar--track-y {
414
+ opacity: 0;
415
+ transition: opacity 0.8s ease-in-out;
416
+ }
417
+ .vxe-select--panel-body > .vxe-scrollbar {
418
+ position: unset;
419
+ }
420
+ .vxe-select--panel-body.is--virtual-scrollbar > .vxe-select-option--wrapper {
421
+ scrollbar-width: none;
422
+ -ms-overflow-style: none;
423
+ }
424
+ .vxe-select--panel-body.is--virtual-scrollbar > .vxe-select-option--wrapper::-webkit-scrollbar {
425
+ display: none;
382
426
  }
@@ -1 +1 @@
1
- .vxe-select,.vxe-select--panel{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-default);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-default)}.vxe-select--panel.size--xlarge,.vxe-select.size--xlarge{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-xlarge);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-xlarge)}.vxe-select--panel.size--large,.vxe-select.size--large{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-large);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-large)}.vxe-select--panel.size--medium,.vxe-select.size--medium{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-medium);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-medium)}.vxe-select--panel.size--small,.vxe-select.size--small{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-small);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-small)}.vxe-select--panel.size--mini,.vxe-select.size--mini{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-mini);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-mini)}.vxe-select,.vxe-select--panel{--vxe-ui-select-current-padding:var(--vxe-ui-layout-padding-default)}.vxe-select--panel.size--mini,.vxe-select--panel.size--small,.vxe-select.size--mini,.vxe-select.size--small{--vxe-ui-select-current-padding:var(--vxe-ui-layout-padding-half)}.vxe-select{position:relative;display:inline-block;width:180px;font-size:var(--vxe-ui-select-current-font-size);color:var(--vxe-ui-font-color);text-align:left}.vxe-select>.vxe-input .vxe-input--inner{cursor:pointer}.vxe-select.is--disabled>.vxe-input .vxe-input--inner{cursor:no-drop}.vxe-select.is--loading>.vxe-input .vxe-input--inner{cursor:progress}.vxe-select>.vxe-input{width:100%}.vxe-select>.vxe-input .vxe-input--suffix-icon>i{display:inline-block;transition:transform .2s ease-in-out}.vxe-select.is--active:not(.is--filter)>.vxe-input{border-color:var(--vxe-ui-font-primary-color)}.vxe-select--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-select-slots{display:none}.vxe-select--panel{font-size:var(--vxe-ui-select-current-font-size);display:none;position:absolute;left:0;padding:4px 0;color:var(--vxe-ui-font-color);text-align:left}.vxe-select--panel:not(.is--transfer){min-width:100%}.vxe-select--panel.is--transfer{position:fixed}.vxe-select--panel.ani--leave{display:block;opacity:0;transform:scaleY(.5);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top;backface-visibility:hidden}.vxe-select--panel.ani--leave[placement=top]{transform-origin:center bottom}.vxe-select--panel.ani--enter{opacity:1;transform:scaleY(1)}.vxe-select--panel.ani--enter>div::after{display:none}.vxe-select--panel>div::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vxe-select--panel-search{display:block;flex-shrink:0;padding:var(--vxe-ui-layout-padding-default)}.vxe-select--panel-search .vxe-select-search--input{width:100%}.vxe-select--panel-wrapper{display:flex;flex-direction:column;position:relative;max-height:18em;border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-base-popup-border-color);box-shadow:var(--vxe-ui-base-popup-box-shadow);background-color:var(--vxe-ui-layout-background-color)}.vxe-select--panel-body{display:flex;flex-direction:row;flex-grow:1;overflow:hidden}.vxe-select--header-button{display:flex;flex-direction:row}.vxe-select--footer-button,.vxe-select--header-button{display:flex;flex-direction:row;white-space:nowrap;align-items:center;min-height:2em}.vxe-select--total-btns{padding-left:var(--vxe-ui-select-current-padding);flex-grow:1}.vxe-select--oper-btns,.vxe-select--total-btns{display:flex;flex-direction:row;align-items:center}.vxe-select--oper-btns{flex-shrink:0}.vxe-select--footer-button{display:flex;flex-direction:row}.vxe-select--panel-header{border-bottom:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-select--panel-footer{border-top:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-select--panel-footer,.vxe-select--panel-header{flex-shrink:0;padding:4px 0}.vxe-select-option--wrapper{flex-grow:1;position:relative;overflow-x:hidden;overflow-y:auto}.vxe-select--y-space{width:0;float:left}.vxe-select--body,.vxe-select-option--wrapper{padding:0;margin:0;border:0;outline:0}.vxe-select-option{position:relative;flex-direction:row;display:flex;padding:0 .6em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.vxe-select-option.is--add{padding-right:2em}.vxe-select-option.is--add:hover .vxe-select-option--add-icon{color:var(--vxe-ui-font-primary-color)}.vxe-select-option.is--add .vxe-select-option--add-icon{display:block}.vxe-select-option.is--selected{color:var(--vxe-ui-font-primary-color)}.vxe-select-option:not(.is--disabled).is--hover{background-color:var(--vxe-ui-select-option-hover-background-color)}.vxe-select-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-select-optgroup{color:var(--vxe-ui-select-title-color);font-size:12px;cursor:default}.vxe-select-option--label{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-select-option--add-icon{display:none;position:absolute;top:0;right:.6em}.vxe-select-option--checkbox{padding-right:.4em}.vxe-select-option--checkbox{cursor:pointer}.vxe-select-option--checkbox .vxe-checkbox--icon{font-size:1.22em;transition:all .2s ease-in-out}.vxe-select-option--checkbox .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vxe-select-option--checkbox.is--checked,.vxe-select-option--checkbox.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--checkbox.is--checked .vxe-checkbox--icon,.vxe-select-option--checkbox.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--checkbox:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--checkbox.is--hidden{cursor:default}.vxe-select-option--checkbox.is--readonly{cursor:auto}.vxe-select-option--checkbox.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-select-option--checkbox.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-select-option--checkbox .vxe-checkbox--label{padding-left:.4em;vertical-align:middle}.vxe-select-option--radio{padding-right:.4em}.vxe-select-option--radio{cursor:pointer}.vxe-select-option--radio .vxe-radio--icon{font-size:1.26em;transition:all .2s ease-in-out}.vxe-select-option--radio .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;-ms-user-select:none;user-select:none}.vxe-select-option--radio.is--checked{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--radio.is--checked .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--radio:not(.is--disabled):hover .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--radio.is--readonly{cursor:auto}.vxe-select-option--radio.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-select-option--radio.is--disabled .vxe-radio--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-select-option--radio .vxe-radio--label{padding-left:.4em;vertical-align:middle}.vxe-select--search-icon{margin-right:.5em}.vxe-select--empty-placeholder,.vxe-select--search-loading{padding:0 .6em;text-align:center;color:var(--vxe-ui-select-empty-color)}.vxe-select-option{height:var(--vxe-ui-select-current-option-height)}.vxe-select--empty-placeholder,.vxe-select--search-loading,.vxe-select-option{line-height:var(--vxe-ui-select-current-option-height)}
1
+ .vxe-select,.vxe-select--panel{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-default);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-default)}.vxe-select--panel.size--xlarge,.vxe-select.size--xlarge{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-xlarge);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-xlarge)}.vxe-select--panel.size--large,.vxe-select.size--large{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-large);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-large)}.vxe-select--panel.size--medium,.vxe-select.size--medium{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-medium);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-medium)}.vxe-select--panel.size--small,.vxe-select.size--small{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-small);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-small)}.vxe-select--panel.size--mini,.vxe-select.size--mini{--vxe-ui-select-current-font-size:var(--vxe-ui-font-size-mini);--vxe-ui-select-current-option-height:var(--vxe-ui-select-option-height-mini)}.vxe-select,.vxe-select--panel{--vxe-ui-select-current-padding:var(--vxe-ui-layout-padding-default)}.vxe-select--panel.size--mini,.vxe-select--panel.size--small,.vxe-select.size--mini,.vxe-select.size--small{--vxe-ui-select-current-padding:var(--vxe-ui-layout-padding-half)}.vxe-select{position:relative;display:inline-block;width:180px;font-size:var(--vxe-ui-select-current-font-size);color:var(--vxe-ui-font-color);text-align:left}.vxe-select>.vxe-input .vxe-input--inner{cursor:pointer}.vxe-select.is--disabled>.vxe-input .vxe-input--inner{cursor:no-drop}.vxe-select.is--loading>.vxe-input .vxe-input--inner{cursor:progress}.vxe-select>.vxe-input{width:100%}.vxe-select>.vxe-input .vxe-input--suffix-icon>i{display:inline-block;transition:transform .2s ease-in-out}.vxe-select.is--active:not(.is--filter)>.vxe-input{border-color:var(--vxe-ui-font-primary-color)}.vxe-select--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-select-slots{display:none}.vxe-select--panel{font-size:var(--vxe-ui-select-current-font-size);display:none;position:absolute;left:0;padding:4px 0;color:var(--vxe-ui-font-color);text-align:left}.vxe-select--panel:not(.is--transfer){min-width:100%}.vxe-select--panel.is--transfer{position:fixed}.vxe-select--panel.ani--leave{display:block;opacity:0;transform:scaleY(.5);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top;backface-visibility:hidden}.vxe-select--panel.ani--leave[placement=top]{transform-origin:center bottom}.vxe-select--panel.ani--enter{opacity:1;transform:scaleY(1)}.vxe-select--panel.ani--enter>div::after{display:none}.vxe-select--panel>div::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vxe-select--panel-search{display:block;flex-shrink:0;padding:var(--vxe-ui-layout-padding-default)}.vxe-select--panel-search .vxe-select-search--input{width:100%}.vxe-select--panel-wrapper{display:flex;flex-direction:column;position:relative;max-height:18em;border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-base-popup-border-color);box-shadow:var(--vxe-ui-base-popup-box-shadow);background-color:var(--vxe-ui-layout-background-color)}.vxe-select--panel-body{position:relative;display:flex;flex-direction:row;flex-grow:1;overflow:hidden}.vxe-select--header-button{display:flex;flex-direction:row}.vxe-select--footer-button,.vxe-select--header-button{display:flex;flex-direction:row;white-space:nowrap;align-items:center;min-height:2em}.vxe-select--total-btns{padding-left:var(--vxe-ui-select-current-padding);flex-grow:1}.vxe-select--oper-btns,.vxe-select--total-btns{display:flex;flex-direction:row;align-items:center}.vxe-select--oper-btns{flex-shrink:0}.vxe-select--footer-button{display:flex;flex-direction:row}.vxe-select--panel-header{border-bottom:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-select--panel-footer{border-top:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-select--panel-footer,.vxe-select--panel-header{flex-shrink:0;padding:4px 0}.vxe-select-option--wrapper{flex-grow:1;position:relative;overflow-x:hidden;overflow-y:auto}.vxe-select--y-space{width:0;float:left}.vxe-select--body,.vxe-select-option--wrapper{padding:0;margin:0;border:0;outline:0}.vxe-select-option{position:relative;flex-direction:row;display:flex;padding:0 .6em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.vxe-select-option.is--add{padding-right:2em}.vxe-select-option.is--add:hover .vxe-select-option--add-icon{color:var(--vxe-ui-font-primary-color)}.vxe-select-option.is--add .vxe-select-option--add-icon{display:block}.vxe-select-option.is--selected{color:var(--vxe-ui-font-primary-color)}.vxe-select-option:not(.is--disabled).is--hover{background-color:var(--vxe-ui-select-option-hover-background-color)}.vxe-select-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-select-optgroup{color:var(--vxe-ui-select-title-color);font-size:12px;cursor:default}.vxe-select-option--label{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-select-option--add-icon{display:none;position:absolute;top:0;right:.6em}.vxe-select-option--checkbox{padding-right:.4em}.vxe-select-option--checkbox{cursor:pointer}.vxe-select-option--checkbox .vxe-checkbox--icon{font-size:1.22em;transition:all .2s ease-in-out}.vxe-select-option--checkbox .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vxe-select-option--checkbox.is--checked,.vxe-select-option--checkbox.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--checkbox.is--checked .vxe-checkbox--icon,.vxe-select-option--checkbox.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--checkbox:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--checkbox.is--hidden{cursor:default}.vxe-select-option--checkbox.is--readonly{cursor:auto}.vxe-select-option--checkbox.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-select-option--checkbox.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-select-option--checkbox .vxe-checkbox--label{padding-left:.4em;vertical-align:middle}.vxe-select-option--radio{padding-right:.4em}.vxe-select-option--radio{cursor:pointer}.vxe-select-option--radio .vxe-radio--icon{font-size:1.26em;transition:all .2s ease-in-out}.vxe-select-option--radio .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;-ms-user-select:none;user-select:none}.vxe-select-option--radio.is--checked{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--radio.is--checked .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--radio:not(.is--disabled):hover .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-select-option--radio.is--readonly{cursor:auto}.vxe-select-option--radio.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-select-option--radio.is--disabled .vxe-radio--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-select-option--radio .vxe-radio--label{padding-left:.4em;vertical-align:middle}.vxe-select--search-icon{margin-right:.5em}.vxe-select--empty-placeholder,.vxe-select--search-loading{padding:0 .6em;text-align:center;color:var(--vxe-ui-select-empty-color)}.vxe-select-option{height:var(--vxe-ui-select-current-option-height)}.vxe-select--empty-placeholder,.vxe-select--search-loading,.vxe-select-option{line-height:var(--vxe-ui-select-current-option-height)}.vxe-select--panel-body.ov-padding.overflow-x.sx-pos--top{padding-top:var(--vxe-ui-scrollbar-x-height)}.vxe-select--panel-body.ov-padding.overflow-x.sx-pos--bottom{padding-bottom:var(--vxe-ui-scrollbar-x-height)}.vxe-select--panel-body.ov-padding.overflow-y.sy-pos--left{padding-left:var(--vxe-ui-scrollbar-y-width)}.vxe-select--panel-body.ov-padding.overflow-y.sy-pos--right{padding-right:var(--vxe-ui-scrollbar-y-width)}.vxe-select--panel-body.ov-x--hidden>.vxe-select-option--wrapper{overflow-x:hidden}.vxe-select--panel-body.ov-y--hidden>.vxe-select-option--wrapper{overflow-y:hidden}.vxe-select--panel-body.is--virtual-scrollbar.ov-x--auto-hide:hover>.vxe-scrollbar>.vxe-scrollbar--track-x{opacity:1}.vxe-select--panel-body.is--virtual-scrollbar.ov-x--auto-hide>.vxe-scrollbar>.vxe-scrollbar--track-x{opacity:0;transition:opacity .8s ease-in-out}.vxe-select--panel-body.is--virtual-scrollbar.ov-y--auto-hide:hover>.vxe-scrollbar>.vxe-scrollbar--track-y{opacity:1}.vxe-select--panel-body.is--virtual-scrollbar.ov-y--auto-hide>.vxe-scrollbar>.vxe-scrollbar--track-y{opacity:0;transition:opacity .8s ease-in-out}.vxe-select--panel-body>.vxe-scrollbar{position:unset}.vxe-select--panel-body.is--virtual-scrollbar>.vxe-select-option--wrapper{scrollbar-width:none;-ms-overflow-style:none}.vxe-select--panel-body.is--virtual-scrollbar>.vxe-select-option--wrapper::-webkit-scrollbar{display:none}