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,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
+ })