vxe-pc-ui 3.15.13 → 3.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 (329) hide show
  1. package/es/button/style.css +42 -72
  2. package/es/button/style.min.css +1 -1
  3. package/es/calendar/style.css +2 -2
  4. package/es/calendar/style.min.css +1 -1
  5. package/es/cascader/style.css +38 -40
  6. package/es/cascader/style.min.css +1 -1
  7. package/es/checkbox/src/button.js +3 -1
  8. package/es/checkbox/src/group.js +6 -1
  9. package/es/checkbox/style.css +22 -28
  10. package/es/checkbox/style.min.css +1 -1
  11. package/es/checkbox-button/style.css +155 -9
  12. package/es/checkbox-button/style.min.css +1 -1
  13. package/es/context-menu/style.css +14 -13
  14. package/es/context-menu/style.min.css +1 -1
  15. package/es/date-picker/src/date-picker.js +1 -1
  16. package/es/form/style.css +49 -95
  17. package/es/form/style.min.css +1 -1
  18. package/es/icon/style.css +1 -1
  19. package/es/icon-picker/src/icon-picker.js +165 -47
  20. package/es/icon-picker/style.css +49 -23
  21. package/es/icon-picker/style.min.css +1 -1
  22. package/es/language/ar-EG.js +3 -0
  23. package/es/language/de-DE.js +3 -0
  24. package/es/language/en-US.js +3 -0
  25. package/es/language/es-ES.js +3 -0
  26. package/es/language/fr-FR.js +3 -0
  27. package/es/language/hu-HU.js +3 -0
  28. package/es/language/hy-AM.js +3 -0
  29. package/es/language/id-ID.js +3 -0
  30. package/es/language/it-IT.js +3 -0
  31. package/es/language/ja-JP.js +3 -0
  32. package/es/language/ko-KR.js +3 -0
  33. package/es/language/ms-MY.js +3 -0
  34. package/es/language/nb-NO.js +3 -0
  35. package/es/language/pt-BR.js +3 -0
  36. package/es/language/ru-RU.js +3 -0
  37. package/es/language/th-TH.js +3 -0
  38. package/es/language/ug-CN.js +3 -0
  39. package/es/language/uk-UA.js +3 -0
  40. package/es/language/uz-UZ.js +3 -0
  41. package/es/language/vi-VN.js +3 -0
  42. package/es/language/zh-CHT.js +3 -0
  43. package/es/language/zh-CN.js +3 -0
  44. package/es/list/src/list.js +15 -1
  45. package/es/list/style.css +26 -28
  46. package/es/list/style.min.css +1 -1
  47. package/es/menu/style.css +22 -30
  48. package/es/menu/style.min.css +1 -1
  49. package/es/radio/src/button.js +3 -1
  50. package/es/radio/src/group.js +6 -1
  51. package/es/radio/style.css +22 -30
  52. package/es/radio/style.min.css +1 -1
  53. package/es/radio-button/style.css +155 -9
  54. package/es/radio-button/style.min.css +1 -1
  55. package/es/select/style.css +42 -59
  56. package/es/select/style.min.css +1 -1
  57. package/es/style.css +1 -1
  58. package/es/style.min.css +1 -1
  59. package/es/tree/src/tree.js +246 -4
  60. package/es/tree/src/util.js +15 -0
  61. package/es/tree/style.css +26 -25
  62. package/es/tree/style.min.css +1 -1
  63. package/es/tree-select/style.css +27 -31
  64. package/es/tree-select/style.min.css +1 -1
  65. package/es/ui/index.js +5 -2
  66. package/es/ui/src/log.js +1 -1
  67. package/es/upload/style.css +30 -41
  68. package/es/upload/style.min.css +1 -1
  69. package/es/vxe-button/style.css +42 -72
  70. package/es/vxe-button/style.min.css +1 -1
  71. package/es/vxe-calendar/style.css +2 -2
  72. package/es/vxe-calendar/style.min.css +1 -1
  73. package/es/vxe-cascader/style.css +38 -40
  74. package/es/vxe-cascader/style.min.css +1 -1
  75. package/es/vxe-checkbox/style.css +22 -28
  76. package/es/vxe-checkbox/style.min.css +1 -1
  77. package/es/vxe-checkbox-button/style.css +155 -9
  78. package/es/vxe-checkbox-button/style.min.css +1 -1
  79. package/es/vxe-context-menu/style.css +14 -13
  80. package/es/vxe-context-menu/style.min.css +1 -1
  81. package/es/vxe-form/style.css +49 -95
  82. package/es/vxe-form/style.min.css +1 -1
  83. package/es/vxe-icon-picker/style.css +49 -23
  84. package/es/vxe-icon-picker/style.min.css +1 -1
  85. package/es/vxe-list/style.css +26 -28
  86. package/es/vxe-list/style.min.css +1 -1
  87. package/es/vxe-menu/style.css +22 -30
  88. package/es/vxe-menu/style.min.css +1 -1
  89. package/es/vxe-radio/style.css +22 -30
  90. package/es/vxe-radio/style.min.css +1 -1
  91. package/es/vxe-radio-button/style.css +155 -9
  92. package/es/vxe-radio-button/style.min.css +1 -1
  93. package/es/vxe-select/style.css +42 -59
  94. package/es/vxe-select/style.min.css +1 -1
  95. package/es/vxe-tree/style.css +26 -25
  96. package/es/vxe-tree/style.min.css +1 -1
  97. package/es/vxe-tree-select/style.css +27 -31
  98. package/es/vxe-tree-select/style.min.css +1 -1
  99. package/es/vxe-upload/style.css +30 -41
  100. package/es/vxe-upload/style.min.css +1 -1
  101. package/lib/button/style/style.css +42 -72
  102. package/lib/button/style/style.min.css +1 -1
  103. package/lib/calendar/style/style.css +2 -2
  104. package/lib/calendar/style/style.min.css +1 -1
  105. package/lib/cascader/style/style.css +38 -40
  106. package/lib/cascader/style/style.min.css +1 -1
  107. package/lib/checkbox/src/button.js +3 -1
  108. package/lib/checkbox/src/button.min.js +1 -1
  109. package/lib/checkbox/src/group.js +13 -5
  110. package/lib/checkbox/src/group.min.js +1 -1
  111. package/lib/checkbox/style/style.css +22 -28
  112. package/lib/checkbox/style/style.min.css +1 -1
  113. package/lib/checkbox-button/style/style.css +155 -9
  114. package/lib/checkbox-button/style/style.min.css +1 -1
  115. package/lib/context-menu/style/style.css +14 -13
  116. package/lib/context-menu/style/style.min.css +1 -1
  117. package/lib/date-picker/src/date-picker.js +1 -1
  118. package/lib/date-picker/src/date-picker.min.js +1 -1
  119. package/lib/form/style/style.css +49 -95
  120. package/lib/form/style/style.min.css +1 -1
  121. package/lib/icon/style/style.css +1 -1
  122. package/lib/icon/style/style.min.css +1 -1
  123. package/lib/icon-picker/src/icon-picker.js +154 -28
  124. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  125. package/lib/icon-picker/style/style.css +49 -23
  126. package/lib/icon-picker/style/style.min.css +1 -1
  127. package/lib/index.umd.js +507 -44
  128. package/lib/index.umd.min.js +1 -1
  129. package/lib/language/ar-EG.js +3 -0
  130. package/lib/language/ar-EG.min.js +1 -1
  131. package/lib/language/ar-EG.umd.js +3 -0
  132. package/lib/language/de-DE.js +3 -0
  133. package/lib/language/de-DE.min.js +1 -1
  134. package/lib/language/de-DE.umd.js +3 -0
  135. package/lib/language/en-US.js +3 -0
  136. package/lib/language/en-US.min.js +1 -1
  137. package/lib/language/en-US.umd.js +3 -0
  138. package/lib/language/es-ES.js +3 -0
  139. package/lib/language/es-ES.min.js +1 -1
  140. package/lib/language/es-ES.umd.js +3 -0
  141. package/lib/language/fr-FR.js +3 -0
  142. package/lib/language/fr-FR.min.js +1 -1
  143. package/lib/language/fr-FR.umd.js +3 -0
  144. package/lib/language/hu-HU.js +3 -0
  145. package/lib/language/hu-HU.min.js +1 -1
  146. package/lib/language/hu-HU.umd.js +3 -0
  147. package/lib/language/hy-AM.js +3 -0
  148. package/lib/language/hy-AM.min.js +1 -1
  149. package/lib/language/hy-AM.umd.js +3 -0
  150. package/lib/language/id-ID.js +3 -0
  151. package/lib/language/id-ID.min.js +1 -1
  152. package/lib/language/id-ID.umd.js +3 -0
  153. package/lib/language/it-IT.js +3 -0
  154. package/lib/language/it-IT.min.js +1 -1
  155. package/lib/language/it-IT.umd.js +3 -0
  156. package/lib/language/ja-JP.js +3 -0
  157. package/lib/language/ja-JP.min.js +1 -1
  158. package/lib/language/ja-JP.umd.js +3 -0
  159. package/lib/language/ko-KR.js +3 -0
  160. package/lib/language/ko-KR.min.js +1 -1
  161. package/lib/language/ko-KR.umd.js +3 -0
  162. package/lib/language/ms-MY.js +3 -0
  163. package/lib/language/ms-MY.min.js +1 -1
  164. package/lib/language/ms-MY.umd.js +3 -0
  165. package/lib/language/nb-NO.js +3 -0
  166. package/lib/language/nb-NO.min.js +1 -1
  167. package/lib/language/nb-NO.umd.js +3 -0
  168. package/lib/language/pt-BR.js +3 -0
  169. package/lib/language/pt-BR.min.js +1 -1
  170. package/lib/language/pt-BR.umd.js +3 -0
  171. package/lib/language/ru-RU.js +3 -0
  172. package/lib/language/ru-RU.min.js +1 -1
  173. package/lib/language/ru-RU.umd.js +3 -0
  174. package/lib/language/th-TH.js +3 -0
  175. package/lib/language/th-TH.min.js +1 -1
  176. package/lib/language/th-TH.umd.js +3 -0
  177. package/lib/language/ug-CN.js +3 -0
  178. package/lib/language/ug-CN.min.js +1 -1
  179. package/lib/language/ug-CN.umd.js +3 -0
  180. package/lib/language/uk-UA.js +3 -0
  181. package/lib/language/uk-UA.min.js +1 -1
  182. package/lib/language/uk-UA.umd.js +3 -0
  183. package/lib/language/uz-UZ.js +3 -0
  184. package/lib/language/uz-UZ.min.js +1 -1
  185. package/lib/language/uz-UZ.umd.js +3 -0
  186. package/lib/language/vi-VN.js +3 -0
  187. package/lib/language/vi-VN.min.js +1 -1
  188. package/lib/language/vi-VN.umd.js +3 -0
  189. package/lib/language/zh-CHT.js +3 -0
  190. package/lib/language/zh-CHT.min.js +1 -1
  191. package/lib/language/zh-CHT.umd.js +3 -0
  192. package/lib/language/zh-CN.js +3 -0
  193. package/lib/language/zh-CN.min.js +1 -1
  194. package/lib/language/zh-CN.umd.js +3 -0
  195. package/lib/list/src/list.js +18 -1
  196. package/lib/list/src/list.min.js +1 -1
  197. package/lib/list/style/style.css +26 -28
  198. package/lib/list/style/style.min.css +1 -1
  199. package/lib/menu/style/style.css +22 -30
  200. package/lib/menu/style/style.min.css +1 -1
  201. package/lib/radio/src/button.js +3 -1
  202. package/lib/radio/src/button.min.js +1 -1
  203. package/lib/radio/src/group.js +9 -2
  204. package/lib/radio/src/group.min.js +1 -1
  205. package/lib/radio/style/style.css +22 -30
  206. package/lib/radio/style/style.min.css +1 -1
  207. package/lib/radio-button/style/style.css +155 -9
  208. package/lib/radio-button/style/style.min.css +1 -1
  209. package/lib/select/style/style.css +42 -59
  210. package/lib/select/style/style.min.css +1 -1
  211. package/lib/style.css +1 -1
  212. package/lib/style.min.css +1 -1
  213. package/lib/tree/src/tree.js +287 -6
  214. package/lib/tree/src/tree.min.js +1 -1
  215. package/lib/tree/src/util.js +16 -0
  216. package/lib/tree/src/util.min.js +1 -1
  217. package/lib/tree/style/style.css +26 -25
  218. package/lib/tree/style/style.min.css +1 -1
  219. package/lib/tree-select/style/style.css +27 -31
  220. package/lib/tree-select/style/style.min.css +1 -1
  221. package/lib/ui/index.js +5 -2
  222. package/lib/ui/index.min.js +1 -1
  223. package/lib/ui/src/log.js +1 -1
  224. package/lib/ui/src/log.min.js +1 -1
  225. package/lib/upload/style/style.css +30 -41
  226. package/lib/upload/style/style.min.css +1 -1
  227. package/lib/vxe-button/style/style.css +42 -72
  228. package/lib/vxe-button/style/style.min.css +1 -1
  229. package/lib/vxe-calendar/style/style.css +2 -2
  230. package/lib/vxe-calendar/style/style.min.css +1 -1
  231. package/lib/vxe-cascader/style/style.css +38 -40
  232. package/lib/vxe-cascader/style/style.min.css +1 -1
  233. package/lib/vxe-checkbox/style/style.css +22 -28
  234. package/lib/vxe-checkbox/style/style.min.css +1 -1
  235. package/lib/vxe-checkbox-button/style/style.css +155 -9
  236. package/lib/vxe-checkbox-button/style/style.min.css +1 -1
  237. package/lib/vxe-context-menu/style/style.css +14 -13
  238. package/lib/vxe-context-menu/style/style.min.css +1 -1
  239. package/lib/vxe-form/style/style.css +49 -95
  240. package/lib/vxe-form/style/style.min.css +1 -1
  241. package/lib/vxe-icon-picker/style/style.css +49 -23
  242. package/lib/vxe-icon-picker/style/style.min.css +1 -1
  243. package/lib/vxe-list/style/style.css +26 -28
  244. package/lib/vxe-list/style/style.min.css +1 -1
  245. package/lib/vxe-menu/style/style.css +22 -30
  246. package/lib/vxe-menu/style/style.min.css +1 -1
  247. package/lib/vxe-radio/style/style.css +22 -30
  248. package/lib/vxe-radio/style/style.min.css +1 -1
  249. package/lib/vxe-radio-button/style/style.css +155 -9
  250. package/lib/vxe-radio-button/style/style.min.css +1 -1
  251. package/lib/vxe-select/style/style.css +42 -59
  252. package/lib/vxe-select/style/style.min.css +1 -1
  253. package/lib/vxe-tree/style/style.css +26 -25
  254. package/lib/vxe-tree/style/style.min.css +1 -1
  255. package/lib/vxe-tree-select/style/style.css +27 -31
  256. package/lib/vxe-tree-select/style/style.min.css +1 -1
  257. package/lib/vxe-upload/style/style.css +30 -41
  258. package/lib/vxe-upload/style/style.min.css +1 -1
  259. package/package.json +1 -1
  260. package/packages/checkbox/src/button.ts +3 -1
  261. package/packages/checkbox/src/group.ts +6 -1
  262. package/packages/date-picker/src/date-picker.ts +1 -1
  263. package/packages/icon-picker/src/icon-picker.ts +180 -45
  264. package/packages/language/ar-EG.ts +3 -0
  265. package/packages/language/de-DE.ts +3 -0
  266. package/packages/language/en-US.ts +3 -0
  267. package/packages/language/es-ES.ts +3 -0
  268. package/packages/language/fr-FR.ts +3 -0
  269. package/packages/language/hu-HU.ts +3 -0
  270. package/packages/language/hy-AM.ts +3 -0
  271. package/packages/language/id-ID.ts +3 -0
  272. package/packages/language/it-IT.ts +3 -0
  273. package/packages/language/ja-JP.ts +3 -0
  274. package/packages/language/ko-KR.ts +3 -0
  275. package/packages/language/ms-MY.ts +3 -0
  276. package/packages/language/nb-NO.ts +3 -0
  277. package/packages/language/pt-BR.ts +3 -0
  278. package/packages/language/ru-RU.ts +3 -0
  279. package/packages/language/th-TH.ts +3 -0
  280. package/packages/language/ug-CN.ts +3 -0
  281. package/packages/language/uk-UA.ts +3 -0
  282. package/packages/language/uz-UZ.ts +3 -0
  283. package/packages/language/vi-VN.ts +3 -0
  284. package/packages/language/zh-CHT.ts +3 -0
  285. package/packages/language/zh-CN.ts +3 -0
  286. package/packages/list/src/list.ts +15 -1
  287. package/packages/radio/src/button.ts +3 -1
  288. package/packages/radio/src/group.ts +6 -1
  289. package/packages/tree/src/tree.ts +251 -4
  290. package/packages/tree/src/util.ts +17 -1
  291. package/packages/ui/index.ts +4 -1
  292. package/styles/components/button.scss +56 -137
  293. package/styles/components/cascader.scss +33 -34
  294. package/styles/components/checkbox-button.scss +66 -14
  295. package/styles/components/checkbox.scss +22 -24
  296. package/styles/components/context-menu.scss +15 -13
  297. package/styles/components/form.scss +49 -120
  298. package/styles/components/icon-picker.scss +56 -27
  299. package/styles/components/link.scss +1 -1
  300. package/styles/components/list.scss +24 -26
  301. package/styles/components/menu.scss +23 -26
  302. package/styles/components/radio-button.scss +66 -14
  303. package/styles/components/radio.scss +22 -23
  304. package/styles/components/select.scss +36 -62
  305. package/styles/components/tree-select.scss +26 -27
  306. package/styles/components/tree.scss +16 -14
  307. package/styles/components/upload.scss +28 -30
  308. package/styles/helpers/baseMixin.scss +2 -2
  309. package/styles/helpers/themeStatus.scss +58 -0
  310. package/styles/theme/base.scss +11 -3
  311. package/types/all.d.ts +205 -0
  312. package/types/components/checkbox-group.d.ts +3 -1
  313. package/types/components/checkbox.d.ts +1 -1
  314. package/types/components/icon-picker.d.ts +28 -4
  315. package/types/components/list.d.ts +2 -2
  316. package/types/components/radio-group.d.ts +3 -1
  317. package/types/components/tree.d.ts +36 -0
  318. /package/es/icon/{iconfont.1782658257467.ttf → iconfont.1782810544397.ttf} +0 -0
  319. /package/es/icon/{iconfont.1782658257467.woff → iconfont.1782810544397.woff} +0 -0
  320. /package/es/icon/{iconfont.1782658257467.woff2 → iconfont.1782810544397.woff2} +0 -0
  321. /package/es/{iconfont.1782658257467.ttf → iconfont.1782810544397.ttf} +0 -0
  322. /package/es/{iconfont.1782658257467.woff → iconfont.1782810544397.woff} +0 -0
  323. /package/es/{iconfont.1782658257467.woff2 → iconfont.1782810544397.woff2} +0 -0
  324. /package/lib/icon/style/{iconfont.1782658257467.ttf → iconfont.1782810544397.ttf} +0 -0
  325. /package/lib/icon/style/{iconfont.1782658257467.woff → iconfont.1782810544397.woff} +0 -0
  326. /package/lib/icon/style/{iconfont.1782658257467.woff2 → iconfont.1782810544397.woff2} +0 -0
  327. /package/lib/{iconfont.1782658257467.ttf → iconfont.1782810544397.ttf} +0 -0
  328. /package/lib/{iconfont.1782658257467.woff → iconfont.1782810544397.woff} +0 -0
  329. /package/lib/{iconfont.1782658257467.woff2 → iconfont.1782810544397.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> = {}
@@ -2,13 +2,36 @@ import { PropType, CreateElement, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { getConfig, getIcon, getI18n, globalEvents, renderer, createEvent, globalMixins, 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, IconPickerInternalData, ValueOf, IconPickerReactData, VxeInputConstructor, VxeComponentSizeType, VxeIconPickerEmits, VxeIconPickerDefines, VxeDrawerConstructor, VxeDrawerMethods, VxeFormDefines, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods } from '../../../types'
10
+ import type { VxeIconPickerPropTypes, IconPickerInternalData, ValueOf, IconPickerReactData, VxeInputConstructor, VxeComponentSizeType, VxeIconPickerEmits, 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 /* define-vxe-component start */ defineVxeComponent({
13
36
  name: 'VxeIconPicker',
14
37
  mixins: [
@@ -44,6 +67,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
44
67
  type: Boolean as PropType<VxeIconPickerPropTypes.Disabled>,
45
68
  default: null
46
69
  },
70
+ filterable: {
71
+ type: Boolean as PropType<VxeIconPickerPropTypes.Filterable>,
72
+ default: () => getConfig().iconPicker.filterable
73
+ },
74
+ filterConfig: Object as PropType<VxeIconPickerPropTypes.FilterConfig>,
47
75
  icons: Array as PropType<VxeIconPickerPropTypes.Icons>,
48
76
  placement: String as PropType<VxeIconPickerPropTypes.Placement>,
49
77
  popupConfig: Object as PropType<VxeIconPickerPropTypes.PopupConfig>,
@@ -77,23 +105,13 @@ export default /* define-vxe-component start */ defineVxeComponent({
77
105
  }
78
106
  },
79
107
  data () {
80
- const reactData: IconPickerReactData = {
81
- initialized: false,
82
- selectIcon: '',
83
- panelIndex: 0,
84
- panelStyle: {},
85
- panelPlacement: null,
86
- visiblePanel: false,
87
- isAniVisible: false,
88
- isActivated: false
89
- }
90
- const internalData: IconPickerInternalData = {
91
- hpTimeout: undefined
92
- }
108
+ const reactData = createReactData()
93
109
  return {
110
+ ...({} as {
111
+ internalData: IconPickerInternalData,
112
+ }),
94
113
  xID: XEUtils.uniqueId(),
95
- reactData,
96
- internalData
114
+ reactData
97
115
  }
98
116
  },
99
117
  computed: {
@@ -171,6 +189,21 @@ export default /* define-vxe-component start */ defineVxeComponent({
171
189
  }
172
190
  return getI18n('vxe.base.pleaseSelect')
173
191
  },
192
+ computePanelStyle () {
193
+ const $xeIconPicker = this
194
+
195
+ const popupOpts = $xeIconPicker.computePopupOpts
196
+ const { chunkSize, height, maxHeight } = popupOpts
197
+ const stys: VxeComponentStyleType = {
198
+ '--vxe-ui-icon-picker-item-width': `${100 / (chunkSize || 4)}%`
199
+ }
200
+ if (height) {
201
+ stys['--vxe-ui-icon-picker-panel-height'] = toCssUnit(height)
202
+ } else if (maxHeight) {
203
+ stys['--vxe-ui-icon-picker-panel-max-height'] = toCssUnit(maxHeight)
204
+ }
205
+ return stys
206
+ },
174
207
  computeIconList () {
175
208
  const $xeIconPicker = this
176
209
  const props = $xeIconPicker
@@ -193,6 +226,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
193
226
  }
194
227
  })
195
228
  },
229
+ computeFilterOpts () {
230
+ const $xeIconPicker = this
231
+ const props = $xeIconPicker
232
+
233
+ return Object.assign({}, getConfig().iconPicker.filterConfig, props.filterConfig)
234
+ },
196
235
  computePopupOpts () {
197
236
  const $xeIconPicker = this
198
237
  const props = $xeIconPicker
@@ -312,6 +351,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
312
351
  const panelElem = $xeIconPicker.$refs.refOptionPanel as HTMLDivElement
313
352
  const btnTransfer = $xeIconPicker.computeBtnTransfer
314
353
  const popupOpts = $xeIconPicker.computePopupOpts
354
+ const { width } = popupOpts
315
355
  const handleStyle = () => {
316
356
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
317
357
  placement: popupOpts.placement || placement,
@@ -321,6 +361,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
321
361
  const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
322
362
  zIndex: panelIndex
323
363
  })
364
+ if (width) {
365
+ Object.assign(panelStyle, {
366
+ width: toCssUnit(width),
367
+ minWidth: undefined
368
+ })
369
+ }
324
370
  reactData.panelStyle = panelStyle
325
371
  reactData.panelPlacement = ppObj.placement
326
372
  }
@@ -369,6 +415,30 @@ export default /* define-vxe-component start */ defineVxeComponent({
369
415
  reactData.isAniVisible = false
370
416
  }, 350)
371
417
  },
418
+ handleData () {
419
+ const $xeIconPicker = this
420
+ const props = $xeIconPicker
421
+ const reactData = $xeIconPicker.reactData
422
+
423
+ const { value: modelValue } = props
424
+ const { searchValue } = reactData
425
+ const filterOpts = $xeIconPicker.computeFilterOpts
426
+ const { filterMethod } = filterOpts
427
+ const popupOpts = $xeIconPicker.computePopupOpts
428
+ const { chunkSize } = popupOpts
429
+ const iconList = $xeIconPicker.computeIconList
430
+ let visibleList = iconList
431
+ if (searchValue) {
432
+ const searchTxt = `${searchValue}`.toLowerCase()
433
+ visibleList = iconList.filter(item => {
434
+ if (filterMethod) {
435
+ return filterMethod({ option: item, value: modelValue, searchValue: searchTxt, $iconPicker: $xeIconPicker })
436
+ }
437
+ return (item.title && `${item.title}`.toLowerCase().indexOf(searchTxt) > -1) || (item.icon && `${item.icon}`.indexOf(searchTxt) > -1)
438
+ })
439
+ }
440
+ reactData.iconGroups = XEUtils.chunk(visibleList, chunkSize || 4)
441
+ },
372
442
  changeEvent (evnt: Event, selectValue: any) {
373
443
  const $xeIconPicker = this
374
444
  const props = $xeIconPicker
@@ -537,6 +607,28 @@ export default /* define-vxe-component start */ defineVxeComponent({
537
607
  $xeIconPicker.changeEvent(evnt, value)
538
608
  $xeIconPicker.hideOptionPanel()
539
609
  },
610
+ modelSearchEvent (value: string) {
611
+ const $xeIconPicker = this
612
+ const reactData = $xeIconPicker.reactData
613
+
614
+ reactData.searchValue = value
615
+ },
616
+ focusSearchEvent () {
617
+ const $xeIconPicker = this
618
+ const reactData = $xeIconPicker.reactData
619
+
620
+ reactData.isActivated = true
621
+ },
622
+ handleSearchEvent () {
623
+ const $xeIconPicker = this
624
+
625
+ $xeIconPicker.handleData()
626
+ },
627
+ triggerSearchEvent: XEUtils.debounce(function (this: any) {
628
+ const $xeIconPicker = this
629
+
630
+ $xeIconPicker.handleSearchEvent()
631
+ }, 350, { trailing: true }),
540
632
 
541
633
  //
542
634
  // Render
@@ -547,45 +639,48 @@ export default /* define-vxe-component start */ defineVxeComponent({
547
639
  const reactData = $xeIconPicker.reactData
548
640
 
549
641
  const { showIconTitle } = props
550
- const { selectIcon } = reactData
551
- const iconGroupList = $xeIconPicker.computeIconGroupList
552
- const isDisabled = $xeIconPicker.computeIsDisabled
642
+ const { selectIcon, iconGroups } = reactData
553
643
 
554
644
  return h('div', {
555
645
  class: 'vxe-ico-picker--list-wrapper'
556
- }, iconGroupList.map(list => {
646
+ }, iconGroups.map(list => {
557
647
  return h('div', {
558
648
  class: 'vxe-ico-picker--list'
559
649
  }, list.map(item => {
560
650
  const { iconRender } = item
561
651
  const compConf = iconRender ? renderer.get(iconRender.name) : null
562
- const oIconMethod = compConf ? compConf.renderIconPickerOptionIcon : null
652
+ const iconMethod = compConf ? compConf.renderIconPickerOptionIcon : null
563
653
  return h('div', {
564
654
  class: ['vxe-ico-picker--item', {
565
655
  'is--selected': selectIcon === item.icon
566
- }],
567
- on: {
568
- click (evnt: MouseEvent) {
569
- if (!isDisabled) {
570
- $xeIconPicker.handleClickIconEvent(evnt, item)
571
- }
572
- }
573
- }
656
+ }]
574
657
  }, [
575
658
  h('div', {
576
- class: 'vxe-ico-picker--item-icon'
577
- }, oIconMethod && iconRender
578
- ? getSlotVNs(oIconMethod.call($xeIconPicker, h, iconRender, { $iconPicker: $xeIconPicker, option: item }))
579
- : [
580
- h('i', {
581
- class: item.icon || ''
582
- })
583
- ]),
584
- showIconTitle
585
- ? h('div', {
586
- class: 'vxe-ico-picker--item-title'
587
- }, `${item.title || ''}`)
588
- : renderEmptyElement($xeIconPicker)
659
+ class: 'vxe-ico-picker--item-inner',
660
+ on: {
661
+ click (evnt: MouseEvent) {
662
+ const isDisabled = $xeIconPicker.computeIsDisabled
663
+ if (!isDisabled) {
664
+ $xeIconPicker.handleClickIconEvent(evnt, item)
665
+ }
666
+ }
667
+ }
668
+ }, [
669
+ h('div', {
670
+ class: 'vxe-ico-picker--item-icon'
671
+ }, iconMethod && iconRender
672
+ ? getSlotVNs(iconMethod(h, iconRender, { $iconPicker: $xeIconPicker, option: item }))
673
+ : [
674
+ h('i', {
675
+ class: item.icon || ''
676
+ })
677
+ ]),
678
+ showIconTitle
679
+ ? h('div', {
680
+ class: 'vxe-ico-picker--item-title'
681
+ }, `${item.title || ''}`)
682
+ : renderEmptyElement($xeIconPicker)
683
+ ])
589
684
  ])
590
685
  }))
591
686
  }))
@@ -621,13 +716,14 @@ export default /* define-vxe-component start */ defineVxeComponent({
621
716
  const props = $xeIconPicker
622
717
  const reactData = $xeIconPicker.reactData
623
718
 
624
- const { className, clearable } = props
719
+ const { className, clearable, filterable } = props
625
720
  const { initialized, isActivated, isAniVisible, visiblePanel, selectIcon } = reactData
626
721
  const vSize = $xeIconPicker.computeSize
627
722
  const isDisabled = $xeIconPicker.computeIsDisabled
628
723
  const btnTransfer = $xeIconPicker.computeBtnTransfer
629
724
  const formReadonly = $xeIconPicker.computeFormReadonly
630
725
  const inpPlaceholder = $xeIconPicker.computeInpPlaceholder
726
+ const panelStyle = $xeIconPicker.computePanelStyle
631
727
  const popupOpts = $xeIconPicker.computePopupOpts
632
728
  const ppClassName = popupOpts.className || props.popupClassName
633
729
 
@@ -707,8 +803,34 @@ export default /* define-vxe-component start */ defineVxeComponent({
707
803
  }, [
708
804
  initialized && (visiblePanel || isAniVisible)
709
805
  ? h('div', {
710
- class: 'vxe-ico-picker--panel-wrapper'
806
+ class: 'vxe-ico-picker--panel-wrapper',
807
+ style: panelStyle
711
808
  }, [
809
+ filterable
810
+ ? h('div', {
811
+ class: 'vxe-ico-picker--panel-search'
812
+ }, [
813
+ h(VxeInputComponent, {
814
+ ref: 'refInpSearch',
815
+ class: 'vxe-ico-picker-search--input',
816
+ props: {
817
+ value: reactData.searchValue,
818
+ type: 'text',
819
+ clearable: true,
820
+ disabled: false,
821
+ readonly: false,
822
+ placeholder: getI18n('vxe.iconPicker.search'),
823
+ prefixIcon: getIcon().INPUT_SEARCH
824
+ },
825
+ on: {
826
+ 'model-value': $xeIconPicker.modelSearchEvent,
827
+ focus: $xeIconPicker.focusSearchEvent,
828
+ change: $xeIconPicker.triggerSearchEvent,
829
+ search: $xeIconPicker.triggerSearchEvent
830
+ }
831
+ })
832
+ ])
833
+ : renderEmptyElement($xeIconPicker),
712
834
  $xeIconPicker.renderIconWrapper(h)
713
835
  ])
714
836
  : renderEmptyElement($xeIconPicker)
@@ -722,6 +844,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
722
844
  const reactData = $xeIconPicker.reactData
723
845
 
724
846
  reactData.selectIcon = `${val || ''}`
847
+ },
848
+ computeIconList () {
849
+ const $xeIconPicker = this
850
+
851
+ $xeIconPicker.handleData()
725
852
  }
726
853
  },
727
854
  created () {
@@ -729,7 +856,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
729
856
  const props = $xeIconPicker
730
857
  const reactData = $xeIconPicker.reactData
731
858
 
859
+ $xeIconPicker.internalData = createInternalData()
860
+
732
861
  reactData.selectIcon = `${props.value || ''}`
862
+ $xeIconPicker.handleData()
863
+
733
864
  globalEvents.on($xeIconPicker, 'mousewheel', $xeIconPicker.handleGlobalMousewheelEvent)
734
865
  globalEvents.on($xeIconPicker, 'mousedown', $xeIconPicker.handleGlobalMousedownEvent)
735
866
  globalEvents.on($xeIconPicker, 'keydown', $xeIconPicker.handleGlobalKeydownEvent)
@@ -737,6 +868,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
737
868
  },
738
869
  beforeDestroy () {
739
870
  const $xeIconPicker = this
871
+ const reactData = $xeIconPicker.reactData
872
+ const internalData = $xeIconPicker.internalData
740
873
 
741
874
  const panelElem = $xeIconPicker.$refs.refOptionPanel as HTMLElement | undefined
742
875
  if (panelElem && panelElem.parentNode) {
@@ -746,6 +879,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
746
879
  globalEvents.off($xeIconPicker, 'mousedown')
747
880
  globalEvents.off($xeIconPicker, 'keydown')
748
881
  globalEvents.off($xeIconPicker, 'blur')
882
+ XEUtils.assign(reactData, createReactData())
883
+ XEUtils.assign(internalData, createInternalData())
749
884
  },
750
885
  render (this: any, h) {
751
886
  return this.renderVN(h)
@@ -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
  },
@@ -1343,13 +1343,19 @@ export default /* define-vxe-component start */ defineVxeComponent({
1343
1343
  },
1344
1344
  handleRowClickEvent (evnt: MouseEvent, row: any) {
1345
1345
  const $xeList = this
1346
+ const props = $xeList
1346
1347
  const reactData = $xeList.reactData
1347
1348
  const internalData = $xeList.internalData
1348
1349
 
1350
+ const { showRadio, showCheckbox } = props
1349
1351
  const { currentRow } = internalData
1352
+ const radioOpts = $xeList.computeRadioOpts
1353
+ const checkboxOpts = $xeList.computeCheckboxOpts
1350
1354
  const rowOpts = $xeList.computeRowOpts
1351
1355
  const { isCurrent } = rowOpts
1352
1356
  let triggerCurrent = false
1357
+ let triggerRadio = false
1358
+ let triggerCheckbox = false
1353
1359
  if (isCurrent) {
1354
1360
  triggerCurrent = true
1355
1361
  $xeList.changeCurrentEvent(evnt, row)
@@ -1357,7 +1363,15 @@ export default /* define-vxe-component start */ defineVxeComponent({
1357
1363
  internalData.currentRow = null
1358
1364
  reactData.currRowFlag++
1359
1365
  }
1360
- $xeList.dispatchEvent('row-click', { row, triggerCurrent }, evnt)
1366
+ if (showRadio && radioOpts.trigger === 'row') {
1367
+ triggerRadio = true
1368
+ $xeList.changeRadioEvent(evnt, row)
1369
+ }
1370
+ if (showCheckbox && checkboxOpts.trigger === 'row') {
1371
+ triggerCheckbox = true
1372
+ $xeList.changeCheckboxEvent(evnt, row)
1373
+ }
1374
+ $xeList.dispatchEvent('row-click', { row, triggerCurrent, triggerRadio, triggerCheckbox }, evnt)
1361
1375
  },
1362
1376
  handleRowDblclickEvent (evnt: MouseEvent, row: any) {
1363
1377
  const $xeList = this
@@ -231,7 +231,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
231
231
  }
232
232
  }),
233
233
  h('span', {
234
- class: 'vxe-radio--label'
234
+ class: ['vxe-radio--label', {
235
+ 'is--disabled': isDisabled
236
+ }]
235
237
  }, defaultSlot ? defaultSlot({}) : getFuncText(content))
236
238
  ])
237
239
  }