vxe-pc-ui 4.15.13 → 4.15.15

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 (333) hide show
  1. package/dist/all.esm.js +709 -140
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/button/style.css +42 -72
  5. package/es/button/style.min.css +1 -1
  6. package/es/cascader/style.css +29 -33
  7. package/es/cascader/style.min.css +1 -1
  8. package/es/checkbox/src/button.js +3 -1
  9. package/es/checkbox/src/group.js +6 -1
  10. package/es/checkbox/style.css +22 -28
  11. package/es/checkbox/style.min.css +1 -1
  12. package/es/checkbox-button/style.css +151 -8
  13. package/es/checkbox-button/style.min.css +1 -1
  14. package/es/context-menu/style.css +14 -13
  15. package/es/context-menu/style.min.css +1 -1
  16. package/es/date-picker/src/date-picker.js +1 -1
  17. package/es/form/style.css +45 -95
  18. package/es/form/style.min.css +1 -1
  19. package/es/icon/style.css +1 -1
  20. package/es/icon-picker/src/icon-picker.js +145 -46
  21. package/es/icon-picker/style.css +49 -23
  22. package/es/icon-picker/style.min.css +1 -1
  23. package/es/language/ar-EG.js +3 -0
  24. package/es/language/de-DE.js +3 -0
  25. package/es/language/en-US.js +3 -0
  26. package/es/language/es-ES.js +3 -0
  27. package/es/language/fr-FR.js +3 -0
  28. package/es/language/hu-HU.js +3 -0
  29. package/es/language/hy-AM.js +3 -0
  30. package/es/language/id-ID.js +3 -0
  31. package/es/language/it-IT.js +3 -0
  32. package/es/language/ja-JP.js +3 -0
  33. package/es/language/ko-KR.js +3 -0
  34. package/es/language/ms-MY.js +3 -0
  35. package/es/language/nb-NO.js +3 -0
  36. package/es/language/pt-BR.js +3 -0
  37. package/es/language/ru-RU.js +3 -0
  38. package/es/language/th-TH.js +3 -0
  39. package/es/language/ug-CN.js +3 -0
  40. package/es/language/uk-UA.js +3 -0
  41. package/es/language/uz-UZ.js +3 -0
  42. package/es/language/vi-VN.js +3 -0
  43. package/es/language/zh-CHT.js +3 -0
  44. package/es/language/zh-CN.js +3 -0
  45. package/es/list/src/list.js +14 -1
  46. package/es/list/style.css +26 -28
  47. package/es/list/style.min.css +1 -1
  48. package/es/menu/style.css +22 -29
  49. package/es/menu/style.min.css +1 -1
  50. package/es/notice-bar/style.css +14 -10
  51. package/es/notice-bar/style.min.css +1 -1
  52. package/es/radio/src/button.js +3 -1
  53. package/es/radio/src/group.js +6 -1
  54. package/es/radio/style.css +22 -30
  55. package/es/radio/style.min.css +1 -1
  56. package/es/radio-button/style.css +151 -8
  57. package/es/radio-button/style.min.css +1 -1
  58. package/es/select/style.css +42 -59
  59. package/es/select/style.min.css +1 -1
  60. package/es/style.css +1 -1
  61. package/es/style.min.css +1 -1
  62. package/es/tree/src/tree.js +441 -18
  63. package/es/tree/src/util.js +15 -0
  64. package/es/tree/style.css +26 -25
  65. package/es/tree/style.min.css +1 -1
  66. package/es/tree-select/style.css +27 -31
  67. package/es/tree-select/style.min.css +1 -1
  68. package/es/ui/index.js +5 -2
  69. package/es/ui/src/log.js +1 -1
  70. package/es/upload/style.css +30 -41
  71. package/es/upload/style.min.css +1 -1
  72. package/es/vxe-button/style.css +42 -72
  73. package/es/vxe-button/style.min.css +1 -1
  74. package/es/vxe-cascader/style.css +29 -33
  75. package/es/vxe-cascader/style.min.css +1 -1
  76. package/es/vxe-checkbox/style.css +22 -28
  77. package/es/vxe-checkbox/style.min.css +1 -1
  78. package/es/vxe-checkbox-button/style.css +151 -8
  79. package/es/vxe-checkbox-button/style.min.css +1 -1
  80. package/es/vxe-context-menu/style.css +14 -13
  81. package/es/vxe-context-menu/style.min.css +1 -1
  82. package/es/vxe-form/style.css +45 -95
  83. package/es/vxe-form/style.min.css +1 -1
  84. package/es/vxe-icon-picker/style.css +49 -23
  85. package/es/vxe-icon-picker/style.min.css +1 -1
  86. package/es/vxe-list/style.css +26 -28
  87. package/es/vxe-list/style.min.css +1 -1
  88. package/es/vxe-menu/style.css +22 -29
  89. package/es/vxe-menu/style.min.css +1 -1
  90. package/es/vxe-notice-bar/style.css +14 -10
  91. package/es/vxe-notice-bar/style.min.css +1 -1
  92. package/es/vxe-radio/style.css +22 -30
  93. package/es/vxe-radio/style.min.css +1 -1
  94. package/es/vxe-radio-button/style.css +151 -8
  95. package/es/vxe-radio-button/style.min.css +1 -1
  96. package/es/vxe-select/style.css +42 -59
  97. package/es/vxe-select/style.min.css +1 -1
  98. package/es/vxe-tree/style.css +26 -25
  99. package/es/vxe-tree/style.min.css +1 -1
  100. package/es/vxe-tree-select/style.css +27 -31
  101. package/es/vxe-tree-select/style.min.css +1 -1
  102. package/es/vxe-upload/style.css +30 -41
  103. package/es/vxe-upload/style.min.css +1 -1
  104. package/lib/button/style/style.css +42 -72
  105. package/lib/button/style/style.min.css +1 -1
  106. package/lib/cascader/style/style.css +29 -33
  107. package/lib/cascader/style/style.min.css +1 -1
  108. package/lib/checkbox/src/button.js +3 -1
  109. package/lib/checkbox/src/button.min.js +1 -1
  110. package/lib/checkbox/src/group.js +6 -0
  111. package/lib/checkbox/src/group.min.js +1 -1
  112. package/lib/checkbox/style/style.css +22 -28
  113. package/lib/checkbox/style/style.min.css +1 -1
  114. package/lib/checkbox-button/style/style.css +151 -8
  115. package/lib/checkbox-button/style/style.min.css +1 -1
  116. package/lib/context-menu/style/style.css +14 -13
  117. package/lib/context-menu/style/style.min.css +1 -1
  118. package/lib/date-picker/src/date-picker.js +1 -1
  119. package/lib/date-picker/src/date-picker.min.js +1 -1
  120. package/lib/form/style/style.css +45 -95
  121. package/lib/form/style/style.min.css +1 -1
  122. package/lib/icon/style/style.css +1 -1
  123. package/lib/icon/style/style.min.css +1 -1
  124. package/lib/icon-picker/src/icon-picker.js +143 -29
  125. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  126. package/lib/icon-picker/style/style.css +49 -23
  127. package/lib/icon-picker/style/style.min.css +1 -1
  128. package/lib/index.umd.js +732 -50
  129. package/lib/index.umd.min.js +1 -1
  130. package/lib/language/ar-EG.js +3 -0
  131. package/lib/language/ar-EG.min.js +1 -1
  132. package/lib/language/ar-EG.umd.js +3 -0
  133. package/lib/language/de-DE.js +3 -0
  134. package/lib/language/de-DE.min.js +1 -1
  135. package/lib/language/de-DE.umd.js +3 -0
  136. package/lib/language/en-US.js +3 -0
  137. package/lib/language/en-US.min.js +1 -1
  138. package/lib/language/en-US.umd.js +3 -0
  139. package/lib/language/es-ES.js +3 -0
  140. package/lib/language/es-ES.min.js +1 -1
  141. package/lib/language/es-ES.umd.js +3 -0
  142. package/lib/language/fr-FR.js +3 -0
  143. package/lib/language/fr-FR.min.js +1 -1
  144. package/lib/language/fr-FR.umd.js +3 -0
  145. package/lib/language/hu-HU.js +3 -0
  146. package/lib/language/hu-HU.min.js +1 -1
  147. package/lib/language/hu-HU.umd.js +3 -0
  148. package/lib/language/hy-AM.js +3 -0
  149. package/lib/language/hy-AM.min.js +1 -1
  150. package/lib/language/hy-AM.umd.js +3 -0
  151. package/lib/language/id-ID.js +3 -0
  152. package/lib/language/id-ID.min.js +1 -1
  153. package/lib/language/id-ID.umd.js +3 -0
  154. package/lib/language/it-IT.js +3 -0
  155. package/lib/language/it-IT.min.js +1 -1
  156. package/lib/language/it-IT.umd.js +3 -0
  157. package/lib/language/ja-JP.js +3 -0
  158. package/lib/language/ja-JP.min.js +1 -1
  159. package/lib/language/ja-JP.umd.js +3 -0
  160. package/lib/language/ko-KR.js +3 -0
  161. package/lib/language/ko-KR.min.js +1 -1
  162. package/lib/language/ko-KR.umd.js +3 -0
  163. package/lib/language/ms-MY.js +3 -0
  164. package/lib/language/ms-MY.min.js +1 -1
  165. package/lib/language/ms-MY.umd.js +3 -0
  166. package/lib/language/nb-NO.js +3 -0
  167. package/lib/language/nb-NO.min.js +1 -1
  168. package/lib/language/nb-NO.umd.js +3 -0
  169. package/lib/language/pt-BR.js +3 -0
  170. package/lib/language/pt-BR.min.js +1 -1
  171. package/lib/language/pt-BR.umd.js +3 -0
  172. package/lib/language/ru-RU.js +3 -0
  173. package/lib/language/ru-RU.min.js +1 -1
  174. package/lib/language/ru-RU.umd.js +3 -0
  175. package/lib/language/th-TH.js +3 -0
  176. package/lib/language/th-TH.min.js +1 -1
  177. package/lib/language/th-TH.umd.js +3 -0
  178. package/lib/language/ug-CN.js +3 -0
  179. package/lib/language/ug-CN.min.js +1 -1
  180. package/lib/language/ug-CN.umd.js +3 -0
  181. package/lib/language/uk-UA.js +3 -0
  182. package/lib/language/uk-UA.min.js +1 -1
  183. package/lib/language/uk-UA.umd.js +3 -0
  184. package/lib/language/uz-UZ.js +3 -0
  185. package/lib/language/uz-UZ.min.js +1 -1
  186. package/lib/language/uz-UZ.umd.js +3 -0
  187. package/lib/language/vi-VN.js +3 -0
  188. package/lib/language/vi-VN.min.js +1 -1
  189. package/lib/language/vi-VN.umd.js +3 -0
  190. package/lib/language/zh-CHT.js +3 -0
  191. package/lib/language/zh-CHT.min.js +1 -1
  192. package/lib/language/zh-CHT.umd.js +3 -0
  193. package/lib/language/zh-CN.js +3 -0
  194. package/lib/language/zh-CN.min.js +1 -1
  195. package/lib/language/zh-CN.umd.js +3 -0
  196. package/lib/list/src/list.js +19 -1
  197. package/lib/list/src/list.min.js +1 -1
  198. package/lib/list/style/style.css +26 -28
  199. package/lib/list/style/style.min.css +1 -1
  200. package/lib/menu/style/style.css +22 -29
  201. package/lib/menu/style/style.min.css +1 -1
  202. package/lib/notice-bar/style/style.css +14 -10
  203. package/lib/notice-bar/style/style.min.css +1 -1
  204. package/lib/radio/src/button.js +3 -1
  205. package/lib/radio/src/button.min.js +1 -1
  206. package/lib/radio/src/group.js +7 -1
  207. package/lib/radio/src/group.min.js +1 -1
  208. package/lib/radio/style/style.css +22 -30
  209. package/lib/radio/style/style.min.css +1 -1
  210. package/lib/radio-button/style/style.css +151 -8
  211. package/lib/radio-button/style/style.min.css +1 -1
  212. package/lib/select/style/style.css +42 -59
  213. package/lib/select/style/style.min.css +1 -1
  214. package/lib/style.css +1 -1
  215. package/lib/style.min.css +1 -1
  216. package/lib/tree/src/tree.js +525 -14
  217. package/lib/tree/src/tree.min.js +1 -1
  218. package/lib/tree/src/util.js +16 -0
  219. package/lib/tree/src/util.min.js +1 -1
  220. package/lib/tree/style/style.css +26 -25
  221. package/lib/tree/style/style.min.css +1 -1
  222. package/lib/tree-select/style/style.css +27 -31
  223. package/lib/tree-select/style/style.min.css +1 -1
  224. package/lib/ui/index.js +5 -2
  225. package/lib/ui/index.min.js +1 -1
  226. package/lib/ui/src/log.js +1 -1
  227. package/lib/ui/src/log.min.js +1 -1
  228. package/lib/upload/style/style.css +30 -41
  229. package/lib/upload/style/style.min.css +1 -1
  230. package/lib/vxe-button/style/style.css +42 -72
  231. package/lib/vxe-button/style/style.min.css +1 -1
  232. package/lib/vxe-cascader/style/style.css +29 -33
  233. package/lib/vxe-cascader/style/style.min.css +1 -1
  234. package/lib/vxe-checkbox/style/style.css +22 -28
  235. package/lib/vxe-checkbox/style/style.min.css +1 -1
  236. package/lib/vxe-checkbox-button/style/style.css +151 -8
  237. package/lib/vxe-checkbox-button/style/style.min.css +1 -1
  238. package/lib/vxe-context-menu/style/style.css +14 -13
  239. package/lib/vxe-context-menu/style/style.min.css +1 -1
  240. package/lib/vxe-form/style/style.css +45 -95
  241. package/lib/vxe-form/style/style.min.css +1 -1
  242. package/lib/vxe-icon-picker/style/style.css +49 -23
  243. package/lib/vxe-icon-picker/style/style.min.css +1 -1
  244. package/lib/vxe-list/style/style.css +26 -28
  245. package/lib/vxe-list/style/style.min.css +1 -1
  246. package/lib/vxe-menu/style/style.css +22 -29
  247. package/lib/vxe-menu/style/style.min.css +1 -1
  248. package/lib/vxe-notice-bar/style/style.css +14 -10
  249. package/lib/vxe-notice-bar/style/style.min.css +1 -1
  250. package/lib/vxe-radio/style/style.css +22 -30
  251. package/lib/vxe-radio/style/style.min.css +1 -1
  252. package/lib/vxe-radio-button/style/style.css +151 -8
  253. package/lib/vxe-radio-button/style/style.min.css +1 -1
  254. package/lib/vxe-select/style/style.css +42 -59
  255. package/lib/vxe-select/style/style.min.css +1 -1
  256. package/lib/vxe-tree/style/style.css +26 -25
  257. package/lib/vxe-tree/style/style.min.css +1 -1
  258. package/lib/vxe-tree-select/style/style.css +27 -31
  259. package/lib/vxe-tree-select/style/style.min.css +1 -1
  260. package/lib/vxe-upload/style/style.css +30 -41
  261. package/lib/vxe-upload/style/style.min.css +1 -1
  262. package/package.json +1 -1
  263. package/packages/checkbox/src/button.ts +3 -1
  264. package/packages/checkbox/src/group.ts +6 -1
  265. package/packages/date-picker/src/date-picker.ts +1 -1
  266. package/packages/icon-picker/src/icon-picker.ts +157 -48
  267. package/packages/language/ar-EG.ts +3 -0
  268. package/packages/language/de-DE.ts +3 -0
  269. package/packages/language/en-US.ts +3 -0
  270. package/packages/language/es-ES.ts +3 -0
  271. package/packages/language/fr-FR.ts +3 -0
  272. package/packages/language/hu-HU.ts +3 -0
  273. package/packages/language/hy-AM.ts +3 -0
  274. package/packages/language/id-ID.ts +3 -0
  275. package/packages/language/it-IT.ts +3 -0
  276. package/packages/language/ja-JP.ts +3 -0
  277. package/packages/language/ko-KR.ts +3 -0
  278. package/packages/language/ms-MY.ts +3 -0
  279. package/packages/language/nb-NO.ts +3 -0
  280. package/packages/language/pt-BR.ts +3 -0
  281. package/packages/language/ru-RU.ts +3 -0
  282. package/packages/language/th-TH.ts +3 -0
  283. package/packages/language/ug-CN.ts +3 -0
  284. package/packages/language/uk-UA.ts +3 -0
  285. package/packages/language/uz-UZ.ts +3 -0
  286. package/packages/language/vi-VN.ts +3 -0
  287. package/packages/language/zh-CHT.ts +3 -0
  288. package/packages/language/zh-CN.ts +3 -0
  289. package/packages/list/src/list.ts +14 -1
  290. package/packages/radio/src/button.ts +3 -1
  291. package/packages/radio/src/group.ts +6 -1
  292. package/packages/tree/src/tree.ts +443 -14
  293. package/packages/tree/src/util.ts +17 -1
  294. package/packages/ui/index.ts +4 -1
  295. package/styles/components/button.scss +56 -137
  296. package/styles/components/cascader.scss +25 -27
  297. package/styles/components/checkbox-button.scss +65 -13
  298. package/styles/components/checkbox.scss +22 -24
  299. package/styles/components/context-menu.scss +15 -13
  300. package/styles/components/form.scss +57 -134
  301. package/styles/components/icon-picker.scss +56 -27
  302. package/styles/components/link.scss +1 -1
  303. package/styles/components/list.scss +24 -26
  304. package/styles/components/menu.scss +23 -25
  305. package/styles/components/notice-bar.scss +15 -13
  306. package/styles/components/radio-button.scss +65 -13
  307. package/styles/components/radio.scss +22 -23
  308. package/styles/components/select.scss +36 -62
  309. package/styles/components/tree-select.scss +26 -27
  310. package/styles/components/tree.scss +16 -14
  311. package/styles/components/upload.scss +28 -30
  312. package/styles/helpers/baseMixin.scss +2 -2
  313. package/styles/helpers/themeStatus.scss +58 -0
  314. package/styles/theme/base.scss +11 -3
  315. package/types/all.d.ts +205 -0
  316. package/types/components/checkbox-group.d.ts +3 -1
  317. package/types/components/checkbox.d.ts +1 -1
  318. package/types/components/icon-picker.d.ts +28 -4
  319. package/types/components/list.d.ts +2 -2
  320. package/types/components/radio-group.d.ts +3 -1
  321. package/types/components/tree.d.ts +36 -0
  322. /package/es/icon/{iconfont.1782658269305.ttf → iconfont.1782810550462.ttf} +0 -0
  323. /package/es/icon/{iconfont.1782658269305.woff → iconfont.1782810550462.woff} +0 -0
  324. /package/es/icon/{iconfont.1782658269305.woff2 → iconfont.1782810550462.woff2} +0 -0
  325. /package/es/{iconfont.1782658269305.ttf → iconfont.1782810550462.ttf} +0 -0
  326. /package/es/{iconfont.1782658269305.woff → iconfont.1782810550462.woff} +0 -0
  327. /package/es/{iconfont.1782658269305.woff2 → iconfont.1782810550462.woff2} +0 -0
  328. /package/lib/icon/style/{iconfont.1782658269305.ttf → iconfont.1782810550462.ttf} +0 -0
  329. /package/lib/icon/style/{iconfont.1782658269305.woff → iconfont.1782810550462.woff} +0 -0
  330. /package/lib/icon/style/{iconfont.1782658269305.woff2 → iconfont.1782810550462.woff2} +0 -0
  331. /package/lib/{iconfont.1782658269305.ttf → iconfont.1782810550462.ttf} +0 -0
  332. /package/lib/{iconfont.1782658269305.woff → iconfont.1782810550462.woff} +0 -0
  333. /package/lib/{iconfont.1782658269305.woff2 → iconfont.1782810550462.woff2} +0 -0
@@ -16,7 +16,7 @@ import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types
16
16
 
17
17
  const { warnLog, errLog } = createComponentLog('date-picker')
18
18
 
19
- const defaultMaskPlaceholder = '*'
19
+ const defaultMaskPlaceholder = '_'
20
20
  const maskedTypes = ['year', 'month', 'date', 'datetime', 'time']
21
21
  const inputMaskedKeys = ['y', 'M', 'd', 'H', 'm', 'n', 's']
22
22
  const parseInputKayMaps: Record<string, boolean> = {}
@@ -1,14 +1,37 @@
1
- import { h, Teleport, PropType, ref, inject, watch, computed, provide, onUnmounted, reactive, nextTick, onMounted } from 'vue'
1
+ import { h, Teleport, PropType, ref, inject, watch, computed, provide, onBeforeUnmount, reactive, nextTick, onMounted } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { getConfig, getIcon, getI18n, globalEvents, createEvent, renderer, useSize, GLOBAL_EVENT_KEYS, renderEmptyElement } from '../../ui'
5
- import { getEventTargetNode, updatePanelPlacement } from '../../ui/src/dom'
5
+ import { getEventTargetNode, toCssUnit, updatePanelPlacement } from '../../ui/src/dom'
6
6
  import { getLastZIndex, nextZIndex, getFuncText } from '../../ui/src/utils'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
+ import VxeInputComponent from '../../input/src/input'
8
9
 
9
- import type { VxeIconPickerPropTypes, VxeIconPickerConstructor, IconPickerInternalData, ValueOf, IconPickerReactData, VxeIconPickerEmits, IconPickerMethods, IconPickerPrivateRef, VxeIconPickerMethods, VxeIconPickerDefines, VxeDrawerConstructor, VxeDrawerMethods, VxeFormDefines, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods } from '../../../types'
10
+ import type { VxeIconPickerPropTypes, VxeIconPickerConstructor, IconPickerInternalData, VxeInputConstructor, ValueOf, IconPickerReactData, VxeIconPickerEmits, IconPickerMethods, IconPickerPrivateRef, VxeIconPickerMethods, VxeIconPickerDefines, VxeDrawerConstructor, VxeDrawerMethods, VxeFormDefines, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods, VxeComponentStyleType } from '../../../types'
10
11
  import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
11
12
 
13
+ function createReactData (): IconPickerReactData {
14
+ return {
15
+ initialized: false,
16
+ selectIcon: '',
17
+ panelIndex: 0,
18
+ panelStyle: {},
19
+ panelPlacement: null,
20
+ visiblePanel: false,
21
+ isAniVisible: false,
22
+ isActivated: false,
23
+ searchValue: '',
24
+ iconGroups: []
25
+ }
26
+ }
27
+
28
+ function createInternalData (): IconPickerInternalData {
29
+ return {
30
+ fullList: []
31
+ // hpTimeout: undefined
32
+ }
33
+ }
34
+
12
35
  export default defineVxeComponent({
13
36
  name: 'VxeIconPicker',
14
37
  props: {
@@ -37,6 +60,11 @@ export default defineVxeComponent({
37
60
  type: Boolean as PropType<VxeIconPickerPropTypes.Disabled>,
38
61
  default: null
39
62
  },
63
+ filterable: {
64
+ type: Boolean as PropType<VxeIconPickerPropTypes.Filterable>,
65
+ default: () => getConfig().iconPicker.filterable
66
+ },
67
+ filterConfig: Object as PropType<VxeIconPickerPropTypes.FilterConfig>,
40
68
  icons: Array as PropType<VxeIconPickerPropTypes.Icons>,
41
69
  placement: String as PropType<VxeIconPickerPropTypes.Placement>,
42
70
  popupConfig: Object as PropType<VxeIconPickerPropTypes.PopupConfig>,
@@ -64,25 +92,16 @@ export default defineVxeComponent({
64
92
 
65
93
  const { computeSize } = useSize(props)
66
94
 
67
- const reactData = reactive<IconPickerReactData>({
68
- initialized: false,
69
- selectIcon: `${props.modelValue || ''}`,
70
- panelIndex: 0,
71
- panelStyle: {},
72
- panelPlacement: null,
73
- visiblePanel: false,
74
- isAniVisible: false,
75
- isActivated: false
76
- })
95
+ const reactData = reactive(createReactData())
77
96
 
78
- const internalData: IconPickerInternalData = {
79
- // hpTimeout: undefined
80
- }
97
+ const internalData = createInternalData()
81
98
 
82
99
  const refElem = ref<HTMLDivElement>()
83
100
  const refInput = ref<HTMLInputElement>()
84
101
  const refOptionPanel = ref<HTMLDivElement>()
85
102
 
103
+ const refInpSearch = ref<VxeInputConstructor>()
104
+
86
105
  const refMaps: IconPickerPrivateRef = {
87
106
  refElem
88
107
  }
@@ -149,6 +168,20 @@ export default defineVxeComponent({
149
168
  return getI18n('vxe.base.pleaseSelect')
150
169
  })
151
170
 
171
+ const computePanelStyle = computed(() => {
172
+ const popupOpts = computePopupOpts.value
173
+ const { chunkSize, height, maxHeight } = popupOpts
174
+ const stys: VxeComponentStyleType = {
175
+ '--vxe-ui-icon-picker-item-width': `${100 / (chunkSize || 4)}%`
176
+ }
177
+ if (height) {
178
+ stys['--vxe-ui-icon-picker-panel-height'] = toCssUnit(height)
179
+ } else if (maxHeight) {
180
+ stys['--vxe-ui-icon-picker-panel-max-height'] = toCssUnit(maxHeight)
181
+ }
182
+ return stys
183
+ })
184
+
152
185
  const computeIconList = computed<VxeIconPickerDefines.IconItemObj[]>(() => {
153
186
  let { icons } = props
154
187
  if (!icons || !icons.length) {
@@ -169,13 +202,12 @@ export default defineVxeComponent({
169
202
  })
170
203
  })
171
204
 
172
- const computePopupOpts = computed(() => {
173
- return Object.assign({}, getConfig().iconPicker.popupConfig, props.popupConfig)
205
+ const computeFilterOpts = computed(() => {
206
+ return Object.assign({}, getConfig().iconPicker.filterConfig, props.filterConfig)
174
207
  })
175
208
 
176
- const computeIconGroupList = computed(() => {
177
- const iconList = computeIconList.value
178
- return XEUtils.chunk(iconList, 4)
209
+ const computePopupOpts = computed(() => {
210
+ return Object.assign({}, getConfig().iconPicker.popupConfig, props.popupConfig)
179
211
  })
180
212
 
181
213
  const computeSelectIconItem = computed(() => {
@@ -197,6 +229,7 @@ export default defineVxeComponent({
197
229
  const panelElem = refOptionPanel.value
198
230
  const btnTransfer = computeBtnTransfer.value
199
231
  const popupOpts = computePopupOpts.value
232
+ const { width } = popupOpts
200
233
  const handleStyle = () => {
201
234
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
202
235
  placement: popupOpts.placement || placement,
@@ -206,6 +239,12 @@ export default defineVxeComponent({
206
239
  const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
207
240
  zIndex: panelIndex
208
241
  })
242
+ if (width) {
243
+ Object.assign(panelStyle, {
244
+ width: toCssUnit(width),
245
+ minWidth: undefined
246
+ })
247
+ }
209
248
  reactData.panelStyle = panelStyle
210
249
  reactData.panelPlacement = ppObj.placement
211
250
  }
@@ -242,6 +281,27 @@ export default defineVxeComponent({
242
281
  }, 350)
243
282
  }
244
283
 
284
+ const handleData = () => {
285
+ const { modelValue } = props
286
+ const { searchValue } = reactData
287
+ const filterOpts = computeFilterOpts.value
288
+ const { filterMethod } = filterOpts
289
+ const popupOpts = computePopupOpts.value
290
+ const { chunkSize } = popupOpts
291
+ const iconList = computeIconList.value
292
+ let visibleList = iconList
293
+ if (searchValue) {
294
+ const searchTxt = `${searchValue}`.toLowerCase()
295
+ visibleList = iconList.filter(item => {
296
+ if (filterMethod) {
297
+ return filterMethod({ option: item, value: modelValue, searchValue: searchTxt, $iconPicker: $xeIconPicker })
298
+ }
299
+ return (item.title && `${item.title}`.toLowerCase().indexOf(searchTxt) > -1) || (item.icon && `${item.icon}`.indexOf(searchTxt) > -1)
300
+ })
301
+ }
302
+ reactData.iconGroups = XEUtils.chunk(visibleList, chunkSize || 4)
303
+ }
304
+
245
305
  const changeEvent = (evnt: Event, selectValue: any) => {
246
306
  reactData.selectIcon = selectValue
247
307
  if (selectValue !== props.modelValue) {
@@ -433,47 +493,64 @@ export default defineVxeComponent({
433
493
  hideOptionPanel()
434
494
  }
435
495
 
496
+ const modelSearchEvent = (value: string) => {
497
+ reactData.searchValue = value
498
+ }
499
+
500
+ const focusSearchEvent = () => {
501
+ reactData.isActivated = true
502
+ }
503
+
504
+ const handleSearchEvent = () => {
505
+ handleData()
506
+ }
507
+
508
+ const triggerSearchEvent = XEUtils.debounce(handleSearchEvent, 350, { trailing: true })
509
+
436
510
  Object.assign($xeIconPicker, iconPickerMethods)
437
511
 
438
512
  const renderIconWrapper = () => {
439
513
  const { showIconTitle } = props
440
- const { selectIcon } = reactData
441
- const iconGroupList = computeIconGroupList.value
442
- const isDisabled = computeIsDisabled.value
514
+ const { selectIcon, iconGroups } = reactData
443
515
 
444
516
  return h('div', {
445
517
  class: 'vxe-ico-picker--list-wrapper'
446
- }, iconGroupList.map(list => {
518
+ }, iconGroups.map(list => {
447
519
  return h('div', {
448
520
  class: 'vxe-ico-picker--list'
449
521
  }, list.map(item => {
450
522
  const { iconRender } = item
451
523
  const compConf = iconRender ? renderer.get(iconRender.name) : null
452
- const oIconMethod = compConf ? compConf.renderIconPickerOptionIcon : null
524
+ const iconMethod = compConf ? compConf.renderIconPickerOptionIcon : null
453
525
  return h('div', {
454
526
  class: ['vxe-ico-picker--item', {
455
527
  'is--selected': selectIcon === item.icon
456
- }],
457
- onClick (evnt) {
458
- if (!isDisabled) {
459
- handleClickIconEvent(evnt, item)
460
- }
461
- }
528
+ }]
462
529
  }, [
463
530
  h('div', {
464
- class: 'vxe-ico-picker--item-icon'
465
- }, oIconMethod && iconRender
466
- ? getSlotVNs(oIconMethod(iconRender, { $iconPicker: $xeIconPicker, option: item }))
467
- : [
468
- h('i', {
469
- class: item.icon || ''
470
- })
471
- ]),
472
- showIconTitle
473
- ? h('div', {
474
- class: 'vxe-ico-picker--item-title'
475
- }, `${item.title || ''}`)
476
- : renderEmptyElement($xeIconPicker)
531
+ class: 'vxe-ico-picker--item-inner',
532
+ onClick (evnt) {
533
+ const isDisabled = computeIsDisabled.value
534
+ if (!isDisabled) {
535
+ handleClickIconEvent(evnt, item)
536
+ }
537
+ }
538
+ }, [
539
+ h('div', {
540
+ class: 'vxe-ico-picker--item-icon'
541
+ }, iconMethod && iconRender
542
+ ? getSlotVNs(iconMethod(iconRender, { $iconPicker: $xeIconPicker, option: item }))
543
+ : [
544
+ h('i', {
545
+ class: item.icon || ''
546
+ })
547
+ ]),
548
+ showIconTitle
549
+ ? h('div', {
550
+ class: 'vxe-ico-picker--item-title'
551
+ }, `${item.title || ''}`)
552
+ : renderEmptyElement($xeIconPicker)
553
+ ])
477
554
  ])
478
555
  }))
479
556
  }))
@@ -504,13 +581,14 @@ export default defineVxeComponent({
504
581
  }
505
582
 
506
583
  const renderVN = () => {
507
- const { className, clearable } = props
584
+ const { className, clearable, filterable } = props
508
585
  const { initialized, isActivated, isAniVisible, visiblePanel, selectIcon } = reactData
509
586
  const vSize = computeSize.value
510
587
  const isDisabled = computeIsDisabled.value
511
588
  const btnTransfer = computeBtnTransfer.value
512
589
  const formReadonly = computeFormReadonly.value
513
590
  const inpPlaceholder = computeInpPlaceholder.value
591
+ const panelStyle = computePanelStyle.value
514
592
  const popupOpts = computePopupOpts.value
515
593
  const ppClassName = popupOpts.className || props.popupClassName
516
594
 
@@ -586,8 +664,30 @@ export default defineVxeComponent({
586
664
  }, [
587
665
  initialized && (visiblePanel || isAniVisible)
588
666
  ? h('div', {
589
- class: 'vxe-ico-picker--panel-wrapper'
667
+ class: 'vxe-ico-picker--panel-wrapper',
668
+ style: panelStyle
590
669
  }, [
670
+ filterable
671
+ ? h('div', {
672
+ class: 'vxe-ico-picker--panel-search'
673
+ }, [
674
+ h(VxeInputComponent, {
675
+ ref: refInpSearch,
676
+ class: 'vxe-ico-picker-search--input',
677
+ modelValue: reactData.searchValue,
678
+ type: 'text',
679
+ clearable: true,
680
+ disabled: false,
681
+ readonly: false,
682
+ placeholder: getI18n('vxe.iconPicker.search'),
683
+ prefixIcon: getIcon().INPUT_SEARCH,
684
+ 'onUpdate:modelValue': modelSearchEvent,
685
+ onFocus: focusSearchEvent,
686
+ onChange: triggerSearchEvent,
687
+ onSearch: triggerSearchEvent
688
+ })
689
+ ])
690
+ : renderEmptyElement($xeIconPicker),
591
691
  renderIconWrapper()
592
692
  ])
593
693
  : renderEmptyElement($xeIconPicker)
@@ -596,10 +696,17 @@ export default defineVxeComponent({
596
696
  ])
597
697
  }
598
698
 
699
+ reactData.selectIcon = `${props.modelValue || ''}`
700
+ handleData()
701
+
599
702
  watch(() => props.modelValue, (val) => {
600
703
  reactData.selectIcon = `${val || ''}`
601
704
  })
602
705
 
706
+ watch(computeIconList, () => {
707
+ handleData()
708
+ })
709
+
603
710
  onMounted(() => {
604
711
  globalEvents.on($xeIconPicker, 'mousewheel', handleGlobalMousewheelEvent)
605
712
  globalEvents.on($xeIconPicker, 'mousedown', handleGlobalMousedownEvent)
@@ -607,11 +714,13 @@ export default defineVxeComponent({
607
714
  globalEvents.on($xeIconPicker, 'blur', handleGlobalBlurEvent)
608
715
  })
609
716
 
610
- onUnmounted(() => {
717
+ onBeforeUnmount(() => {
611
718
  globalEvents.off($xeIconPicker, 'mousewheel')
612
719
  globalEvents.off($xeIconPicker, 'mousedown')
613
720
  globalEvents.off($xeIconPicker, 'keydown')
614
721
  globalEvents.off($xeIconPicker, 'blur')
722
+ XEUtils.assign(reactData, createReactData())
723
+ XEUtils.assign(internalData, createInternalData())
615
724
  })
616
725
 
617
726
  provide('$xeIconPicker', $xeIconPicker)
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'تجميد الحق',
288
288
  cancelFixed: 'إلغاء التجميد'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} سنوات'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Rechts einfrieren',
288
288
  cancelFixed: 'Säulen entfernen'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} Jahre'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Freeze right',
288
288
  cancelFixed: 'Unfreeze'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} years'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Congelarse a la derecha',
288
288
  cancelFixed: 'Columnas desenfrenado'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} años'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Geler à droite',
288
288
  cancelFixed: 'Dégeler'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} ans'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Jobbra fagy',
288
288
  cancelFixed: 'Kiolvaszt'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} Évek'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: '冻结在右侧',
288
288
  cancelFixed: '取消冻结列'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} 年'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Bekukan benar',
288
288
  cancelFixed: 'Unfreeze'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} tahun'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Freeze Right',
288
288
  cancelFixed: 'Scongelare'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} anni'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: '右にフリーズします',
288
288
  cancelFixed: '凍結柱'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0}年'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: '오른쪽에서 얼립니다',
288
288
  cancelFixed: '열매 열이 없습니다'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} 년'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Membekukan di sebelah kanan',
288
288
  cancelFixed: 'Lajur yang tidak jelas'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} tahun'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Frys til høyre',
288
288
  cancelFixed: 'Frigjøre'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} år'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Congele à direita',
288
288
  cancelFixed: 'Descongelar'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} anos'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Заморозить справа',
288
288
  cancelFixed: 'Размороженные столбцы'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} Годы'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'แช่แข็งขวา',
288
288
  cancelFixed: 'สูดดม'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} ปี'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'ئوڭ ياندا توڭلىتىش',
288
288
  cancelFixed: 'قۇر توڭلىتىشنى ئەمەلدىن قالدۇرۇش'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} يىل'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Заморожуйте право',
288
288
  cancelFixed: 'Розморожувати'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} років'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: "O'ng tomonda muzlatib qo'ying",
288
288
  cancelFixed: "Urug'lar ustunini"
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} yillar'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: 'Đóng băng bên phải',
288
288
  cancelFixed: 'Mở ra cột'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} năm'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: '凍結在右側',
288
288
  cancelFixed: '取消凍結列'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} 年'
292
295
  },
@@ -287,6 +287,9 @@ export default {
287
287
  fixedRight: '冻结在右侧',
288
288
  cancelFixed: '取消冻结列'
289
289
  },
290
+ iconPicker: {
291
+ search: '搜索'
292
+ },
290
293
  datePicker: {
291
294
  yearTitle: '{0} 年'
292
295
  },
@@ -830,10 +830,15 @@ export default defineVxeComponent({
830
830
  }
831
831
 
832
832
  const handleRowClickEvent = (evnt: MouseEvent, row: any) => {
833
+ const { showRadio, showCheckbox } = props
833
834
  const { currentRow } = internalData
835
+ const radioOpts = computeRadioOpts.value
836
+ const checkboxOpts = computeCheckboxOpts.value
834
837
  const rowOpts = computeRowOpts.value
835
838
  const { isCurrent } = rowOpts
836
839
  let triggerCurrent = false
840
+ let triggerRadio = false
841
+ let triggerCheckbox = false
837
842
  if (isCurrent) {
838
843
  triggerCurrent = true
839
844
  changeCurrentEvent(evnt, row)
@@ -841,7 +846,15 @@ export default defineVxeComponent({
841
846
  internalData.currentRow = null
842
847
  reactData.currRowFlag++
843
848
  }
844
- dispatchEvent('row-click', { row, triggerCurrent }, evnt)
849
+ if (showRadio && radioOpts.trigger === 'row') {
850
+ triggerRadio = true
851
+ changeRadioEvent(evnt, row)
852
+ }
853
+ if (showCheckbox && checkboxOpts.trigger === 'row') {
854
+ triggerCheckbox = true
855
+ changeCheckboxEvent(evnt, row)
856
+ }
857
+ dispatchEvent('row-click', { row, triggerCurrent, triggerRadio, triggerCheckbox }, evnt)
845
858
  }
846
859
 
847
860
  const handleRowDblclickEvent = (evnt: MouseEvent, row: any) => {
@@ -183,7 +183,9 @@ export default defineVxeComponent({
183
183
  onClick: clickEvent
184
184
  }),
185
185
  h('span', {
186
- class: 'vxe-radio--label'
186
+ class: ['vxe-radio--label', {
187
+ 'is--disabled': isDisabled
188
+ }]
187
189
  }, defaultSlot ? defaultSlot({}) : getFuncText(content))
188
190
  ])
189
191
  }
@@ -30,6 +30,10 @@ export default defineVxeComponent({
30
30
  default: null
31
31
  },
32
32
  type: String as PropType<VxeRadioGroupPropTypes.Type>,
33
+ status: {
34
+ type: String as PropType<VxeRadioGroupPropTypes.Status>,
35
+ default: () => getConfig().radioGroup.status
36
+ },
33
37
  options: Array as PropType<VxeRadioGroupPropTypes.Options>,
34
38
  optionProps: Object as PropType<VxeRadioGroupPropTypes.OptionProps>,
35
39
  strict: {
@@ -177,7 +181,7 @@ export default defineVxeComponent({
177
181
  Object.assign($xeRadioGroup, radioGroupMethods, radioGroupPrivateMethods)
178
182
 
179
183
  const renderVN = () => {
180
- const { options, type } = props
184
+ const { options, type, status } = props
181
185
  const vSize = computeSize.value
182
186
  const defaultSlot = slots.default
183
187
  const valueField = computeValueField.value as 'value'
@@ -187,6 +191,7 @@ export default defineVxeComponent({
187
191
 
188
192
  return h('div', {
189
193
  class: ['vxe-radio-group', {
194
+ [`theme--${status}`]: status,
190
195
  [`size--${vSize}`]: vSize
191
196
  }]
192
197
  }, defaultSlot