vxe-pc-ui 4.7.4 → 4.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 +135 -42
  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 +918 -407
  31. package/es/tree/src/util.js +32 -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 +227 -18
  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 +19 -3
  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 +1505 -530
  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 +139 -44
  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 +1147 -572
  125. package/lib/tree/src/tree.min.js +1 -1
  126. package/lib/tree/src/util.js +51 -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 +237 -21
  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 +19 -3
  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 +146 -50
  171. package/packages/tree/src/tree.ts +941 -410
  172. package/packages/tree/src/util.ts +35 -0
  173. package/packages/tree-select/src/tree-select.ts +240 -19
  174. package/packages/ui/index.ts +18 -2
  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 +28 -39
  184. package/types/components/table.d.ts +2 -4
  185. package/types/components/tree-select.d.ts +73 -12
  186. package/types/components/tree.d.ts +125 -8
  187. /package/es/icon/{iconfont.1752133996961.ttf → iconfont.1752416456948.ttf} +0 -0
  188. /package/es/icon/{iconfont.1752133996961.woff → iconfont.1752416456948.woff} +0 -0
  189. /package/es/icon/{iconfont.1752133996961.woff2 → iconfont.1752416456948.woff2} +0 -0
  190. /package/es/{iconfont.1752133996961.ttf → iconfont.1752416456948.ttf} +0 -0
  191. /package/es/{iconfont.1752133996961.woff → iconfont.1752416456948.woff} +0 -0
  192. /package/es/{iconfont.1752133996961.woff2 → iconfont.1752416456948.woff2} +0 -0
  193. /package/lib/icon/style/{iconfont.1752133996961.ttf → iconfont.1752416456948.ttf} +0 -0
  194. /package/lib/icon/style/{iconfont.1752133996961.woff → iconfont.1752416456948.woff} +0 -0
  195. /package/lib/icon/style/{iconfont.1752133996961.woff2 → iconfont.1752416456948.woff2} +0 -0
  196. /package/lib/{iconfont.1752133996961.ttf → iconfont.1752416456948.ttf} +0 -0
  197. /package/lib/{iconfont.1752133996961.woff → iconfont.1752416456948.woff} +0 -0
  198. /package/lib/{iconfont.1752133996961.woff2 → iconfont.1752416456948.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: {
@@ -363,7 +363,7 @@ export default defineVxeComponent({
363
363
  ref: refVirtualBody,
364
364
  class: 'vxe-list--body',
365
365
  style: {
366
- marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ''
366
+ transform: `translateY(${topSpaceHeight}px)`
367
367
  }
368
368
  }, defaultSlot ? defaultSlot({ items, $list: $xeList }) : [])
369
369
  ]),
@@ -1,11 +1,12 @@
1
1
  import { h, Teleport, ref, inject, computed, provide, onUnmounted, reactive, nextTick, watch, onMounted } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import XEUtils from 'xe-utils';
4
- import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useSize, renderEmptyElement } from '../../ui';
4
+ import { VxeUI, getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useSize, renderEmptyElement } from '../../ui';
5
5
  import { getEventTargetNode, updatePanelPlacement } from '../../ui/src/dom';
6
6
  import { getLastZIndex, nextZIndex, getFuncText } from '../../ui/src/utils';
7
7
  import { getSlotVNs } from '../../ui/src/vn';
8
8
  import VxeInputComponent from '../../input/src/input';
9
+ import VxeButtonComponent from '../../button/src/button';
9
10
  function isOptionVisible(option) {
10
11
  return option.visible !== false;
11
12
  }
@@ -57,27 +58,49 @@ export default defineVxeComponent({
57
58
  filterable: Boolean,
58
59
  filterMethod: Function,
59
60
  remote: Boolean,
60
- // 已废弃,被 remote-config.queryMethod 替换
61
- remoteMethod: Function,
62
61
  remoteConfig: Object,
63
62
  emptyText: String,
63
+ showTotalButoon: {
64
+ type: Boolean,
65
+ default: () => getConfig().select.showTotalButoon
66
+ },
67
+ showCheckedButoon: {
68
+ type: Boolean,
69
+ default: () => getConfig().select.showCheckedButoon
70
+ },
71
+ showClearButton: {
72
+ type: Boolean,
73
+ default: () => getConfig().select.showClearButton
74
+ },
64
75
  transfer: {
65
76
  type: Boolean,
66
77
  default: null
67
78
  },
68
79
  virtualYConfig: Object,
69
80
  scrollY: Object,
70
- // 已废弃,被 option-config.keyField 替换
81
+ /**
82
+ * 已废弃,被 remote-config.queryMethod 替换
83
+ * @deprecated
84
+ */
85
+ remoteMethod: Function,
86
+ /**
87
+ * 已废弃,被 option-config.keyField 替换
88
+ * @deprecated
89
+ */
71
90
  optionId: {
72
91
  type: String,
73
92
  default: () => getConfig().select.optionId
74
93
  },
75
- // 已废弃,被 option-config.useKey 替换
94
+ /**
95
+ * 已废弃,被 option-config.useKey 替换
96
+ * @deprecated
97
+ */
76
98
  optionKey: Boolean
77
99
  },
78
100
  emits: [
79
101
  'update:modelValue',
80
102
  'change',
103
+ 'all-change',
81
104
  'clear',
82
105
  'blur',
83
106
  'focus',
@@ -106,7 +129,6 @@ export default defineVxeComponent({
106
129
  bodyHeight: 0,
107
130
  topSpaceHeight: 0,
108
131
  optList: [],
109
- afterVisibleList: [],
110
132
  staticOptions: [],
111
133
  reactFlag: 0,
112
134
  currentOption: null,
@@ -123,6 +145,7 @@ export default defineVxeComponent({
123
145
  const internalData = {
124
146
  synchData: [],
125
147
  fullData: [],
148
+ afterVisibleList: [],
126
149
  optAddMaps: {},
127
150
  optGroupKeyMaps: {},
128
151
  optFullValMaps: {},
@@ -220,13 +243,10 @@ export default defineVxeComponent({
220
243
  return groupPropsOpts.options || 'options';
221
244
  });
222
245
  const computeIsMaximize = computed(() => {
223
- const { modelValue, multiple, max } = props;
224
- if (multiple && max) {
225
- return (XEUtils.isArray(modelValue) ? modelValue.length : (XEUtils.eqNull(modelValue) ? 0 : 1)) >= XEUtils.toNumber(max);
226
- }
227
- return false;
246
+ const { modelValue } = props;
247
+ return checkMaxLimit(modelValue);
228
248
  });
229
- const computeSYOpts = computed(() => {
249
+ const computeVirtualYOpts = computed(() => {
230
250
  return Object.assign({}, getConfig().select.virtualYConfig || getConfig().select.scrollY, props.virtualYConfig || props.scrollY);
231
251
  });
232
252
  const computeRemoteOpts = computed(() => {
@@ -282,6 +302,13 @@ export default defineVxeComponent({
282
302
  const optid = option[getOptKey()];
283
303
  return optid ? encodeURIComponent(optid) : '';
284
304
  };
305
+ const checkMaxLimit = (selectVals) => {
306
+ const { multiple, max } = props;
307
+ if (multiple && max) {
308
+ return (XEUtils.isArray(selectVals) ? selectVals.length : (XEUtils.eqNull(selectVals) ? 0 : 1)) >= XEUtils.toNumber(max);
309
+ }
310
+ return false;
311
+ };
285
312
  const getRemoteSelectLabel = (value) => {
286
313
  const { remoteValMaps, optFullValMaps } = internalData;
287
314
  const labelField = computeLabelField.value;
@@ -354,7 +381,7 @@ export default defineVxeComponent({
354
381
  cacheItem._index = index;
355
382
  }
356
383
  });
357
- reactData.afterVisibleList = avList;
384
+ internalData.afterVisibleList = avList;
358
385
  return nextTick();
359
386
  };
360
387
  const setCurrentOption = (option) => {
@@ -404,7 +431,7 @@ export default defineVxeComponent({
404
431
  reactData.isAniVisible = true;
405
432
  if (filterable) {
406
433
  if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !fullData.length) {
407
- triggerSearchEvent();
434
+ handleSearchEvent();
408
435
  }
409
436
  else {
410
437
  handleOption();
@@ -453,6 +480,40 @@ export default defineVxeComponent({
453
480
  clearValueEvent($event, null);
454
481
  hideOptionPanel();
455
482
  };
483
+ const allCheckedPanelEvent = (params) => {
484
+ const { $event } = params;
485
+ const { modelValue, multiple, max } = props;
486
+ const { optList } = reactData;
487
+ const valueField = computeValueField.value;
488
+ if (multiple) {
489
+ const multipleValue = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue]);
490
+ for (let i = 0; i < optList.length; i++) {
491
+ const option = optList[i];
492
+ const selectValue = option[valueField];
493
+ // 检测是否超过最大可选数量
494
+ if (checkMaxLimit(multipleValue)) {
495
+ if (VxeUI) {
496
+ VxeUI.modal.message({
497
+ content: getI18n('vxe.select.overSizeErr', [max]),
498
+ status: 'warning'
499
+ });
500
+ }
501
+ break;
502
+ }
503
+ if (!multipleValue.some(val => val === selectValue)) {
504
+ multipleValue.push(selectValue);
505
+ }
506
+ }
507
+ changeEvent($event, multipleValue);
508
+ dispatchEvent('all-change', { value: multipleValue }, $event);
509
+ hideOptionPanel();
510
+ }
511
+ };
512
+ const clearCheckedPanelEvent = (params) => {
513
+ const { $event } = params;
514
+ clearValueEvent($event, null);
515
+ hideOptionPanel();
516
+ };
456
517
  const changeOptionEvent = (evnt, option) => {
457
518
  const { modelValue, multiple } = props;
458
519
  const { remoteValMaps } = internalData;
@@ -527,8 +588,8 @@ export default defineVxeComponent({
527
588
  };
528
589
  const findOffsetOption = (option, isDwArrow) => {
529
590
  const { allowCreate } = props;
530
- const { afterVisibleList, optList } = reactData;
531
- const { optFullValMaps, optAddMaps } = internalData;
591
+ const { optList } = reactData;
592
+ const { optFullValMaps, optAddMaps, afterVisibleList } = internalData;
532
593
  const valueField = computeValueField.value;
533
594
  let fullList = afterVisibleList;
534
595
  let offsetAddIndex = 0;
@@ -724,13 +785,10 @@ export default defineVxeComponent({
724
785
  }
725
786
  }
726
787
  };
727
- const checkOptionDisabled = (isSelected, option, group) => {
788
+ const checkOptionDisabled = (isSelected, option) => {
728
789
  if (option.disabled) {
729
790
  return true;
730
791
  }
731
- if (group && group.disabled) {
732
- return true;
733
- }
734
792
  const isMaximize = computeIsMaximize.value;
735
793
  if (isMaximize && !isSelected) {
736
794
  return true;
@@ -738,15 +796,15 @@ export default defineVxeComponent({
738
796
  return false;
739
797
  };
740
798
  const updateYSpace = () => {
741
- const { scrollYLoad, afterVisibleList } = reactData;
742
- const { scrollYStore } = internalData;
799
+ const { scrollYLoad } = reactData;
800
+ const { scrollYStore, afterVisibleList } = internalData;
743
801
  reactData.bodyHeight = scrollYLoad ? afterVisibleList.length * scrollYStore.rowHeight : 0;
744
802
  reactData.topSpaceHeight = scrollYLoad ? Math.max(scrollYStore.startIndex * scrollYStore.rowHeight, 0) : 0;
745
803
  };
746
804
  const handleData = () => {
747
805
  const { filterable, allowCreate } = props;
748
- const { scrollYLoad, afterVisibleList, searchValue } = reactData;
749
- const { optAddMaps, scrollYStore } = internalData;
806
+ const { scrollYLoad, searchValue } = reactData;
807
+ const { optAddMaps, scrollYStore, afterVisibleList } = internalData;
750
808
  const labelField = computeLabelField.value;
751
809
  const valueField = computeValueField.value;
752
810
  const restList = scrollYLoad ? afterVisibleList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : afterVisibleList.slice(0);
@@ -773,13 +831,10 @@ export default defineVxeComponent({
773
831
  const { scrollYLoad } = reactData;
774
832
  const { scrollYStore } = internalData;
775
833
  const virtualBodyElem = refVirtualBody.value;
776
- const sYOpts = computeSYOpts.value;
834
+ const virtualYOpts = computeVirtualYOpts.value;
777
835
  let rowHeight = 0;
778
836
  let firstItemElem;
779
837
  if (virtualBodyElem) {
780
- if (sYOpts.sItem) {
781
- firstItemElem = virtualBodyElem.querySelector(sYOpts.sItem);
782
- }
783
838
  if (!firstItemElem) {
784
839
  firstItemElem = virtualBodyElem.children[0];
785
840
  }
@@ -793,7 +848,7 @@ export default defineVxeComponent({
793
848
  if (scrollYLoad) {
794
849
  const scrollBodyElem = refVirtualWrapper.value;
795
850
  const visibleYSize = Math.max(8, scrollBodyElem ? Math.ceil(scrollBodyElem.clientHeight / rowHeight) : 0);
796
- const offsetYSize = Math.max(0, Math.min(2, XEUtils.toNumber(sYOpts.oSize)));
851
+ const offsetYSize = Math.max(0, Math.min(2, XEUtils.toNumber(virtualYOpts.oSize)));
797
852
  scrollYStore.offsetSize = offsetYSize;
798
853
  scrollYStore.visibleSize = visibleYSize;
799
854
  scrollYStore.endIndex = Math.max(scrollYStore.startIndex, visibleYSize + offsetYSize, scrollYStore.endIndex);
@@ -815,6 +870,9 @@ export default defineVxeComponent({
815
870
  if (avIndex > -1) {
816
871
  const optWrapperElem = refVirtualWrapper.value;
817
872
  const panelElem = refOptionPanel.value;
873
+ if (!panelElem) {
874
+ return;
875
+ }
818
876
  const optElem = panelElem.querySelector(`[optid='${optid}']`);
819
877
  if (optWrapperElem) {
820
878
  if (optElem) {
@@ -942,7 +1000,7 @@ export default defineVxeComponent({
942
1000
  cacheItemMap(datas || []);
943
1001
  const { isLoaded, fullData, scrollYStore } = internalData;
944
1002
  const defaultOpts = computeDefaultOpts.value;
945
- const sYOpts = computeSYOpts.value;
1003
+ const virtualYOpts = computeVirtualYOpts.value;
946
1004
  const valueField = computeValueField.value;
947
1005
  Object.assign(scrollYStore, {
948
1006
  startIndex: 0,
@@ -951,7 +1009,7 @@ export default defineVxeComponent({
951
1009
  });
952
1010
  internalData.synchData = datas || [];
953
1011
  // 如果gt为0,则总是启用
954
- reactData.scrollYLoad = !!sYOpts.enabled && sYOpts.gt > -1 && (sYOpts.gt === 0 || sYOpts.gt <= fullData.length);
1012
+ reactData.scrollYLoad = !!virtualYOpts.enabled && virtualYOpts.gt > -1 && (virtualYOpts.gt === 0 || virtualYOpts.gt <= fullData.length);
955
1013
  handleData();
956
1014
  if (!isLoaded) {
957
1015
  const { selectMode } = defaultOpts;
@@ -1026,13 +1084,17 @@ export default defineVxeComponent({
1026
1084
  },
1027
1085
  focus() {
1028
1086
  const $input = refInput.value;
1087
+ if ($input) {
1088
+ $input.blur();
1089
+ }
1029
1090
  reactData.isActivated = true;
1030
- $input.blur();
1031
1091
  return nextTick();
1032
1092
  },
1033
1093
  blur() {
1034
1094
  const $input = refInput.value;
1035
- $input.blur();
1095
+ if ($input) {
1096
+ $input.blur();
1097
+ }
1036
1098
  reactData.isActivated = false;
1037
1099
  return nextTick();
1038
1100
  },
@@ -1040,7 +1102,7 @@ export default defineVxeComponent({
1040
1102
  clearScroll
1041
1103
  };
1042
1104
  Object.assign($xeSelect, selectMethods);
1043
- const renderOption = (list, group) => {
1105
+ const renderOption = (list) => {
1044
1106
  const { allowCreate, optionKey, modelValue } = props;
1045
1107
  const { currentOption } = reactData;
1046
1108
  const { optAddMaps } = internalData;
@@ -1058,9 +1120,9 @@ export default defineVxeComponent({
1058
1120
  const isAdd = !!(allowCreate && optAddMaps[optid]);
1059
1121
  const isSelected = !isAdd && (XEUtils.isArray(modelValue) ? modelValue.indexOf(optionValue) > -1 : modelValue === optionValue);
1060
1122
  const isVisible = isAdd || (!isOptGroup || isOptionVisible(option));
1061
- const isDisabled = !isAdd && checkOptionDisabled(isSelected, option, group);
1123
+ const isDisabled = !isAdd && checkOptionDisabled(isSelected, option);
1062
1124
  const defaultSlot = slots ? slots.default : null;
1063
- const optParams = { option, group: null, $select: $xeSelect };
1125
+ const optParams = { option, group: isOptGroup ? option : null, $select: $xeSelect };
1064
1126
  let optLabel = '';
1065
1127
  let optVNs = [];
1066
1128
  if (optionSlot) {
@@ -1148,8 +1210,8 @@ export default defineVxeComponent({
1148
1210
  ];
1149
1211
  };
1150
1212
  const renderVN = () => {
1151
- const { className, popupClassName, loading, filterable } = props;
1152
- const { initialized, isActivated, isAniVisible, visiblePanel, bodyHeight, topSpaceHeight } = reactData;
1213
+ const { modelValue, className, popupClassName, multiple, loading, filterable, showTotalButoon, showCheckedButoon, showClearButton } = props;
1214
+ const { initialized, isActivated, isAniVisible, optList, visiblePanel, bodyHeight, topSpaceHeight } = reactData;
1153
1215
  const vSize = computeSize.value;
1154
1216
  const isDisabled = computeIsDisabled.value;
1155
1217
  const selectLabel = computeSelectLabel.value;
@@ -1174,6 +1236,7 @@ export default defineVxeComponent({
1174
1236
  }, selectLabel)
1175
1237
  ]);
1176
1238
  }
1239
+ const selectVals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue]);
1177
1240
  return h('div', {
1178
1241
  ref: refElem,
1179
1242
  class: ['vxe-select', className ? (XEUtils.isFunction(className) ? className({ $select: $xeSelect }) : className) : '', {
@@ -1250,10 +1313,40 @@ export default defineVxeComponent({
1250
1313
  })
1251
1314
  ])
1252
1315
  : renderEmptyElement($xeSelect),
1253
- headerSlot
1316
+ showTotalButoon || (showCheckedButoon && multiple) || showClearButton || headerSlot
1254
1317
  ? h('div', {
1255
1318
  class: 'vxe-select--panel-header'
1256
- }, headerSlot({}))
1319
+ }, headerSlot
1320
+ ? callSlot(headerSlot, {})
1321
+ : [
1322
+ h('div', {
1323
+ class: 'vxe-select--header-button'
1324
+ }, [
1325
+ showTotalButoon
1326
+ ? h('div', {
1327
+ class: 'vxe-select--header-total'
1328
+ }, getI18n('vxe.select.total', [selectVals.length, optList.length]))
1329
+ : renderEmptyElement($xeSelect),
1330
+ h('div', {
1331
+ class: 'vxe-select--header-btns'
1332
+ }, [
1333
+ (showCheckedButoon && multiple)
1334
+ ? h(VxeButtonComponent, {
1335
+ content: getI18n('vxe.select.allChecked'),
1336
+ mode: 'text',
1337
+ onClick: allCheckedPanelEvent
1338
+ })
1339
+ : renderEmptyElement($xeSelect),
1340
+ showClearButton
1341
+ ? h(VxeButtonComponent, {
1342
+ content: getI18n('vxe.select.clear'),
1343
+ mode: 'text',
1344
+ onClick: clearCheckedPanelEvent
1345
+ })
1346
+ : renderEmptyElement($xeSelect)
1347
+ ])
1348
+ ])
1349
+ ])
1257
1350
  : renderEmptyElement($xeSelect),
1258
1351
  h('div', {
1259
1352
  class: 'vxe-select--panel-body'
@@ -1273,7 +1366,7 @@ export default defineVxeComponent({
1273
1366
  ref: refVirtualBody,
1274
1367
  class: 'vxe-select--body',
1275
1368
  style: {
1276
- marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ''
1369
+ transform: `translateY(${topSpaceHeight}px)`
1277
1370
  }
1278
1371
  }, renderOpts())
1279
1372
  ])
@@ -1281,7 +1374,7 @@ export default defineVxeComponent({
1281
1374
  footerSlot
1282
1375
  ? h('div', {
1283
1376
  class: 'vxe-select--panel-footer'
1284
- }, footerSlot({}))
1377
+ }, callSlot(footerSlot, {}))
1285
1378
  : renderEmptyElement($xeSelect)
1286
1379
  ])
1287
1380
  ]
@@ -95,6 +95,27 @@
95
95
  background-color: var(--vxe-ui-layout-background-color);
96
96
  }
97
97
 
98
+ .vxe-select--header-button {
99
+ display: flex;
100
+ flex-direction: row;
101
+ }
102
+
103
+ .vxe-select--header-total {
104
+ display: flex;
105
+ flex-direction: row;
106
+ align-items: center;
107
+ justify-content: center;
108
+ flex-shrink: 0;
109
+ padding-left: 0.8em;
110
+ }
111
+
112
+ .vxe-select--header-btns {
113
+ display: flex;
114
+ flex-direction: row;
115
+ flex-grow: 1;
116
+ justify-content: right;
117
+ }
118
+
98
119
  .vxe-select--panel-header {
99
120
  border-bottom: 1px solid var(--vxe-ui-base-popup-border-color);
100
121
  }
@@ -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;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;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;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;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)}