vxe-pc-ui 3.7.4 → 3.7.6

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 (198) hide show
  1. package/es/icon/style.css +1 -1
  2. package/es/language/ar-EG.js +19 -1
  3. package/es/language/de-DE.js +19 -1
  4. package/es/language/en-US.js +20 -2
  5. package/es/language/es-ES.js +19 -1
  6. package/es/language/fr-FR.js +19 -1
  7. package/es/language/hu-HU.js +19 -1
  8. package/es/language/hy-AM.js +18 -0
  9. package/es/language/id-ID.js +19 -1
  10. package/es/language/it-IT.js +19 -1
  11. package/es/language/ja-JP.js +19 -1
  12. package/es/language/ko-KR.js +19 -1
  13. package/es/language/ms-MY.js +19 -1
  14. package/es/language/nb-NO.js +19 -1
  15. package/es/language/pt-BR.js +19 -1
  16. package/es/language/ru-RU.js +19 -1
  17. package/es/language/th-TH.js +19 -1
  18. package/es/language/ug-CN.js +19 -1
  19. package/es/language/uk-UA.js +19 -1
  20. package/es/language/uz-UZ.js +19 -1
  21. package/es/language/vi-VN.js +19 -1
  22. package/es/language/zh-CHT.js +19 -1
  23. package/es/language/zh-CN.js +18 -0
  24. package/es/list/src/list.js +1 -1
  25. package/es/select/src/select.js +138 -41
  26. package/es/select/style.css +21 -0
  27. package/es/select/style.min.css +1 -1
  28. package/es/style.css +1 -1
  29. package/es/style.min.css +1 -1
  30. package/es/tree/src/tree.js +1160 -601
  31. package/es/tree/src/util.js +31 -0
  32. package/es/tree/style.css +23 -26
  33. package/es/tree/style.min.css +1 -1
  34. package/es/tree-select/src/tree-select.js +258 -24
  35. package/es/tree-select/style.css +36 -1
  36. package/es/tree-select/style.min.css +1 -1
  37. package/es/ui/index.js +20 -4
  38. package/es/ui/src/dom.js +9 -0
  39. package/es/ui/src/log.js +1 -1
  40. package/es/vxe-select/style.css +21 -0
  41. package/es/vxe-select/style.min.css +1 -1
  42. package/es/vxe-tree/style.css +23 -26
  43. package/es/vxe-tree/style.min.css +1 -1
  44. package/es/vxe-tree-select/style.css +36 -1
  45. package/es/vxe-tree-select/style.min.css +1 -1
  46. package/lib/icon/style/style.css +1 -1
  47. package/lib/icon/style/style.min.css +1 -1
  48. package/lib/index.umd.js +1541 -532
  49. package/lib/index.umd.min.js +1 -1
  50. package/lib/language/ar-EG.js +19 -1
  51. package/lib/language/ar-EG.min.js +1 -1
  52. package/lib/language/ar-EG.umd.js +19 -1
  53. package/lib/language/de-DE.js +19 -1
  54. package/lib/language/de-DE.min.js +1 -1
  55. package/lib/language/de-DE.umd.js +19 -1
  56. package/lib/language/en-US.js +20 -2
  57. package/lib/language/en-US.min.js +1 -1
  58. package/lib/language/en-US.umd.js +20 -2
  59. package/lib/language/es-ES.js +19 -1
  60. package/lib/language/es-ES.min.js +1 -1
  61. package/lib/language/es-ES.umd.js +19 -1
  62. package/lib/language/fr-FR.js +19 -1
  63. package/lib/language/fr-FR.min.js +1 -1
  64. package/lib/language/fr-FR.umd.js +19 -1
  65. package/lib/language/hu-HU.js +19 -1
  66. package/lib/language/hu-HU.min.js +1 -1
  67. package/lib/language/hu-HU.umd.js +19 -1
  68. package/lib/language/hy-AM.js +18 -0
  69. package/lib/language/hy-AM.min.js +1 -1
  70. package/lib/language/hy-AM.umd.js +18 -0
  71. package/lib/language/id-ID.js +19 -1
  72. package/lib/language/id-ID.min.js +1 -1
  73. package/lib/language/id-ID.umd.js +19 -1
  74. package/lib/language/it-IT.js +19 -1
  75. package/lib/language/it-IT.min.js +1 -1
  76. package/lib/language/it-IT.umd.js +19 -1
  77. package/lib/language/ja-JP.js +19 -1
  78. package/lib/language/ja-JP.min.js +1 -1
  79. package/lib/language/ja-JP.umd.js +19 -1
  80. package/lib/language/ko-KR.js +19 -1
  81. package/lib/language/ko-KR.min.js +1 -1
  82. package/lib/language/ko-KR.umd.js +19 -1
  83. package/lib/language/ms-MY.js +19 -1
  84. package/lib/language/ms-MY.min.js +1 -1
  85. package/lib/language/ms-MY.umd.js +19 -1
  86. package/lib/language/nb-NO.js +19 -1
  87. package/lib/language/nb-NO.min.js +1 -1
  88. package/lib/language/nb-NO.umd.js +19 -1
  89. package/lib/language/pt-BR.js +19 -1
  90. package/lib/language/pt-BR.min.js +1 -1
  91. package/lib/language/pt-BR.umd.js +19 -1
  92. package/lib/language/ru-RU.js +19 -1
  93. package/lib/language/ru-RU.min.js +1 -1
  94. package/lib/language/ru-RU.umd.js +19 -1
  95. package/lib/language/th-TH.js +19 -1
  96. package/lib/language/th-TH.min.js +1 -1
  97. package/lib/language/th-TH.umd.js +19 -1
  98. package/lib/language/ug-CN.js +19 -1
  99. package/lib/language/ug-CN.min.js +1 -1
  100. package/lib/language/ug-CN.umd.js +19 -1
  101. package/lib/language/uk-UA.js +19 -1
  102. package/lib/language/uk-UA.min.js +1 -1
  103. package/lib/language/uk-UA.umd.js +19 -1
  104. package/lib/language/uz-UZ.js +19 -1
  105. package/lib/language/uz-UZ.min.js +1 -1
  106. package/lib/language/uz-UZ.umd.js +19 -1
  107. package/lib/language/vi-VN.js +19 -1
  108. package/lib/language/vi-VN.min.js +1 -1
  109. package/lib/language/vi-VN.umd.js +19 -1
  110. package/lib/language/zh-CHT.js +19 -1
  111. package/lib/language/zh-CHT.min.js +1 -1
  112. package/lib/language/zh-CHT.umd.js +19 -1
  113. package/lib/language/zh-CN.js +18 -0
  114. package/lib/language/zh-CN.min.js +1 -1
  115. package/lib/language/zh-CN.umd.js +18 -0
  116. package/lib/list/src/list.js +1 -1
  117. package/lib/list/src/list.min.js +1 -1
  118. package/lib/select/src/select.js +145 -45
  119. package/lib/select/src/select.min.js +1 -1
  120. package/lib/select/style/style.css +21 -0
  121. package/lib/select/style/style.min.css +1 -1
  122. package/lib/style.css +1 -1
  123. package/lib/style.min.css +1 -1
  124. package/lib/tree/src/tree.js +1223 -626
  125. package/lib/tree/src/tree.min.js +1 -1
  126. package/lib/tree/src/util.js +37 -0
  127. package/lib/tree/src/util.min.js +1 -0
  128. package/lib/tree/style/style.css +23 -26
  129. package/lib/tree/style/style.min.css +1 -1
  130. package/lib/tree-select/src/tree-select.js +265 -26
  131. package/lib/tree-select/src/tree-select.min.js +1 -1
  132. package/lib/tree-select/style/style.css +36 -1
  133. package/lib/tree-select/style/style.min.css +1 -1
  134. package/lib/ui/index.js +20 -4
  135. package/lib/ui/index.min.js +1 -1
  136. package/lib/ui/src/dom.js +10 -0
  137. package/lib/ui/src/dom.min.js +1 -1
  138. package/lib/ui/src/log.js +1 -1
  139. package/lib/ui/src/log.min.js +1 -1
  140. package/lib/vxe-select/style/style.css +21 -0
  141. package/lib/vxe-select/style/style.min.css +1 -1
  142. package/lib/vxe-tree/style/style.css +23 -26
  143. package/lib/vxe-tree/style/style.min.css +1 -1
  144. package/lib/vxe-tree-select/style/style.css +36 -1
  145. package/lib/vxe-tree-select/style/style.min.css +1 -1
  146. package/package.json +1 -1
  147. package/packages/language/ar-EG.ts +19 -1
  148. package/packages/language/de-DE.ts +19 -1
  149. package/packages/language/en-US.ts +20 -2
  150. package/packages/language/es-ES.ts +19 -1
  151. package/packages/language/fr-FR.ts +19 -1
  152. package/packages/language/hu-HU.ts +19 -1
  153. package/packages/language/hy-AM.ts +18 -0
  154. package/packages/language/id-ID.ts +19 -1
  155. package/packages/language/it-IT.ts +19 -1
  156. package/packages/language/ja-JP.ts +19 -1
  157. package/packages/language/ko-KR.ts +19 -1
  158. package/packages/language/ms-MY.ts +19 -1
  159. package/packages/language/nb-NO.ts +19 -1
  160. package/packages/language/pt-BR.ts +19 -1
  161. package/packages/language/ru-RU.ts +19 -1
  162. package/packages/language/th-TH.ts +19 -1
  163. package/packages/language/ug-CN.ts +19 -1
  164. package/packages/language/uk-UA.ts +19 -1
  165. package/packages/language/uz-UZ.ts +19 -1
  166. package/packages/language/vi-VN.ts +19 -1
  167. package/packages/language/zh-CHT.ts +19 -1
  168. package/packages/language/zh-CN.ts +18 -0
  169. package/packages/list/src/list.ts +1 -1
  170. package/packages/select/src/select.ts +144 -44
  171. package/packages/tree/src/tree.ts +1206 -626
  172. package/packages/tree/src/util.ts +34 -0
  173. package/packages/tree-select/src/tree-select.ts +272 -26
  174. package/packages/ui/index.ts +19 -3
  175. package/packages/ui/src/dom.ts +10 -0
  176. package/styles/components/select.scss +19 -0
  177. package/styles/components/tree-select.scss +36 -1
  178. package/styles/components/tree.scss +28 -31
  179. package/types/components/button.d.ts +11 -1
  180. package/types/components/grid.d.ts +5 -0
  181. package/types/components/icon-picker.d.ts +11 -1
  182. package/types/components/input.d.ts +2 -2
  183. package/types/components/select.d.ts +29 -40
  184. package/types/components/table.d.ts +2 -4
  185. package/types/components/tree-select.d.ts +72 -12
  186. package/types/components/tree.d.ts +129 -8
  187. /package/es/icon/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
  188. /package/es/icon/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
  189. /package/es/icon/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
  190. /package/es/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
  191. /package/es/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
  192. /package/es/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
  193. /package/lib/icon/style/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
  194. /package/lib/icon/style/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
  195. /package/lib/icon/style/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
  196. /package/lib/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
  197. /package/lib/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
  198. /package/lib/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
@@ -96,9 +96,27 @@ export default {
96
96
  operError: 'خاتالىق كۆرۈلدى،مەشخۇلات مەغلۇپ بولدى'
97
97
  },
98
98
  select: {
99
+ clear: '清除',
100
+ allChecked: '全选',
101
+ total: '{0} / {1}',
99
102
  search: 'ئىزدەش',
100
103
  loadingText: 'يۈكلىنىۋاتىدۇ',
101
- emptyText: 'ھازىرچە ئۇچۇر يوق'
104
+ emptyText: 'ھازىرچە ئۇچۇر يوق',
105
+ maxOpt: '最大可选择的数量不能超过 {0} 个',
106
+ overSizeErr: '已超出最大可选数量 {0} 个,超出部分将被忽略!',
107
+ searchEmpty: '未匹配到数据!'
108
+ },
109
+ tree: {
110
+ searchEmpty: '未匹配到数据!'
111
+ },
112
+ treeSelect: {
113
+ clearChecked: '清除',
114
+ allChecked: '全选',
115
+ allExpand: '全部展开',
116
+ clearExpand: '全部收起',
117
+ total: '已选 {0}',
118
+ search: '搜索',
119
+ emptyText: '暂无数据'
102
120
  },
103
121
  pager: {
104
122
  goto: 'ئالغا',
@@ -96,9 +96,27 @@ export default {
96
96
  operError: 'Сталася помилка, і операція не вдалася!'
97
97
  },
98
98
  select: {
99
+ clear: '清除',
100
+ allChecked: '全选',
101
+ total: '{0} / {1}',
99
102
  search: 'обшук',
100
103
  loadingText: 'навантаження',
101
- emptyText: 'Ще немає даних'
104
+ emptyText: 'Ще немає даних',
105
+ maxOpt: '最大可选择的数量不能超过 {0} 个',
106
+ overSizeErr: '已超出最大可选数量 {0} 个,超出部分将被忽略!',
107
+ searchEmpty: '未匹配到数据!'
108
+ },
109
+ tree: {
110
+ searchEmpty: '未匹配到数据!'
111
+ },
112
+ treeSelect: {
113
+ clearChecked: '清除',
114
+ allChecked: '全选',
115
+ allExpand: '全部展开',
116
+ clearExpand: '全部收起',
117
+ total: '已选 {0}',
118
+ search: '搜索',
119
+ emptyText: '暂无数据'
102
120
  },
103
121
  pager: {
104
122
  goto: 'Йти',
@@ -96,9 +96,27 @@ export default {
96
96
  operError: "Xato yuz berdi va operatsiya muvaffaqiyatsiz bo'ldi!"
97
97
  },
98
98
  select: {
99
+ clear: '清除',
100
+ allChecked: '全选',
101
+ total: '{0} / {1}',
99
102
  search: 'qidirish',
100
103
  loadingText: 'yuklamoq',
101
- emptyText: "Hali ma'lumot yo'q"
104
+ emptyText: "Hali ma'lumot yo'q",
105
+ maxOpt: '最大可选择的数量不能超过 {0} 个',
106
+ overSizeErr: '已超出最大可选数量 {0} 个,超出部分将被忽略!',
107
+ searchEmpty: '未匹配到数据!'
108
+ },
109
+ tree: {
110
+ searchEmpty: '未匹配到数据!'
111
+ },
112
+ treeSelect: {
113
+ clearChecked: '清除',
114
+ allChecked: '全选',
115
+ allExpand: '全部展开',
116
+ clearExpand: '全部收起',
117
+ total: '{0} / {1}',
118
+ search: '搜索',
119
+ emptyText: '暂无数据'
102
120
  },
103
121
  pager: {
104
122
  goto: 'Bormoq',
@@ -96,9 +96,27 @@ export default {
96
96
  operError: 'Một lỗi đã xảy ra và hoạt động không thành công!'
97
97
  },
98
98
  select: {
99
+ clear: '清除',
100
+ allChecked: '全选',
101
+ total: '{0} / {1}',
99
102
  search: 'tìm kiếm',
100
103
  loadingText: 'đang tải',
101
- emptyText: 'Chưa có dữ liệu'
104
+ emptyText: 'Chưa có dữ liệu',
105
+ maxOpt: '最大可选择的数量不能超过 {0} 个',
106
+ overSizeErr: '已超出最大可选数量 {0} 个,超出部分将被忽略!',
107
+ searchEmpty: '未匹配到数据!'
108
+ },
109
+ tree: {
110
+ searchEmpty: '未匹配到数据!'
111
+ },
112
+ treeSelect: {
113
+ clearChecked: '清除',
114
+ allChecked: '全选',
115
+ allExpand: '全部展开',
116
+ clearExpand: '全部收起',
117
+ total: '已选 {0}',
118
+ search: '搜索',
119
+ emptyText: '暂无数据'
102
120
  },
103
121
  pager: {
104
122
  goto: 'Đi',
@@ -96,9 +96,27 @@ export default {
96
96
  operError: '發生錯誤,操作失敗!'
97
97
  },
98
98
  select: {
99
+ clear: '清除',
100
+ allChecked: '全选',
101
+ total: '{0} / {1}',
99
102
  search: '搜尋',
100
103
  loadingText: '載入中',
101
- emptyText: '暫無數據'
104
+ emptyText: '暫無數據',
105
+ maxOpt: '最大可选择的数量不能超过 {0} 个',
106
+ overSizeErr: '已超出最大可选数量 {0} 个,超出部分将被忽略!',
107
+ searchEmpty: '未匹配到数据!'
108
+ },
109
+ tree: {
110
+ searchEmpty: '未匹配到数据!'
111
+ },
112
+ treeSelect: {
113
+ clearChecked: '清除',
114
+ allChecked: '全选',
115
+ allExpand: '全部展开',
116
+ clearExpand: '全部收起',
117
+ total: '已选 {0}',
118
+ search: '搜索',
119
+ emptyText: '暂无数据'
102
120
  },
103
121
  pager: {
104
122
  goto: '前往',
@@ -96,8 +96,26 @@ export default {
96
96
  operError: '发生错误,操作失败!'
97
97
  },
98
98
  select: {
99
+ clear: '清除',
100
+ allChecked: '全选',
101
+ total: '{0} / {1}',
99
102
  search: '搜索',
100
103
  loadingText: '加载中',
104
+ emptyText: '暂无数据',
105
+ maxSize: '最大可选择的数量不能超过 {0} 个',
106
+ overSizeErr: '已超出最大可选数量 {0} 个,超出部分将被忽略!',
107
+ searchEmpty: '未匹配到数据!'
108
+ },
109
+ tree: {
110
+ searchEmpty: '未匹配到数据!'
111
+ },
112
+ treeSelect: {
113
+ clearChecked: '清除',
114
+ allChecked: '全选',
115
+ allExpand: '全部展开',
116
+ clearExpand: '全部收起',
117
+ total: '已选 {0}',
118
+ search: '搜索',
101
119
  emptyText: '暂无数据'
102
120
  },
103
121
  pager: {
@@ -359,7 +359,7 @@ export default {
359
359
  ref: 'refVirtualBody',
360
360
  class: 'vxe-list--body',
361
361
  style: {
362
- marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ''
362
+ transform: `translateY(${topSpaceHeight}px)`
363
363
  }
364
364
  }, defaultSlot ? $xeList.callSlot(defaultSlot, { items }, h) : [])
365
365
  ]),
@@ -3,8 +3,9 @@ import XEUtils from 'xe-utils';
3
3
  import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, globalMixins, renderEmptyElement } from '../../ui';
4
4
  import { getEventTargetNode, updatePanelPlacement } from '../../ui/src/dom';
5
5
  import { getLastZIndex, nextZIndex, getFuncText } from '../../ui/src/utils';
6
- import VxeInputComponent from '../../input/src/input';
7
6
  import { getSlotVNs } from '../../ui/src/vn';
7
+ import VxeInputComponent from '../../input/src/input';
8
+ import VxeButtonComponent from '../../button/src/button';
8
9
  function isOptionVisible(option) {
9
10
  return option.visible !== false;
10
11
  }
@@ -63,22 +64,43 @@ export default {
63
64
  filterable: Boolean,
64
65
  filterMethod: Function,
65
66
  remote: Boolean,
66
- // 已废弃,被 remote-config.queryMethod 替换
67
- remoteMethod: Function,
68
67
  remoteConfig: Object,
69
68
  emptyText: String,
69
+ showTotalButoon: {
70
+ type: Boolean,
71
+ default: () => getConfig().select.showTotalButoon
72
+ },
73
+ showCheckedButoon: {
74
+ type: Boolean,
75
+ default: () => getConfig().select.showCheckedButoon
76
+ },
77
+ showClearButton: {
78
+ type: Boolean,
79
+ default: () => getConfig().select.showClearButton
80
+ },
70
81
  transfer: {
71
82
  type: Boolean,
72
83
  default: null
73
84
  },
74
85
  virtualYConfig: Object,
75
86
  scrollY: Object,
76
- // 已废弃,被 option-config.keyField 替换
87
+ /**
88
+ * 已废弃,被 remote-config.queryMethod 替换
89
+ * @deprecated
90
+ */
91
+ remoteMethod: Function,
92
+ /**
93
+ * 已废弃,被 option-config.keyField 替换
94
+ * @deprecated
95
+ */
77
96
  optionId: {
78
97
  type: String,
79
98
  default: () => getConfig().select.optionId
80
99
  },
81
- // 已废弃,被 option-config.useKey 替换
100
+ /**
101
+ * 已废弃,被 option-config.useKey 替换
102
+ * @deprecated
103
+ */
82
104
  optionKey: Boolean
83
105
  },
84
106
  inject: {
@@ -113,7 +135,6 @@ export default {
113
135
  bodyHeight: 0,
114
136
  topSpaceHeight: 0,
115
137
  optList: [],
116
- afterVisibleList: [],
117
138
  staticOptions: [],
118
139
  reactFlag: 1,
119
140
  currentOption: null,
@@ -130,6 +151,7 @@ export default {
130
151
  const internalData = {
131
152
  synchData: [],
132
153
  fullData: [],
154
+ afterVisibleList: [],
133
155
  optAddMaps: {},
134
156
  optGroupKeyMaps: {},
135
157
  optFullValMaps: {},
@@ -248,13 +270,10 @@ export default {
248
270
  computeIsMaximize() {
249
271
  const $xeSelect = this;
250
272
  const props = $xeSelect;
251
- const { value, multiple, max } = props;
252
- if (multiple && max) {
253
- return (XEUtils.isArray(value) ? value.length : (XEUtils.eqNull(value) ? 0 : 1)) >= XEUtils.toNumber(max);
254
- }
255
- return false;
273
+ const { value: modelValue } = props;
274
+ return $xeSelect.checkMaxLimit(modelValue);
256
275
  },
257
- computeSYOpts() {
276
+ computeVirtualYOpts() {
258
277
  const $xeSelect = this;
259
278
  const props = $xeSelect;
260
279
  return Object.assign({}, getConfig().select.virtualYConfig || getConfig().select.scrollY, props.virtualYConfig || props.scrollY);
@@ -355,15 +374,19 @@ export default {
355
374
  const $xeSelect = this;
356
375
  const reactData = $xeSelect.reactData;
357
376
  const $input = $xeSelect.$refs.refInput;
377
+ if ($input) {
378
+ $input.blur();
379
+ }
358
380
  reactData.isActivated = true;
359
- $input.blur();
360
381
  return $xeSelect.$nextTick();
361
382
  },
362
383
  blur() {
363
384
  const $xeSelect = this;
364
385
  const reactData = $xeSelect.reactData;
365
386
  const $input = $xeSelect.$refs.refInput;
366
- $input.blur();
387
+ if ($input) {
388
+ $input.blur();
389
+ }
367
390
  reactData.isActivated = false;
368
391
  return $xeSelect.$nextTick();
369
392
  },
@@ -391,6 +414,15 @@ export default {
391
414
  const optid = option[$xeSelect.getOptKey()];
392
415
  return optid ? encodeURIComponent(optid) : '';
393
416
  },
417
+ checkMaxLimit(selectVals) {
418
+ const $xeSelect = this;
419
+ const props = $xeSelect;
420
+ const { multiple, max } = props;
421
+ if (multiple && max) {
422
+ return (XEUtils.isArray(selectVals) ? selectVals.length : (XEUtils.eqNull(selectVals) ? 0 : 1)) >= XEUtils.toNumber(max);
423
+ }
424
+ return false;
425
+ },
394
426
  getRemoteSelectLabel(value) {
395
427
  const $xeSelect = this;
396
428
  const internalData = $xeSelect.internalData;
@@ -450,7 +482,7 @@ export default {
450
482
  cacheItem._index = index;
451
483
  }
452
484
  });
453
- reactData.afterVisibleList = avList;
485
+ internalData.afterVisibleList = avList;
454
486
  return $xeSelect.$nextTick();
455
487
  },
456
488
  refreshOption() {
@@ -591,7 +623,7 @@ export default {
591
623
  reactData.isAniVisible = true;
592
624
  if (filterable) {
593
625
  if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !fullData.length) {
594
- $xeSelect.triggerSearchEvent();
626
+ $xeSelect.handleSearchEvent();
595
627
  }
596
628
  else {
597
629
  $xeSelect.handleOption();
@@ -650,6 +682,38 @@ export default {
650
682
  $xeSelect.clearValueEvent($event, null);
651
683
  $xeSelect.hideOptionPanel();
652
684
  },
685
+ allCheckedPanelEvent(params) {
686
+ const $xeSelect = this;
687
+ const props = $xeSelect;
688
+ const reactData = $xeSelect.reactData;
689
+ const { $event } = params;
690
+ const { value: modelValue, multiple } = props;
691
+ const { optList } = reactData;
692
+ const valueField = $xeSelect.computeValueField;
693
+ if (multiple) {
694
+ const multipleValue = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue]);
695
+ for (let i = 0; i < optList.length; i++) {
696
+ const option = optList[i];
697
+ const selectValue = option[valueField];
698
+ // 检测是否超过最大可选数量
699
+ if ($xeSelect.checkMaxLimit(multipleValue)) {
700
+ break;
701
+ }
702
+ if (!multipleValue.some(val => val === selectValue)) {
703
+ multipleValue.push(selectValue);
704
+ }
705
+ }
706
+ $xeSelect.changeEvent($event, multipleValue);
707
+ $xeSelect.dispatchEvent('all-change', { value: multipleValue }, $event);
708
+ $xeSelect.hideOptionPanel();
709
+ }
710
+ },
711
+ clearCheckedPanelEvent(params) {
712
+ const $xeSelect = this;
713
+ const { $event } = params;
714
+ $xeSelect.clearValueEvent($event, null);
715
+ $xeSelect.hideOptionPanel();
716
+ },
653
717
  changeOptionEvent(evnt, option) {
654
718
  const $xeSelect = this;
655
719
  const props = $xeSelect;
@@ -737,8 +801,8 @@ export default {
737
801
  const reactData = $xeSelect.reactData;
738
802
  const internalData = $xeSelect.internalData;
739
803
  const { allowCreate } = props;
740
- const { afterVisibleList, optList } = reactData;
741
- const { optFullValMaps, optAddMaps } = internalData;
804
+ const { optList } = reactData;
805
+ const { optFullValMaps, optAddMaps, afterVisibleList } = internalData;
742
806
  const valueField = $xeSelect.computeValueField;
743
807
  let fullList = afterVisibleList;
744
808
  let offsetAddIndex = 0;
@@ -962,14 +1026,11 @@ export default {
962
1026
  }
963
1027
  }
964
1028
  },
965
- checkOptionDisabled(isSelected, option, group) {
1029
+ checkOptionDisabled(isSelected, option) {
966
1030
  const $xeSelect = this;
967
1031
  if (option.disabled) {
968
1032
  return true;
969
1033
  }
970
- if (group && group.disabled) {
971
- return true;
972
- }
973
1034
  const isMaximize = $xeSelect.computeIsMaximize;
974
1035
  if (isMaximize && !isSelected) {
975
1036
  return true;
@@ -980,8 +1041,8 @@ export default {
980
1041
  const $xeSelect = this;
981
1042
  const reactData = $xeSelect.reactData;
982
1043
  const internalData = $xeSelect.internalData;
983
- const { scrollYLoad, afterVisibleList } = reactData;
984
- const { scrollYStore } = internalData;
1044
+ const { scrollYLoad } = reactData;
1045
+ const { scrollYStore, afterVisibleList } = internalData;
985
1046
  reactData.bodyHeight = scrollYLoad ? afterVisibleList.length * scrollYStore.rowHeight : 0;
986
1047
  reactData.topSpaceHeight = scrollYLoad ? Math.max(scrollYStore.startIndex * scrollYStore.rowHeight, 0) : 0;
987
1048
  },
@@ -991,8 +1052,8 @@ export default {
991
1052
  const reactData = $xeSelect.reactData;
992
1053
  const internalData = $xeSelect.internalData;
993
1054
  const { filterable, allowCreate } = props;
994
- const { scrollYLoad, afterVisibleList, searchValue } = reactData;
995
- const { optAddMaps, scrollYStore } = internalData;
1055
+ const { scrollYLoad, searchValue } = reactData;
1056
+ const { optAddMaps, scrollYStore, afterVisibleList } = internalData;
996
1057
  const labelField = $xeSelect.computeLabelField;
997
1058
  const valueField = $xeSelect.computeValueField;
998
1059
  const restList = scrollYLoad ? afterVisibleList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : afterVisibleList.slice(0);
@@ -1023,13 +1084,10 @@ export default {
1023
1084
  const { scrollYLoad } = reactData;
1024
1085
  const { scrollYStore } = internalData;
1025
1086
  const virtualBodyElem = $xeSelect.$refs.refVirtualBody;
1026
- const sYOpts = $xeSelect.computeSYOpts;
1087
+ const virtualYOpts = $xeSelect.computeVirtualYOpts;
1027
1088
  let rowHeight = 0;
1028
1089
  let firstItemElem;
1029
1090
  if (virtualBodyElem) {
1030
- if (sYOpts.sItem) {
1031
- firstItemElem = virtualBodyElem.querySelector(sYOpts.sItem);
1032
- }
1033
1091
  if (!firstItemElem) {
1034
1092
  firstItemElem = virtualBodyElem.children[0];
1035
1093
  }
@@ -1043,7 +1101,7 @@ export default {
1043
1101
  if (scrollYLoad) {
1044
1102
  const scrollBodyElem = $xeSelect.$refs.refVirtualWrapper;
1045
1103
  const visibleYSize = Math.max(8, scrollBodyElem ? Math.ceil(scrollBodyElem.clientHeight / rowHeight) : 0);
1046
- const offsetYSize = Math.max(0, Math.min(2, XEUtils.toNumber(sYOpts.oSize)));
1104
+ const offsetYSize = Math.max(0, Math.min(2, XEUtils.toNumber(virtualYOpts.oSize)));
1047
1105
  scrollYStore.offsetSize = offsetYSize;
1048
1106
  scrollYStore.visibleSize = visibleYSize;
1049
1107
  scrollYStore.endIndex = Math.max(scrollYStore.startIndex, visibleYSize + offsetYSize, scrollYStore.endIndex);
@@ -1211,7 +1269,7 @@ export default {
1211
1269
  $xeSelect.cacheItemMap(datas || []);
1212
1270
  const { isLoaded, fullData, scrollYStore } = internalData;
1213
1271
  const defaultOpts = $xeSelect.computeDefaultOpts;
1214
- const sYOpts = $xeSelect.computeSYOpts;
1272
+ const virtualYOpts = $xeSelect.computeVirtualYOpts;
1215
1273
  const valueField = $xeSelect.computeValueField;
1216
1274
  Object.assign(scrollYStore, {
1217
1275
  startIndex: 0,
@@ -1220,7 +1278,7 @@ export default {
1220
1278
  });
1221
1279
  internalData.synchData = datas || [];
1222
1280
  // 如果gt为0,则总是启用
1223
- reactData.scrollYLoad = !!sYOpts.enabled && sYOpts.gt > -1 && (sYOpts.gt === 0 || sYOpts.gt <= fullData.length);
1281
+ reactData.scrollYLoad = !!virtualYOpts.enabled && virtualYOpts.gt > -1 && (virtualYOpts.gt === 0 || virtualYOpts.gt <= fullData.length);
1224
1282
  $xeSelect.handleData();
1225
1283
  if (!isLoaded) {
1226
1284
  const { selectMode } = defaultOpts;
@@ -1270,7 +1328,7 @@ export default {
1270
1328
  //
1271
1329
  // Render
1272
1330
  //
1273
- renderOption(h, list, group) {
1331
+ renderOption(h, list) {
1274
1332
  const $xeSelect = this;
1275
1333
  const props = $xeSelect;
1276
1334
  const slots = $xeSelect.$scopedSlots;
@@ -1293,9 +1351,9 @@ export default {
1293
1351
  const isAdd = !!(allowCreate && optAddMaps[optid]);
1294
1352
  const isSelected = !isAdd && (XEUtils.isArray(value) ? value.indexOf(optionValue) > -1 : value === optionValue);
1295
1353
  const isVisible = isAdd || (!isOptGroup || isOptionVisible(option));
1296
- const isDisabled = !isAdd && $xeSelect.checkOptionDisabled(isSelected, option, group);
1354
+ const isDisabled = !isAdd && $xeSelect.checkOptionDisabled(isSelected, option);
1297
1355
  const defaultSlot = slots ? slots.default : null;
1298
- const optParams = { option, group: null, $select: $xeSelect };
1356
+ const optParams = { option, group: isOptGroup ? option : null, $select: $xeSelect };
1299
1357
  let optLabel = '';
1300
1358
  let optVNs = [];
1301
1359
  if (optionSlot) {
@@ -1394,8 +1452,8 @@ export default {
1394
1452
  const props = $xeSelect;
1395
1453
  const slots = $xeSelect.$scopedSlots;
1396
1454
  const reactData = $xeSelect.reactData;
1397
- const { className, popupClassName, loading, filterable } = props;
1398
- const { initialized, isActivated, isAniVisible, visiblePanel, bodyHeight, topSpaceHeight } = reactData;
1455
+ const { value: modelValue, className, popupClassName, multiple, loading, filterable, showTotalButoon, showCheckedButoon, showClearButton } = props;
1456
+ const { initialized, isActivated, isAniVisible, optList, visiblePanel, bodyHeight, topSpaceHeight } = reactData;
1399
1457
  const vSize = $xeSelect.computeSize;
1400
1458
  const isDisabled = $xeSelect.computeIsDisabled;
1401
1459
  const selectLabel = $xeSelect.computeSelectLabel;
@@ -1420,6 +1478,7 @@ export default {
1420
1478
  }, selectLabel)
1421
1479
  ]);
1422
1480
  }
1481
+ const selectVals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue]);
1423
1482
  return h('div', {
1424
1483
  ref: 'refElem',
1425
1484
  class: ['vxe-select', className ? (XEUtils.isFunction(className) ? className({ $select: $xeSelect }) : className) : '', {
@@ -1503,10 +1562,48 @@ export default {
1503
1562
  })
1504
1563
  ])
1505
1564
  : renderEmptyElement($xeSelect),
1506
- headerSlot
1565
+ showTotalButoon || (showCheckedButoon && multiple) || showClearButton || headerSlot
1507
1566
  ? h('div', {
1508
1567
  class: 'vxe-select--panel-header'
1509
- }, $xeSelect.callSlot(headerSlot, {}, h))
1568
+ }, headerSlot
1569
+ ? $xeSelect.callSlot(headerSlot, {}, h)
1570
+ : [
1571
+ h('div', {
1572
+ class: 'vxe-tree-select--header-button'
1573
+ }, [
1574
+ showTotalButoon
1575
+ ? h('div', {
1576
+ class: 'vxe-tree-select--header-total'
1577
+ }, getI18n('vxe.select.total', [selectVals.length, optList.length]))
1578
+ : renderEmptyElement($xeSelect),
1579
+ h('div', {
1580
+ class: 'vxe-tree-select--header-btns'
1581
+ }, [
1582
+ (showCheckedButoon && multiple)
1583
+ ? h(VxeButtonComponent, {
1584
+ props: {
1585
+ content: getI18n('vxe.select.allChecked'),
1586
+ mode: 'text'
1587
+ },
1588
+ on: {
1589
+ click: $xeSelect.allCheckedPanelEvent
1590
+ }
1591
+ })
1592
+ : renderEmptyElement($xeSelect),
1593
+ showClearButton
1594
+ ? h(VxeButtonComponent, {
1595
+ props: {
1596
+ content: getI18n('vxe.select.clear'),
1597
+ mode: 'text'
1598
+ },
1599
+ on: {
1600
+ click: $xeSelect.clearCheckedPanelEvent
1601
+ }
1602
+ })
1603
+ : renderEmptyElement($xeSelect)
1604
+ ])
1605
+ ])
1606
+ ])
1510
1607
  : renderEmptyElement($xeSelect),
1511
1608
  h('div', {
1512
1609
  class: 'vxe-select--panel-body'
@@ -1528,7 +1625,7 @@ export default {
1528
1625
  ref: 'refVirtualBody',
1529
1626
  class: 'vxe-select--body',
1530
1627
  style: {
1531
- marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ''
1628
+ transform: `translateY(${topSpaceHeight}px)`
1532
1629
  }
1533
1630
  }, $xeSelect.renderOpts(h))
1534
1631
  ])
@@ -96,6 +96,27 @@
96
96
  background-color: var(--vxe-ui-layout-background-color);
97
97
  }
98
98
 
99
+ .vxe-select--header-button {
100
+ display: flex;
101
+ flex-direction: row;
102
+ }
103
+
104
+ .vxe-select--header-total {
105
+ display: flex;
106
+ flex-direction: row;
107
+ align-items: center;
108
+ justify-content: center;
109
+ flex-shrink: 0;
110
+ padding-left: 0.8em;
111
+ }
112
+
113
+ .vxe-select--header-btns {
114
+ display: flex;
115
+ flex-direction: row;
116
+ flex-grow: 1;
117
+ justify-content: right;
118
+ }
119
+
99
120
  .vxe-select--panel-header {
100
121
  border-bottom: 1px solid var(--vxe-ui-base-popup-border-color);
101
122
  }
@@ -1 +1 @@
1
- .vxe-select{position:relative;display:inline-block;width:180px;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{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;padding:var(--vxe-ui-layout-padding-default)}.vxe-select--panel-search .vxe-select-search--input{width:100%}.vxe-select--panel-wrapper{position:relative;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-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{padding:4px 0}.vxe-select-option--wrapper{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--wrapper{max-height:18em}.vxe-select-option{position:relative;padding:0 .6em;max-width:600px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-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-base-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--add-icon{display:none;position:absolute;top:0;right:.6em}.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,.vxe-select--panel{font-size:var(--vxe-ui-font-size-default)}.vxe-select--panel.size--medium,.vxe-select.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-select--panel.size--small,.vxe-select.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-select--panel.size--mini,.vxe-select.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-select--panel .vxe-select-option{height:var(--vxe-ui-select-option-height-default)}.vxe-select--panel .vxe-select--empty-placeholder,.vxe-select--panel .vxe-select--search-loading,.vxe-select--panel .vxe-select-option{line-height:var(--vxe-ui-select-option-height-default)}.vxe-select--panel.size--medium .vxe-select-option{height:var(--vxe-ui-select-option-height-medium)}.vxe-select--panel.size--medium .vxe-select--empty-placeholder,.vxe-select--panel.size--medium .vxe-select--search-loading,.vxe-select--panel.size--medium .vxe-select-option{line-height:var(--vxe-ui-select-option-height-medium)}.vxe-select--panel.size--small .vxe-select-option{height:var(--vxe-ui-select-option-height-small)}.vxe-select--panel.size--small .vxe-select--empty-placeholder,.vxe-select--panel.size--small .vxe-select--search-loading,.vxe-select--panel.size--small .vxe-select-option{line-height:var(--vxe-ui-select-option-height-small)}.vxe-select--panel.size--mini .vxe-select-option{height:var(--vxe-ui-select-option-height-mini)}.vxe-select--panel.size--mini .vxe-select--empty-placeholder,.vxe-select--panel.size--mini .vxe-select--search-loading,.vxe-select--panel.size--mini .vxe-select-option{line-height:var(--vxe-ui-select-option-height-mini)}
1
+ .vxe-select{position:relative;display:inline-block;width:180px;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{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;padding:var(--vxe-ui-layout-padding-default)}.vxe-select--panel-search .vxe-select-search--input{width:100%}.vxe-select--panel-wrapper{position:relative;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--header-button{display:flex;flex-direction:row}.vxe-select--header-total{display:flex;flex-direction:row;align-items:center;justify-content:center;flex-shrink:0;padding-left:.8em}.vxe-select--header-btns{display:flex;flex-direction:row;flex-grow:1;justify-content:right}.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{padding:4px 0}.vxe-select-option--wrapper{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--wrapper{max-height:18em}.vxe-select-option{position:relative;padding:0 .6em;max-width:600px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-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-base-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--add-icon{display:none;position:absolute;top:0;right:.6em}.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,.vxe-select--panel{font-size:var(--vxe-ui-font-size-default)}.vxe-select--panel.size--medium,.vxe-select.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-select--panel.size--small,.vxe-select.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-select--panel.size--mini,.vxe-select.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-select--panel .vxe-select-option{height:var(--vxe-ui-select-option-height-default)}.vxe-select--panel .vxe-select--empty-placeholder,.vxe-select--panel .vxe-select--search-loading,.vxe-select--panel .vxe-select-option{line-height:var(--vxe-ui-select-option-height-default)}.vxe-select--panel.size--medium .vxe-select-option{height:var(--vxe-ui-select-option-height-medium)}.vxe-select--panel.size--medium .vxe-select--empty-placeholder,.vxe-select--panel.size--medium .vxe-select--search-loading,.vxe-select--panel.size--medium .vxe-select-option{line-height:var(--vxe-ui-select-option-height-medium)}.vxe-select--panel.size--small .vxe-select-option{height:var(--vxe-ui-select-option-height-small)}.vxe-select--panel.size--small .vxe-select--empty-placeholder,.vxe-select--panel.size--small .vxe-select--search-loading,.vxe-select--panel.size--small .vxe-select-option{line-height:var(--vxe-ui-select-option-height-small)}.vxe-select--panel.size--mini .vxe-select-option{height:var(--vxe-ui-select-option-height-mini)}.vxe-select--panel.size--mini .vxe-select--empty-placeholder,.vxe-select--panel.size--mini .vxe-select--search-loading,.vxe-select--panel.size--mini .vxe-select-option{line-height:var(--vxe-ui-select-option-height-mini)}