vxe-pc-ui 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/es/button/src/button.js +3 -0
  2. package/es/carousel/index.js +12 -0
  3. package/es/carousel/src/carousel-item.js +100 -0
  4. package/es/carousel/src/carousel.js +418 -0
  5. package/es/carousel/src/util.js +17 -0
  6. package/es/carousel/style.css +185 -0
  7. package/es/carousel/style.min.css +1 -0
  8. package/es/carousel-item/index.js +12 -0
  9. package/es/carousel-item/style.css +0 -0
  10. package/es/carousel-item/style.min.css +0 -0
  11. package/es/checkbox/index.js +12 -0
  12. package/es/checkbox/src/checkbox.js +159 -0
  13. package/es/checkbox/src/group.js +154 -0
  14. package/es/checkbox/style.css +117 -0
  15. package/es/checkbox/style.min.css +1 -0
  16. package/es/checkbox-group/index.js +12 -0
  17. package/es/checkbox-group/style.css +0 -0
  18. package/es/checkbox-group/style.min.css +0 -0
  19. package/es/components.js +39 -39
  20. package/es/date-picker/src/date-picker.js +3 -0
  21. package/es/icon/style.css +1 -1
  22. package/es/icon-picker/index.js +12 -0
  23. package/es/icon-picker/src/icon-picker.js +668 -0
  24. package/es/icon-picker/style.css +207 -0
  25. package/es/icon-picker/style.min.css +1 -0
  26. package/es/input/index.js +12 -0
  27. package/es/input/src/input.js +2892 -0
  28. package/es/input/style.css +941 -0
  29. package/es/input/style.min.css +1 -0
  30. package/es/layout-footer/src/layout-footer.js +2 -1
  31. package/es/layout-header/src/layout-header.js +2 -1
  32. package/es/optgroup/index.js +12 -0
  33. package/es/optgroup/style.css +0 -0
  34. package/es/optgroup/style.min.css +0 -0
  35. package/es/option/index.js +12 -0
  36. package/es/option/style.css +0 -0
  37. package/es/option/style.min.css +0 -0
  38. package/es/pager/index.js +12 -0
  39. package/es/pager/src/pager.js +687 -0
  40. package/es/password-input/index.js +12 -0
  41. package/es/password-input/src/password-input.js +388 -0
  42. package/es/password-input/style.css +604 -0
  43. package/es/password-input/style.min.css +1 -0
  44. package/es/pulldown/src/pulldown.js +5 -1
  45. package/es/select/index.js +12 -0
  46. package/es/select/src/optgroup.js +90 -0
  47. package/es/select/src/option-info.js +16 -0
  48. package/es/select/src/option.js +86 -0
  49. package/es/select/src/select.js +1269 -0
  50. package/es/select/src/util.js +35 -0
  51. package/es/select/style.css +207 -0
  52. package/es/select/style.min.css +1 -0
  53. package/es/style.css +1 -1
  54. package/es/style.min.css +1 -1
  55. package/es/tab-pane/index.js +12 -0
  56. package/es/tab-pane/style.css +0 -0
  57. package/es/tab-pane/style.min.css +0 -0
  58. package/es/tabs/index.js +12 -0
  59. package/es/tabs/src/tab-pane.js +119 -0
  60. package/es/tabs/src/tabs.js +593 -0
  61. package/es/tabs/src/util.js +17 -0
  62. package/es/tabs/style.css +342 -0
  63. package/es/tabs/style.min.css +1 -0
  64. package/es/ui/index.js +1 -1
  65. package/es/ui/src/log.js +1 -1
  66. package/es/vxe-carousel/index.js +3 -0
  67. package/es/vxe-carousel/style.css +185 -0
  68. package/es/vxe-carousel/style.min.css +1 -0
  69. package/es/vxe-carousel-item/index.js +3 -0
  70. package/es/vxe-carousel-item/style.css +0 -0
  71. package/es/vxe-carousel-item/style.min.css +0 -0
  72. package/es/vxe-checkbox/index.js +3 -0
  73. package/es/vxe-checkbox/style.css +117 -0
  74. package/es/vxe-checkbox/style.min.css +1 -0
  75. package/es/vxe-checkbox-group/index.js +3 -0
  76. package/es/vxe-checkbox-group/style.css +0 -0
  77. package/es/vxe-checkbox-group/style.min.css +0 -0
  78. package/es/vxe-icon-picker/index.js +3 -0
  79. package/es/vxe-icon-picker/style.css +207 -0
  80. package/es/vxe-icon-picker/style.min.css +1 -0
  81. package/es/vxe-input/index.js +3 -0
  82. package/es/vxe-input/style.css +941 -0
  83. package/es/vxe-input/style.min.css +1 -0
  84. package/es/vxe-optgroup/index.js +3 -0
  85. package/es/vxe-optgroup/style.css +0 -0
  86. package/es/vxe-optgroup/style.min.css +0 -0
  87. package/es/vxe-option/index.js +3 -0
  88. package/es/vxe-option/style.css +0 -0
  89. package/es/vxe-option/style.min.css +0 -0
  90. package/es/vxe-password-input/index.js +3 -0
  91. package/es/vxe-password-input/style.css +604 -0
  92. package/es/vxe-password-input/style.min.css +1 -0
  93. package/es/vxe-select/index.js +3 -0
  94. package/es/vxe-select/style.css +207 -0
  95. package/es/vxe-select/style.min.css +1 -0
  96. package/es/vxe-tab-pane/index.js +3 -0
  97. package/es/vxe-tab-pane/style.css +0 -0
  98. package/es/vxe-tab-pane/style.min.css +0 -0
  99. package/es/vxe-tabs/index.js +3 -0
  100. package/es/vxe-tabs/style.css +342 -0
  101. package/es/vxe-tabs/style.min.css +1 -0
  102. package/lib/button/src/button.js +3 -0
  103. package/lib/button/src/button.min.js +1 -1
  104. package/lib/carousel/index.js +19 -0
  105. package/lib/carousel/index.min.js +1 -0
  106. package/lib/carousel/src/carousel-item.js +107 -0
  107. package/lib/carousel/src/carousel-item.min.js +1 -0
  108. package/lib/carousel/src/carousel.js +437 -0
  109. package/lib/carousel/src/carousel.min.js +1 -0
  110. package/lib/carousel/src/util.js +27 -0
  111. package/lib/carousel/src/util.min.js +1 -0
  112. package/lib/carousel/style/index.js +1 -0
  113. package/lib/carousel/style/style.css +185 -0
  114. package/lib/carousel/style/style.min.css +1 -0
  115. package/lib/carousel-item/index.js +19 -0
  116. package/lib/carousel-item/index.min.js +1 -0
  117. package/lib/carousel-item/style/index.js +1 -0
  118. package/lib/carousel-item/style/style.css +0 -0
  119. package/lib/carousel-item/style/style.min.css +0 -0
  120. package/lib/checkbox/index.js +19 -0
  121. package/lib/checkbox/index.min.js +1 -0
  122. package/lib/checkbox/src/checkbox.js +169 -0
  123. package/lib/checkbox/src/checkbox.min.js +1 -0
  124. package/lib/checkbox/src/group.js +164 -0
  125. package/lib/checkbox/src/group.min.js +1 -0
  126. package/lib/checkbox/style/index.js +1 -0
  127. package/lib/checkbox/style/style.css +117 -0
  128. package/lib/checkbox/style/style.min.css +1 -0
  129. package/lib/checkbox-group/index.js +19 -0
  130. package/lib/checkbox-group/index.min.js +1 -0
  131. package/lib/checkbox-group/style/index.js +1 -0
  132. package/lib/checkbox-group/style/style.css +0 -0
  133. package/lib/checkbox-group/style/style.min.css +0 -0
  134. package/lib/components.js +159 -60
  135. package/lib/components.min.js +1 -1
  136. package/lib/date-picker/src/date-picker.js +3 -0
  137. package/lib/date-picker/src/date-picker.min.js +1 -1
  138. package/lib/icon/style/style.css +1 -1
  139. package/lib/icon/style/style.min.css +1 -1
  140. package/lib/icon-picker/index.js +19 -0
  141. package/lib/icon-picker/index.min.js +1 -0
  142. package/lib/icon-picker/src/icon-picker.js +646 -0
  143. package/lib/icon-picker/src/icon-picker.min.js +1 -0
  144. package/lib/icon-picker/style/index.js +1 -0
  145. package/lib/icon-picker/style/style.css +207 -0
  146. package/lib/icon-picker/style/style.min.css +1 -0
  147. package/lib/index.umd.js +15870 -7738
  148. package/lib/index.umd.min.js +1 -1
  149. package/lib/input/index.js +19 -0
  150. package/lib/input/index.min.js +1 -0
  151. package/lib/input/src/input.js +2897 -0
  152. package/lib/input/src/input.min.js +1 -0
  153. package/lib/input/style/index.js +1 -0
  154. package/lib/input/style/style.css +941 -0
  155. package/lib/input/style/style.min.css +1 -0
  156. package/lib/layout-footer/src/layout-footer.js +2 -1
  157. package/lib/layout-header/src/layout-header.js +2 -1
  158. package/lib/optgroup/index.js +19 -0
  159. package/lib/optgroup/index.min.js +1 -0
  160. package/lib/optgroup/style/index.js +1 -0
  161. package/lib/optgroup/style/style.css +0 -0
  162. package/lib/optgroup/style/style.min.css +0 -0
  163. package/lib/option/index.js +19 -0
  164. package/lib/option/index.min.js +1 -0
  165. package/lib/option/style/index.js +1 -0
  166. package/lib/option/style/style.css +0 -0
  167. package/lib/option/style/style.min.css +0 -0
  168. package/lib/pager/index.js +19 -0
  169. package/lib/pager/index.min.js +1 -0
  170. package/lib/pager/src/pager.js +714 -0
  171. package/lib/pager/src/pager.min.js +1 -0
  172. package/lib/password-input/index.js +19 -0
  173. package/lib/password-input/index.min.js +1 -0
  174. package/lib/password-input/src/password-input.js +398 -0
  175. package/lib/password-input/src/password-input.min.js +1 -0
  176. package/lib/password-input/style/index.js +1 -0
  177. package/lib/password-input/style/style.css +604 -0
  178. package/lib/password-input/style/style.min.css +1 -0
  179. package/lib/pulldown/src/pulldown.js +5 -1
  180. package/lib/pulldown/src/pulldown.min.js +1 -1
  181. package/lib/select/index.js +19 -0
  182. package/lib/select/index.min.js +1 -0
  183. package/lib/select/src/optgroup.js +97 -0
  184. package/lib/select/src/optgroup.min.js +1 -0
  185. package/lib/select/src/option-info.js +33 -0
  186. package/lib/select/src/option-info.min.js +1 -0
  187. package/lib/select/src/option.js +93 -0
  188. package/lib/select/src/option.min.js +1 -0
  189. package/lib/select/src/select.js +1315 -0
  190. package/lib/select/src/select.min.js +1 -0
  191. package/lib/select/src/util.js +50 -0
  192. package/lib/select/src/util.min.js +1 -0
  193. package/lib/select/style/index.js +1 -0
  194. package/lib/select/style/style.css +207 -0
  195. package/lib/select/style/style.min.css +1 -0
  196. package/lib/style.css +1 -1
  197. package/lib/style.min.css +1 -1
  198. package/lib/tab-pane/index.js +19 -0
  199. package/lib/tab-pane/index.min.js +1 -0
  200. package/lib/tab-pane/style/index.js +1 -0
  201. package/lib/tab-pane/style/style.css +0 -0
  202. package/lib/tab-pane/style/style.min.css +0 -0
  203. package/lib/tabs/index.js +19 -0
  204. package/lib/tabs/index.min.js +1 -0
  205. package/lib/tabs/src/tab-pane.js +128 -0
  206. package/lib/tabs/src/tab-pane.min.js +1 -0
  207. package/lib/tabs/src/tabs.js +630 -0
  208. package/lib/tabs/src/tabs.min.js +1 -0
  209. package/lib/tabs/src/util.js +29 -0
  210. package/lib/tabs/src/util.min.js +1 -0
  211. package/lib/tabs/style/index.js +1 -0
  212. package/lib/tabs/style/style.css +342 -0
  213. package/lib/tabs/style/style.min.css +1 -0
  214. package/lib/ui/index.js +1 -1
  215. package/lib/ui/index.min.js +1 -1
  216. package/lib/ui/src/log.js +1 -1
  217. package/lib/ui/src/log.min.js +1 -1
  218. package/lib/vxe-carousel/index.js +23 -0
  219. package/lib/vxe-carousel/index.min.js +1 -0
  220. package/lib/vxe-carousel/style/index.js +1 -0
  221. package/lib/vxe-carousel/style/style.css +185 -0
  222. package/lib/vxe-carousel/style/style.min.css +1 -0
  223. package/lib/vxe-carousel-item/index.js +23 -0
  224. package/lib/vxe-carousel-item/index.min.js +1 -0
  225. package/lib/vxe-carousel-item/style/index.js +1 -0
  226. package/lib/vxe-carousel-item/style/style.css +0 -0
  227. package/lib/vxe-carousel-item/style/style.min.css +0 -0
  228. package/lib/vxe-checkbox/index.js +23 -0
  229. package/lib/vxe-checkbox/index.min.js +1 -0
  230. package/lib/vxe-checkbox/style/index.js +1 -0
  231. package/lib/vxe-checkbox/style/style.css +117 -0
  232. package/lib/vxe-checkbox/style/style.min.css +1 -0
  233. package/lib/vxe-checkbox-group/index.js +23 -0
  234. package/lib/vxe-checkbox-group/index.min.js +1 -0
  235. package/lib/vxe-checkbox-group/style/index.js +1 -0
  236. package/lib/vxe-checkbox-group/style/style.css +0 -0
  237. package/lib/vxe-checkbox-group/style/style.min.css +0 -0
  238. package/lib/vxe-icon-picker/index.js +23 -0
  239. package/lib/vxe-icon-picker/index.min.js +1 -0
  240. package/lib/vxe-icon-picker/style/index.js +1 -0
  241. package/lib/vxe-icon-picker/style/style.css +207 -0
  242. package/lib/vxe-icon-picker/style/style.min.css +1 -0
  243. package/lib/vxe-input/index.js +23 -0
  244. package/lib/vxe-input/index.min.js +1 -0
  245. package/lib/vxe-input/style/index.js +1 -0
  246. package/lib/vxe-input/style/style.css +941 -0
  247. package/lib/vxe-input/style/style.min.css +1 -0
  248. package/lib/vxe-optgroup/index.js +23 -0
  249. package/lib/vxe-optgroup/index.min.js +1 -0
  250. package/lib/vxe-optgroup/style/index.js +1 -0
  251. package/lib/vxe-optgroup/style/style.css +0 -0
  252. package/lib/vxe-optgroup/style/style.min.css +0 -0
  253. package/lib/vxe-option/index.js +23 -0
  254. package/lib/vxe-option/index.min.js +1 -0
  255. package/lib/vxe-option/style/index.js +1 -0
  256. package/lib/vxe-option/style/style.css +0 -0
  257. package/lib/vxe-option/style/style.min.css +0 -0
  258. package/lib/vxe-password-input/index.js +23 -0
  259. package/lib/vxe-password-input/index.min.js +1 -0
  260. package/lib/vxe-password-input/style/index.js +1 -0
  261. package/lib/vxe-password-input/style/style.css +604 -0
  262. package/lib/vxe-password-input/style/style.min.css +1 -0
  263. package/lib/vxe-select/index.js +23 -0
  264. package/lib/vxe-select/index.min.js +1 -0
  265. package/lib/vxe-select/style/index.js +1 -0
  266. package/lib/vxe-select/style/style.css +207 -0
  267. package/lib/vxe-select/style/style.min.css +1 -0
  268. package/lib/vxe-tab-pane/index.js +23 -0
  269. package/lib/vxe-tab-pane/index.min.js +1 -0
  270. package/lib/vxe-tab-pane/style/index.js +1 -0
  271. package/lib/vxe-tab-pane/style/style.css +0 -0
  272. package/lib/vxe-tab-pane/style/style.min.css +0 -0
  273. package/lib/vxe-tabs/index.js +23 -0
  274. package/lib/vxe-tabs/index.min.js +1 -0
  275. package/lib/vxe-tabs/style/index.js +1 -0
  276. package/lib/vxe-tabs/style/style.css +342 -0
  277. package/lib/vxe-tabs/style/style.min.css +1 -0
  278. package/package.json +1 -1
  279. package/packages/button/src/button.ts +3 -0
  280. package/packages/carousel/index.ts +16 -0
  281. package/packages/carousel/src/carousel-item.ts +114 -0
  282. package/packages/carousel/src/carousel.ts +449 -0
  283. package/packages/carousel/src/util.ts +21 -0
  284. package/packages/carousel-item/index.ts +16 -0
  285. package/packages/checkbox/index.ts +16 -0
  286. package/packages/checkbox/src/checkbox.ts +176 -0
  287. package/packages/checkbox/src/group.ts +178 -0
  288. package/packages/checkbox-group/index.ts +16 -0
  289. package/packages/components.ts +39 -39
  290. package/packages/date-picker/src/date-picker.ts +3 -0
  291. package/packages/icon-picker/index.ts +16 -0
  292. package/packages/icon-picker/src/icon-picker.ts +711 -0
  293. package/packages/input/index.ts +16 -0
  294. package/packages/input/src/input.ts +2995 -0
  295. package/packages/layout-footer/src/layout-footer.ts +4 -3
  296. package/packages/layout-header/src/layout-header.ts +2 -1
  297. package/packages/optgroup/index.ts +16 -0
  298. package/packages/option/index.ts +16 -0
  299. package/packages/pager/index.ts +16 -0
  300. package/packages/pager/src/pager.ts +743 -0
  301. package/packages/password-input/index.ts +16 -0
  302. package/packages/password-input/src/password-input.ts +427 -0
  303. package/packages/pulldown/src/pulldown.ts +5 -1
  304. package/packages/select/index.ts +16 -0
  305. package/packages/select/src/optgroup.ts +107 -0
  306. package/packages/select/src/option-info.ts +20 -0
  307. package/packages/select/src/option.ts +103 -0
  308. package/packages/select/src/select.ts +1325 -0
  309. package/packages/select/src/util.ts +46 -0
  310. package/packages/tab-pane/index.ts +16 -0
  311. package/packages/tabs/index.ts +16 -0
  312. package/packages/tabs/src/tab-pane.ts +136 -0
  313. package/packages/tabs/src/tabs.ts +630 -0
  314. package/packages/tabs/src/util.ts +21 -0
  315. package/types/components/carousel.d.ts +5 -0
  316. package/types/components/icon-picker.d.ts +4 -0
  317. package/types/components/input.d.ts +9 -1
  318. package/types/components/optgroup.d.ts +10 -4
  319. package/types/components/tabs.d.ts +4 -0
  320. /package/es/icon/style/{iconfont.1725630285930.ttf → iconfont.1725723159302.ttf} +0 -0
  321. /package/es/icon/style/{iconfont.1725630285930.woff → iconfont.1725723159302.woff} +0 -0
  322. /package/es/icon/style/{iconfont.1725630285930.woff2 → iconfont.1725723159302.woff2} +0 -0
  323. /package/es/{iconfont.1725630285930.ttf → iconfont.1725723159302.ttf} +0 -0
  324. /package/es/{iconfont.1725630285930.woff → iconfont.1725723159302.woff} +0 -0
  325. /package/es/{iconfont.1725630285930.woff2 → iconfont.1725723159302.woff2} +0 -0
  326. /package/lib/icon/style/{iconfont.1725630285930.ttf → iconfont.1725723159302.ttf} +0 -0
  327. /package/lib/icon/style/{iconfont.1725630285930.woff → iconfont.1725723159302.woff} +0 -0
  328. /package/lib/icon/style/{iconfont.1725630285930.woff2 → iconfont.1725723159302.woff2} +0 -0
  329. /package/lib/{iconfont.1725630285930.ttf → iconfont.1725723159302.ttf} +0 -0
  330. /package/lib/{iconfont.1725630285930.woff → iconfont.1725723159302.woff} +0 -0
  331. /package/lib/{iconfont.1725630285930.woff2 → iconfont.1725723159302.woff2} +0 -0
@@ -0,0 +1,1315 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _comp = require("../../ui/src/comp");
8
+ var _xeUtils = _interopRequireDefault(require("xe-utils"));
9
+ var _ui = require("../../ui");
10
+ var _dom = require("../../ui/src/dom");
11
+ var _utils = require("../../ui/src/utils");
12
+ var _input = _interopRequireDefault(require("../../input/src/input"));
13
+ var _vn = require("../../ui/src/vn");
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
16
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
18
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
+ function isOptionVisible(option) {
20
+ return option.visible !== false;
21
+ }
22
+ function getOptUniqueId() {
23
+ return _xeUtils.default.uniqueId('opt_');
24
+ }
25
+ var _default2 = exports.default = (0, _comp.defineVxeComponent)({
26
+ name: 'VxeSelect',
27
+ mixins: [_ui.globalMixins.sizeMixin],
28
+ model: {
29
+ prop: 'value',
30
+ event: 'modelValue'
31
+ },
32
+ props: {
33
+ value: [String, Number, Boolean, Array],
34
+ clearable: Boolean,
35
+ placeholder: String,
36
+ readonly: {
37
+ type: Boolean,
38
+ default: null
39
+ },
40
+ loading: Boolean,
41
+ disabled: {
42
+ type: Boolean,
43
+ default: null
44
+ },
45
+ multiple: Boolean,
46
+ multiCharOverflow: {
47
+ type: [Number, String],
48
+ default: function _default() {
49
+ return (0, _ui.getConfig)().select.multiCharOverflow;
50
+ }
51
+ },
52
+ prefixIcon: String,
53
+ placement: String,
54
+ options: Array,
55
+ optionProps: Object,
56
+ optionGroups: Array,
57
+ optionGroupProps: Object,
58
+ optionConfig: Object,
59
+ className: [String, Function],
60
+ popupClassName: [String, Function],
61
+ max: {
62
+ type: [String, Number],
63
+ default: null
64
+ },
65
+ size: {
66
+ type: String,
67
+ default: function _default() {
68
+ return (0, _ui.getConfig)().select.size || (0, _ui.getConfig)().size;
69
+ }
70
+ },
71
+ filterable: Boolean,
72
+ filterMethod: Function,
73
+ remote: Boolean,
74
+ remoteMethod: Function,
75
+ emptyText: String,
76
+ transfer: {
77
+ type: Boolean,
78
+ default: null
79
+ },
80
+ // 已废弃,被 option-config.keyField 替换
81
+ optionId: {
82
+ type: String,
83
+ default: function _default() {
84
+ return (0, _ui.getConfig)().select.optionId;
85
+ }
86
+ },
87
+ // 已废弃,被 option-config.useKey 替换
88
+ optionKey: Boolean
89
+ },
90
+ inject: {
91
+ $xeModal: {
92
+ default: null
93
+ },
94
+ $xeDrawer: {
95
+ default: null
96
+ },
97
+ $xeTable: {
98
+ default: null
99
+ },
100
+ $xeForm: {
101
+ default: null
102
+ },
103
+ formItemInfo: {
104
+ from: 'xeFormItemInfo',
105
+ default: null
106
+ }
107
+ },
108
+ provide: function provide() {
109
+ var $xeSelect = this;
110
+ return {
111
+ $xeSelect: $xeSelect
112
+ };
113
+ },
114
+ data: function data() {
115
+ var xID = _xeUtils.default.uniqueId();
116
+ var reactData = {
117
+ initialized: false,
118
+ staticOptions: [],
119
+ fullGroupList: [],
120
+ fullOptionList: [],
121
+ visibleGroupList: [],
122
+ visibleOptionList: [],
123
+ remoteValueList: [],
124
+ panelIndex: 0,
125
+ panelStyle: {},
126
+ panelPlacement: null,
127
+ currentOption: null,
128
+ currentValue: null,
129
+ triggerFocusPanel: false,
130
+ visiblePanel: false,
131
+ isAniVisible: false,
132
+ isActivated: false,
133
+ searchValue: '',
134
+ searchLoading: false
135
+ };
136
+ var internalData = {
137
+ hpTimeout: undefined
138
+ };
139
+ return {
140
+ xID: xID,
141
+ reactData: reactData,
142
+ internalData: internalData
143
+ };
144
+ },
145
+ computed: Object.assign(Object.assign({}, {}), {
146
+ computeFormReadonly: function computeFormReadonly() {
147
+ var $xeSelect = this;
148
+ var props = $xeSelect;
149
+ var $xeForm = $xeSelect.$xeForm;
150
+ var readonly = props.readonly;
151
+ if (readonly === null) {
152
+ if ($xeForm) {
153
+ return $xeForm.readonly;
154
+ }
155
+ return false;
156
+ }
157
+ return readonly;
158
+ },
159
+ computeIsDisabled: function computeIsDisabled() {
160
+ var $xeSelect = this;
161
+ var props = $xeSelect;
162
+ var $xeForm = $xeSelect.$xeForm;
163
+ var disabled = props.disabled;
164
+ if (disabled === null) {
165
+ if ($xeForm) {
166
+ return $xeForm.disabled;
167
+ }
168
+ return false;
169
+ }
170
+ return disabled;
171
+ },
172
+ computeBtnTransfer: function computeBtnTransfer() {
173
+ var $xeSelect = this;
174
+ var props = $xeSelect;
175
+ var $xeTable = $xeSelect.$xeTable;
176
+ var $xeModal = $xeSelect.$xeModal;
177
+ var $xeDrawer = $xeSelect.$xeDrawer;
178
+ var $xeForm = $xeSelect.$xeForm;
179
+ var transfer = props.transfer;
180
+ if (transfer === null) {
181
+ var globalTransfer = (0, _ui.getConfig)().select.transfer;
182
+ if (_xeUtils.default.isBoolean(globalTransfer)) {
183
+ return globalTransfer;
184
+ }
185
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
186
+ return true;
187
+ }
188
+ }
189
+ return transfer;
190
+ },
191
+ computeInpPlaceholder: function computeInpPlaceholder() {
192
+ var $xeSelect = this;
193
+ var props = $xeSelect;
194
+ var placeholder = props.placeholder;
195
+ if (placeholder) {
196
+ return (0, _utils.getFuncText)(placeholder);
197
+ }
198
+ var globalPlaceholder = (0, _ui.getConfig)().select.placeholder;
199
+ if (globalPlaceholder) {
200
+ return (0, _utils.getFuncText)(globalPlaceholder);
201
+ }
202
+ return (0, _ui.getI18n)('vxe.base.pleaseSelect');
203
+ },
204
+ computePropsOpts: function computePropsOpts() {
205
+ var $xeSelect = this;
206
+ var props = $xeSelect;
207
+ return Object.assign({}, props.optionProps);
208
+ },
209
+ computeGroupPropsOpts: function computeGroupPropsOpts() {
210
+ var $xeSelect = this;
211
+ var props = $xeSelect;
212
+ return Object.assign({}, props.optionGroupProps);
213
+ },
214
+ computeLabelField: function computeLabelField() {
215
+ var $xeSelect = this;
216
+ var propsOpts = $xeSelect.computePropsOpts;
217
+ return propsOpts.label || 'label';
218
+ },
219
+ computeValueField: function computeValueField() {
220
+ var $xeSelect = this;
221
+ var propsOpts = $xeSelect.computePropsOpts;
222
+ return propsOpts.value || 'value';
223
+ },
224
+ computeGroupLabelField: function computeGroupLabelField() {
225
+ var $xeSelect = this;
226
+ var groupPropsOpts = $xeSelect.computeGroupPropsOpts;
227
+ return groupPropsOpts.label || 'label';
228
+ },
229
+ computeGroupOptionsField: function computeGroupOptionsField() {
230
+ var $xeSelect = this;
231
+ var groupPropsOpts = $xeSelect.computeGroupPropsOpts;
232
+ return groupPropsOpts.options || 'options';
233
+ },
234
+ computeIsMaximize: function computeIsMaximize() {
235
+ var $xeSelect = this;
236
+ var props = $xeSelect;
237
+ var value = props.value,
238
+ multiple = props.multiple,
239
+ max = props.max;
240
+ if (multiple && max) {
241
+ return (_xeUtils.default.isArray(value) ? value.length : _xeUtils.default.eqNull(value) ? 0 : 1) >= _xeUtils.default.toNumber(max);
242
+ }
243
+ return false;
244
+ },
245
+ computeOptionOpts: function computeOptionOpts() {
246
+ var $xeSelect = this;
247
+ var props = $xeSelect;
248
+ return Object.assign({}, (0, _ui.getConfig)().select.optionConfig, props.optionConfig);
249
+ },
250
+ computeIsGroup: function computeIsGroup() {
251
+ var $xeSelect = this;
252
+ var reactData = $xeSelect.reactData;
253
+ return reactData.fullGroupList.some(function (item) {
254
+ return item.options && item.options.length;
255
+ });
256
+ },
257
+ computeMultiMaxCharNum: function computeMultiMaxCharNum() {
258
+ var $xeSelect = this;
259
+ var props = $xeSelect;
260
+ return _xeUtils.default.toNumber(props.multiCharOverflow);
261
+ },
262
+ computeSelectLabel: function computeSelectLabel() {
263
+ var $xeSelect = this;
264
+ var props = $xeSelect;
265
+ var value = props.value,
266
+ multiple = props.multiple,
267
+ remote = props.remote;
268
+ var multiMaxCharNum = $xeSelect.computeMultiMaxCharNum;
269
+ if (value && multiple) {
270
+ var vals = _xeUtils.default.isArray(value) ? value : [value];
271
+ if (remote) {
272
+ return vals.map(function (val) {
273
+ return $xeSelect.getRemoteSelectLabel(val);
274
+ }).join(', ');
275
+ }
276
+ return vals.map(function (val) {
277
+ var label = $xeSelect.getSelectLabel(val);
278
+ if (multiMaxCharNum > 0 && label.length > multiMaxCharNum) {
279
+ return "".concat(label.substring(0, multiMaxCharNum), "...");
280
+ }
281
+ return label;
282
+ }).join(', ');
283
+ }
284
+ if (remote) {
285
+ return $xeSelect.getRemoteSelectLabel(value);
286
+ }
287
+ return $xeSelect.getSelectLabel(value);
288
+ }
289
+ }),
290
+ methods: {
291
+ //
292
+ // Method
293
+ //
294
+ dispatchEvent: function dispatchEvent(type, params, evnt) {
295
+ var $xeSelect = this;
296
+ $xeSelect.$emit(type, (0, _ui.createEvent)(evnt, {
297
+ $select: $xeSelect
298
+ }, params));
299
+ },
300
+ isPanelVisible: function isPanelVisible() {
301
+ var $xeSelect = this;
302
+ var reactData = $xeSelect.reactData;
303
+ return reactData.visiblePanel;
304
+ },
305
+ togglePanel: function togglePanel() {
306
+ var $xeSelect = this;
307
+ var reactData = $xeSelect.reactData;
308
+ if (reactData.visiblePanel) {
309
+ $xeSelect.hideOptionPanel();
310
+ } else {
311
+ $xeSelect.showOptionPanel();
312
+ }
313
+ return $xeSelect.$nextTick();
314
+ },
315
+ hidePanel: function hidePanel() {
316
+ var $xeSelect = this;
317
+ var reactData = $xeSelect.reactData;
318
+ if (reactData.visiblePanel) {
319
+ $xeSelect.hideOptionPanel();
320
+ }
321
+ return $xeSelect.$nextTick();
322
+ },
323
+ showPanel: function showPanel() {
324
+ var $xeSelect = this;
325
+ var reactData = $xeSelect.reactData;
326
+ if (!reactData.visiblePanel) {
327
+ $xeSelect.showOptionPanel();
328
+ }
329
+ return $xeSelect.$nextTick();
330
+ },
331
+ focus: function focus() {
332
+ var $xeSelect = this;
333
+ var reactData = $xeSelect.reactData;
334
+ var $input = $xeSelect.$refs.refInput;
335
+ reactData.isActivated = true;
336
+ $input.blur();
337
+ return $xeSelect.$nextTick();
338
+ },
339
+ blur: function blur() {
340
+ var $xeSelect = this;
341
+ var reactData = $xeSelect.reactData;
342
+ var $input = $xeSelect.$refs.refInput;
343
+ $input.blur();
344
+ reactData.isActivated = false;
345
+ return $xeSelect.$nextTick();
346
+ },
347
+ callSlot: function callSlot(slotFunc, params) {
348
+ var $xeSelect = this;
349
+ var slots = $xeSelect.$scopedSlots;
350
+ if (slotFunc) {
351
+ if (_xeUtils.default.isString(slotFunc)) {
352
+ slotFunc = slots[slotFunc] || null;
353
+ }
354
+ if (_xeUtils.default.isFunction(slotFunc)) {
355
+ return (0, _vn.getSlotVNs)(slotFunc(params));
356
+ }
357
+ }
358
+ return [];
359
+ },
360
+ findOption: function findOption(optionValue) {
361
+ var $xeSelect = this;
362
+ var reactData = $xeSelect.reactData;
363
+ var fullOptionList = reactData.fullOptionList,
364
+ fullGroupList = reactData.fullGroupList;
365
+ var isGroup = $xeSelect.computeIsGroup;
366
+ var valueField = $xeSelect.computeValueField;
367
+ if (isGroup) {
368
+ for (var gIndex = 0; gIndex < fullGroupList.length; gIndex++) {
369
+ var group = fullGroupList[gIndex];
370
+ if (group.options) {
371
+ for (var index = 0; index < group.options.length; index++) {
372
+ var option = group.options[index];
373
+ if (optionValue === option[valueField]) {
374
+ return option;
375
+ }
376
+ }
377
+ }
378
+ }
379
+ }
380
+ return fullOptionList.find(function (item) {
381
+ return optionValue === item[valueField];
382
+ });
383
+ },
384
+ findVisibleOption: function findVisibleOption(optionValue) {
385
+ var $xeSelect = this;
386
+ var reactData = $xeSelect.reactData;
387
+ var visibleOptionList = reactData.visibleOptionList,
388
+ visibleGroupList = reactData.visibleGroupList;
389
+ var isGroup = $xeSelect.computeIsGroup;
390
+ var valueField = $xeSelect.computeValueField;
391
+ if (isGroup) {
392
+ for (var gIndex = 0; gIndex < visibleGroupList.length; gIndex++) {
393
+ var group = visibleGroupList[gIndex];
394
+ if (group.options) {
395
+ for (var index = 0; index < group.options.length; index++) {
396
+ var option = group.options[index];
397
+ if (optionValue === option[valueField]) {
398
+ return option;
399
+ }
400
+ }
401
+ }
402
+ }
403
+ }
404
+ return visibleOptionList.find(function (item) {
405
+ return optionValue === item[valueField];
406
+ });
407
+ },
408
+ getRemoteSelectLabel: function getRemoteSelectLabel(value) {
409
+ var $xeSelect = this;
410
+ var reactData = $xeSelect.reactData;
411
+ var remoteValueList = reactData.remoteValueList;
412
+ var labelField = $xeSelect.computeLabelField;
413
+ var remoteItem = remoteValueList.find(function (item) {
414
+ return value === item.key;
415
+ });
416
+ var item = remoteItem ? remoteItem.result : null;
417
+ return _xeUtils.default.toValueString(item ? item[labelField] : value);
418
+ },
419
+ getSelectLabel: function getSelectLabel(value) {
420
+ var $xeSelect = this;
421
+ var labelField = $xeSelect.computeLabelField;
422
+ var item = $xeSelect.findOption(value);
423
+ return _xeUtils.default.toValueString(item ? item[labelField] : value);
424
+ },
425
+ getOptkey: function getOptkey() {
426
+ var $xeSelect = this;
427
+ var props = $xeSelect;
428
+ var optionOpts = $xeSelect.computeOptionOpts;
429
+ return optionOpts.keyField || props.optionId || '_X_OPTION_KEY';
430
+ },
431
+ getOptid: function getOptid(option) {
432
+ var $xeSelect = this;
433
+ var optid = option[$xeSelect.getOptkey()];
434
+ return optid ? encodeURIComponent(optid) : '';
435
+ },
436
+ /**
437
+ * 刷新选项,当选项被动态显示/隐藏时可能会用到
438
+ */
439
+ refreshOption: function refreshOption() {
440
+ var $xeSelect = this;
441
+ var props = $xeSelect;
442
+ var reactData = $xeSelect.reactData;
443
+ var filterable = props.filterable,
444
+ filterMethod = props.filterMethod;
445
+ var fullOptionList = reactData.fullOptionList,
446
+ fullGroupList = reactData.fullGroupList,
447
+ searchValue = reactData.searchValue;
448
+ var isGroup = $xeSelect.computeIsGroup;
449
+ var groupLabelField = $xeSelect.computeGroupLabelField;
450
+ var labelField = $xeSelect.computeLabelField;
451
+ var searchStr = "".concat(searchValue || '').toLowerCase();
452
+ if (isGroup) {
453
+ if (filterable && filterMethod) {
454
+ reactData.visibleGroupList = fullGroupList.filter(function (group) {
455
+ return isOptionVisible(group) && filterMethod({
456
+ group: group,
457
+ option: null,
458
+ searchValue: searchStr
459
+ });
460
+ });
461
+ } else if (filterable) {
462
+ reactData.visibleGroupList = fullGroupList.filter(function (group) {
463
+ return isOptionVisible(group) && (!searchStr || "".concat(group[groupLabelField]).toLowerCase().indexOf(searchStr) > -1);
464
+ });
465
+ } else {
466
+ reactData.visibleGroupList = fullGroupList.filter(isOptionVisible);
467
+ }
468
+ } else {
469
+ if (filterable && filterMethod) {
470
+ reactData.visibleOptionList = fullOptionList.filter(function (option) {
471
+ return isOptionVisible(option) && filterMethod({
472
+ group: null,
473
+ option: option,
474
+ searchValue: searchStr
475
+ });
476
+ });
477
+ } else if (filterable) {
478
+ reactData.visibleOptionList = fullOptionList.filter(function (option) {
479
+ return isOptionVisible(option) && (!searchStr || "".concat(option[labelField]).toLowerCase().indexOf(searchStr) > -1);
480
+ });
481
+ } else {
482
+ reactData.visibleOptionList = fullOptionList.filter(isOptionVisible);
483
+ }
484
+ }
485
+ return $xeSelect.$nextTick();
486
+ },
487
+ cacheItemMap: function cacheItemMap() {
488
+ var $xeSelect = this;
489
+ var reactData = $xeSelect.reactData;
490
+ var fullOptionList = reactData.fullOptionList,
491
+ fullGroupList = reactData.fullGroupList;
492
+ var groupOptionsField = $xeSelect.computeGroupOptionsField;
493
+ var key = $xeSelect.getOptkey();
494
+ var handleOptis = function handleOptis(item) {
495
+ if (!$xeSelect.getOptid(item)) {
496
+ item[key] = getOptUniqueId();
497
+ }
498
+ };
499
+ if (fullGroupList.length) {
500
+ fullGroupList.forEach(function (group) {
501
+ handleOptis(group);
502
+ if (group[groupOptionsField]) {
503
+ group[groupOptionsField].forEach(handleOptis);
504
+ }
505
+ });
506
+ } else if (fullOptionList.length) {
507
+ fullOptionList.forEach(handleOptis);
508
+ }
509
+ $xeSelect.refreshOption();
510
+ },
511
+ setCurrentOption: function setCurrentOption(option) {
512
+ var $xeSelect = this;
513
+ var reactData = $xeSelect.reactData;
514
+ var valueField = $xeSelect.computeValueField;
515
+ if (option) {
516
+ reactData.currentOption = option;
517
+ reactData.currentValue = option[valueField];
518
+ }
519
+ },
520
+ scrollToOption: function scrollToOption(option, isAlignBottom) {
521
+ var $xeSelect = this;
522
+ return $xeSelect.$nextTick().then(function () {
523
+ if (option) {
524
+ var optWrapperElem = $xeSelect.$refs.refOptionWrapper;
525
+ var panelElem = $xeSelect.$refs.refOptionPanel;
526
+ var optElem = panelElem.querySelector("[optid='".concat($xeSelect.getOptid(option), "']"));
527
+ if (optWrapperElem && optElem) {
528
+ var wrapperHeight = optWrapperElem.offsetHeight;
529
+ var offsetPadding = 5;
530
+ if (isAlignBottom) {
531
+ if (optElem.offsetTop + optElem.offsetHeight - optWrapperElem.scrollTop > wrapperHeight) {
532
+ optWrapperElem.scrollTop = optElem.offsetTop + optElem.offsetHeight - wrapperHeight;
533
+ }
534
+ } else {
535
+ if (optElem.offsetTop + offsetPadding < optWrapperElem.scrollTop || optElem.offsetTop + offsetPadding > optWrapperElem.scrollTop + optWrapperElem.clientHeight) {
536
+ optWrapperElem.scrollTop = optElem.offsetTop - offsetPadding;
537
+ }
538
+ }
539
+ }
540
+ }
541
+ });
542
+ },
543
+ updateZindex: function updateZindex() {
544
+ var $xeSelect = this;
545
+ var reactData = $xeSelect.reactData;
546
+ if (reactData.panelIndex < (0, _utils.getLastZIndex)()) {
547
+ reactData.panelIndex = (0, _utils.nextZIndex)();
548
+ }
549
+ },
550
+ updatePlacement: function updatePlacement() {
551
+ var $xeSelect = this;
552
+ var props = $xeSelect;
553
+ var reactData = $xeSelect.reactData;
554
+ return $xeSelect.$nextTick().then(function () {
555
+ var placement = props.placement;
556
+ var panelIndex = reactData.panelIndex;
557
+ var el = $xeSelect.$refs.refElem;
558
+ var panelElem = $xeSelect.$refs.refOptionPanel;
559
+ var btnTransfer = $xeSelect.computeBtnTransfer;
560
+ if (panelElem && el) {
561
+ var targetHeight = el.offsetHeight;
562
+ var targetWidth = el.offsetWidth;
563
+ var panelHeight = panelElem.offsetHeight;
564
+ var panelWidth = panelElem.offsetWidth;
565
+ var marginSize = 5;
566
+ var panelStyle = {
567
+ zIndex: panelIndex
568
+ };
569
+ var _getAbsolutePos = (0, _dom.getAbsolutePos)(el),
570
+ boundingTop = _getAbsolutePos.boundingTop,
571
+ boundingLeft = _getAbsolutePos.boundingLeft,
572
+ visibleHeight = _getAbsolutePos.visibleHeight,
573
+ visibleWidth = _getAbsolutePos.visibleWidth;
574
+ var panelPlacement = 'bottom';
575
+ if (btnTransfer) {
576
+ var left = boundingLeft;
577
+ var top = boundingTop + targetHeight;
578
+ if (placement === 'top') {
579
+ panelPlacement = 'top';
580
+ top = boundingTop - panelHeight;
581
+ } else if (!placement) {
582
+ // 如果下面不够放,则向上
583
+ if (top + panelHeight + marginSize > visibleHeight) {
584
+ panelPlacement = 'top';
585
+ top = boundingTop - panelHeight;
586
+ }
587
+ // 如果上面不够放,则向下(优先)
588
+ if (top < marginSize) {
589
+ panelPlacement = 'bottom';
590
+ top = boundingTop + targetHeight;
591
+ }
592
+ }
593
+ // 如果溢出右边
594
+ if (left + panelWidth + marginSize > visibleWidth) {
595
+ left -= left + panelWidth + marginSize - visibleWidth;
596
+ }
597
+ // 如果溢出左边
598
+ if (left < marginSize) {
599
+ left = marginSize;
600
+ }
601
+ Object.assign(panelStyle, {
602
+ left: "".concat(left, "px"),
603
+ top: "".concat(top, "px"),
604
+ minWidth: "".concat(targetWidth, "px")
605
+ });
606
+ } else {
607
+ if (placement === 'top') {
608
+ panelPlacement = 'top';
609
+ panelStyle.bottom = "".concat(targetHeight, "px");
610
+ } else if (!placement) {
611
+ // 如果下面不够放,则向上
612
+ if (boundingTop + targetHeight + panelHeight > visibleHeight) {
613
+ // 如果上面不够放,则向下(优先)
614
+ if (boundingTop - targetHeight - panelHeight > marginSize) {
615
+ panelPlacement = 'top';
616
+ panelStyle.bottom = "".concat(targetHeight, "px");
617
+ }
618
+ }
619
+ }
620
+ }
621
+ reactData.panelStyle = panelStyle;
622
+ reactData.panelPlacement = panelPlacement;
623
+ return $xeSelect.$nextTick();
624
+ }
625
+ });
626
+ },
627
+ showOptionPanel: function showOptionPanel() {
628
+ var $xeSelect = this;
629
+ var props = $xeSelect;
630
+ var reactData = $xeSelect.reactData;
631
+ var internalData = $xeSelect.internalData;
632
+ var loading = props.loading,
633
+ filterable = props.filterable;
634
+ var hpTimeout = internalData.hpTimeout;
635
+ var isDisabled = $xeSelect.computeIsDisabled;
636
+ if (!loading && !isDisabled) {
637
+ if (hpTimeout) {
638
+ clearTimeout(hpTimeout);
639
+ internalData.hpTimeout = undefined;
640
+ }
641
+ if (!reactData.initialized) {
642
+ reactData.initialized = true;
643
+ }
644
+ reactData.isActivated = true;
645
+ reactData.isAniVisible = true;
646
+ if (filterable) {
647
+ $xeSelect.refreshOption();
648
+ }
649
+ setTimeout(function () {
650
+ var value = props.value;
651
+ var currOption = $xeSelect.findOption(_xeUtils.default.isArray(value) ? value[0] : value);
652
+ reactData.visiblePanel = true;
653
+ if (currOption) {
654
+ $xeSelect.setCurrentOption(currOption);
655
+ $xeSelect.scrollToOption(currOption);
656
+ }
657
+ $xeSelect.handleFocusSearch();
658
+ }, 10);
659
+ $xeSelect.updateZindex();
660
+ $xeSelect.updatePlacement();
661
+ }
662
+ },
663
+ hideOptionPanel: function hideOptionPanel() {
664
+ var $xeSelect = this;
665
+ var reactData = $xeSelect.reactData;
666
+ var internalData = $xeSelect.internalData;
667
+ reactData.searchValue = '';
668
+ reactData.searchLoading = false;
669
+ reactData.visiblePanel = false;
670
+ internalData.hpTimeout = window.setTimeout(function () {
671
+ reactData.isAniVisible = false;
672
+ }, 350);
673
+ },
674
+ changeEvent: function changeEvent(evnt, selectValue) {
675
+ var $xeSelect = this;
676
+ var props = $xeSelect;
677
+ var $xeForm = $xeSelect.$xeForm;
678
+ var formItemInfo = $xeSelect.formItemInfo;
679
+ if (selectValue !== props.value) {
680
+ $xeSelect.$emit('modelValue', selectValue);
681
+ $xeSelect.dispatchEvent('change', {
682
+ value: selectValue
683
+ }, evnt);
684
+ // 自动更新校验状态
685
+ if ($xeForm && formItemInfo) {
686
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, selectValue);
687
+ }
688
+ }
689
+ },
690
+ clearValueEvent: function clearValueEvent(evnt, selectValue) {
691
+ var $xeSelect = this;
692
+ var reactData = $xeSelect.reactData;
693
+ reactData.remoteValueList = [];
694
+ $xeSelect.changeEvent(evnt, selectValue);
695
+ $xeSelect.dispatchEvent('clear', {
696
+ value: selectValue
697
+ }, evnt);
698
+ },
699
+ clearEvent: function clearEvent(params, evnt) {
700
+ var $xeSelect = this;
701
+ $xeSelect.clearValueEvent(evnt, null);
702
+ $xeSelect.hideOptionPanel();
703
+ },
704
+ changeOptionEvent: function changeOptionEvent(evnt, selectValue, option) {
705
+ var $xeSelect = this;
706
+ var props = $xeSelect;
707
+ var reactData = $xeSelect.reactData;
708
+ var value = props.value,
709
+ multiple = props.multiple;
710
+ var remoteValueList = reactData.remoteValueList;
711
+ if (multiple) {
712
+ var multipleValue = [];
713
+ var selectVals = _xeUtils.default.eqNull(value) ? [] : _xeUtils.default.isArray(value) ? value : [value];
714
+ var index = _xeUtils.default.findIndexOf(selectVals, function (val) {
715
+ return val === selectValue;
716
+ });
717
+ if (index === -1) {
718
+ multipleValue = selectVals.concat([selectValue]);
719
+ } else {
720
+ multipleValue = selectVals.filter(function (val) {
721
+ return val !== selectValue;
722
+ });
723
+ }
724
+ var remoteItem = remoteValueList.find(function (item) {
725
+ return item.key === selectValue;
726
+ });
727
+ if (remoteItem) {
728
+ remoteItem.result = option;
729
+ } else {
730
+ remoteValueList.push({
731
+ key: selectValue,
732
+ result: option
733
+ });
734
+ }
735
+ $xeSelect.changeEvent(evnt, multipleValue);
736
+ } else {
737
+ reactData.remoteValueList = [{
738
+ key: selectValue,
739
+ result: option
740
+ }];
741
+ $xeSelect.changeEvent(evnt, selectValue);
742
+ $xeSelect.hideOptionPanel();
743
+ }
744
+ },
745
+ handleGlobalMousewheelEvent: function handleGlobalMousewheelEvent(evnt) {
746
+ var $xeSelect = this;
747
+ var reactData = $xeSelect.reactData;
748
+ var visiblePanel = reactData.visiblePanel;
749
+ var isDisabled = $xeSelect.computeIsDisabled;
750
+ if (!isDisabled) {
751
+ if (visiblePanel) {
752
+ var panelElem = $xeSelect.$refs.refOptionPanel;
753
+ if ((0, _dom.getEventTargetNode)(evnt, panelElem).flag) {
754
+ $xeSelect.updatePlacement();
755
+ } else {
756
+ $xeSelect.hideOptionPanel();
757
+ }
758
+ }
759
+ }
760
+ },
761
+ handleGlobalMousedownEvent: function handleGlobalMousedownEvent(evnt) {
762
+ var $xeSelect = this;
763
+ var reactData = $xeSelect.reactData;
764
+ var visiblePanel = reactData.visiblePanel;
765
+ var isDisabled = $xeSelect.computeIsDisabled;
766
+ if (!isDisabled) {
767
+ var el = $xeSelect.$refs.refElem;
768
+ var panelElem = $xeSelect.$refs.refOptionPanel;
769
+ reactData.isActivated = (0, _dom.getEventTargetNode)(evnt, el).flag || (0, _dom.getEventTargetNode)(evnt, panelElem).flag;
770
+ if (visiblePanel && !reactData.isActivated) {
771
+ $xeSelect.hideOptionPanel();
772
+ }
773
+ }
774
+ },
775
+ findOffsetOption: function findOffsetOption(optionValue, isUpArrow) {
776
+ var $xeSelect = this;
777
+ var reactData = $xeSelect.reactData;
778
+ var visibleOptionList = reactData.visibleOptionList,
779
+ visibleGroupList = reactData.visibleGroupList;
780
+ var isGroup = $xeSelect.computeIsGroup;
781
+ var valueField = $xeSelect.computeValueField;
782
+ var groupOptionsField = $xeSelect.computeGroupOptionsField;
783
+ var firstOption;
784
+ var prevOption;
785
+ var nextOption;
786
+ var currOption;
787
+ if (isGroup) {
788
+ for (var gIndex = 0; gIndex < visibleGroupList.length; gIndex++) {
789
+ var group = visibleGroupList[gIndex];
790
+ var groupOptionList = group[groupOptionsField];
791
+ var isGroupDisabled = group.disabled;
792
+ if (groupOptionList) {
793
+ for (var index = 0; index < groupOptionList.length; index++) {
794
+ var option = groupOptionList[index];
795
+ var isVisible = isOptionVisible(option);
796
+ var isDisabled = isGroupDisabled || option.disabled;
797
+ if (!firstOption && !isDisabled) {
798
+ firstOption = option;
799
+ }
800
+ if (currOption) {
801
+ if (isVisible && !isDisabled) {
802
+ nextOption = option;
803
+ if (!isUpArrow) {
804
+ return {
805
+ offsetOption: nextOption
806
+ };
807
+ }
808
+ }
809
+ }
810
+ if (optionValue === option[valueField]) {
811
+ currOption = option;
812
+ if (isUpArrow) {
813
+ return {
814
+ offsetOption: prevOption
815
+ };
816
+ }
817
+ } else {
818
+ if (isVisible && !isDisabled) {
819
+ prevOption = option;
820
+ }
821
+ }
822
+ }
823
+ }
824
+ }
825
+ } else {
826
+ for (var _index = 0; _index < visibleOptionList.length; _index++) {
827
+ var _option = visibleOptionList[_index];
828
+ var _isDisabled = _option.disabled;
829
+ if (!firstOption && !_isDisabled) {
830
+ firstOption = _option;
831
+ }
832
+ if (currOption) {
833
+ if (!_isDisabled) {
834
+ nextOption = _option;
835
+ if (!isUpArrow) {
836
+ return {
837
+ offsetOption: nextOption
838
+ };
839
+ }
840
+ }
841
+ }
842
+ if (optionValue === _option[valueField]) {
843
+ currOption = _option;
844
+ if (isUpArrow) {
845
+ return {
846
+ offsetOption: prevOption
847
+ };
848
+ }
849
+ } else {
850
+ if (!_isDisabled) {
851
+ prevOption = _option;
852
+ }
853
+ }
854
+ }
855
+ }
856
+ return {
857
+ firstOption: firstOption
858
+ };
859
+ },
860
+ handleGlobalKeydownEvent: function handleGlobalKeydownEvent(evnt) {
861
+ var $xeSelect = this;
862
+ var props = $xeSelect;
863
+ var reactData = $xeSelect.reactData;
864
+ var clearable = props.clearable;
865
+ var visiblePanel = reactData.visiblePanel,
866
+ currentValue = reactData.currentValue,
867
+ currentOption = reactData.currentOption;
868
+ var isDisabled = $xeSelect.computeIsDisabled;
869
+ if (!isDisabled) {
870
+ var isTab = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.TAB);
871
+ var isEnter = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ENTER);
872
+ var isEsc = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ESCAPE);
873
+ var isUpArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_UP);
874
+ var isDwArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_DOWN);
875
+ var isDel = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.DELETE);
876
+ var isSpacebar = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.SPACEBAR);
877
+ if (isTab) {
878
+ reactData.isActivated = false;
879
+ }
880
+ if (visiblePanel) {
881
+ if (isEsc || isTab) {
882
+ $xeSelect.hideOptionPanel();
883
+ } else if (isEnter) {
884
+ evnt.preventDefault();
885
+ evnt.stopPropagation();
886
+ $xeSelect.changeOptionEvent(evnt, currentValue, currentOption);
887
+ } else if (isUpArrow || isDwArrow) {
888
+ evnt.preventDefault();
889
+ var _$xeSelect$findOffset = $xeSelect.findOffsetOption(currentValue, isUpArrow),
890
+ firstOption = _$xeSelect$findOffset.firstOption,
891
+ offsetOption = _$xeSelect$findOffset.offsetOption;
892
+ if (!offsetOption && !$xeSelect.findVisibleOption(currentValue)) {
893
+ offsetOption = firstOption;
894
+ }
895
+ $xeSelect.setCurrentOption(offsetOption);
896
+ $xeSelect.scrollToOption(offsetOption, isDwArrow);
897
+ } else if (isSpacebar) {
898
+ evnt.preventDefault();
899
+ }
900
+ } else if ((isUpArrow || isDwArrow || isEnter || isSpacebar) && reactData.isActivated) {
901
+ evnt.preventDefault();
902
+ $xeSelect.showOptionPanel();
903
+ }
904
+ if (reactData.isActivated) {
905
+ if (isDel && clearable) {
906
+ $xeSelect.clearValueEvent(evnt, null);
907
+ }
908
+ }
909
+ }
910
+ },
911
+ handleGlobalBlurEvent: function handleGlobalBlurEvent() {
912
+ var $xeSelect = this;
913
+ $xeSelect.hideOptionPanel();
914
+ },
915
+ handleFocusSearch: function handleFocusSearch() {
916
+ var $xeSelect = this;
917
+ var props = $xeSelect;
918
+ if (props.filterable) {
919
+ $xeSelect.$nextTick(function () {
920
+ var inpSearch = $xeSelect.$refs.refInpSearch;
921
+ if (inpSearch) {
922
+ inpSearch.focus();
923
+ }
924
+ });
925
+ }
926
+ },
927
+ focusEvent: function focusEvent(evnt) {
928
+ var $xeSelect = this;
929
+ var reactData = $xeSelect.reactData;
930
+ var isDisabled = $xeSelect.computeIsDisabled;
931
+ if (!isDisabled) {
932
+ if (!reactData.visiblePanel) {
933
+ reactData.triggerFocusPanel = true;
934
+ $xeSelect.showOptionPanel();
935
+ setTimeout(function () {
936
+ reactData.triggerFocusPanel = false;
937
+ }, 150);
938
+ }
939
+ }
940
+ $xeSelect.dispatchEvent('focus', {}, evnt);
941
+ },
942
+ clickEvent: function clickEvent(evnt) {
943
+ var $xeSelect = this;
944
+ $xeSelect.togglePanelEvent(evnt);
945
+ $xeSelect.dispatchEvent('click', {}, evnt);
946
+ },
947
+ blurEvent: function blurEvent(evnt) {
948
+ var $xeSelect = this;
949
+ var reactData = $xeSelect.reactData;
950
+ reactData.isActivated = false;
951
+ $xeSelect.dispatchEvent('blur', {}, evnt);
952
+ },
953
+ modelSearchEvent: function modelSearchEvent(value) {
954
+ var $xeSelect = this;
955
+ var reactData = $xeSelect.reactData;
956
+ reactData.searchValue = value;
957
+ },
958
+ focusSearchEvent: function focusSearchEvent() {
959
+ var $xeSelect = this;
960
+ var reactData = $xeSelect.reactData;
961
+ reactData.isActivated = true;
962
+ },
963
+ handleSearchEvent: function handleSearchEvent() {
964
+ var $xeSelect = this;
965
+ var props = $xeSelect;
966
+ var reactData = $xeSelect.reactData;
967
+ var remote = props.remote,
968
+ remoteMethod = props.remoteMethod;
969
+ var searchValue = reactData.searchValue;
970
+ if (remote && remoteMethod) {
971
+ reactData.searchLoading = true;
972
+ Promise.resolve(remoteMethod({
973
+ searchValue: searchValue
974
+ })).then(function () {
975
+ return $xeSelect.$nextTick();
976
+ }).catch(function () {
977
+ return $xeSelect.$nextTick();
978
+ }).finally(function () {
979
+ reactData.searchLoading = false;
980
+ $xeSelect.refreshOption();
981
+ });
982
+ } else {
983
+ $xeSelect.refreshOption();
984
+ }
985
+ },
986
+ triggerSearchEvent: _xeUtils.default.debounce(function () {
987
+ var $xeSelect = this;
988
+ $xeSelect.handleSearchEvent();
989
+ }, 350, {
990
+ trailing: true
991
+ }),
992
+ togglePanelEvent: function togglePanelEvent(params) {
993
+ var $xeSelect = this;
994
+ var reactData = $xeSelect.reactData;
995
+ var $event = params.$event;
996
+ $event.preventDefault();
997
+ if (reactData.triggerFocusPanel) {
998
+ reactData.triggerFocusPanel = false;
999
+ } else {
1000
+ if (reactData.visiblePanel) {
1001
+ $xeSelect.hideOptionPanel();
1002
+ } else {
1003
+ $xeSelect.showOptionPanel();
1004
+ }
1005
+ }
1006
+ },
1007
+ checkOptionDisabled: function checkOptionDisabled(isSelected, option, group) {
1008
+ var $xeSelect = this;
1009
+ if (option.disabled) {
1010
+ return true;
1011
+ }
1012
+ if (group && group.disabled) {
1013
+ return true;
1014
+ }
1015
+ var isMaximize = $xeSelect.computeIsMaximize;
1016
+ if (isMaximize && !isSelected) {
1017
+ return true;
1018
+ }
1019
+ return false;
1020
+ },
1021
+ //
1022
+ // Render
1023
+ //
1024
+ renderOption: function renderOption(h, list, group) {
1025
+ var $xeSelect = this;
1026
+ var props = $xeSelect;
1027
+ var slots = $xeSelect.$scopedSlots;
1028
+ var reactData = $xeSelect.reactData;
1029
+ var optionKey = props.optionKey,
1030
+ value = props.value;
1031
+ var currentValue = reactData.currentValue;
1032
+ var optionOpts = $xeSelect.computeOptionOpts;
1033
+ var labelField = $xeSelect.computeLabelField;
1034
+ var valueField = $xeSelect.computeValueField;
1035
+ var isGroup = $xeSelect.computeIsGroup;
1036
+ var useKey = optionOpts.useKey;
1037
+ var optionSlot = slots.option;
1038
+ return list.map(function (option, cIndex) {
1039
+ var slots = option.slots,
1040
+ className = option.className;
1041
+ var optionValue = option[valueField];
1042
+ var isSelected = _xeUtils.default.isArray(value) ? value.indexOf(optionValue) > -1 : value === optionValue;
1043
+ var isVisible = !isGroup || isOptionVisible(option);
1044
+ var isDisabled = $xeSelect.checkOptionDisabled(isSelected, option, group);
1045
+ var optid = $xeSelect.getOptid(option);
1046
+ var defaultSlot = slots ? slots.default : null;
1047
+ var optParams = {
1048
+ option: option,
1049
+ group: null,
1050
+ $select: $xeSelect
1051
+ };
1052
+ return isVisible ? h('div', {
1053
+ key: useKey || optionKey ? optid : cIndex,
1054
+ class: ['vxe-select-option', className ? _xeUtils.default.isFunction(className) ? className(optParams) : className : '', {
1055
+ 'is--disabled': isDisabled,
1056
+ 'is--selected': isSelected,
1057
+ 'is--hover': currentValue === optionValue
1058
+ }],
1059
+ attrs: {
1060
+ optid: optid
1061
+ },
1062
+ on: {
1063
+ mousedown: function mousedown(evnt) {
1064
+ var isLeftBtn = evnt.button === 0;
1065
+ if (isLeftBtn) {
1066
+ evnt.stopPropagation();
1067
+ }
1068
+ },
1069
+ click: function click(evnt) {
1070
+ if (!isDisabled) {
1071
+ $xeSelect.changeOptionEvent(evnt, optionValue, option);
1072
+ }
1073
+ },
1074
+ mouseenter: function mouseenter() {
1075
+ if (!isDisabled) {
1076
+ $xeSelect.setCurrentOption(option);
1077
+ }
1078
+ }
1079
+ }
1080
+ }, optionSlot ? $xeSelect.callSlot(optionSlot, optParams) : defaultSlot ? $xeSelect.callSlot(defaultSlot, optParams) : (0, _utils.getFuncText)(option[labelField])) : (0, _ui.renderEmptyElement)($xeSelect);
1081
+ });
1082
+ },
1083
+ renderOptgroup: function renderOptgroup(h) {
1084
+ var $xeSelect = this;
1085
+ var props = $xeSelect;
1086
+ var slots = $xeSelect.$scopedSlots;
1087
+ var reactData = $xeSelect.reactData;
1088
+ var optionKey = props.optionKey;
1089
+ var visibleGroupList = reactData.visibleGroupList;
1090
+ var optionOpts = $xeSelect.computeOptionOpts;
1091
+ var groupLabelField = $xeSelect.computeGroupLabelField;
1092
+ var groupOptionsField = $xeSelect.computeGroupOptionsField;
1093
+ var useKey = optionOpts.useKey;
1094
+ var optionSlot = slots.option;
1095
+ return visibleGroupList.map(function (group, gIndex) {
1096
+ var slots = group.slots,
1097
+ className = group.className;
1098
+ var optid = $xeSelect.getOptid(group);
1099
+ var isGroupDisabled = group.disabled;
1100
+ var defaultSlot = slots ? slots.default : null;
1101
+ var optParams = {
1102
+ option: group,
1103
+ group: group,
1104
+ $select: $xeSelect
1105
+ };
1106
+ return h('div', {
1107
+ key: useKey || optionKey ? optid : gIndex,
1108
+ class: ['vxe-optgroup', className ? _xeUtils.default.isFunction(className) ? className(optParams) : className : '', {
1109
+ 'is--disabled': isGroupDisabled
1110
+ }],
1111
+ attrs: {
1112
+ optid: optid
1113
+ }
1114
+ }, [h('div', {
1115
+ class: 'vxe-optgroup--title'
1116
+ }, optionSlot ? $xeSelect.callSlot(optionSlot, optParams) : defaultSlot ? $xeSelect.callSlot(defaultSlot, optParams) : (0, _utils.getFuncText)(group[groupLabelField])), h('div', {
1117
+ class: 'vxe-optgroup--wrapper'
1118
+ }, $xeSelect.renderOption(h, group[groupOptionsField] || [], group))]);
1119
+ });
1120
+ },
1121
+ renderOpts: function renderOpts(h) {
1122
+ var $xeSelect = this;
1123
+ var props = $xeSelect;
1124
+ var reactData = $xeSelect.reactData;
1125
+ var visibleGroupList = reactData.visibleGroupList,
1126
+ visibleOptionList = reactData.visibleOptionList,
1127
+ searchLoading = reactData.searchLoading;
1128
+ var isGroup = $xeSelect.computeIsGroup;
1129
+ if (searchLoading) {
1130
+ return [h('div', {
1131
+ class: 'vxe-select--search-loading'
1132
+ }, [h('i', {
1133
+ class: ['vxe-select--search-icon', (0, _ui.getIcon)().SELECT_LOADED]
1134
+ }), h('span', {
1135
+ class: 'vxe-select--search-text'
1136
+ }, (0, _ui.getI18n)('vxe.select.loadingText'))])];
1137
+ }
1138
+ if (isGroup) {
1139
+ if (visibleGroupList.length) {
1140
+ return $xeSelect.renderOptgroup(h);
1141
+ }
1142
+ } else {
1143
+ if (visibleOptionList.length) {
1144
+ return $xeSelect.renderOption(h, visibleOptionList);
1145
+ }
1146
+ }
1147
+ return [h('div', {
1148
+ class: 'vxe-select--empty-placeholder'
1149
+ }, props.emptyText || (0, _ui.getI18n)('vxe.select.emptyText'))];
1150
+ },
1151
+ renderVN: function renderVN(h) {
1152
+ var $xeSelect = this;
1153
+ var props = $xeSelect;
1154
+ var slots = $xeSelect.$scopedSlots;
1155
+ var reactData = $xeSelect.reactData;
1156
+ var className = props.className,
1157
+ popupClassName = props.popupClassName,
1158
+ loading = props.loading,
1159
+ filterable = props.filterable;
1160
+ var initialized = reactData.initialized,
1161
+ isActivated = reactData.isActivated,
1162
+ visiblePanel = reactData.visiblePanel;
1163
+ var vSize = $xeSelect.computeSize;
1164
+ var isDisabled = $xeSelect.computeIsDisabled;
1165
+ var selectLabel = $xeSelect.computeSelectLabel;
1166
+ var btnTransfer = $xeSelect.computeBtnTransfer;
1167
+ var formReadonly = $xeSelect.computeFormReadonly;
1168
+ var inpPlaceholder = $xeSelect.computeInpPlaceholder;
1169
+ var defaultSlot = slots.default;
1170
+ var headerSlot = slots.header;
1171
+ var footerSlot = slots.footer;
1172
+ var prefixSlot = slots.prefix;
1173
+ if (formReadonly) {
1174
+ return h('div', {
1175
+ ref: 'refElem',
1176
+ class: ['vxe-select--readonly', className]
1177
+ }, [h('div', {
1178
+ class: 'vxe-select-slots',
1179
+ ref: 'hideOption'
1180
+ }, defaultSlot ? defaultSlot({}) : []), h('span', {
1181
+ class: 'vxe-select-label'
1182
+ }, [selectLabel])]);
1183
+ }
1184
+ return h('div', {
1185
+ ref: 'refElem',
1186
+ class: ['vxe-select', className ? _xeUtils.default.isFunction(className) ? className({
1187
+ $select: $xeSelect
1188
+ }) : className : '', _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'is--visible', visiblePanel), 'is--disabled', isDisabled), 'is--filter', filterable), 'is--loading', loading), 'is--active', isActivated)]
1189
+ }, [h('div', {
1190
+ class: 'vxe-select-slots',
1191
+ ref: 'hideOption'
1192
+ }, defaultSlot ? defaultSlot({}) : []), h(_input.default, {
1193
+ ref: 'refInput',
1194
+ props: {
1195
+ clearable: props.clearable,
1196
+ placeholder: inpPlaceholder,
1197
+ readonly: true,
1198
+ disabled: isDisabled,
1199
+ type: 'text',
1200
+ prefixIcon: props.prefixIcon,
1201
+ suffixIcon: loading ? (0, _ui.getIcon)().SELECT_LOADED : visiblePanel ? (0, _ui.getIcon)().SELECT_OPEN : (0, _ui.getIcon)().SELECT_CLOSE,
1202
+ value: selectLabel
1203
+ },
1204
+ on: {
1205
+ clear: $xeSelect.clearEvent,
1206
+ click: $xeSelect.clickEvent,
1207
+ focus: $xeSelect.focusEvent,
1208
+ blur: $xeSelect.blurEvent,
1209
+ suffixClick: $xeSelect.togglePanelEvent
1210
+ },
1211
+ scopedSlots: prefixSlot ? {
1212
+ prefix: function prefix() {
1213
+ return prefixSlot({});
1214
+ }
1215
+ } : {}
1216
+ }), h('div', {
1217
+ ref: 'refOptionPanel',
1218
+ class: ['vxe-table--ignore-clear vxe-select--panel', popupClassName ? _xeUtils.default.isFunction(popupClassName) ? popupClassName({
1219
+ $select: $xeSelect
1220
+ }) : popupClassName : '', _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'is--transfer', btnTransfer), 'ani--leave', !loading && reactData.isAniVisible), 'ani--enter', !loading && visiblePanel)],
1221
+ attrs: {
1222
+ placement: reactData.panelPlacement
1223
+ },
1224
+ style: reactData.panelStyle
1225
+ }, initialized ? [filterable ? h('div', {
1226
+ class: 'vxe-select--panel-search'
1227
+ }, [h(_input.default, {
1228
+ ref: 'refInpSearch',
1229
+ class: 'vxe-select-search--input',
1230
+ props: {
1231
+ value: reactData.searchValue,
1232
+ clearable: true,
1233
+ placeholder: (0, _ui.getI18n)('vxe.select.search'),
1234
+ prefixIcon: (0, _ui.getIcon)().INPUT_SEARCH
1235
+ },
1236
+ on: {
1237
+ modelValue: $xeSelect.modelSearchEvent,
1238
+ focus: $xeSelect.focusSearchEvent,
1239
+ change: $xeSelect.triggerSearchEvent,
1240
+ search: $xeSelect.triggerSearchEvent
1241
+ }
1242
+ })]) : (0, _ui.renderEmptyElement)($xeSelect), h('div', {
1243
+ class: 'vxe-select--panel-wrapper'
1244
+ }, [headerSlot ? h('div', {
1245
+ class: 'vxe-select--panel-header'
1246
+ }, headerSlot({})) : (0, _ui.renderEmptyElement)($xeSelect), h('div', {
1247
+ class: 'vxe-select--panel-body'
1248
+ }, [h('div', {
1249
+ ref: 'refOptionWrapper',
1250
+ class: 'vxe-select-option--wrapper'
1251
+ }, $xeSelect.renderOpts(h))]), footerSlot ? h('div', {
1252
+ class: 'vxe-select--panel-footer'
1253
+ }, footerSlot({})) : (0, _ui.renderEmptyElement)($xeSelect)])] : [])]);
1254
+ }
1255
+ },
1256
+ watch: {
1257
+ 'reactData.staticOptions': function reactDataStaticOptions(val) {
1258
+ var $xeSelect = this;
1259
+ var reactData = $xeSelect.reactData;
1260
+ if (val.some(function (item) {
1261
+ return item.options && item.options.length;
1262
+ })) {
1263
+ reactData.fullOptionList = [];
1264
+ reactData.fullGroupList = val;
1265
+ } else {
1266
+ reactData.fullGroupList = [];
1267
+ reactData.fullOptionList = val || [];
1268
+ }
1269
+ $xeSelect.cacheItemMap();
1270
+ },
1271
+ options: function options(val) {
1272
+ var $xeSelect = this;
1273
+ var reactData = $xeSelect.reactData;
1274
+ reactData.fullGroupList = [];
1275
+ reactData.fullOptionList = val || [];
1276
+ $xeSelect.cacheItemMap();
1277
+ },
1278
+ optionGroups: function optionGroups(val) {
1279
+ var $xeSelect = this;
1280
+ var reactData = $xeSelect.reactData;
1281
+ reactData.fullOptionList = [];
1282
+ reactData.fullGroupList = val || [];
1283
+ $xeSelect.cacheItemMap();
1284
+ }
1285
+ },
1286
+ mounted: function mounted() {
1287
+ var $xeSelect = this;
1288
+ var props = $xeSelect;
1289
+ var reactData = $xeSelect.reactData;
1290
+ $xeSelect.$nextTick(function () {
1291
+ var options = props.options,
1292
+ optionGroups = props.optionGroups;
1293
+ if (optionGroups) {
1294
+ reactData.fullGroupList = optionGroups;
1295
+ } else if (options) {
1296
+ reactData.fullOptionList = options;
1297
+ }
1298
+ $xeSelect.cacheItemMap();
1299
+ });
1300
+ _ui.globalEvents.on($xeSelect, 'mousewheel', $xeSelect.handleGlobalMousewheelEvent);
1301
+ _ui.globalEvents.on($xeSelect, 'mousedown', $xeSelect.handleGlobalMousedownEvent);
1302
+ _ui.globalEvents.on($xeSelect, 'keydown', $xeSelect.handleGlobalKeydownEvent);
1303
+ _ui.globalEvents.on($xeSelect, 'blur', $xeSelect.handleGlobalBlurEvent);
1304
+ },
1305
+ beforeDestroy: function beforeDestroy() {
1306
+ var $xeSelect = this;
1307
+ _ui.globalEvents.off($xeSelect, 'mousewheel');
1308
+ _ui.globalEvents.off($xeSelect, 'mousedown');
1309
+ _ui.globalEvents.off($xeSelect, 'keydown');
1310
+ _ui.globalEvents.off($xeSelect, 'blur');
1311
+ },
1312
+ render: function render(h) {
1313
+ return this.renderVN(h);
1314
+ }
1315
+ });