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