vxe-pc-ui 4.20.24 → 4.20.26

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 (627) hide show
  1. package/dist/all.esm.js +15151 -10366
  2. package/dist/style.css +1 -1
  3. package/dist/style.mini.css +1 -1
  4. package/es/alert/src/alert.js +61 -36
  5. package/es/anchor/src/anchor-link.js +39 -20
  6. package/es/anchor/src/anchor.js +74 -45
  7. package/es/avatar/src/avatar.js +47 -27
  8. package/es/backtop/src/backtop.js +65 -40
  9. package/es/badge/src/badge.js +32 -16
  10. package/es/breadcrumb/src/breadcrumb-item.js +52 -27
  11. package/es/breadcrumb/src/breadcrumb.js +11 -8
  12. package/es/button/src/button-group.js +24 -18
  13. package/es/button/src/button.js +284 -185
  14. package/es/calendar/src/calendar.js +571 -358
  15. package/es/card/src/card.js +123 -68
  16. package/es/carousel/src/carousel-item.js +14 -7
  17. package/es/carousel/src/carousel.js +174 -112
  18. package/es/cascader/src/cascader.js +526 -380
  19. package/es/checkbox/src/button.js +90 -55
  20. package/es/checkbox/src/checkbox.js +60 -40
  21. package/es/checkbox/src/group.js +34 -26
  22. package/es/collapse/src/collapse-pane.js +33 -16
  23. package/es/collapse/src/collapse.js +133 -79
  24. package/es/color-picker/src/color-picker.js +489 -350
  25. package/es/components.d.ts +3 -1
  26. package/es/components.js +3 -2
  27. package/es/context-menu/src/context-menu.js +190 -110
  28. package/es/countdown/src/countdown.js +91 -59
  29. package/es/date-panel/src/date-panel.js +760 -450
  30. package/es/date-picker/src/date-picker.js +331 -228
  31. package/es/date-range-picker/src/date-range-picker.js +366 -265
  32. package/es/divider/src/divider.js +26 -12
  33. package/es/drawer/src/drawer.js +254 -154
  34. package/es/dynamics/index.js +38 -25
  35. package/es/empty/src/empty.js +53 -29
  36. package/es/form/render/index.js +66 -41
  37. package/es/form/src/form-config-item.js +22 -16
  38. package/es/form/src/form-group.js +23 -14
  39. package/es/form/src/form-item.js +23 -17
  40. package/es/form/src/form.js +139 -95
  41. package/es/form/src/itemInfo.js +2 -1
  42. package/es/form/src/render.js +207 -127
  43. package/es/form/src/util.js +8 -4
  44. package/es/icon/src/icon.js +14 -10
  45. package/es/icon/style.css +1 -1
  46. package/es/icon/style.mini.css +1 -1
  47. package/es/icon-picker/src/icon-picker.js +250 -157
  48. package/es/image/src/group.js +26 -20
  49. package/es/image/src/image.js +33 -32
  50. package/es/image/src/preview.js +182 -122
  51. package/es/image/src/util.js +6 -3
  52. package/es/index.d.ts +3 -0
  53. package/es/index.esm.js +12 -0
  54. package/es/index.js +12 -0
  55. package/es/input/src/input.js +820 -507
  56. package/es/layout-aside/src/layout-aside.js +54 -38
  57. package/es/layout-body/src/layout-body.js +39 -27
  58. package/es/layout-container/src/layout-container.js +16 -9
  59. package/es/layout-footer/src/layout-footer.js +16 -7
  60. package/es/layout-header/src/layout-header.js +15 -7
  61. package/es/link/src/link.js +65 -44
  62. package/es/list/src/list.js +453 -333
  63. package/es/loading/index.js +8 -5
  64. package/es/loading/src/loading.js +60 -33
  65. package/es/mention/src/mention.js +2 -1
  66. package/es/menu/src/menu.js +341 -210
  67. package/es/modal/index.js +60 -37
  68. package/es/modal/src/modal.js +303 -205
  69. package/es/notice-bar/src/notice-bar.js +64 -37
  70. package/es/number-input/src/number-input.js +249 -172
  71. package/es/pager/src/pager.js +346 -202
  72. package/es/password-input/src/password-input.js +145 -105
  73. package/es/print/src/page-break.js +2 -1
  74. package/es/print/src/print.js +184 -99
  75. package/es/pulldown/src/pulldown.js +113 -71
  76. package/es/radio/src/button.js +92 -57
  77. package/es/radio/src/group.js +33 -25
  78. package/es/radio/src/radio.js +61 -41
  79. package/es/rate/src/rate.js +48 -36
  80. package/es/result/src/result.js +67 -35
  81. package/es/row/src/col.js +30 -16
  82. package/es/row/src/row.js +21 -14
  83. package/es/scrollbar/src/scrollbar.js +177 -145
  84. package/es/segmented/src/segmented.js +93 -60
  85. package/es/select/src/optgroup.js +7 -3
  86. package/es/select/src/select.js +483 -340
  87. package/es/select/src/util.js +6 -3
  88. package/es/slider/src/slider.js +108 -80
  89. package/es/space/src/space.js +43 -26
  90. package/es/splitter/src/splitter-panel.js +50 -25
  91. package/es/splitter/src/splitter.js +219 -144
  92. package/es/steps/src/steps.js +10 -5
  93. package/es/style.css +1 -1
  94. package/es/style.mini.css +1 -1
  95. package/es/switch/src/switch.js +115 -64
  96. package/es/table-select/src/table-select.js +232 -153
  97. package/es/table-transfer/src/table-transfer.js +10 -5
  98. package/es/tabs/src/tab-pane.js +33 -16
  99. package/es/tabs/src/tabs.js +363 -230
  100. package/es/tag/src/tag.js +61 -43
  101. package/es/text/src/text.js +89 -65
  102. package/es/text-ellipsis/src/text-ellipsis.js +82 -51
  103. package/es/textarea/src/textarea.js +116 -86
  104. package/es/timeline/src/timeline-item.js +2 -1
  105. package/es/timeline/src/timeline.js +2 -1
  106. package/es/tip/src/tip.js +53 -29
  107. package/es/tooltip/src/tooltip.js +114 -74
  108. package/es/tour/src/tour.js +2 -1
  109. package/es/transfer/src/transfer.js +42 -25
  110. package/es/tree/src/tree.js +709 -492
  111. package/es/tree-select/src/tree-select.js +320 -225
  112. package/es/ui/index.d.ts +0 -1
  113. package/es/ui/index.js +46 -3
  114. package/es/ui/src/dom.js +9 -6
  115. package/es/ui/src/log.js +1 -1
  116. package/es/ui/src/utils.d.ts +1 -1
  117. package/es/upload/src/upload.js +614 -398
  118. package/es/vxe-icon/style.css +1 -1
  119. package/es/vxe-icon/style.mini.css +1 -1
  120. package/es/watermark/src/util.js +15 -12
  121. package/es/watermark/src/watermark.js +55 -25
  122. package/lib/alert/src/alert.js +62 -37
  123. package/lib/anchor/src/anchor-link.js +39 -20
  124. package/lib/anchor/src/anchor.js +75 -46
  125. package/lib/avatar/src/avatar.js +52 -32
  126. package/lib/backtop/src/backtop.js +81 -56
  127. package/lib/badge/src/badge.js +35 -19
  128. package/lib/breadcrumb/src/breadcrumb-item.js +52 -27
  129. package/lib/breadcrumb/src/breadcrumb.js +13 -10
  130. package/lib/button/src/button-group.js +27 -21
  131. package/lib/button/src/button.js +306 -207
  132. package/lib/calendar/src/calendar.js +575 -362
  133. package/lib/card/src/card.js +133 -78
  134. package/lib/carousel/src/carousel-item.js +15 -8
  135. package/lib/carousel/src/carousel.js +182 -120
  136. package/lib/cascader/src/cascader.js +555 -409
  137. package/lib/checkbox/src/button.js +93 -58
  138. package/lib/checkbox/src/checkbox.js +63 -43
  139. package/lib/checkbox/src/group.js +37 -29
  140. package/lib/collapse/src/collapse-pane.js +34 -17
  141. package/lib/collapse/src/collapse.js +139 -85
  142. package/lib/color-picker/src/color-picker.js +516 -377
  143. package/lib/components.js +3 -2
  144. package/lib/context-menu/src/context-menu.js +212 -132
  145. package/lib/countdown/src/countdown.js +95 -63
  146. package/lib/date-panel/src/date-panel.js +776 -466
  147. package/lib/date-picker/src/date-picker.js +377 -274
  148. package/lib/date-range-picker/src/date-range-picker.js +401 -300
  149. package/lib/divider/src/divider.js +31 -17
  150. package/lib/drawer/src/drawer.js +255 -155
  151. package/lib/dynamics/index.js +38 -25
  152. package/lib/empty/src/empty.js +55 -31
  153. package/lib/form/render/index.js +68 -43
  154. package/lib/form/src/form-config-item.js +24 -18
  155. package/lib/form/src/form-group.js +25 -16
  156. package/lib/form/src/form-item.js +25 -19
  157. package/lib/form/src/form.js +140 -96
  158. package/lib/form/src/itemInfo.js +4 -3
  159. package/lib/form/src/render.js +214 -134
  160. package/lib/form/src/util.js +9 -5
  161. package/lib/icon/src/icon.js +17 -13
  162. package/lib/icon/style/style.css +1 -1
  163. package/lib/icon/style/style.mini.css +1 -1
  164. package/lib/icon-picker/src/icon-picker.js +251 -158
  165. package/lib/image/src/group.js +26 -20
  166. package/lib/image/src/image.js +41 -40
  167. package/lib/image/src/preview.js +206 -146
  168. package/lib/image/src/util.js +6 -3
  169. package/lib/index.common.js +12 -0
  170. package/lib/index.js +12 -0
  171. package/lib/index.umd.js +15359 -10558
  172. package/lib/index.umd.min.js +3 -3
  173. package/lib/input/src/input.js +878 -565
  174. package/lib/layout-aside/src/layout-aside.js +61 -45
  175. package/lib/layout-body/src/layout-body.js +47 -35
  176. package/lib/layout-container/src/layout-container.js +18 -11
  177. package/lib/layout-footer/src/layout-footer.js +17 -8
  178. package/lib/layout-header/src/layout-header.js +16 -8
  179. package/lib/link/src/link.js +69 -48
  180. package/lib/list/src/list.js +456 -336
  181. package/lib/loading/index.js +8 -5
  182. package/lib/loading/src/loading.js +69 -42
  183. package/lib/mention/src/mention.js +4 -3
  184. package/lib/menu/src/menu.js +351 -220
  185. package/lib/modal/index.js +60 -37
  186. package/lib/modal/src/modal.js +306 -208
  187. package/lib/notice-bar/src/notice-bar.js +70 -43
  188. package/lib/number-input/src/number-input.js +290 -213
  189. package/lib/pager/src/pager.js +347 -203
  190. package/lib/password-input/src/password-input.js +155 -115
  191. package/lib/print/src/page-break.js +3 -2
  192. package/lib/print/src/print.js +193 -108
  193. package/lib/pulldown/src/pulldown.js +128 -86
  194. package/lib/radio/src/button.js +96 -61
  195. package/lib/radio/src/group.js +37 -29
  196. package/lib/radio/src/radio.js +65 -45
  197. package/lib/rate/src/rate.js +50 -38
  198. package/lib/result/src/result.js +68 -36
  199. package/lib/row/src/col.js +32 -18
  200. package/lib/row/src/row.js +25 -18
  201. package/lib/scrollbar/src/scrollbar.js +178 -146
  202. package/lib/segmented/src/segmented.js +97 -64
  203. package/lib/select/src/optgroup.js +7 -3
  204. package/lib/select/src/select.js +486 -343
  205. package/lib/select/src/util.js +6 -3
  206. package/lib/slider/src/slider.js +122 -94
  207. package/lib/space/src/space.js +57 -40
  208. package/lib/splitter/src/splitter-panel.js +51 -26
  209. package/lib/splitter/src/splitter.js +233 -158
  210. package/lib/steps/src/steps.js +11 -6
  211. package/lib/style.css +1 -1
  212. package/lib/style.mini.css +1 -1
  213. package/lib/switch/src/switch.js +116 -65
  214. package/lib/table-select/src/table-select.js +234 -155
  215. package/lib/table-transfer/src/table-transfer.js +12 -7
  216. package/lib/tabs/src/tab-pane.js +34 -17
  217. package/lib/tabs/src/tabs.js +365 -232
  218. package/lib/tag/src/tag.js +67 -49
  219. package/lib/text/src/text.js +100 -76
  220. package/lib/text-ellipsis/src/text-ellipsis.js +86 -55
  221. package/lib/textarea/src/textarea.js +127 -97
  222. package/lib/timeline/src/timeline-item.js +3 -2
  223. package/lib/timeline/src/timeline.js +4 -3
  224. package/lib/tip/src/tip.js +58 -34
  225. package/lib/tooltip/src/tooltip.js +116 -76
  226. package/lib/tour/src/tour.js +4 -3
  227. package/lib/transfer/src/transfer.js +44 -27
  228. package/lib/tree/src/tree.js +717 -500
  229. package/lib/tree-select/src/tree-select.js +351 -256
  230. package/lib/ui/index.js +46 -4
  231. package/lib/ui/src/dom.js +9 -6
  232. package/lib/ui/src/log.js +1 -1
  233. package/lib/upload/src/upload.js +708 -492
  234. package/lib/vxe-icon/style/style.css +1 -1
  235. package/lib/vxe-icon/style/style.mini.css +1 -1
  236. package/lib/watermark/src/util.js +15 -12
  237. package/lib/watermark/src/watermark.js +60 -30
  238. package/package.json +10 -4
  239. package/packages/alert/index.ts +16 -16
  240. package/packages/alert/src/alert.ts +148 -126
  241. package/packages/anchor/index.ts +16 -16
  242. package/packages/anchor/src/anchor-link.ts +139 -121
  243. package/packages/anchor/src/anchor.ts +266 -237
  244. package/packages/anchor/src/util.ts +23 -23
  245. package/packages/anchor-link/index.ts +16 -16
  246. package/packages/avatar/index.ts +16 -16
  247. package/packages/avatar/src/avatar.ts +166 -149
  248. package/packages/backtop/index.ts +16 -16
  249. package/packages/backtop/src/backtop.ts +337 -313
  250. package/packages/badge/index.ts +16 -16
  251. package/packages/badge/src/badge.ts +131 -118
  252. package/packages/breadcrumb/index.ts +16 -16
  253. package/packages/breadcrumb/src/breadcrumb-item.ts +129 -106
  254. package/packages/breadcrumb/src/breadcrumb.ts +94 -92
  255. package/packages/breadcrumb-item/index.ts +16 -16
  256. package/packages/button/index.ts +16 -16
  257. package/packages/button/src/button-group.ts +116 -110
  258. package/packages/button/src/button.ts +975 -855
  259. package/packages/button-group/index.ts +16 -16
  260. package/packages/calendar/index.ts +16 -16
  261. package/packages/calendar/src/calendar.ts +1566 -1352
  262. package/packages/card/index.ts +16 -16
  263. package/packages/card/src/card.ts +285 -236
  264. package/packages/carousel/index.ts +16 -16
  265. package/packages/carousel/src/carousel-item.ts +120 -102
  266. package/packages/carousel/src/carousel.ts +475 -414
  267. package/packages/carousel/src/util.ts +21 -21
  268. package/packages/carousel-item/index.ts +16 -16
  269. package/packages/cascader/index.ts +16 -16
  270. package/packages/cascader/src/cascader.ts +2074 -1896
  271. package/packages/cascader/src/util.ts +9 -9
  272. package/packages/checkbox/index.ts +16 -16
  273. package/packages/checkbox/src/button.ts +267 -221
  274. package/packages/checkbox/src/checkbox.ts +219 -199
  275. package/packages/checkbox/src/group.ts +292 -269
  276. package/packages/checkbox-button/index.ts +16 -16
  277. package/packages/checkbox-group/index.ts +16 -16
  278. package/packages/col/index.ts +16 -16
  279. package/packages/collapse/index.ts +16 -16
  280. package/packages/collapse/src/collapse-pane.ts +142 -114
  281. package/packages/collapse/src/collapse.ts +453 -384
  282. package/packages/collapse/src/util.ts +21 -21
  283. package/packages/collapse-pane/index.ts +16 -16
  284. package/packages/color-picker/index.ts +31 -31
  285. package/packages/color-picker/src/color-picker.ts +1310 -1147
  286. package/packages/color-picker/src/util.ts +436 -423
  287. package/packages/components.ts +350 -349
  288. package/packages/context-menu/index.ts +54 -54
  289. package/packages/context-menu/src/context-menu.ts +773 -681
  290. package/packages/countdown/index.ts +16 -16
  291. package/packages/countdown/src/countdown.ts +295 -262
  292. package/packages/date-panel/index.ts +16 -16
  293. package/packages/date-panel/src/date-panel.ts +2214 -1900
  294. package/packages/date-panel/src/util.ts +354 -326
  295. package/packages/date-picker/index.ts +16 -16
  296. package/packages/date-picker/src/date-picker.ts +1884 -1752
  297. package/packages/date-range-picker/index.ts +16 -16
  298. package/packages/date-range-picker/src/date-range-picker.ts +1728 -1604
  299. package/packages/divider/index.ts +16 -16
  300. package/packages/divider/src/divider.ts +105 -93
  301. package/packages/drawer/index.ts +78 -78
  302. package/packages/drawer/src/drawer.ts +920 -802
  303. package/packages/drawer/src/store.ts +3 -3
  304. package/packages/dynamics/index.ts +124 -117
  305. package/packages/empty/index.ts +16 -16
  306. package/packages/empty/src/empty.ts +124 -103
  307. package/packages/form/index.ts +16 -16
  308. package/packages/form/render/index.ts +646 -614
  309. package/packages/form/src/form-config-item.ts +85 -80
  310. package/packages/form/src/form-group.ts +96 -86
  311. package/packages/form/src/form-item.ts +181 -174
  312. package/packages/form/src/form.ts +1122 -1069
  313. package/packages/form/src/itemInfo.ts +84 -82
  314. package/packages/form/src/render.ts +470 -387
  315. package/packages/form/src/util.ts +98 -93
  316. package/packages/form-gather/index.ts +26 -26
  317. package/packages/form-group/index.ts +16 -16
  318. package/packages/form-item/index.ts +16 -16
  319. package/packages/icon/index.ts +16 -16
  320. package/packages/icon/src/icon.ts +78 -75
  321. package/packages/icon-picker/index.ts +16 -16
  322. package/packages/icon-picker/src/icon-picker.ts +922 -809
  323. package/packages/image/index.ts +16 -16
  324. package/packages/image/src/group.ts +159 -153
  325. package/packages/image/src/image.ts +298 -298
  326. package/packages/image/src/preview.ts +749 -672
  327. package/packages/image/src/util.ts +62 -59
  328. package/packages/image-group/index.ts +16 -16
  329. package/packages/image-preview/index.ts +19 -19
  330. package/packages/index.ts +20 -4
  331. package/packages/input/index.ts +16 -16
  332. package/packages/input/src/input.ts +3201 -2863
  333. package/packages/language/fr-FR.ts +15 -15
  334. package/packages/language/it-IT.ts +4 -4
  335. package/packages/language/uk-UA.ts +1 -1
  336. package/packages/language/uz-UZ.ts +13 -13
  337. package/packages/language/zh-CN.ts +907 -907
  338. package/packages/layout-aside/index.ts +16 -16
  339. package/packages/layout-aside/src/layout-aside.ts +172 -156
  340. package/packages/layout-body/index.ts +16 -16
  341. package/packages/layout-body/src/layout-body.ts +191 -181
  342. package/packages/layout-container/index.ts +16 -16
  343. package/packages/layout-container/src/layout-container.ts +108 -92
  344. package/packages/layout-footer/index.ts +16 -16
  345. package/packages/layout-footer/src/layout-footer.ts +81 -74
  346. package/packages/layout-header/index.ts +16 -16
  347. package/packages/layout-header/src/layout-header.ts +79 -73
  348. package/packages/link/index.ts +16 -16
  349. package/packages/link/src/link.ts +180 -161
  350. package/packages/list/index.ts +16 -16
  351. package/packages/list/src/list.ts +2690 -2564
  352. package/packages/list/src/store.ts +10 -10
  353. package/packages/list/src/util.ts +10 -11
  354. package/packages/loading/index.ts +39 -36
  355. package/packages/loading/src/loading.ts +179 -152
  356. package/packages/mention/index.ts +16 -16
  357. package/packages/mention/src/mention.ts +69 -71
  358. package/packages/menu/index.ts +16 -16
  359. package/packages/menu/src/menu.ts +1000 -857
  360. package/packages/modal/index.ts +164 -141
  361. package/packages/modal/src/modal.ts +1803 -1681
  362. package/packages/modal/src/store.ts +3 -3
  363. package/packages/notice-bar/index.ts +16 -16
  364. package/packages/notice-bar/src/notice-bar.ts +207 -181
  365. package/packages/number-input/index.ts +16 -16
  366. package/packages/number-input/src/number-input.ts +1322 -1242
  367. package/packages/number-input/src/util.ts +25 -25
  368. package/packages/optgroup/index.ts +16 -16
  369. package/packages/option/index.ts +16 -16
  370. package/packages/pager/index.ts +16 -16
  371. package/packages/pager/src/pager.ts +919 -775
  372. package/packages/password-input/index.ts +16 -16
  373. package/packages/password-input/src/password-input.ts +523 -482
  374. package/packages/print/index.ts +18 -18
  375. package/packages/print/src/page-break.ts +104 -92
  376. package/packages/print/src/print.ts +366 -281
  377. package/packages/print/src/util.ts +299 -304
  378. package/packages/print-page-break/index.ts +16 -16
  379. package/packages/pulldown/index.ts +16 -16
  380. package/packages/pulldown/src/pulldown.ts +505 -445
  381. package/packages/radio/index.ts +16 -16
  382. package/packages/radio/src/button.ts +290 -243
  383. package/packages/radio/src/group.ts +275 -252
  384. package/packages/radio/src/radio.ts +237 -218
  385. package/packages/radio-button/index.ts +16 -16
  386. package/packages/radio-group/index.ts +16 -16
  387. package/packages/rate/index.ts +16 -16
  388. package/packages/rate/src/rate.ts +203 -192
  389. package/packages/result/index.ts +16 -16
  390. package/packages/result/src/result.ts +141 -112
  391. package/packages/row/index.ts +16 -16
  392. package/packages/row/src/col.ts +171 -159
  393. package/packages/row/src/row.ts +143 -138
  394. package/packages/scrollbar/index.ts +16 -16
  395. package/packages/scrollbar/src/scrollbar.ts +626 -595
  396. package/packages/segmented/index.ts +16 -16
  397. package/packages/segmented/src/segmented.ts +297 -264
  398. package/packages/select/index.ts +16 -16
  399. package/packages/select/src/optgroup.ts +53 -49
  400. package/packages/select/src/option-info.ts +20 -20
  401. package/packages/select/src/option.ts +47 -47
  402. package/packages/select/src/select.ts +2390 -2214
  403. package/packages/select/src/util.ts +50 -47
  404. package/packages/slider/index.ts +16 -16
  405. package/packages/slider/src/slider.ts +547 -506
  406. package/packages/space/index.ts +16 -16
  407. package/packages/space/src/space.ts +225 -209
  408. package/packages/split/index.ts +16 -16
  409. package/packages/split-pane/index.ts +17 -17
  410. package/packages/splitter/index.ts +16 -16
  411. package/packages/splitter/src/splitter-panel.ts +199 -163
  412. package/packages/splitter/src/splitter.ts +1110 -1020
  413. package/packages/splitter/src/util.ts +21 -21
  414. package/packages/splitter-panel/index.ts +16 -16
  415. package/packages/steps/index.ts +16 -16
  416. package/packages/steps/src/steps.ts +69 -68
  417. package/packages/switch/index.ts +16 -16
  418. package/packages/switch/src/switch.ts +300 -245
  419. package/packages/tab-pane/index.ts +16 -16
  420. package/packages/table-select/index.ts +16 -16
  421. package/packages/table-select/src/table-select.ts +1103 -999
  422. package/packages/table-transfer/index.ts +16 -16
  423. package/packages/table-transfer/src/table-transfer.ts +104 -91
  424. package/packages/tabs/index.ts +16 -16
  425. package/packages/tabs/src/tab-pane.ts +132 -117
  426. package/packages/tabs/src/tabs.ts +1137 -997
  427. package/packages/tabs/src/util.ts +21 -21
  428. package/packages/tag/index.ts +16 -16
  429. package/packages/tag/src/tag.ts +204 -187
  430. package/packages/text/index.ts +16 -16
  431. package/packages/text/src/text.ts +282 -260
  432. package/packages/text-ellipsis/index.ts +16 -16
  433. package/packages/text-ellipsis/src/text-ellipsis.ts +312 -282
  434. package/packages/textarea/index.ts +16 -16
  435. package/packages/textarea/src/textarea.ts +526 -495
  436. package/packages/timeline/index.ts +16 -16
  437. package/packages/timeline/src/timeline-item.ts +65 -67
  438. package/packages/timeline/src/timeline.ts +70 -71
  439. package/packages/timeline-item/index.ts +16 -16
  440. package/packages/tip/index.ts +19 -19
  441. package/packages/tip/src/tip.ts +150 -129
  442. package/packages/tooltip/index.ts +72 -72
  443. package/packages/tooltip/src/tooltip.ts +669 -627
  444. package/packages/tour/index.ts +16 -16
  445. package/packages/tour/src/tour.ts +70 -71
  446. package/packages/transfer/index.ts +16 -16
  447. package/packages/transfer/src/transfer.ts +130 -117
  448. package/packages/tree/index.ts +16 -16
  449. package/packages/tree/src/store.ts +10 -10
  450. package/packages/tree/src/tree.ts +4077 -3852
  451. package/packages/tree/src/util.ts +51 -51
  452. package/packages/tree-select/index.ts +16 -16
  453. package/packages/tree-select/src/tree-select.ts +1217 -1094
  454. package/packages/ui/index.ts +836 -793
  455. package/packages/ui/src/anime.ts +51 -52
  456. package/packages/ui/src/comp.ts +3 -3
  457. package/packages/ui/src/dom.ts +357 -354
  458. package/packages/ui/src/log.ts +19 -19
  459. package/packages/ui/src/utils.ts +79 -79
  460. package/packages/ui/src/vn.ts +39 -39
  461. package/packages/upload/index.ts +20 -20
  462. package/packages/upload/src/upload.ts +2271 -2021
  463. package/packages/upload/src/util.ts +109 -109
  464. package/packages/watermark/index.ts +33 -33
  465. package/packages/watermark/src/util.ts +186 -180
  466. package/packages/watermark/src/watermark.ts +196 -168
  467. package/types/all.d.ts +552 -552
  468. package/types/components/alert.d.ts +83 -87
  469. package/types/components/anchor-link.d.ts +88 -91
  470. package/types/components/anchor.d.ts +97 -104
  471. package/types/components/avatar.d.ts +85 -88
  472. package/types/components/backtop.d.ts +119 -122
  473. package/types/components/badge.d.ts +77 -80
  474. package/types/components/breadcrumb-item.d.ts +77 -80
  475. package/types/components/breadcrumb.d.ts +83 -87
  476. package/types/components/button-group.d.ts +118 -120
  477. package/types/components/button.d.ts +331 -339
  478. package/types/components/calendar.d.ts +247 -264
  479. package/types/components/card.d.ts +111 -113
  480. package/types/components/carousel-item.d.ts +73 -75
  481. package/types/components/carousel.d.ts +130 -134
  482. package/types/components/cascader.d.ts +336 -386
  483. package/types/components/checkbox-button.d.ts +109 -114
  484. package/types/components/checkbox-group.d.ts +152 -154
  485. package/types/components/checkbox.d.ts +123 -128
  486. package/types/components/col.d.ts +77 -80
  487. package/types/components/colgroup.d.ts +64 -69
  488. package/types/components/collapse-pane.d.ts +86 -89
  489. package/types/components/collapse.d.ts +123 -133
  490. package/types/components/color-picker.d.ts +275 -280
  491. package/types/components/column.d.ts +834 -851
  492. package/types/components/context-menu.d.ts +282 -289
  493. package/types/components/countdown.d.ts +108 -112
  494. package/types/components/date-panel.d.ts +319 -331
  495. package/types/components/date-picker.d.ts +361 -384
  496. package/types/components/date-range-picker.d.ts +351 -371
  497. package/types/components/divider.d.ts +72 -75
  498. package/types/components/drawer.d.ts +333 -344
  499. package/types/components/empty.d.ts +75 -78
  500. package/types/components/flow-design.d.ts +73 -85
  501. package/types/components/flow-view.d.ts +73 -85
  502. package/types/components/form-design.d.ts +370 -376
  503. package/types/components/form-gather.d.ts +120 -124
  504. package/types/components/form-group.d.ts +73 -77
  505. package/types/components/form-item.d.ts +395 -413
  506. package/types/components/form-view.d.ts +179 -183
  507. package/types/components/form.d.ts +499 -495
  508. package/types/components/gantt-module/gantt-view.d.ts +195 -200
  509. package/types/components/gantt-module/index.d.ts +1 -1
  510. package/types/components/gantt-plugins/extend-gantt-chart.d.ts +137 -131
  511. package/types/components/gantt-plugins/index.d.ts +1 -1
  512. package/types/components/gantt.d.ts +1248 -1399
  513. package/types/components/grid.d.ts +1289 -1317
  514. package/types/components/icon-picker.d.ts +242 -253
  515. package/types/components/icon.d.ts +332 -87
  516. package/types/components/image-group.d.ts +124 -127
  517. package/types/components/image-preview.d.ts +167 -167
  518. package/types/components/image.d.ts +166 -173
  519. package/types/components/input.d.ts +429 -453
  520. package/types/components/layout-aside.d.ts +123 -123
  521. package/types/components/layout-body.d.ts +110 -113
  522. package/types/components/layout-container.d.ts +73 -75
  523. package/types/components/layout-footer.d.ts +71 -73
  524. package/types/components/layout-header.d.ts +67 -69
  525. package/types/components/link.d.ts +107 -111
  526. package/types/components/list-design.d.ts +189 -190
  527. package/types/components/list-view.d.ts +193 -199
  528. package/types/components/list.d.ts +678 -715
  529. package/types/components/loading.d.ts +98 -103
  530. package/types/components/mention.d.ts +70 -77
  531. package/types/components/menu.d.ts +284 -295
  532. package/types/components/modal.d.ts +567 -584
  533. package/types/components/notice-bar.d.ts +102 -106
  534. package/types/components/number-input.d.ts +359 -365
  535. package/types/components/optgroup.d.ts +85 -88
  536. package/types/components/option.d.ts +94 -103
  537. package/types/components/pager.d.ts +330 -335
  538. package/types/components/password-input.d.ts +143 -156
  539. package/types/components/print-page-break.d.ts +65 -69
  540. package/types/components/print.d.ts +243 -245
  541. package/types/components/pulldown.d.ts +231 -239
  542. package/types/components/radio-button.d.ts +113 -118
  543. package/types/components/radio-group.d.ts +151 -153
  544. package/types/components/radio.d.ts +129 -134
  545. package/types/components/rate.d.ts +83 -88
  546. package/types/components/result.d.ts +81 -84
  547. package/types/components/row.d.ts +77 -81
  548. package/types/components/scrollbar.d.ts +299 -305
  549. package/types/components/segmented.d.ts +119 -123
  550. package/types/components/select.d.ts +598 -616
  551. package/types/components/slider.d.ts +137 -151
  552. package/types/components/space.d.ts +120 -127
  553. package/types/components/split-pane.d.ts +126 -133
  554. package/types/components/split.d.ts +301 -312
  555. package/types/components/splitter-panel.d.ts +123 -130
  556. package/types/components/splitter.d.ts +290 -301
  557. package/types/components/steps.d.ts +63 -68
  558. package/types/components/switch.d.ts +127 -133
  559. package/types/components/tab-pane.d.ts +111 -114
  560. package/types/components/table-module/custom.d.ts +123 -123
  561. package/types/components/table-module/edit.d.ts +297 -276
  562. package/types/components/table-module/export.d.ts +88 -96
  563. package/types/components/table-module/filter.d.ts +144 -144
  564. package/types/components/table-module/index.d.ts +7 -7
  565. package/types/components/table-module/keyboard.d.ts +26 -26
  566. package/types/components/table-module/menu.d.ts +46 -46
  567. package/types/components/table-module/validator.d.ts +53 -53
  568. package/types/components/table-plugins/extend-cell-area.d.ts +781 -781
  569. package/types/components/table-plugins/extend-pivot-table.d.ts +59 -58
  570. package/types/components/table-plugins/filters-combination.d.ts +15 -15
  571. package/types/components/table-plugins/filters-complex-input.d.ts +9 -9
  572. package/types/components/table-plugins/index.d.ts +4 -4
  573. package/types/components/table-select.d.ts +268 -276
  574. package/types/components/table-transfer.d.ts +80 -84
  575. package/types/components/table.d.ts +7530 -8000
  576. package/types/components/tabs.d.ts +314 -352
  577. package/types/components/tag.d.ts +108 -114
  578. package/types/components/text-ellipsis.d.ts +107 -112
  579. package/types/components/text.d.ts +112 -122
  580. package/types/components/textarea.d.ts +261 -275
  581. package/types/components/timeline-item.d.ts +66 -75
  582. package/types/components/timeline.d.ts +70 -77
  583. package/types/components/tip.d.ts +81 -83
  584. package/types/components/toolbar.d.ts +327 -336
  585. package/types/components/tooltip.d.ts +250 -255
  586. package/types/components/tour.d.ts +70 -77
  587. package/types/components/transfer.d.ts +80 -84
  588. package/types/components/tree-select.d.ts +361 -376
  589. package/types/components/tree.d.ts +994 -1036
  590. package/types/components/upload.d.ts +477 -518
  591. package/types/components/watermark.d.ts +116 -120
  592. package/types/handles/form-design.d.ts +50 -50
  593. package/types/handles/index.d.ts +3 -3
  594. package/types/handles/list-design.d.ts +1 -2
  595. package/types/handles/table.d.ts +15 -15
  596. package/types/index.d.ts +8 -8
  597. package/types/ui/commands.d.ts +57 -57
  598. package/types/ui/formats.d.ts +62 -62
  599. package/types/ui/global-config.d.ts +269 -269
  600. package/types/ui/global-icon.d.ts +315 -315
  601. package/types/ui/hooks.d.ts +13 -13
  602. package/types/ui/index.d.ts +100 -100
  603. package/types/ui/interceptor.d.ts +52 -52
  604. package/types/ui/menus.d.ts +89 -89
  605. package/types/ui/renderer.d.ts +1033 -1047
  606. package/types/ui/validators.d.ts +37 -38
  607. /package/dist/{iconfont.1792979107495.ttf → iconfont.1793007755017.ttf} +0 -0
  608. /package/dist/{iconfont.1792979107495.woff → iconfont.1793007755017.woff} +0 -0
  609. /package/dist/{iconfont.1792979107495.woff2 → iconfont.1793007755017.woff2} +0 -0
  610. /package/es/icon/{iconfont.1792979107495.ttf → iconfont.1793007755017.ttf} +0 -0
  611. /package/es/icon/{iconfont.1792979107495.woff → iconfont.1793007755017.woff} +0 -0
  612. /package/es/icon/{iconfont.1792979107495.woff2 → iconfont.1793007755017.woff2} +0 -0
  613. /package/es/{iconfont.1792979107495.ttf → iconfont.1793007755017.ttf} +0 -0
  614. /package/es/{iconfont.1792979107495.woff → iconfont.1793007755017.woff} +0 -0
  615. /package/es/{iconfont.1792979107495.woff2 → iconfont.1793007755017.woff2} +0 -0
  616. /package/es/vxe-icon/{iconfont.1792979107495.ttf → iconfont.1793007755017.ttf} +0 -0
  617. /package/es/vxe-icon/{iconfont.1792979107495.woff → iconfont.1793007755017.woff} +0 -0
  618. /package/es/vxe-icon/{iconfont.1792979107495.woff2 → iconfont.1793007755017.woff2} +0 -0
  619. /package/lib/icon/style/{iconfont.1792979107495.ttf → iconfont.1793007755017.ttf} +0 -0
  620. /package/lib/icon/style/{iconfont.1792979107495.woff → iconfont.1793007755017.woff} +0 -0
  621. /package/lib/icon/style/{iconfont.1792979107495.woff2 → iconfont.1793007755017.woff2} +0 -0
  622. /package/lib/{iconfont.1792979107495.ttf → iconfont.1793007755017.ttf} +0 -0
  623. /package/lib/{iconfont.1792979107495.woff → iconfont.1793007755017.woff} +0 -0
  624. /package/lib/{iconfont.1792979107495.woff2 → iconfont.1793007755017.woff2} +0 -0
  625. /package/lib/vxe-icon/style/{iconfont.1792979107495.ttf → iconfont.1793007755017.ttf} +0 -0
  626. /package/lib/vxe-icon/style/{iconfont.1792979107495.woff → iconfont.1793007755017.woff} +0 -0
  627. /package/lib/vxe-icon/style/{iconfont.1792979107495.woff2 → iconfont.1793007755017.woff2} +0 -0
@@ -1,482 +1,523 @@
1
- import { h, ref, Ref, computed, reactive, inject, nextTick, watch, PropType, onMounted } from 'vue'
2
- import { defineVxeComponent } from '../../ui/src/comp'
3
- import XEUtils from 'xe-utils'
4
- import { getConfig, getIcon, getI18n, createEvent, useSize, renderEmptyElement } from '../../ui'
5
- import { getFuncText, getText } from '../../ui/src/utils'
6
- import { getSlotVNs } from '../../ui/src/vn'
7
- import { toCssUnit } from '../../ui/src/dom'
8
-
9
- import type { VxePasswordInputConstructor, VxePasswordInputEmits, PasswordInputReactData, PasswordInputMethods, VxePasswordInputPropTypes, InputPrivateRef, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeComponentStyleType } from '../../../types'
10
-
11
- export default defineVxeComponent({
12
- name: 'VxePasswordInput',
13
- props: {
14
- modelValue: String as PropType<VxePasswordInputPropTypes.ModelValue>,
15
- immediate: {
16
- type: Boolean as PropType<VxePasswordInputPropTypes.Immediate>,
17
- default: true
18
- },
19
- name: String as PropType<VxePasswordInputPropTypes.Name>,
20
- clearable: {
21
- type: Boolean as PropType<VxePasswordInputPropTypes.Clearable>,
22
- default: () => getConfig().passwordInput.clearable
23
- },
24
- readonly: Boolean as PropType<VxePasswordInputPropTypes.Readonly>,
25
- disabled: Boolean as PropType<VxePasswordInputPropTypes.Disabled>,
26
- maxLength: [String, Number] as PropType<VxePasswordInputPropTypes.MaxLength>,
27
- placeholder: String as PropType<VxePasswordInputPropTypes.Placeholder>,
28
- floatContent: {
29
- type: String as PropType<VxePasswordInputPropTypes.FloatContent>,
30
- default: () => getConfig().passwordInput.floatContent
31
- },
32
- floatAlign: {
33
- type: String as PropType<VxePasswordInputPropTypes.FloatAlign>,
34
- default: () => getConfig().passwordInput.floatAlign
35
- },
36
- autoComplete: {
37
- type: String as PropType<VxePasswordInputPropTypes.AutoComplete>,
38
- default: 'off'
39
- },
40
- className: String as PropType<VxePasswordInputPropTypes.ClassName>,
41
- inputClassName: {
42
- type: String as PropType<VxePasswordInputPropTypes.InputClassName>,
43
- default: () => getConfig().passwordInput.inputClassName
44
- },
45
- width: [String, Number] as PropType<VxePasswordInputPropTypes.Width>,
46
- size: {
47
- type: String as PropType<VxePasswordInputPropTypes.Size>,
48
- default: () => getConfig().passwordInput.size || getConfig().size
49
- },
50
- prefixIcon: String as PropType<VxePasswordInputPropTypes.PrefixIcon>,
51
- suffixIcon: String as PropType<VxePasswordInputPropTypes.SuffixIcon>,
52
- controls: {
53
- type: Boolean as PropType<VxePasswordInputPropTypes.Controls>,
54
- default: () => getConfig().passwordInput.controls
55
- },
56
- editable: {
57
- type: Boolean as PropType<VxePasswordInputPropTypes.Editable>,
58
- default: true
59
- },
60
-
61
- // 已废弃
62
- autocomplete: String as PropType<VxePasswordInputPropTypes.Autocomplete>
63
- },
64
- emits: [
65
- 'update:modelValue',
66
- 'input',
67
- 'change',
68
- 'click',
69
- 'focus',
70
- 'blur',
71
- 'clear',
72
- 'lazy-change',
73
- 'toggle-visible',
74
- 'prefix-click',
75
- 'suffix-click'
76
- ] as VxePasswordInputEmits,
77
- setup (props, context) {
78
- const { emit, slots } = context
79
- const $xeForm = inject<VxeFormConstructor & VxeFormPrivateMethods | null>('$xeForm', null)
80
- const formItemInfo = inject<VxeFormDefines.ProvideItemInfo | null>('xeFormItemInfo', null)
81
-
82
- const xID = XEUtils.uniqueId()
83
-
84
- const { computeSize } = useSize(props)
85
-
86
- const reactData = reactive<PasswordInputReactData>({
87
- showPwd: false,
88
- isActivated: false,
89
- inputValue: props.modelValue
90
- })
91
-
92
- const refElem = ref() as Ref<HTMLDivElement>
93
- const refInputTarget = ref() as Ref<HTMLInputElement>
94
-
95
- const refMaps: InputPrivateRef = {
96
- refElem,
97
- refInput: refInputTarget
98
- }
99
-
100
- const $xePasswordInput = {
101
- xID,
102
- props,
103
- context,
104
- reactData,
105
- getRefMaps: () => refMaps
106
- } as unknown as VxePasswordInputConstructor
107
-
108
- const computeIsClearable = computed(() => {
109
- return props.clearable
110
- })
111
-
112
- const computeInpPlaceholder = computed(() => {
113
- const { placeholder } = props
114
- if (placeholder) {
115
- return getFuncText(placeholder)
116
- }
117
- const globalPlaceholder = getConfig().passwordInput.placeholder
118
- if (globalPlaceholder) {
119
- return getFuncText(globalPlaceholder)
120
- }
121
- return getI18n('vxe.base.pleaseInput')
122
- })
123
-
124
- const computeFormReadonly = computed(() => {
125
- if (getConfig().inputReadonly === 'obsolete') {
126
- if ($xeForm) {
127
- return $xeForm.props.readonly
128
- }
129
- return false
130
- }
131
- const { readonly } = props
132
- if (readonly === null) {
133
- if ($xeForm) {
134
- return $xeForm.props.readonly
135
- }
136
- return false
137
- }
138
- return readonly
139
- })
140
-
141
- const computeIsDisabled = computed(() => {
142
- const { disabled } = props
143
- if (disabled === null) {
144
- if ($xeForm) {
145
- return $xeForm.props.disabled
146
- }
147
- return false
148
- }
149
- return disabled
150
- })
151
-
152
- const computeInputType = computed(() => {
153
- const { showPwd } = reactData
154
- if (showPwd) {
155
- return 'text'
156
- }
157
- return 'password'
158
- })
159
-
160
- const computeInpImmediate = computed(() => {
161
- const { immediate } = props
162
- return immediate
163
- })
164
-
165
- const computeInputReadonly = computed(() => {
166
- const { editable } = props
167
- const formReadonly = computeFormReadonly.value
168
- return formReadonly || !editable
169
- })
170
-
171
- const computeDomValue = computed(() => {
172
- const { inputValue } = reactData
173
- return inputValue
174
- })
175
-
176
- const computeCurrStyle = computed(() => {
177
- const { width } = props
178
- const stys: VxeComponentStyleType = {}
179
- if (width) {
180
- stys.width = toCssUnit(width)
181
- }
182
- return stys
183
- })
184
-
185
- const dispatchEvent = (type: ValueOf<VxePasswordInputEmits>, params: Record<string, any>, evnt: Event | null) => {
186
- emit(type, createEvent(evnt, { $passwordInput: $xePasswordInput }, params))
187
- }
188
-
189
- const updateDomValue = () => {
190
- const domValue = computeDomValue.value
191
- const inputElem = refInputTarget.value
192
- if (inputElem) {
193
- inputElem.value = XEUtils.eqNull(domValue) ? '' : ('' + domValue)
194
- }
195
- }
196
-
197
- const triggerEvent = (evnt: Event & { type: 'input' | 'change' | 'click' | 'focus' | 'blur' }) => {
198
- const { inputValue } = reactData
199
- dispatchEvent(evnt.type, { value: inputValue }, evnt)
200
- }
201
-
202
- const emitInputEvent = (value: any, evnt: Event) => {
203
- const inpImmediate = computeInpImmediate.value
204
- reactData.inputValue = value
205
- if (inpImmediate) {
206
- handleChange(value, evnt)
207
- } else {
208
- dispatchEvent('input', { value }, evnt)
209
- }
210
- }
211
-
212
- const inputEvent = (evnt: Event & { type: 'input' }) => {
213
- const inputElem = evnt.target as HTMLInputElement
214
- const value = inputElem.value
215
- emitInputEvent(value, evnt)
216
- }
217
-
218
- const handleChange = (value: string, evnt: Event | { type: string }) => {
219
- reactData.inputValue = value
220
- emit('update:modelValue', value)
221
- dispatchEvent('input', { value }, evnt as any)
222
- if (XEUtils.toValueString(props.modelValue) !== value) {
223
- dispatchEvent('change', { value }, evnt as any)
224
- // 自动更新校验状态
225
- if ($xeForm && formItemInfo) {
226
- $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
227
- }
228
- }
229
- }
230
-
231
- const changeEvent = (evnt: Event & { type: 'change' }) => {
232
- triggerEvent(evnt)
233
- dispatchEvent('lazy-change', { value: reactData.inputValue }, evnt)
234
- // 自动更新校验状态
235
- if ($xeForm && formItemInfo) {
236
- $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, reactData.inputValue)
237
- }
238
- }
239
-
240
- const focusEvent = (evnt: Event & { type: 'focus' }) => {
241
- reactData.isActivated = true
242
- triggerEvent(evnt)
243
- }
244
-
245
- const blurEvent = (evnt: Event & { type: 'blur' }) => {
246
- const { inputValue } = reactData
247
- const value = inputValue
248
- reactData.isActivated = false
249
- dispatchEvent('blur', { value }, evnt)
250
- // 自动更新校验状态
251
- if ($xeForm && formItemInfo) {
252
- $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
253
- }
254
- }
255
-
256
- const passwordToggleEvent = (evnt: Event) => {
257
- const { showPwd } = reactData
258
- const isDisabled = computeIsDisabled.value
259
- const formReadonly = computeFormReadonly.value
260
- if (!isDisabled && !formReadonly) {
261
- reactData.showPwd = !showPwd
262
- }
263
- dispatchEvent('toggle-visible', { visible: reactData.showPwd }, evnt)
264
- }
265
-
266
- const clickEvent = (evnt: Event & { type: 'click' }) => {
267
- triggerEvent(evnt)
268
- }
269
-
270
- const clearValueEvent = (evnt: Event, value: VxePasswordInputPropTypes.ModelValue) => {
271
- focus()
272
- handleChange('', evnt)
273
- dispatchEvent('clear', { value }, evnt)
274
- dispatchEvent('lazy-change', { value: reactData.inputValue }, evnt)
275
- }
276
-
277
- const clickSuffixEvent = (evnt: Event) => {
278
- const isDisabled = computeIsDisabled.value
279
- if (!isDisabled) {
280
- const { inputValue } = reactData
281
- dispatchEvent('suffix-click', { value: inputValue }, evnt)
282
- }
283
- }
284
-
285
- const clickPrefixEvent = (evnt: Event) => {
286
- const isDisabled = computeIsDisabled.value
287
- if (!isDisabled) {
288
- const { inputValue } = reactData
289
- dispatchEvent('prefix-click', { value: inputValue }, evnt)
290
- }
291
- }
292
-
293
- const passwordInputMethods: PasswordInputMethods = {
294
- dispatchEvent,
295
- focus () {
296
- const inputElem = refInputTarget.value
297
- reactData.isActivated = true
298
- inputElem.focus()
299
- return nextTick()
300
- },
301
- blur () {
302
- const inputElem = refInputTarget.value
303
- inputElem.blur()
304
- reactData.isActivated = false
305
- return nextTick()
306
- },
307
- select () {
308
- const inputElem = refInputTarget.value
309
- inputElem.select()
310
- reactData.isActivated = false
311
- return nextTick()
312
- }
313
- }
314
-
315
- Object.assign($xePasswordInput, passwordInputMethods)
316
-
317
- const renderPasswordIcon = () => {
318
- const { showPwd } = reactData
319
- return h('div', {
320
- class: 'vxe-password-input--control-icon',
321
- onClick: passwordToggleEvent
322
- }, [
323
- h('i', {
324
- class: ['vxe-password-input--password-icon', showPwd ? getIcon().PASSWORD_INPUT_SHOW_PWD : getIcon().PASSWORD_INPUT_HIDE_PWD]
325
- })
326
- ])
327
- }
328
-
329
- const renderPrefixIcon = () => {
330
- const { prefixIcon } = props
331
- const prefixSlot = slots.prefix
332
- return prefixSlot || prefixIcon
333
- ? h('div', {
334
- class: 'vxe-password-input--prefix',
335
- onClick: clickPrefixEvent
336
- }, [
337
- h('div', {
338
- class: 'vxe-password-input--prefix-icon'
339
- }, prefixSlot
340
- ? getSlotVNs(prefixSlot({}))
341
- : [
342
- h('i', {
343
- class: prefixIcon
344
- })
345
- ])
346
- ])
347
- : null
348
- }
349
-
350
- const renderSuffixIcon = () => {
351
- const { suffixIcon, controls } = props
352
- const { inputValue } = reactData
353
- const isDisabled = computeIsDisabled.value
354
- const isClearable = computeIsClearable.value
355
- const suffixSlot = slots.suffix
356
- return isClearable || controls || suffixSlot || suffixIcon
357
- ? h('div', {
358
- class: ['vxe-password-input--suffix', {
359
- 'is--clear': isClearable && !isDisabled && !(inputValue === '' || XEUtils.eqNull(inputValue))
360
- }]
361
- }, [
362
- isClearable
363
- ? h('div', {
364
- class: 'vxe-password-input--clear-icon',
365
- onClick: clearValueEvent
366
- }, [
367
- h('i', {
368
- class: getIcon().INPUT_CLEAR
369
- })
370
- ])
371
- : renderEmptyElement($xePasswordInput),
372
- controls ? renderPasswordIcon() : renderEmptyElement($xePasswordInput),
373
- suffixSlot || suffixIcon
374
- ? h('div', {
375
- class: 'vxe-password-input--suffix-icon',
376
- onClick: clickSuffixEvent
377
- }, suffixSlot
378
- ? getSlotVNs(suffixSlot({}))
379
- : [
380
- h('i', {
381
- class: suffixIcon
382
- })
383
- ])
384
- : renderEmptyElement($xePasswordInput)
385
- ])
386
- : null
387
- }
388
-
389
- const renderVN = () => {
390
- const { className, inputClassName, name, readonly, floatContent, autocomplete, autoComplete, maxLength, floatAlign } = props
391
- const { inputValue, isActivated } = reactData
392
- const isDisabled = computeIsDisabled.value
393
- const formReadonly = computeFormReadonly.value
394
- if (formReadonly) {
395
- return h('div', {
396
- ref: refElem,
397
- class: ['vxe-password-input--readonly', className]
398
- }, getText(inputValue))
399
- }
400
- const currStyle = computeCurrStyle.value
401
- const vSize = computeSize.value
402
- const inputType = computeInputType.value
403
- const inpPlaceholder = computeInpPlaceholder.value
404
- const isClearable = computeIsClearable.value
405
- const inputReadonly = computeInputReadonly.value
406
- const prefix = renderPrefixIcon()
407
- const suffix = renderSuffixIcon()
408
- const floatSlot = slots.float
409
- return h('div', {
410
- ref: refElem,
411
- class: ['vxe-password-input', floatContent ? (`fla--${floatAlign || 'center'}`) : '', className, {
412
- [`size--${vSize}`]: vSize,
413
- 'is--prefix': !!prefix,
414
- 'is--suffix': !!suffix,
415
- 'is--readonly': readonly,
416
- 'is--disabled': isDisabled,
417
- 'is--active': isActivated,
418
- 'show--clear': isClearable && !isDisabled && !(inputValue === '' || XEUtils.eqNull(inputValue))
419
- }],
420
- style: currStyle,
421
- spellcheck: false
422
- }, [
423
- prefix || renderEmptyElement($xePasswordInput),
424
- h('div', {
425
- class: 'vxe-password-input--wrapper'
426
- }, [
427
- h('input', {
428
- ref: refInputTarget,
429
- class: 'vxe-password-input--inner' + (inputClassName ? (' ' + inputClassName) : ''),
430
- name,
431
- type: inputType,
432
- placeholder: inpPlaceholder,
433
- readonly: inputReadonly,
434
- disabled: isDisabled,
435
- autocomplete: autocomplete || autoComplete,
436
- maxlength: maxLength,
437
- onClick: clickEvent,
438
- onInput: inputEvent,
439
- onChange: changeEvent,
440
- onFocus: focusEvent,
441
- onBlur: blurEvent
442
- }),
443
- floatContent || floatSlot
444
- ? h('span', {
445
- class: 'vxe-password-input--float-wrapper'
446
- }, floatSlot ? floatSlot({}) : getText(floatContent))
447
- : renderEmptyElement($xePasswordInput)
448
- ]),
449
- suffix || renderEmptyElement($xePasswordInput)
450
- ])
451
- }
452
-
453
- watch(() => props.modelValue, (val) => {
454
- reactData.inputValue = val
455
- })
456
-
457
- const rDvFlag = ref(0)
458
- watch(computeFormReadonly, () => {
459
- rDvFlag.value++
460
- })
461
- watch(computeDomValue, () => {
462
- rDvFlag.value++
463
- })
464
- watch(rDvFlag, () => {
465
- updateDomValue()
466
- nextTick(() => {
467
- updateDomValue()
468
- })
469
- })
470
-
471
- onMounted(() => {
472
- updateDomValue()
473
- })
474
-
475
- $xePasswordInput.renderVN = renderVN
476
-
477
- return $xePasswordInput
478
- },
479
- render () {
480
- return this.renderVN()
481
- }
482
- })
1
+ import { h, ref, Ref, computed, reactive, inject, nextTick, watch, PropType, onMounted } from 'vue'
2
+ import { defineVxeComponent } from '../../ui/src/comp'
3
+ import XEUtils from 'xe-utils'
4
+ import { VxeUI } from '@vxe-ui/core'
5
+ import { getFuncText, getText } from '../../ui/src/utils'
6
+ import { getSlotVNs } from '../../ui/src/vn'
7
+ import { toCssUnit } from '../../ui/src/dom'
8
+
9
+ import type { VxePasswordInputConstructor, VxePasswordInputEmits, PasswordInputReactData, PasswordInputMethods, VxePasswordInputPropTypes, InputPrivateRef, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeComponentStyleType } from '../../../types'
10
+
11
+ const { getConfig, getIcon, getI18n, createEvent, useFns, renderEmptyElement } = VxeUI
12
+
13
+ export default defineVxeComponent({
14
+ name: 'VxePasswordInput',
15
+ props: {
16
+ modelValue: String as PropType<VxePasswordInputPropTypes.ModelValue>,
17
+ immediate: {
18
+ type: Boolean as PropType<VxePasswordInputPropTypes.Immediate>,
19
+ default: true
20
+ },
21
+ name: String as PropType<VxePasswordInputPropTypes.Name>,
22
+ clearable: {
23
+ type: Boolean as PropType<VxePasswordInputPropTypes.Clearable>,
24
+ default: () => getConfig().passwordInput.clearable
25
+ },
26
+ readonly: Boolean as PropType<VxePasswordInputPropTypes.Readonly>,
27
+ disabled: Boolean as PropType<VxePasswordInputPropTypes.Disabled>,
28
+ maxLength: [String, Number] as PropType<VxePasswordInputPropTypes.MaxLength>,
29
+ placeholder: String as PropType<VxePasswordInputPropTypes.Placeholder>,
30
+ floatContent: {
31
+ type: String as PropType<VxePasswordInputPropTypes.FloatContent>,
32
+ default: () => getConfig().passwordInput.floatContent
33
+ },
34
+ floatAlign: {
35
+ type: String as PropType<VxePasswordInputPropTypes.FloatAlign>,
36
+ default: () => getConfig().passwordInput.floatAlign
37
+ },
38
+ autoComplete: {
39
+ type: String as PropType<VxePasswordInputPropTypes.AutoComplete>,
40
+ default: 'off'
41
+ },
42
+ className: String as PropType<VxePasswordInputPropTypes.ClassName>,
43
+ inputClassName: {
44
+ type: String as PropType<VxePasswordInputPropTypes.InputClassName>,
45
+ default: () => getConfig().passwordInput.inputClassName
46
+ },
47
+ width: [String, Number] as PropType<VxePasswordInputPropTypes.Width>,
48
+ size: {
49
+ type: String as PropType<VxePasswordInputPropTypes.Size>,
50
+ default: () => getConfig().passwordInput.size || getConfig().size
51
+ },
52
+ prefixIcon: String as PropType<VxePasswordInputPropTypes.PrefixIcon>,
53
+ suffixIcon: String as PropType<VxePasswordInputPropTypes.SuffixIcon>,
54
+ controls: {
55
+ type: Boolean as PropType<VxePasswordInputPropTypes.Controls>,
56
+ default: () => getConfig().passwordInput.controls
57
+ },
58
+ editable: {
59
+ type: Boolean as PropType<VxePasswordInputPropTypes.Editable>,
60
+ default: true
61
+ },
62
+
63
+ // 已废弃
64
+ autocomplete: String as PropType<VxePasswordInputPropTypes.Autocomplete>
65
+ },
66
+ emits: ['update:modelValue', 'input', 'change', 'click', 'focus', 'blur', 'clear', 'lazy-change', 'toggle-visible', 'prefix-click', 'suffix-click'] as VxePasswordInputEmits,
67
+ setup(props, context) {
68
+ const { emit, slots } = context
69
+ const $xeForm = inject<(VxeFormConstructor & VxeFormPrivateMethods) | null>('$xeForm', null)
70
+ const formItemInfo = inject<VxeFormDefines.ProvideItemInfo | null>('xeFormItemInfo', null)
71
+
72
+ const xID = XEUtils.uniqueId()
73
+
74
+ const { computeSize } = useFns.useSize(props)
75
+
76
+ const reactData = reactive<PasswordInputReactData>({
77
+ showPwd: false,
78
+ isActivated: false,
79
+ inputValue: props.modelValue
80
+ })
81
+
82
+ const refElem = ref() as Ref<HTMLDivElement>
83
+ const refInputTarget = ref() as Ref<HTMLInputElement>
84
+
85
+ const refMaps: InputPrivateRef = {
86
+ refElem,
87
+ refInput: refInputTarget
88
+ }
89
+
90
+ const $xePasswordInput = {
91
+ xID,
92
+ props,
93
+ context,
94
+ reactData,
95
+ getRefMaps: () => refMaps
96
+ } as unknown as VxePasswordInputConstructor
97
+
98
+ const computeIsClearable = computed(() => {
99
+ return props.clearable
100
+ })
101
+
102
+ const computeInpPlaceholder = computed(() => {
103
+ const { placeholder } = props
104
+ if (placeholder) {
105
+ return getFuncText(placeholder)
106
+ }
107
+ const globalPlaceholder = getConfig().passwordInput.placeholder
108
+ if (globalPlaceholder) {
109
+ return getFuncText(globalPlaceholder)
110
+ }
111
+ return getI18n('vxe.base.pleaseInput')
112
+ })
113
+
114
+ const computeFormReadonly = computed(() => {
115
+ if (getConfig().inputReadonly === 'obsolete') {
116
+ if ($xeForm) {
117
+ return $xeForm.props.readonly
118
+ }
119
+ return false
120
+ }
121
+ const { readonly } = props
122
+ if (readonly === null) {
123
+ if ($xeForm) {
124
+ return $xeForm.props.readonly
125
+ }
126
+ return false
127
+ }
128
+ return readonly
129
+ })
130
+
131
+ const computeIsDisabled = computed(() => {
132
+ const { disabled } = props
133
+ if (disabled === null) {
134
+ if ($xeForm) {
135
+ return $xeForm.props.disabled
136
+ }
137
+ return false
138
+ }
139
+ return disabled
140
+ })
141
+
142
+ const computeInputType = computed(() => {
143
+ const { showPwd } = reactData
144
+ if (showPwd) {
145
+ return 'text'
146
+ }
147
+ return 'password'
148
+ })
149
+
150
+ const computeInpImmediate = computed(() => {
151
+ const { immediate } = props
152
+ return immediate
153
+ })
154
+
155
+ const computeInputReadonly = computed(() => {
156
+ const { editable } = props
157
+ const formReadonly = computeFormReadonly.value
158
+ return formReadonly || !editable
159
+ })
160
+
161
+ const computeDomValue = computed(() => {
162
+ const { inputValue } = reactData
163
+ return inputValue
164
+ })
165
+
166
+ const computeCurrStyle = computed(() => {
167
+ const { width } = props
168
+ const stys: VxeComponentStyleType = {}
169
+ if (width) {
170
+ stys.width = toCssUnit(width)
171
+ }
172
+ return stys
173
+ })
174
+
175
+ const dispatchEvent = (type: ValueOf<VxePasswordInputEmits>, params: Record<string, any>, evnt: Event | null) => {
176
+ emit(type, createEvent(evnt, { $passwordInput: $xePasswordInput }, params))
177
+ }
178
+
179
+ const updateDomValue = () => {
180
+ const domValue = computeDomValue.value
181
+ const inputElem = refInputTarget.value
182
+ if (inputElem) {
183
+ inputElem.value = XEUtils.eqNull(domValue) ? '' : '' + domValue
184
+ }
185
+ }
186
+
187
+ const triggerEvent = (evnt: Event & { type: 'input' | 'change' | 'click' | 'focus' | 'blur' }) => {
188
+ const { inputValue } = reactData
189
+ dispatchEvent(evnt.type, { value: inputValue }, evnt)
190
+ }
191
+
192
+ const emitInputEvent = (value: any, evnt: Event) => {
193
+ const inpImmediate = computeInpImmediate.value
194
+ reactData.inputValue = value
195
+ if (inpImmediate) {
196
+ handleChange(value, evnt)
197
+ } else {
198
+ dispatchEvent('input', { value }, evnt)
199
+ }
200
+ }
201
+
202
+ const inputEvent = (evnt: Event & { type: 'input' }) => {
203
+ const inputElem = evnt.target as HTMLInputElement
204
+ const value = inputElem.value
205
+ emitInputEvent(value, evnt)
206
+ }
207
+
208
+ const handleChange = (value: string, evnt: Event | { type: string }) => {
209
+ reactData.inputValue = value
210
+ emit('update:modelValue', value)
211
+ dispatchEvent('input', { value }, evnt as any)
212
+ if (XEUtils.toValueString(props.modelValue) !== value) {
213
+ dispatchEvent('change', { value }, evnt as any)
214
+ // 自动更新校验状态
215
+ if ($xeForm && formItemInfo) {
216
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
217
+ }
218
+ }
219
+ }
220
+
221
+ const changeEvent = (evnt: Event & { type: 'change' }) => {
222
+ triggerEvent(evnt)
223
+ dispatchEvent('lazy-change', { value: reactData.inputValue }, evnt)
224
+ // 自动更新校验状态
225
+ if ($xeForm && formItemInfo) {
226
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, reactData.inputValue)
227
+ }
228
+ }
229
+
230
+ const focusEvent = (evnt: Event & { type: 'focus' }) => {
231
+ reactData.isActivated = true
232
+ triggerEvent(evnt)
233
+ }
234
+
235
+ const blurEvent = (evnt: Event & { type: 'blur' }) => {
236
+ const { inputValue } = reactData
237
+ const value = inputValue
238
+ reactData.isActivated = false
239
+ dispatchEvent('blur', { value }, evnt)
240
+ // 自动更新校验状态
241
+ if ($xeForm && formItemInfo) {
242
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
243
+ }
244
+ }
245
+
246
+ const passwordToggleEvent = (evnt: Event) => {
247
+ const { showPwd } = reactData
248
+ const isDisabled = computeIsDisabled.value
249
+ const formReadonly = computeFormReadonly.value
250
+ if (!isDisabled && !formReadonly) {
251
+ reactData.showPwd = !showPwd
252
+ }
253
+ dispatchEvent('toggle-visible', { visible: reactData.showPwd }, evnt)
254
+ }
255
+
256
+ const clickEvent = (evnt: Event & { type: 'click' }) => {
257
+ triggerEvent(evnt)
258
+ }
259
+
260
+ const clearValueEvent = (evnt: Event, value: VxePasswordInputPropTypes.ModelValue) => {
261
+ focus()
262
+ handleChange('', evnt)
263
+ dispatchEvent('clear', { value }, evnt)
264
+ dispatchEvent('lazy-change', { value: reactData.inputValue }, evnt)
265
+ }
266
+
267
+ const clickSuffixEvent = (evnt: Event) => {
268
+ const isDisabled = computeIsDisabled.value
269
+ if (!isDisabled) {
270
+ const { inputValue } = reactData
271
+ dispatchEvent('suffix-click', { value: inputValue }, evnt)
272
+ }
273
+ }
274
+
275
+ const clickPrefixEvent = (evnt: Event) => {
276
+ const isDisabled = computeIsDisabled.value
277
+ if (!isDisabled) {
278
+ const { inputValue } = reactData
279
+ dispatchEvent('prefix-click', { value: inputValue }, evnt)
280
+ }
281
+ }
282
+
283
+ const passwordInputMethods: PasswordInputMethods = {
284
+ dispatchEvent,
285
+ focus() {
286
+ const inputElem = refInputTarget.value
287
+ reactData.isActivated = true
288
+ inputElem.focus()
289
+ return nextTick()
290
+ },
291
+ blur() {
292
+ const inputElem = refInputTarget.value
293
+ inputElem.blur()
294
+ reactData.isActivated = false
295
+ return nextTick()
296
+ },
297
+ select() {
298
+ const inputElem = refInputTarget.value
299
+ inputElem.select()
300
+ reactData.isActivated = false
301
+ return nextTick()
302
+ }
303
+ }
304
+
305
+ Object.assign($xePasswordInput, passwordInputMethods)
306
+
307
+ const renderPasswordIcon = () => {
308
+ const { showPwd } = reactData
309
+ return h(
310
+ 'div',
311
+ {
312
+ class: 'vxe-password-input--control-icon',
313
+ onClick: passwordToggleEvent
314
+ },
315
+ [
316
+ h('i', {
317
+ class: ['vxe-password-input--password-icon', showPwd ? getIcon().PASSWORD_INPUT_SHOW_PWD : getIcon().PASSWORD_INPUT_HIDE_PWD]
318
+ })
319
+ ]
320
+ )
321
+ }
322
+
323
+ const renderPrefixIcon = () => {
324
+ const { prefixIcon } = props
325
+ const prefixSlot = slots.prefix
326
+ return prefixSlot || prefixIcon
327
+ ? h(
328
+ 'div',
329
+ {
330
+ class: 'vxe-password-input--prefix',
331
+ onClick: clickPrefixEvent
332
+ },
333
+ [
334
+ h(
335
+ 'div',
336
+ {
337
+ class: 'vxe-password-input--prefix-icon'
338
+ },
339
+ prefixSlot
340
+ ? getSlotVNs(prefixSlot({}))
341
+ : [
342
+ h('i', {
343
+ class: prefixIcon
344
+ })
345
+ ]
346
+ )
347
+ ]
348
+ )
349
+ : null
350
+ }
351
+
352
+ const renderSuffixIcon = () => {
353
+ const { suffixIcon, controls } = props
354
+ const { inputValue } = reactData
355
+ const isDisabled = computeIsDisabled.value
356
+ const isClearable = computeIsClearable.value
357
+ const suffixSlot = slots.suffix
358
+ return isClearable || controls || suffixSlot || suffixIcon
359
+ ? h(
360
+ 'div',
361
+ {
362
+ class: [
363
+ 'vxe-password-input--suffix',
364
+ {
365
+ 'is--clear': isClearable && !isDisabled && !(inputValue === '' || XEUtils.eqNull(inputValue))
366
+ }
367
+ ]
368
+ },
369
+ [
370
+ isClearable
371
+ ? h(
372
+ 'div',
373
+ {
374
+ class: 'vxe-password-input--clear-icon',
375
+ onClick: clearValueEvent
376
+ },
377
+ [
378
+ h('i', {
379
+ class: getIcon().INPUT_CLEAR
380
+ })
381
+ ]
382
+ )
383
+ : renderEmptyElement($xePasswordInput),
384
+ controls ? renderPasswordIcon() : renderEmptyElement($xePasswordInput),
385
+ suffixSlot || suffixIcon
386
+ ? h(
387
+ 'div',
388
+ {
389
+ class: 'vxe-password-input--suffix-icon',
390
+ onClick: clickSuffixEvent
391
+ },
392
+ suffixSlot
393
+ ? getSlotVNs(suffixSlot({}))
394
+ : [
395
+ h('i', {
396
+ class: suffixIcon
397
+ })
398
+ ]
399
+ )
400
+ : renderEmptyElement($xePasswordInput)
401
+ ]
402
+ )
403
+ : null
404
+ }
405
+
406
+ const renderVN = () => {
407
+ const { className, inputClassName, name, readonly, floatContent, autocomplete, autoComplete, maxLength, floatAlign } = props
408
+ const { inputValue, isActivated } = reactData
409
+ const isDisabled = computeIsDisabled.value
410
+ const formReadonly = computeFormReadonly.value
411
+ if (formReadonly) {
412
+ return h(
413
+ 'div',
414
+ {
415
+ ref: refElem,
416
+ class: ['vxe-password-input--readonly', className]
417
+ },
418
+ getText(inputValue)
419
+ )
420
+ }
421
+ const currStyle = computeCurrStyle.value
422
+ const vSize = computeSize.value
423
+ const inputType = computeInputType.value
424
+ const inpPlaceholder = computeInpPlaceholder.value
425
+ const isClearable = computeIsClearable.value
426
+ const inputReadonly = computeInputReadonly.value
427
+ const prefix = renderPrefixIcon()
428
+ const suffix = renderSuffixIcon()
429
+ const floatSlot = slots.float
430
+ return h(
431
+ 'div',
432
+ {
433
+ ref: refElem,
434
+ class: [
435
+ 'vxe-password-input',
436
+ floatContent ? `fla--${floatAlign || 'center'}` : '',
437
+ className,
438
+ {
439
+ [`size--${vSize}`]: vSize,
440
+ 'is--prefix': !!prefix,
441
+ 'is--suffix': !!suffix,
442
+ 'is--readonly': readonly,
443
+ 'is--disabled': isDisabled,
444
+ 'is--active': isActivated,
445
+ 'show--clear': isClearable && !isDisabled && !(inputValue === '' || XEUtils.eqNull(inputValue))
446
+ }
447
+ ],
448
+ style: currStyle,
449
+ spellcheck: false
450
+ },
451
+ [
452
+ prefix || renderEmptyElement($xePasswordInput),
453
+ h(
454
+ 'div',
455
+ {
456
+ class: 'vxe-password-input--wrapper'
457
+ },
458
+ [
459
+ h('input', {
460
+ ref: refInputTarget,
461
+ class: 'vxe-password-input--inner' + (inputClassName ? ' ' + inputClassName : ''),
462
+ name,
463
+ type: inputType,
464
+ placeholder: inpPlaceholder,
465
+ readonly: inputReadonly,
466
+ disabled: isDisabled,
467
+ autocomplete: autocomplete || autoComplete,
468
+ maxlength: maxLength,
469
+ onClick: clickEvent,
470
+ onInput: inputEvent,
471
+ onChange: changeEvent,
472
+ onFocus: focusEvent,
473
+ onBlur: blurEvent
474
+ }),
475
+ floatContent || floatSlot
476
+ ? h(
477
+ 'span',
478
+ {
479
+ class: 'vxe-password-input--float-wrapper'
480
+ },
481
+ floatSlot ? floatSlot({}) : getText(floatContent)
482
+ )
483
+ : renderEmptyElement($xePasswordInput)
484
+ ]
485
+ ),
486
+ suffix || renderEmptyElement($xePasswordInput)
487
+ ]
488
+ )
489
+ }
490
+
491
+ watch(
492
+ () => props.modelValue,
493
+ (val) => {
494
+ reactData.inputValue = val
495
+ }
496
+ )
497
+
498
+ const rDvFlag = ref(0)
499
+ watch(computeFormReadonly, () => {
500
+ rDvFlag.value++
501
+ })
502
+ watch(computeDomValue, () => {
503
+ rDvFlag.value++
504
+ })
505
+ watch(rDvFlag, () => {
506
+ updateDomValue()
507
+ nextTick(() => {
508
+ updateDomValue()
509
+ })
510
+ })
511
+
512
+ onMounted(() => {
513
+ updateDomValue()
514
+ })
515
+
516
+ $xePasswordInput.renderVN = renderVN
517
+
518
+ return $xePasswordInput
519
+ },
520
+ render() {
521
+ return this.renderVN()
522
+ }
523
+ })