@element-plus/nightly 0.0.20260310 → 0.0.20260312

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 (390) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.full.js +47 -19
  3. package/dist/index.full.min.js +6 -6
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +6 -6
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +47 -19
  8. package/dist/locale/af.js +1 -1
  9. package/dist/locale/af.min.js +1 -1
  10. package/dist/locale/af.min.mjs +1 -1
  11. package/dist/locale/af.mjs +1 -1
  12. package/dist/locale/ar-eg.js +1 -1
  13. package/dist/locale/ar-eg.min.js +1 -1
  14. package/dist/locale/ar-eg.min.mjs +1 -1
  15. package/dist/locale/ar-eg.mjs +1 -1
  16. package/dist/locale/ar.js +1 -1
  17. package/dist/locale/ar.min.js +1 -1
  18. package/dist/locale/ar.min.mjs +1 -1
  19. package/dist/locale/ar.mjs +1 -1
  20. package/dist/locale/az.js +1 -1
  21. package/dist/locale/az.min.js +1 -1
  22. package/dist/locale/az.min.mjs +1 -1
  23. package/dist/locale/az.mjs +1 -1
  24. package/dist/locale/bg.js +1 -1
  25. package/dist/locale/bg.min.js +1 -1
  26. package/dist/locale/bg.min.mjs +1 -1
  27. package/dist/locale/bg.mjs +1 -1
  28. package/dist/locale/bn.js +1 -1
  29. package/dist/locale/bn.min.js +1 -1
  30. package/dist/locale/bn.min.mjs +1 -1
  31. package/dist/locale/bn.mjs +1 -1
  32. package/dist/locale/ca.js +1 -1
  33. package/dist/locale/ca.min.js +1 -1
  34. package/dist/locale/ca.min.mjs +1 -1
  35. package/dist/locale/ca.mjs +1 -1
  36. package/dist/locale/ckb.js +1 -1
  37. package/dist/locale/ckb.min.js +1 -1
  38. package/dist/locale/ckb.min.mjs +1 -1
  39. package/dist/locale/ckb.mjs +1 -1
  40. package/dist/locale/cs.js +1 -1
  41. package/dist/locale/cs.min.js +1 -1
  42. package/dist/locale/cs.min.mjs +1 -1
  43. package/dist/locale/cs.mjs +1 -1
  44. package/dist/locale/da.js +1 -1
  45. package/dist/locale/da.min.js +1 -1
  46. package/dist/locale/da.min.mjs +1 -1
  47. package/dist/locale/da.mjs +1 -1
  48. package/dist/locale/de.js +1 -1
  49. package/dist/locale/de.min.js +1 -1
  50. package/dist/locale/de.min.mjs +1 -1
  51. package/dist/locale/de.mjs +1 -1
  52. package/dist/locale/el.js +1 -1
  53. package/dist/locale/el.min.js +1 -1
  54. package/dist/locale/el.min.mjs +1 -1
  55. package/dist/locale/el.mjs +1 -1
  56. package/dist/locale/en.js +1 -1
  57. package/dist/locale/en.min.js +1 -1
  58. package/dist/locale/en.min.mjs +1 -1
  59. package/dist/locale/en.mjs +1 -1
  60. package/dist/locale/eo.js +1 -1
  61. package/dist/locale/eo.min.js +1 -1
  62. package/dist/locale/eo.min.mjs +1 -1
  63. package/dist/locale/eo.mjs +1 -1
  64. package/dist/locale/es.js +1 -1
  65. package/dist/locale/es.min.js +1 -1
  66. package/dist/locale/es.min.mjs +1 -1
  67. package/dist/locale/es.mjs +1 -1
  68. package/dist/locale/et.js +1 -1
  69. package/dist/locale/et.min.js +1 -1
  70. package/dist/locale/et.min.mjs +1 -1
  71. package/dist/locale/et.mjs +1 -1
  72. package/dist/locale/eu.js +1 -1
  73. package/dist/locale/eu.min.js +1 -1
  74. package/dist/locale/eu.min.mjs +1 -1
  75. package/dist/locale/eu.mjs +1 -1
  76. package/dist/locale/fa.js +1 -1
  77. package/dist/locale/fa.min.js +1 -1
  78. package/dist/locale/fa.min.mjs +1 -1
  79. package/dist/locale/fa.mjs +1 -1
  80. package/dist/locale/fi.js +1 -1
  81. package/dist/locale/fi.min.js +1 -1
  82. package/dist/locale/fi.min.mjs +1 -1
  83. package/dist/locale/fi.mjs +1 -1
  84. package/dist/locale/fr.js +1 -1
  85. package/dist/locale/fr.min.js +1 -1
  86. package/dist/locale/fr.min.mjs +1 -1
  87. package/dist/locale/fr.mjs +1 -1
  88. package/dist/locale/he.js +1 -1
  89. package/dist/locale/he.min.js +1 -1
  90. package/dist/locale/he.min.mjs +1 -1
  91. package/dist/locale/he.mjs +1 -1
  92. package/dist/locale/hi.js +1 -1
  93. package/dist/locale/hi.min.js +1 -1
  94. package/dist/locale/hi.min.mjs +1 -1
  95. package/dist/locale/hi.mjs +1 -1
  96. package/dist/locale/hr.js +1 -1
  97. package/dist/locale/hr.min.js +1 -1
  98. package/dist/locale/hr.min.mjs +1 -1
  99. package/dist/locale/hr.mjs +1 -1
  100. package/dist/locale/hu.js +1 -1
  101. package/dist/locale/hu.min.js +1 -1
  102. package/dist/locale/hu.min.mjs +1 -1
  103. package/dist/locale/hu.mjs +1 -1
  104. package/dist/locale/hy-am.js +1 -1
  105. package/dist/locale/hy-am.min.js +1 -1
  106. package/dist/locale/hy-am.min.mjs +1 -1
  107. package/dist/locale/hy-am.mjs +1 -1
  108. package/dist/locale/id.js +1 -1
  109. package/dist/locale/id.min.js +1 -1
  110. package/dist/locale/id.min.mjs +1 -1
  111. package/dist/locale/id.mjs +1 -1
  112. package/dist/locale/it.js +1 -1
  113. package/dist/locale/it.min.js +1 -1
  114. package/dist/locale/it.min.mjs +1 -1
  115. package/dist/locale/it.mjs +1 -1
  116. package/dist/locale/ja.js +1 -1
  117. package/dist/locale/ja.min.js +1 -1
  118. package/dist/locale/ja.min.mjs +1 -1
  119. package/dist/locale/ja.mjs +1 -1
  120. package/dist/locale/kk.js +1 -1
  121. package/dist/locale/kk.min.js +1 -1
  122. package/dist/locale/kk.min.mjs +1 -1
  123. package/dist/locale/kk.mjs +1 -1
  124. package/dist/locale/km.js +1 -1
  125. package/dist/locale/km.min.js +1 -1
  126. package/dist/locale/km.min.mjs +1 -1
  127. package/dist/locale/km.mjs +1 -1
  128. package/dist/locale/ko.js +1 -1
  129. package/dist/locale/ko.min.js +1 -1
  130. package/dist/locale/ko.min.mjs +1 -1
  131. package/dist/locale/ko.mjs +1 -1
  132. package/dist/locale/ku.js +1 -1
  133. package/dist/locale/ku.min.js +1 -1
  134. package/dist/locale/ku.min.mjs +1 -1
  135. package/dist/locale/ku.mjs +1 -1
  136. package/dist/locale/ky.js +1 -1
  137. package/dist/locale/ky.min.js +1 -1
  138. package/dist/locale/ky.min.mjs +1 -1
  139. package/dist/locale/ky.mjs +1 -1
  140. package/dist/locale/lo.js +1 -1
  141. package/dist/locale/lo.min.js +1 -1
  142. package/dist/locale/lo.min.mjs +1 -1
  143. package/dist/locale/lo.mjs +1 -1
  144. package/dist/locale/lt.js +1 -1
  145. package/dist/locale/lt.min.js +1 -1
  146. package/dist/locale/lt.min.mjs +1 -1
  147. package/dist/locale/lt.mjs +1 -1
  148. package/dist/locale/lv.js +1 -1
  149. package/dist/locale/lv.min.js +1 -1
  150. package/dist/locale/lv.min.mjs +1 -1
  151. package/dist/locale/lv.mjs +1 -1
  152. package/dist/locale/mg.js +1 -1
  153. package/dist/locale/mg.min.js +1 -1
  154. package/dist/locale/mg.min.mjs +1 -1
  155. package/dist/locale/mg.mjs +1 -1
  156. package/dist/locale/mn.js +1 -1
  157. package/dist/locale/mn.min.js +1 -1
  158. package/dist/locale/mn.min.mjs +1 -1
  159. package/dist/locale/mn.mjs +1 -1
  160. package/dist/locale/ms.js +1 -1
  161. package/dist/locale/ms.min.js +1 -1
  162. package/dist/locale/ms.min.mjs +1 -1
  163. package/dist/locale/ms.mjs +1 -1
  164. package/dist/locale/my.js +1 -1
  165. package/dist/locale/my.min.js +1 -1
  166. package/dist/locale/my.min.mjs +1 -1
  167. package/dist/locale/my.mjs +1 -1
  168. package/dist/locale/nb-no.js +1 -1
  169. package/dist/locale/nb-no.min.js +1 -1
  170. package/dist/locale/nb-no.min.mjs +1 -1
  171. package/dist/locale/nb-no.mjs +1 -1
  172. package/dist/locale/nl.js +1 -1
  173. package/dist/locale/nl.min.js +1 -1
  174. package/dist/locale/nl.min.mjs +1 -1
  175. package/dist/locale/nl.mjs +1 -1
  176. package/dist/locale/no.js +1 -1
  177. package/dist/locale/no.min.js +1 -1
  178. package/dist/locale/no.min.mjs +1 -1
  179. package/dist/locale/no.mjs +1 -1
  180. package/dist/locale/pa.js +1 -1
  181. package/dist/locale/pa.min.js +1 -1
  182. package/dist/locale/pa.min.mjs +1 -1
  183. package/dist/locale/pa.mjs +1 -1
  184. package/dist/locale/pl.js +1 -1
  185. package/dist/locale/pl.min.js +1 -1
  186. package/dist/locale/pl.min.mjs +1 -1
  187. package/dist/locale/pl.mjs +1 -1
  188. package/dist/locale/pt-br.js +1 -1
  189. package/dist/locale/pt-br.min.js +1 -1
  190. package/dist/locale/pt-br.min.mjs +1 -1
  191. package/dist/locale/pt-br.mjs +1 -1
  192. package/dist/locale/pt.js +1 -1
  193. package/dist/locale/pt.min.js +1 -1
  194. package/dist/locale/pt.min.mjs +1 -1
  195. package/dist/locale/pt.mjs +1 -1
  196. package/dist/locale/ro.js +1 -1
  197. package/dist/locale/ro.min.js +1 -1
  198. package/dist/locale/ro.min.mjs +1 -1
  199. package/dist/locale/ro.mjs +1 -1
  200. package/dist/locale/ru.js +1 -1
  201. package/dist/locale/ru.min.js +1 -1
  202. package/dist/locale/ru.min.mjs +1 -1
  203. package/dist/locale/ru.mjs +1 -1
  204. package/dist/locale/sk.js +1 -1
  205. package/dist/locale/sk.min.js +1 -1
  206. package/dist/locale/sk.min.mjs +1 -1
  207. package/dist/locale/sk.mjs +1 -1
  208. package/dist/locale/sl.js +1 -1
  209. package/dist/locale/sl.min.js +1 -1
  210. package/dist/locale/sl.min.mjs +1 -1
  211. package/dist/locale/sl.mjs +1 -1
  212. package/dist/locale/sr.js +1 -1
  213. package/dist/locale/sr.min.js +1 -1
  214. package/dist/locale/sr.min.mjs +1 -1
  215. package/dist/locale/sr.mjs +1 -1
  216. package/dist/locale/sv.js +1 -1
  217. package/dist/locale/sv.min.js +1 -1
  218. package/dist/locale/sv.min.mjs +1 -1
  219. package/dist/locale/sv.mjs +1 -1
  220. package/dist/locale/sw.js +1 -1
  221. package/dist/locale/sw.min.js +1 -1
  222. package/dist/locale/sw.min.mjs +1 -1
  223. package/dist/locale/sw.mjs +1 -1
  224. package/dist/locale/ta.js +1 -1
  225. package/dist/locale/ta.min.js +1 -1
  226. package/dist/locale/ta.min.mjs +1 -1
  227. package/dist/locale/ta.mjs +1 -1
  228. package/dist/locale/te.js +1 -1
  229. package/dist/locale/te.min.js +1 -1
  230. package/dist/locale/te.min.mjs +1 -1
  231. package/dist/locale/te.mjs +1 -1
  232. package/dist/locale/th.js +1 -1
  233. package/dist/locale/th.min.js +1 -1
  234. package/dist/locale/th.min.mjs +1 -1
  235. package/dist/locale/th.mjs +1 -1
  236. package/dist/locale/tk.js +1 -1
  237. package/dist/locale/tk.min.js +1 -1
  238. package/dist/locale/tk.min.mjs +1 -1
  239. package/dist/locale/tk.mjs +1 -1
  240. package/dist/locale/tr.js +1 -1
  241. package/dist/locale/tr.min.js +1 -1
  242. package/dist/locale/tr.min.mjs +1 -1
  243. package/dist/locale/tr.mjs +1 -1
  244. package/dist/locale/ug-cn.js +1 -1
  245. package/dist/locale/ug-cn.min.js +1 -1
  246. package/dist/locale/ug-cn.min.mjs +1 -1
  247. package/dist/locale/ug-cn.mjs +1 -1
  248. package/dist/locale/uk.js +1 -1
  249. package/dist/locale/uk.min.js +1 -1
  250. package/dist/locale/uk.min.mjs +1 -1
  251. package/dist/locale/uk.mjs +1 -1
  252. package/dist/locale/uz-uz.js +1 -1
  253. package/dist/locale/uz-uz.min.js +1 -1
  254. package/dist/locale/uz-uz.min.mjs +1 -1
  255. package/dist/locale/uz-uz.mjs +1 -1
  256. package/dist/locale/vi.js +1 -1
  257. package/dist/locale/vi.min.js +1 -1
  258. package/dist/locale/vi.min.mjs +1 -1
  259. package/dist/locale/vi.mjs +1 -1
  260. package/dist/locale/zh-cn.js +1 -1
  261. package/dist/locale/zh-cn.min.js +1 -1
  262. package/dist/locale/zh-cn.min.mjs +1 -1
  263. package/dist/locale/zh-cn.mjs +1 -1
  264. package/dist/locale/zh-hk.js +1 -1
  265. package/dist/locale/zh-hk.min.js +1 -1
  266. package/dist/locale/zh-hk.min.mjs +1 -1
  267. package/dist/locale/zh-hk.mjs +1 -1
  268. package/dist/locale/zh-mo.js +1 -1
  269. package/dist/locale/zh-mo.min.js +1 -1
  270. package/dist/locale/zh-mo.min.mjs +1 -1
  271. package/dist/locale/zh-mo.mjs +1 -1
  272. package/dist/locale/zh-tw.js +1 -1
  273. package/dist/locale/zh-tw.min.js +1 -1
  274. package/dist/locale/zh-tw.min.mjs +1 -1
  275. package/dist/locale/zh-tw.mjs +1 -1
  276. package/es/components/alert/src/alert.vue.d.ts +1 -1
  277. package/es/components/anchor/src/anchor.vue.d.ts +1 -1
  278. package/es/components/autocomplete/src/autocomplete.vue.d.ts +1 -1
  279. package/es/components/badge/src/badge.vue.d.ts +1 -1
  280. package/es/components/carousel/src/carousel.vue.d.ts +1 -1
  281. package/es/components/cascader/src/cascader.vue.d.ts +2 -2
  282. package/es/components/cascader-panel/src/index.vue.d.ts +2 -2
  283. package/es/components/checkbox/src/checkbox-group.vue.d.ts +1 -1
  284. package/es/components/col/src/col.vue.d.ts +1 -1
  285. package/es/components/color-picker-panel/src/color-picker-panel.d.ts +23 -1
  286. package/es/components/color-picker-panel/src/color-picker-panel.mjs +11 -1
  287. package/es/components/color-picker-panel/src/color-picker-panel.mjs.map +1 -1
  288. package/es/components/color-picker-panel/src/color-picker-panel.vue_vue_type_script_setup_true_lang.mjs +10 -4
  289. package/es/components/color-picker-panel/src/color-picker-panel.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  290. package/es/components/color-picker-panel/src/color-picker-panel2.mjs.map +1 -1
  291. package/es/components/dialog/src/dialog.vue.d.ts +2 -2
  292. package/es/components/drawer/src/drawer.vue.d.ts +2 -2
  293. package/es/components/dropdown/src/dropdown.vue.d.ts +1 -1
  294. package/es/components/image/src/image.vue.d.ts +8 -8
  295. package/es/components/image-viewer/src/image-viewer.vue.d.ts +4 -4
  296. package/es/components/input/src/input.vue.d.ts +6 -2
  297. package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs +2 -2
  298. package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  299. package/es/components/input/src/input2.mjs.map +1 -1
  300. package/es/components/link/src/link.vue.d.ts +1 -1
  301. package/es/components/mention/src/helper.mjs +1 -1
  302. package/es/components/mention/src/helper.mjs.map +1 -1
  303. package/es/components/mention/src/mention.vue.d.ts +2 -2
  304. package/es/components/message/src/message.d.ts +1 -1
  305. package/es/components/message/src/message.vue.d.ts +4 -4
  306. package/es/components/notification/src/notification.d.ts +1 -1
  307. package/es/components/notification/src/notification.vue.d.ts +2 -2
  308. package/es/components/pagination/src/pagination.d.ts +1 -1
  309. package/es/components/popconfirm/src/popconfirm.vue.d.ts +1 -1
  310. package/es/components/popover/src/popover.vue.d.ts +2 -2
  311. package/es/components/popper/src/content.vue.d.ts +1 -1
  312. package/es/components/radio/src/radio-group.vue.d.ts +1 -1
  313. package/es/components/select/src/select.vue.d.ts +3 -3
  314. package/es/components/select-v2/src/select.vue.d.ts +3 -3
  315. package/es/components/table/src/store/tree.mjs +1 -1
  316. package/es/components/table/src/store/tree.mjs.map +1 -1
  317. package/es/components/table/src/table-column/index.d.ts +1 -1
  318. package/es/components/table/src/table.vue.d.ts +2 -2
  319. package/es/components/tabs/src/tab-nav.mjs +16 -4
  320. package/es/components/tabs/src/tab-nav.mjs.map +1 -1
  321. package/es/components/tooltip/src/content.vue.d.ts +2 -2
  322. package/es/components/tooltip/src/tooltip.vue.d.ts +2 -2
  323. package/es/components/tour/src/tour.vue.d.ts +3 -3
  324. package/es/components/tree-select/src/tree-select.vue.d.ts +3 -3
  325. package/es/components/tree-v2/src/composables/useTree.mjs +5 -5
  326. package/es/components/tree-v2/src/composables/useTree.mjs.map +1 -1
  327. package/es/components/upload/src/upload-content.vue.d.ts +1 -1
  328. package/es/components/upload/src/upload.vue.d.ts +1 -1
  329. package/es/components/watermark/src/watermark.vue.d.ts +1 -1
  330. package/es/version.mjs +1 -1
  331. package/es/version.mjs.map +1 -1
  332. package/lib/components/alert/src/alert.vue.d.ts +1 -1
  333. package/lib/components/anchor/src/anchor.vue.d.ts +1 -1
  334. package/lib/components/autocomplete/src/autocomplete.vue.d.ts +1 -1
  335. package/lib/components/badge/src/badge.vue.d.ts +1 -1
  336. package/lib/components/carousel/src/carousel.vue.d.ts +1 -1
  337. package/lib/components/cascader/src/cascader.vue.d.ts +2 -2
  338. package/lib/components/cascader-panel/src/index.vue.d.ts +2 -2
  339. package/lib/components/checkbox/src/checkbox-group.vue.d.ts +1 -1
  340. package/lib/components/col/src/col.vue.d.ts +1 -1
  341. package/lib/components/color-picker-panel/src/color-picker-panel.d.ts +23 -1
  342. package/lib/components/color-picker-panel/src/color-picker-panel.js +11 -1
  343. package/lib/components/color-picker-panel/src/color-picker-panel.js.map +1 -1
  344. package/lib/components/color-picker-panel/src/color-picker-panel.vue_vue_type_script_setup_true_lang.js +9 -3
  345. package/lib/components/color-picker-panel/src/color-picker-panel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  346. package/lib/components/color-picker-panel/src/color-picker-panel2.js.map +1 -1
  347. package/lib/components/dialog/src/dialog.vue.d.ts +2 -2
  348. package/lib/components/drawer/src/drawer.vue.d.ts +2 -2
  349. package/lib/components/dropdown/src/dropdown.vue.d.ts +1 -1
  350. package/lib/components/image/src/image.vue.d.ts +8 -8
  351. package/lib/components/image-viewer/src/image-viewer.vue.d.ts +4 -4
  352. package/lib/components/input/src/input.vue.d.ts +6 -2
  353. package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js +2 -2
  354. package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  355. package/lib/components/input/src/input2.js.map +1 -1
  356. package/lib/components/link/src/link.vue.d.ts +1 -1
  357. package/lib/components/mention/src/helper.js +1 -1
  358. package/lib/components/mention/src/helper.js.map +1 -1
  359. package/lib/components/mention/src/mention.vue.d.ts +2 -2
  360. package/lib/components/message/src/message.d.ts +1 -1
  361. package/lib/components/message/src/message.vue.d.ts +4 -4
  362. package/lib/components/notification/src/notification.d.ts +1 -1
  363. package/lib/components/notification/src/notification.vue.d.ts +2 -2
  364. package/lib/components/pagination/src/pagination.d.ts +1 -1
  365. package/lib/components/popconfirm/src/popconfirm.vue.d.ts +1 -1
  366. package/lib/components/popover/src/popover.vue.d.ts +2 -2
  367. package/lib/components/popper/src/content.vue.d.ts +1 -1
  368. package/lib/components/radio/src/radio-group.vue.d.ts +1 -1
  369. package/lib/components/select/src/select.vue.d.ts +3 -3
  370. package/lib/components/select-v2/src/select.vue.d.ts +3 -3
  371. package/lib/components/table/src/store/tree.js +1 -1
  372. package/lib/components/table/src/store/tree.js.map +1 -1
  373. package/lib/components/table/src/table-column/index.d.ts +1 -1
  374. package/lib/components/table/src/table.vue.d.ts +2 -2
  375. package/lib/components/tabs/src/tab-nav.js +16 -4
  376. package/lib/components/tabs/src/tab-nav.js.map +1 -1
  377. package/lib/components/tooltip/src/content.vue.d.ts +2 -2
  378. package/lib/components/tooltip/src/tooltip.vue.d.ts +2 -2
  379. package/lib/components/tour/src/tour.vue.d.ts +3 -3
  380. package/lib/components/tree-select/src/tree-select.vue.d.ts +3 -3
  381. package/lib/components/tree-v2/src/composables/useTree.js +5 -5
  382. package/lib/components/tree-v2/src/composables/useTree.js.map +1 -1
  383. package/lib/components/upload/src/upload-content.vue.d.ts +1 -1
  384. package/lib/components/upload/src/upload.vue.d.ts +1 -1
  385. package/lib/components/watermark/src/watermark.vue.d.ts +1 -1
  386. package/lib/version.js +1 -1
  387. package/lib/version.js.map +1 -1
  388. package/package.json +2 -2
  389. package/tags.json +1 -1
  390. package/web-types.json +1 -1
@@ -3,10 +3,12 @@ import "../../../utils/index.js";
3
3
  import { Color } from "./utils/color.js";
4
4
  import { _default } from "./color-picker-panel.vue.js";
5
5
  import * as vue from "vue";
6
- import { ComputedRef, ExtractPublicPropTypes, InjectionKey } from "vue";
6
+ import { ComputedRef, ExtractPublicPropTypes, InjectionKey, StyleValue } from "vue";
7
7
  import { ColorFormats } from "@ctrl/tinycolor";
8
8
 
9
9
  //#region ../../packages/components/color-picker-panel/src/color-picker-panel.d.ts
10
+ type ClassObjectType = Record<string, boolean>;
11
+ type ClassType = string | ClassObjectType | ClassType[];
10
12
  interface ColorPickerPanelProps {
11
13
  /**
12
14
  * @description binding value
@@ -36,6 +38,14 @@ interface ColorPickerPanelProps {
36
38
  * @description whether to trigger form validation
37
39
  */
38
40
  validateEvent?: boolean;
41
+ /**
42
+ * @description class names will be passed to hue-slider
43
+ */
44
+ hueSliderClass?: ClassType;
45
+ /**
46
+ * @description styles will be passed to hue-slider
47
+ */
48
+ hueSliderStyle?: StyleValue;
39
49
  }
40
50
  /**
41
51
  * @deprecated Removed after 3.0.0, Use `ColorPickerPanelProps` instead.
@@ -58,6 +68,18 @@ declare const colorPickerPanelProps: {
58
68
  __epPropKey: true;
59
69
  };
60
70
  readonly validateEvent: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
71
+ readonly hueSliderClass: {
72
+ readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => string | ClassObjectType | ClassType[]) | (() => ClassType) | ((new (...args: any[]) => string | ClassObjectType | ClassType[]) | (() => ClassType))[], unknown, unknown>>;
73
+ readonly required: false;
74
+ readonly validator: ((val: unknown) => boolean) | undefined;
75
+ __epPropKey: true;
76
+ };
77
+ readonly hueSliderStyle: {
78
+ readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => string | false | vue.CSSProperties | StyleValue[]) | (() => StyleValue) | ((new (...args: any[]) => string | false | vue.CSSProperties | StyleValue[]) | (() => StyleValue))[], unknown, unknown>>;
79
+ readonly required: false;
80
+ readonly validator: ((val: unknown) => boolean) | undefined;
81
+ __epPropKey: true;
82
+ };
61
83
  };
62
84
  declare const colorPickerPanelEmits: {
63
85
  "update:modelValue": (val: string | null) => boolean;
@@ -25,7 +25,17 @@ const colorPickerPanelProps = require_runtime$1.buildProps({
25
25
  validateEvent: {
26
26
  type: Boolean,
27
27
  default: true
28
- }
28
+ },
29
+ hueSliderClass: { type: require_runtime$1.definePropType([
30
+ String,
31
+ Array,
32
+ Object
33
+ ]) },
34
+ hueSliderStyle: { type: require_runtime$1.definePropType([
35
+ String,
36
+ Array,
37
+ Object
38
+ ]) }
29
39
  });
30
40
  const colorPickerPanelEmits = { [require_event.UPDATE_MODEL_EVENT]: (val) => (0, _vue_shared.isString)(val) || (0, lodash_unified.isNil)(val) };
31
41
  const ROOT_COMMON_COLOR_INJECTION_KEY = Symbol("colorCommonPickerKey");
@@ -1 +1 @@
1
- {"version":3,"file":"color-picker-panel.js","names":["buildProps","definePropType","UPDATE_MODEL_EVENT"],"sources":["../../../../../../packages/components/color-picker-panel/src/color-picker-panel.ts"],"sourcesContent":["import { isNil } from 'lodash-unified'\nimport { buildProps, definePropType, isString } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type { ComputedRef, ExtractPublicPropTypes, InjectionKey } from 'vue'\nimport type { ColorFormats } from '@ctrl/tinycolor'\nimport type ColorPickerPanel from './color-picker-panel.vue'\nimport type Color from './utils/color'\n\nexport interface ColorPickerPanelProps {\n /**\n * @description binding value\n */\n modelValue?: string | null\n /**\n * @description whether the color picker is bordered\n */\n border?: boolean\n /**\n * @description whether to display the alpha slider\n */\n showAlpha?: boolean\n /**\n * @description color format of v-model\n */\n colorFormat?: ColorFormats\n /**\n * @description whether to disable the color picker\n */\n disabled?: boolean\n /**\n * @description predefined color options\n */\n predefine?: string[]\n /**\n * @description whether to trigger form validation\n */\n validateEvent?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerPanelProps` instead.\n */\nexport const colorPickerPanelProps = buildProps({\n /**\n * @description binding value\n */\n modelValue: {\n type: definePropType<string | null>(String),\n default: undefined,\n },\n /**\n * @description whether the color picker is bordered\n */\n border: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether to display the alpha slider\n */\n showAlpha: Boolean,\n /**\n * @description color format of v-model\n */\n colorFormat: {\n type: definePropType<ColorFormats>(String),\n },\n /**\n * @description whether to disable the color picker\n */\n disabled: Boolean,\n /**\n * @description predefined color options\n */\n predefine: {\n type: definePropType<string[]>(Array),\n },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n} as const)\nexport const colorPickerPanelEmits = {\n [UPDATE_MODEL_EVENT]: (val: string | null) => isString(val) || isNil(val),\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerPanelProps` instead.\n */\nexport type ColorPickerPanelPropsPublic = ExtractPublicPropTypes<\n typeof colorPickerPanelProps\n>\nexport type ColorPickerPanelEmits = typeof colorPickerPanelEmits\nexport type ColorPickerPanelInstance = InstanceType<typeof ColorPickerPanel> &\n unknown\n\nexport interface ColorPickerPanelContext {\n currentColor: ComputedRef<string>\n}\n\nexport interface CommonColorContext {\n color: Color\n}\n\nexport const ROOT_COMMON_COLOR_INJECTION_KEY: InjectionKey<CommonColorContext> =\n Symbol('colorCommonPickerKey')\nexport const colorPickerPanelContextKey: InjectionKey<ColorPickerPanelContext> =\n Symbol('colorPickerPanelContextKey')\n"],"mappings":";;;;;;;;;;;AA2CA,MAAa,wBAAwBA,6BAAW;CAI9C,YAAY;EACV,MAAMC,iCAA8B,OAAO;EAC3C,SAAS;EACV;CAID,QAAQ;EACN,MAAM;EACN,SAAS;EACV;CAID,WAAW;CAIX,aAAa,EACX,MAAMA,iCAA6B,OAAO,EAC3C;CAID,UAAU;CAIV,WAAW,EACT,MAAMA,iCAAyB,MAAM,EACtC;CAID,eAAe;EACb,MAAM;EACN,SAAS;EACV;CACF,CAAU;AACX,MAAa,wBAAwB,GAClCC,oCAAsB,kCAAgC,IAAI,8BAAU,IAAI,EAC1E;AAoBD,MAAa,kCACX,OAAO,uBAAuB;AAChC,MAAa,6BACX,OAAO,6BAA6B"}
1
+ {"version":3,"file":"color-picker-panel.js","names":["buildProps","definePropType","UPDATE_MODEL_EVENT"],"sources":["../../../../../../packages/components/color-picker-panel/src/color-picker-panel.ts"],"sourcesContent":["import { isNil } from 'lodash-unified'\nimport { buildProps, definePropType, isString } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type {\n ComputedRef,\n ExtractPublicPropTypes,\n InjectionKey,\n StyleValue,\n} from 'vue'\nimport type { ColorFormats } from '@ctrl/tinycolor'\nimport type ColorPickerPanel from './color-picker-panel.vue'\nimport type Color from './utils/color'\n\ntype ClassObjectType = Record<string, boolean>\ntype ClassType = string | ClassObjectType | ClassType[]\n\nexport interface ColorPickerPanelProps {\n /**\n * @description binding value\n */\n modelValue?: string | null\n /**\n * @description whether the color picker is bordered\n */\n border?: boolean\n /**\n * @description whether to display the alpha slider\n */\n showAlpha?: boolean\n /**\n * @description color format of v-model\n */\n colorFormat?: ColorFormats\n /**\n * @description whether to disable the color picker\n */\n disabled?: boolean\n /**\n * @description predefined color options\n */\n predefine?: string[]\n /**\n * @description whether to trigger form validation\n */\n validateEvent?: boolean\n /**\n * @description class names will be passed to hue-slider\n */\n hueSliderClass?: ClassType\n /**\n * @description styles will be passed to hue-slider\n */\n hueSliderStyle?: StyleValue\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerPanelProps` instead.\n */\nexport const colorPickerPanelProps = buildProps({\n /**\n * @description binding value\n */\n modelValue: {\n type: definePropType<string | null>(String),\n default: undefined,\n },\n /**\n * @description whether the color picker is bordered\n */\n border: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether to display the alpha slider\n */\n showAlpha: Boolean,\n /**\n * @description color format of v-model\n */\n colorFormat: {\n type: definePropType<ColorFormats>(String),\n },\n /**\n * @description whether to disable the color picker\n */\n disabled: Boolean,\n /**\n * @description predefined color options\n */\n predefine: {\n type: definePropType<string[]>(Array),\n },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n /**\n * @description class names will be passed to <hue-slider />\n */\n hueSliderClass: {\n type: definePropType<ClassType>([String, Array, Object]),\n },\n /**\n * @description styles will be passed to <hue-slider />\n */\n hueSliderStyle: {\n type: definePropType<StyleValue>([String, Array, Object]),\n },\n} as const)\nexport const colorPickerPanelEmits = {\n [UPDATE_MODEL_EVENT]: (val: string | null) => isString(val) || isNil(val),\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerPanelProps` instead.\n */\nexport type ColorPickerPanelPropsPublic = ExtractPublicPropTypes<\n typeof colorPickerPanelProps\n>\nexport type ColorPickerPanelEmits = typeof colorPickerPanelEmits\nexport type ColorPickerPanelInstance = InstanceType<typeof ColorPickerPanel> &\n unknown\n\nexport interface ColorPickerPanelContext {\n currentColor: ComputedRef<string>\n}\n\nexport interface CommonColorContext {\n color: Color\n}\n\nexport const ROOT_COMMON_COLOR_INJECTION_KEY: InjectionKey<CommonColorContext> =\n Symbol('colorCommonPickerKey')\nexport const colorPickerPanelContextKey: InjectionKey<ColorPickerPanelContext> =\n Symbol('colorPickerPanelContextKey')\n"],"mappings":";;;;;;;;;;;AA2DA,MAAa,wBAAwBA,6BAAW;CAI9C,YAAY;EACV,MAAMC,iCAA8B,OAAO;EAC3C,SAAS;EACV;CAID,QAAQ;EACN,MAAM;EACN,SAAS;EACV;CAID,WAAW;CAIX,aAAa,EACX,MAAMA,iCAA6B,OAAO,EAC3C;CAID,UAAU;CAIV,WAAW,EACT,MAAMA,iCAAyB,MAAM,EACtC;CAID,eAAe;EACb,MAAM;EACN,SAAS;EACV;CAID,gBAAgB,EACd,MAAMA,iCAA0B;EAAC;EAAQ;EAAO;EAAO,CAAC,EACzD;CAID,gBAAgB,EACd,MAAMA,iCAA2B;EAAC;EAAQ;EAAO;EAAO,CAAC,EAC1D;CACF,CAAU;AACX,MAAa,wBAAwB,GAClCC,oCAAsB,kCAAgC,IAAI,8BAAU,IAAI,EAC1E;AAoBD,MAAa,kCACX,OAAO,uBAAuB;AAChC,MAAa,6BACX,OAAO,6BAA6B"}
@@ -73,11 +73,17 @@ var color_picker_panel_vue_vue_type_script_setup_true_lang_default = /* @__PURE_
73
73
  (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("wrapper")) }, [(0, vue.createVNode)(require_hue_slider.default, {
74
74
  ref_key: "hueRef",
75
75
  ref: hueRef,
76
- class: "hue-slider",
77
76
  color: (0, vue.unref)(color),
78
77
  vertical: "",
79
- disabled: (0, vue.unref)(disabled)
80
- }, null, 8, ["color", "disabled"]), (0, vue.createVNode)(require_sv_panel.default, {
78
+ disabled: (0, vue.unref)(disabled),
79
+ class: (0, vue.normalizeClass)(["hue-slider", __props.hueSliderClass]),
80
+ style: (0, vue.normalizeStyle)(__props.hueSliderStyle)
81
+ }, null, 8, [
82
+ "color",
83
+ "disabled",
84
+ "class",
85
+ "style"
86
+ ]), (0, vue.createVNode)(require_sv_panel.default, {
81
87
  ref_key: "svRef",
82
88
  ref: svRef,
83
89
  color: (0, vue.unref)(color),
@@ -1 +1 @@
1
- {"version":3,"file":"color-picker-panel.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../../packages/components/color-picker-panel/src/color-picker-panel.vue"],"sourcesContent":["<template>\n <div\n :class=\"[ns.b(), ns.is('disabled', disabled), ns.is('border', border)]\"\n @focusout=\"handleFocusout\"\n >\n <div :class=\"ns.e('wrapper')\">\n <hue-slider\n ref=\"hueRef\"\n class=\"hue-slider\"\n :color=\"color\"\n vertical\n :disabled=\"disabled\"\n />\n <sv-panel ref=\"svRef\" :color=\"color\" :disabled=\"disabled\" />\n </div>\n <alpha-slider\n v-if=\"showAlpha\"\n ref=\"alphaRef\"\n :color=\"color\"\n :disabled=\"disabled\"\n />\n <predefine\n v-if=\"predefine\"\n ref=\"predefine\"\n :enable-alpha=\"showAlpha\"\n :color=\"color\"\n :colors=\"predefine\"\n :disabled=\"disabled\"\n />\n <div :class=\"ns.e('footer')\">\n <el-input\n ref=\"inputRef\"\n v-model=\"customInput\"\n :validate-event=\"false\"\n size=\"small\"\n :disabled=\"disabled\"\n @change=\"handleConfirm\"\n />\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onMounted, provide, ref, watch } from 'vue'\nimport { ElInput } from '@element-plus/components/input'\nimport { useFormDisabled, useFormItem } from '@element-plus/components/form'\nimport { useNamespace } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport AlphaSlider from './components/alpha-slider.vue'\nimport HueSlider from './components/hue-slider.vue'\nimport Predefine from './components/predefine.vue'\nimport SvPanel from './components/sv-panel.vue'\nimport {\n ROOT_COMMON_COLOR_INJECTION_KEY,\n colorPickerPanelContextKey,\n colorPickerPanelEmits,\n} from './color-picker-panel'\nimport { useCommonColor } from './composables/use-common-color'\n\nimport type { ColorPickerPanelProps } from './color-picker-panel'\nimport type { InputInstance } from '@element-plus/components/input'\n\ndefineOptions({\n name: 'ElColorPickerPanel',\n})\nconst props = withDefaults(defineProps<ColorPickerPanelProps>(), {\n modelValue: undefined,\n border: true,\n validateEvent: true,\n showAlpha: false,\n})\nconst emit = defineEmits(colorPickerPanelEmits)\n\nconst ns = useNamespace('color-picker-panel')\nconst { formItem } = useFormItem()\nconst disabled = useFormDisabled()\nconst hueRef = ref<InstanceType<typeof HueSlider>>()\nconst svRef = ref<InstanceType<typeof SvPanel>>()\nconst alphaRef = ref<InstanceType<typeof AlphaSlider>>()\nconst inputRef = ref<InputInstance>()\nconst customInput = ref('')\n\nconst { color } = inject(\n ROOT_COMMON_COLOR_INJECTION_KEY,\n () => useCommonColor(props, emit),\n true\n)\n\nfunction handleConfirm() {\n color.fromString(customInput.value)\n if (color.value !== customInput.value) {\n customInput.value = color.value\n }\n}\n\nfunction handleFocusout() {\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n}\n\nfunction update() {\n hueRef.value?.update()\n svRef.value?.update()\n alphaRef.value?.update()\n}\n\nonMounted(() => {\n if (props.modelValue) {\n customInput.value = color.value\n }\n nextTick(update)\n})\n\nwatch(\n () => props.modelValue,\n (newVal) => {\n if (newVal !== color.value) {\n newVal ? color.fromString(newVal) : color.clear()\n }\n }\n)\n\nwatch(\n () => color.value,\n (val) => {\n emit(UPDATE_MODEL_EVENT, val)\n customInput.value = val\n if (props.validateEvent) {\n formItem?.validate('change').catch((err) => debugWarn(err))\n }\n }\n)\n\nprovide(colorPickerPanelContextKey, {\n currentColor: computed(() => color.value),\n})\n\ndefineExpose({\n /**\n * @description current color object\n */\n color,\n /**\n * @description custom input ref\n */\n inputRef,\n /**\n * @description update sub components\n */\n update,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAmEA,MAAM,QAAQ;EAMd,MAAM,OAAO;EAEb,MAAM,KAAK,2BAAa,qBAAoB;EAC5C,MAAM,EAAE,aAAa,mCAAY;EACjC,MAAM,WAAW,+CAAgB;EACjC,MAAM,uBAA6C;EACnD,MAAM,sBAA0C;EAChD,MAAM,yBAAiD;EACvD,MAAM,yBAA8B;EACpC,MAAM,2BAAkB,GAAE;EAE1B,MAAM,EAAE,0BACN,kEACM,wCAAe,OAAO,KAAK,EACjC,KACF;EAEA,SAAS,gBAAgB;AACvB,SAAM,WAAW,YAAY,MAAK;AAClC,OAAI,MAAM,UAAU,YAAY,MAC9B,aAAY,QAAQ,MAAM;;EAI9B,SAAS,iBAAiB;AACxB,OAAI,MAAM,cACR,WAAU,WAAW,OAAO,CAAC,OAAO,QAAQ,wBAAU,IAAI,CAAA;;EAI9D,SAAS,SAAS;AAChB,UAAO,OAAO,QAAO;AACrB,SAAM,OAAO,QAAO;AACpB,YAAS,OAAO,QAAO;;AAGzB,2BAAgB;AACd,OAAI,MAAM,WACR,aAAY,QAAQ,MAAM;AAE5B,qBAAS,OAAM;IAChB;AAED,uBACQ,MAAM,aACX,WAAW;AACV,OAAI,WAAW,MAAM,MACnB,UAAS,MAAM,WAAW,OAAO,GAAG,MAAM,OAAM;IAGtD;AAEA,uBACQ,MAAM,QACX,QAAQ;AACP,QAAK,kCAAoB,IAAG;AAC5B,eAAY,QAAQ;AACpB,OAAI,MAAM,cACR,WAAU,SAAS,SAAS,CAAC,OAAO,QAAQ,wBAAU,IAAI,CAAA;IAGhE;AAEA,mBAAQ,uDAA4B,EAClC,sCAA6B,MAAM,MAAM,EAC1C,CAAA;AAED,WAAa;GAIX;GAIA;GAIA;GACD,CAAA;;4DAjHO,OAAA;IAtCH,+BAAK;oBAAG,GAAE,CAAC,GAAC;oBAAI,GAAE,CAAC,GAAE,2BAAa,SAAQ,CAAA;oBAAG,GAAE,CAAC,GAAE,UAAW,QAAA,OAAM;KAAA,CAAA;IACnE,YAAU;;gCAWL,OAAA,EATA,8CAAO,GAAE,CAAC,EAAC,UAAA,CAAA,0BAOb,4BAAA;cALI;KAAJ,KAAI;KACJ,OAAM;KACL,sBAAO,MAAK;KACb,UAAA;KACC,yBAAU,SAAA;6DAE+C,0BAAA;cAA9C;KAAJ,KAAI;KAAS,sBAAO,MAAK;KAAG,yBAAU,SAAA;;IAG1C,QAAA,wDAIN,8BAAA;;cAHI;KAAJ,KAAI;KACH,sBAAO,MAAK;KACZ,yBAAU,SAAA;;IAGL,QAAA,wDAMN,2BAAA;;KALA,KAAI;KACH,gBAAc,QAAA;KACd,sBAAO,MAAK;KACZ,QAAQ,QAAA;KACR,yBAAU,SAAA;;;;;;;gCAYP,OAAA,EAVA,8CAAO,GAAE,CAAC,EAAC,SAAA,CAAA,yCAQb,wBAAA,EAAA;cANI;KAAJ,KAAI;iBACK,YAAA;kEAAA,YAAW,QAAA;KACnB,kBAAgB;KACjB,MAAK;KACJ,yBAAU,SAAQ;KAClB,UAAQ;iEAEW,KAAA,QAAA,SAAA"}
1
+ {"version":3,"file":"color-picker-panel.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../../packages/components/color-picker-panel/src/color-picker-panel.vue"],"sourcesContent":["<template>\n <div\n :class=\"[ns.b(), ns.is('disabled', disabled), ns.is('border', border)]\"\n @focusout=\"handleFocusout\"\n >\n <div :class=\"ns.e('wrapper')\">\n <hue-slider\n ref=\"hueRef\"\n :color=\"color\"\n vertical\n :disabled=\"disabled\"\n :class=\"['hue-slider', hueSliderClass]\"\n :style=\"hueSliderStyle\"\n />\n <sv-panel ref=\"svRef\" :color=\"color\" :disabled=\"disabled\" />\n </div>\n <alpha-slider\n v-if=\"showAlpha\"\n ref=\"alphaRef\"\n :color=\"color\"\n :disabled=\"disabled\"\n />\n <predefine\n v-if=\"predefine\"\n ref=\"predefine\"\n :enable-alpha=\"showAlpha\"\n :color=\"color\"\n :colors=\"predefine\"\n :disabled=\"disabled\"\n />\n <div :class=\"ns.e('footer')\">\n <el-input\n ref=\"inputRef\"\n v-model=\"customInput\"\n :validate-event=\"false\"\n size=\"small\"\n :disabled=\"disabled\"\n @change=\"handleConfirm\"\n />\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onMounted, provide, ref, watch } from 'vue'\nimport { ElInput } from '@element-plus/components/input'\nimport { useFormDisabled, useFormItem } from '@element-plus/components/form'\nimport { useNamespace } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport AlphaSlider from './components/alpha-slider.vue'\nimport HueSlider from './components/hue-slider.vue'\nimport Predefine from './components/predefine.vue'\nimport SvPanel from './components/sv-panel.vue'\nimport {\n ROOT_COMMON_COLOR_INJECTION_KEY,\n colorPickerPanelContextKey,\n colorPickerPanelEmits,\n} from './color-picker-panel'\nimport { useCommonColor } from './composables/use-common-color'\n\nimport type { ColorPickerPanelProps } from './color-picker-panel'\nimport type { InputInstance } from '@element-plus/components/input'\n\ndefineOptions({\n name: 'ElColorPickerPanel',\n})\nconst props = withDefaults(defineProps<ColorPickerPanelProps>(), {\n modelValue: undefined,\n border: true,\n validateEvent: true,\n showAlpha: false,\n})\nconst emit = defineEmits(colorPickerPanelEmits)\n\nconst ns = useNamespace('color-picker-panel')\nconst { formItem } = useFormItem()\nconst disabled = useFormDisabled()\nconst hueRef = ref<InstanceType<typeof HueSlider>>()\nconst svRef = ref<InstanceType<typeof SvPanel>>()\nconst alphaRef = ref<InstanceType<typeof AlphaSlider>>()\nconst inputRef = ref<InputInstance>()\nconst customInput = ref('')\n\nconst { color } = inject(\n ROOT_COMMON_COLOR_INJECTION_KEY,\n () => useCommonColor(props, emit),\n true\n)\n\nfunction handleConfirm() {\n color.fromString(customInput.value)\n if (color.value !== customInput.value) {\n customInput.value = color.value\n }\n}\n\nfunction handleFocusout() {\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n}\n\nfunction update() {\n hueRef.value?.update()\n svRef.value?.update()\n alphaRef.value?.update()\n}\n\nonMounted(() => {\n if (props.modelValue) {\n customInput.value = color.value\n }\n nextTick(update)\n})\n\nwatch(\n () => props.modelValue,\n (newVal) => {\n if (newVal !== color.value) {\n newVal ? color.fromString(newVal) : color.clear()\n }\n }\n)\n\nwatch(\n () => color.value,\n (val) => {\n emit(UPDATE_MODEL_EVENT, val)\n customInput.value = val\n if (props.validateEvent) {\n formItem?.validate('change').catch((err) => debugWarn(err))\n }\n }\n)\n\nprovide(colorPickerPanelContextKey, {\n currentColor: computed(() => color.value),\n})\n\ndefineExpose({\n /**\n * @description current color object\n */\n color,\n /**\n * @description custom input ref\n */\n inputRef,\n /**\n * @description update sub components\n */\n update,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAoEA,MAAM,QAAQ;EAMd,MAAM,OAAO;EAEb,MAAM,KAAK,2BAAa,qBAAoB;EAC5C,MAAM,EAAE,aAAa,mCAAY;EACjC,MAAM,WAAW,+CAAgB;EACjC,MAAM,uBAA6C;EACnD,MAAM,sBAA0C;EAChD,MAAM,yBAAiD;EACvD,MAAM,yBAA8B;EACpC,MAAM,2BAAkB,GAAE;EAE1B,MAAM,EAAE,0BACN,kEACM,wCAAe,OAAO,KAAK,EACjC,KACF;EAEA,SAAS,gBAAgB;AACvB,SAAM,WAAW,YAAY,MAAK;AAClC,OAAI,MAAM,UAAU,YAAY,MAC9B,aAAY,QAAQ,MAAM;;EAI9B,SAAS,iBAAiB;AACxB,OAAI,MAAM,cACR,WAAU,WAAW,OAAO,CAAC,OAAO,QAAQ,wBAAU,IAAI,CAAA;;EAI9D,SAAS,SAAS;AAChB,UAAO,OAAO,QAAO;AACrB,SAAM,OAAO,QAAO;AACpB,YAAS,OAAO,QAAO;;AAGzB,2BAAgB;AACd,OAAI,MAAM,WACR,aAAY,QAAQ,MAAM;AAE5B,qBAAS,OAAM;IAChB;AAED,uBACQ,MAAM,aACX,WAAW;AACV,OAAI,WAAW,MAAM,MACnB,UAAS,MAAM,WAAW,OAAO,GAAG,MAAM,OAAM;IAGtD;AAEA,uBACQ,MAAM,QACX,QAAQ;AACP,QAAK,kCAAoB,IAAG;AAC5B,eAAY,QAAQ;AACpB,OAAI,MAAM,cACR,WAAU,SAAS,SAAS,CAAC,OAAO,QAAQ,wBAAU,IAAI,CAAA;IAGhE;AAEA,mBAAQ,uDAA4B,EAClC,sCAA6B,MAAM,MAAM,EAC1C,CAAA;AAED,WAAa;GAIX;GAIA;GAIA;GACD,CAAA;;4DAjHO,OAAA;IAvCH,+BAAK;oBAAG,GAAE,CAAC,GAAC;oBAAI,GAAE,CAAC,GAAE,2BAAa,SAAQ,CAAA;oBAAG,GAAE,CAAC,GAAE,UAAW,QAAA,OAAM;KAAA,CAAA;IACnE,YAAU;;gCAYL,OAAA,EAVA,8CAAO,GAAE,CAAC,EAAC,UAAA,CAAA,0BAQb,4BAAA;cANI;KAAJ,KAAI;KACH,sBAAO,MAAK;KACb,UAAA;KACC,yBAAU,SAAQ;KAClB,+BAAK,CAAA,cAAiB,QAAA,eAAc,CAAA;KACpC,+BAAO,QAAA,eAAc;;;;;;6BAEoC,0BAAA;cAA9C;KAAJ,KAAI;KAAS,sBAAO,MAAK;KAAG,yBAAU,SAAA;;IAG1C,QAAA,wDAIN,8BAAA;;cAHI;KAAJ,KAAI;KACH,sBAAO,MAAK;KACZ,yBAAU,SAAA;;IAGL,QAAA,wDAMN,2BAAA;;KALA,KAAI;KACH,gBAAc,QAAA;KACd,sBAAO,MAAK;KACZ,QAAQ,QAAA;KACR,yBAAU,SAAA;;;;;;;gCAYP,OAAA,EAVA,8CAAO,GAAE,CAAC,EAAC,SAAA,CAAA,yCAQb,wBAAA,EAAA;cANI;KAAJ,KAAI;iBACK,YAAA;kEAAA,YAAW,QAAA;KACnB,kBAAgB;KACjB,MAAK;KACJ,yBAAU,SAAQ;KAClB,UAAQ;iEAEW,KAAA,QAAA,SAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"color-picker-panel2.js","names":[],"sources":["../../../../../../packages/components/color-picker-panel/src/color-picker-panel.vue"],"sourcesContent":["<template>\n <div\n :class=\"[ns.b(), ns.is('disabled', disabled), ns.is('border', border)]\"\n @focusout=\"handleFocusout\"\n >\n <div :class=\"ns.e('wrapper')\">\n <hue-slider\n ref=\"hueRef\"\n class=\"hue-slider\"\n :color=\"color\"\n vertical\n :disabled=\"disabled\"\n />\n <sv-panel ref=\"svRef\" :color=\"color\" :disabled=\"disabled\" />\n </div>\n <alpha-slider\n v-if=\"showAlpha\"\n ref=\"alphaRef\"\n :color=\"color\"\n :disabled=\"disabled\"\n />\n <predefine\n v-if=\"predefine\"\n ref=\"predefine\"\n :enable-alpha=\"showAlpha\"\n :color=\"color\"\n :colors=\"predefine\"\n :disabled=\"disabled\"\n />\n <div :class=\"ns.e('footer')\">\n <el-input\n ref=\"inputRef\"\n v-model=\"customInput\"\n :validate-event=\"false\"\n size=\"small\"\n :disabled=\"disabled\"\n @change=\"handleConfirm\"\n />\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onMounted, provide, ref, watch } from 'vue'\nimport { ElInput } from '@element-plus/components/input'\nimport { useFormDisabled, useFormItem } from '@element-plus/components/form'\nimport { useNamespace } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport AlphaSlider from './components/alpha-slider.vue'\nimport HueSlider from './components/hue-slider.vue'\nimport Predefine from './components/predefine.vue'\nimport SvPanel from './components/sv-panel.vue'\nimport {\n ROOT_COMMON_COLOR_INJECTION_KEY,\n colorPickerPanelContextKey,\n colorPickerPanelEmits,\n} from './color-picker-panel'\nimport { useCommonColor } from './composables/use-common-color'\n\nimport type { ColorPickerPanelProps } from './color-picker-panel'\nimport type { InputInstance } from '@element-plus/components/input'\n\ndefineOptions({\n name: 'ElColorPickerPanel',\n})\nconst props = withDefaults(defineProps<ColorPickerPanelProps>(), {\n modelValue: undefined,\n border: true,\n validateEvent: true,\n showAlpha: false,\n})\nconst emit = defineEmits(colorPickerPanelEmits)\n\nconst ns = useNamespace('color-picker-panel')\nconst { formItem } = useFormItem()\nconst disabled = useFormDisabled()\nconst hueRef = ref<InstanceType<typeof HueSlider>>()\nconst svRef = ref<InstanceType<typeof SvPanel>>()\nconst alphaRef = ref<InstanceType<typeof AlphaSlider>>()\nconst inputRef = ref<InputInstance>()\nconst customInput = ref('')\n\nconst { color } = inject(\n ROOT_COMMON_COLOR_INJECTION_KEY,\n () => useCommonColor(props, emit),\n true\n)\n\nfunction handleConfirm() {\n color.fromString(customInput.value)\n if (color.value !== customInput.value) {\n customInput.value = color.value\n }\n}\n\nfunction handleFocusout() {\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n}\n\nfunction update() {\n hueRef.value?.update()\n svRef.value?.update()\n alphaRef.value?.update()\n}\n\nonMounted(() => {\n if (props.modelValue) {\n customInput.value = color.value\n }\n nextTick(update)\n})\n\nwatch(\n () => props.modelValue,\n (newVal) => {\n if (newVal !== color.value) {\n newVal ? color.fromString(newVal) : color.clear()\n }\n }\n)\n\nwatch(\n () => color.value,\n (val) => {\n emit(UPDATE_MODEL_EVENT, val)\n customInput.value = val\n if (props.validateEvent) {\n formItem?.validate('change').catch((err) => debugWarn(err))\n }\n }\n)\n\nprovide(colorPickerPanelContextKey, {\n currentColor: computed(() => color.value),\n})\n\ndefineExpose({\n /**\n * @description current color object\n */\n color,\n /**\n * @description custom input ref\n */\n inputRef,\n /**\n * @description update sub components\n */\n update,\n})\n</script>\n"],"mappings":""}
1
+ {"version":3,"file":"color-picker-panel2.js","names":[],"sources":["../../../../../../packages/components/color-picker-panel/src/color-picker-panel.vue"],"sourcesContent":["<template>\n <div\n :class=\"[ns.b(), ns.is('disabled', disabled), ns.is('border', border)]\"\n @focusout=\"handleFocusout\"\n >\n <div :class=\"ns.e('wrapper')\">\n <hue-slider\n ref=\"hueRef\"\n :color=\"color\"\n vertical\n :disabled=\"disabled\"\n :class=\"['hue-slider', hueSliderClass]\"\n :style=\"hueSliderStyle\"\n />\n <sv-panel ref=\"svRef\" :color=\"color\" :disabled=\"disabled\" />\n </div>\n <alpha-slider\n v-if=\"showAlpha\"\n ref=\"alphaRef\"\n :color=\"color\"\n :disabled=\"disabled\"\n />\n <predefine\n v-if=\"predefine\"\n ref=\"predefine\"\n :enable-alpha=\"showAlpha\"\n :color=\"color\"\n :colors=\"predefine\"\n :disabled=\"disabled\"\n />\n <div :class=\"ns.e('footer')\">\n <el-input\n ref=\"inputRef\"\n v-model=\"customInput\"\n :validate-event=\"false\"\n size=\"small\"\n :disabled=\"disabled\"\n @change=\"handleConfirm\"\n />\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onMounted, provide, ref, watch } from 'vue'\nimport { ElInput } from '@element-plus/components/input'\nimport { useFormDisabled, useFormItem } from '@element-plus/components/form'\nimport { useNamespace } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport AlphaSlider from './components/alpha-slider.vue'\nimport HueSlider from './components/hue-slider.vue'\nimport Predefine from './components/predefine.vue'\nimport SvPanel from './components/sv-panel.vue'\nimport {\n ROOT_COMMON_COLOR_INJECTION_KEY,\n colorPickerPanelContextKey,\n colorPickerPanelEmits,\n} from './color-picker-panel'\nimport { useCommonColor } from './composables/use-common-color'\n\nimport type { ColorPickerPanelProps } from './color-picker-panel'\nimport type { InputInstance } from '@element-plus/components/input'\n\ndefineOptions({\n name: 'ElColorPickerPanel',\n})\nconst props = withDefaults(defineProps<ColorPickerPanelProps>(), {\n modelValue: undefined,\n border: true,\n validateEvent: true,\n showAlpha: false,\n})\nconst emit = defineEmits(colorPickerPanelEmits)\n\nconst ns = useNamespace('color-picker-panel')\nconst { formItem } = useFormItem()\nconst disabled = useFormDisabled()\nconst hueRef = ref<InstanceType<typeof HueSlider>>()\nconst svRef = ref<InstanceType<typeof SvPanel>>()\nconst alphaRef = ref<InstanceType<typeof AlphaSlider>>()\nconst inputRef = ref<InputInstance>()\nconst customInput = ref('')\n\nconst { color } = inject(\n ROOT_COMMON_COLOR_INJECTION_KEY,\n () => useCommonColor(props, emit),\n true\n)\n\nfunction handleConfirm() {\n color.fromString(customInput.value)\n if (color.value !== customInput.value) {\n customInput.value = color.value\n }\n}\n\nfunction handleFocusout() {\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n}\n\nfunction update() {\n hueRef.value?.update()\n svRef.value?.update()\n alphaRef.value?.update()\n}\n\nonMounted(() => {\n if (props.modelValue) {\n customInput.value = color.value\n }\n nextTick(update)\n})\n\nwatch(\n () => props.modelValue,\n (newVal) => {\n if (newVal !== color.value) {\n newVal ? color.fromString(newVal) : color.clear()\n }\n }\n)\n\nwatch(\n () => color.value,\n (val) => {\n emit(UPDATE_MODEL_EVENT, val)\n customInput.value = val\n if (props.validateEvent) {\n formItem?.validate('change').catch((err) => debugWarn(err))\n }\n }\n)\n\nprovide(colorPickerPanelContextKey, {\n currentColor: computed(() => color.value),\n})\n\ndefineExpose({\n /**\n * @description current color object\n */\n color,\n /**\n * @description custom input ref\n */\n inputRef,\n /**\n * @description update sub components\n */\n update,\n})\n</script>\n"],"mappings":""}
@@ -70,12 +70,12 @@ declare const __VLS_base: vue.DefineComponent<__VLS_WithDefaults<__VLS_TypeProps
70
70
  onOpenAutoFocus?: (() => any) | undefined;
71
71
  onCloseAutoFocus?: (() => any) | undefined;
72
72
  }, {
73
- title: string;
74
- closeOnPressEscape: boolean;
75
73
  appendTo: string | HTMLElement;
74
+ title: string;
76
75
  transition: DialogTransition;
77
76
  overflow: boolean;
78
77
  closeOnClickModal: boolean;
78
+ closeOnPressEscape: boolean;
79
79
  lockScroll: boolean;
80
80
  modal: boolean;
81
81
  openDelay: number;
@@ -85,14 +85,14 @@ declare const __VLS_base: vue.DefineComponent<__VLS_WithDefaults<__VLS_TypeProps
85
85
  "onResize-start"?: ((evt: MouseEvent, size: number) => any) | undefined;
86
86
  "onResize-end"?: ((evt: MouseEvent, size: number) => any) | undefined;
87
87
  }, {
88
- title: string;
89
- closeOnPressEscape: boolean;
90
88
  appendTo: string | HTMLElement;
89
+ title: string;
91
90
  size: string | number;
92
91
  transition: DialogTransition;
93
92
  direction: "ltr" | "rtl" | "ttb" | "btt";
94
93
  overflow: boolean;
95
94
  closeOnClickModal: boolean;
95
+ closeOnPressEscape: boolean;
96
96
  lockScroll: boolean;
97
97
  modal: boolean;
98
98
  openDelay: number;
@@ -388,8 +388,8 @@ declare const __VLS_export: vue.DefineComponent<{
388
388
  "onVisible-change"?: ((...args: any[]) => any) | undefined;
389
389
  onCommand?: ((...args: any[]) => any) | undefined;
390
390
  }, {
391
- readonly effect: EpPropMergeType<(new (...args: any[]) => string) | (() => PopperEffect) | ((new (...args: any[]) => string) | (() => PopperEffect))[], unknown, unknown>;
392
391
  readonly teleported: EpPropMergeType<BooleanConstructor, unknown, unknown>;
392
+ readonly effect: EpPropMergeType<(new (...args: any[]) => string) | (() => PopperEffect) | ((new (...args: any[]) => string) | (() => PopperEffect))[], unknown, unknown>;
393
393
  readonly placement: EpPropMergeType<(new (...args: any[]) => "top" | "auto" | "bottom" | "bottom-start" | "left" | "right" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => Placement) | ((new (...args: any[]) => "top" | "auto" | "bottom" | "bottom-start" | "left" | "right" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => Placement))[], unknown, unknown>;
394
394
  readonly size: string;
395
395
  readonly disabled: boolean;
@@ -48,9 +48,9 @@ declare const __VLS_base: vue.DefineComponent<__VLS_WithDefaults<__VLS_TypeProps
48
48
  }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
49
49
  close: () => void;
50
50
  error: (evt: Event) => void;
51
- switch: (val: number) => void;
52
51
  show: () => void;
53
52
  load: (evt: Event) => void;
53
+ switch: (val: number) => void;
54
54
  }, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ImageProps>, {
55
55
  src: string;
56
56
  fit: string;
@@ -64,21 +64,21 @@ declare const __VLS_base: vue.DefineComponent<__VLS_WithDefaults<__VLS_TypeProps
64
64
  maxScale: number;
65
65
  }>>> & {
66
66
  onClose?: (() => any) | undefined;
67
- onError?: ((evt: Event) => any) | undefined;
68
- onSwitch?: ((val: number) => any) | undefined;
69
67
  onLoad?: ((evt: Event) => any) | undefined;
68
+ onError?: ((evt: Event) => any) | undefined;
70
69
  onShow?: (() => any) | undefined;
70
+ onSwitch?: ((val: number) => any) | undefined;
71
71
  }, {
72
- initialIndex: number;
73
72
  infinite: boolean;
74
- closeOnPressEscape: boolean;
75
- zoomRate: number;
76
73
  scale: number;
77
- minScale: number;
78
- maxScale: number;
79
74
  src: string;
80
75
  fit: ImageFitType;
76
+ initialIndex: number;
77
+ closeOnPressEscape: boolean;
81
78
  previewSrcList: string[];
79
+ zoomRate: number;
80
+ minScale: number;
81
+ maxScale: number;
82
82
  }, {}>;
83
83
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
84
84
  declare const _default: typeof __VLS_export;
@@ -47,8 +47,8 @@ declare const __VLS_base: vue.DefineComponent<__VLS_WithDefaults<__VLS_TypeProps
47
47
  }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
48
48
  close: () => void;
49
49
  error: (evt: Event) => void;
50
- switch: (index: number) => void;
51
50
  rotate: (deg: number) => void;
51
+ switch: (index: number) => void;
52
52
  }, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ImageViewerProps>, {
53
53
  urlList: () => never[];
54
54
  initialIndex: number;
@@ -64,14 +64,14 @@ declare const __VLS_base: vue.DefineComponent<__VLS_WithDefaults<__VLS_TypeProps
64
64
  onSwitch?: ((index: number) => any) | undefined;
65
65
  onRotate?: ((deg: number) => any) | undefined;
66
66
  }, {
67
- urlList: string[];
68
- initialIndex: number;
69
67
  infinite: boolean;
68
+ scale: number;
69
+ initialIndex: number;
70
70
  closeOnPressEscape: boolean;
71
71
  zoomRate: number;
72
- scale: number;
73
72
  minScale: number;
74
73
  maxScale: number;
74
+ urlList: string[];
75
75
  }, {}>;
76
76
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
77
77
  declare const _default: typeof __VLS_export;
@@ -5,7 +5,9 @@ import * as vue from "vue";
5
5
  import { StyleValue } from "vue";
6
6
 
7
7
  //#region ../../packages/components/input/src/input.vue.d.ts
8
- declare var __VLS_1: {}, __VLS_3: {}, __VLS_16: {}, __VLS_69: {};
8
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_16: {}, __VLS_53: {
9
+ visible: boolean;
10
+ }, __VLS_71: {};
9
11
  type __VLS_Slots = {} & {
10
12
  prepend?: (props: typeof __VLS_1) => any;
11
13
  } & {
@@ -13,7 +15,9 @@ type __VLS_Slots = {} & {
13
15
  } & {
14
16
  suffix?: (props: typeof __VLS_16) => any;
15
17
  } & {
16
- append?: (props: typeof __VLS_69) => any;
18
+ 'password-icon'?: (props: typeof __VLS_53) => any;
19
+ } & {
20
+ append?: (props: typeof __VLS_71) => any;
17
21
  };
18
22
  declare const __VLS_base: vue.DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<InputProps>, {
19
23
  readonly disabled: undefined;
@@ -347,8 +347,8 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.
347
347
  onMousedown: (0, vue.withModifiers)((0, vue.unref)(_vue_shared.NOOP), ["prevent"]),
348
348
  onMouseup: (0, vue.withModifiers)((0, vue.unref)(_vue_shared.NOOP), ["prevent"])
349
349
  }, {
350
- default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(passwordIcon.value)))]),
351
- _: 1
350
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "password-icon", { visible: passwordVisible.value }, () => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(passwordIcon.value)))])]),
351
+ _: 3
352
352
  }, 8, [
353
353
  "class",
354
354
  "onMousedown",
@@ -1 +1 @@
1
- {"version":3,"file":"input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../../../../packages/components/input/src/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n containerKls,\n {\n [nsInput.bm('group', 'append')]: $slots.append,\n [nsInput.bm('group', 'prepend')]: $slots.prepend,\n },\n ]\"\n :style=\"containerStyle\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- input -->\n <template v-if=\"type !== 'textarea'\">\n <!-- prepend slot -->\n <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n <slot name=\"prepend\" />\n </div>\n\n <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n <!-- prefix slot -->\n <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n <span :class=\"nsInput.e('prefix-inner')\">\n <slot name=\"prefix\" />\n <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </span>\n </span>\n\n <input\n :id=\"inputId\"\n ref=\"input\"\n :class=\"nsInput.e('inner')\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :tabindex=\"tabindex\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n\n <!-- suffix slot -->\n <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n <span :class=\"nsInput.e('suffix-inner')\">\n <template\n v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n >\n <slot name=\"suffix\" />\n <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"suffixIcon\" />\n </el-icon>\n </template>\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"showPwdVisible\"\n :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n @click=\"handlePasswordVisible\"\n @mousedown.prevent=\"NOOP\"\n @mouseup.prevent=\"NOOP\"\n >\n <component :is=\"passwordIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n <span :class=\"nsInput.e('count-inner')\">\n {{ textLength }} / {{ maxlength }}\n </span>\n </span>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </span>\n </span>\n </div>\n\n <!-- append slot -->\n <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n <slot name=\"append\" />\n </div>\n </template>\n\n <!-- textarea -->\n <template v-else>\n <textarea\n :id=\"inputId\"\n ref=\"textarea\"\n :class=\"[\n nsTextarea.e('inner'),\n nsInput.is('focus', isFocused),\n nsTextarea.is('clearable', clearable),\n ]\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :tabindex=\"tabindex\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :style=\"textareaStyle\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :rows=\"rows\"\n :role=\"containerRole\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :style=\"countStyle\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n {{ textLength }} / {{ maxlength }}\n </span>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n toRef,\n useAttrs as useRawAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Hide, View } from '@element-plus/icons-vue'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport {\n NOOP,\n ValidateComponentsMap,\n debugWarn,\n isClient,\n isObject,\n} from '@element-plus/utils'\nimport {\n useAttrs,\n useComposition,\n useCursor,\n useFocusController,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n name: COMPONENT_NAME,\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n nsInput.m(inputSize.value),\n nsInput.is('disabled', inputDisabled.value),\n nsInput.is('exceed', inputExceed.value),\n {\n [nsInput.b('group')]: slots.prepend || slots.append,\n [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n [nsInput.m('suffix')]:\n slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n [nsInput.bm('suffix', 'password-clear')]:\n showClear.value && showPwdVisible.value,\n [nsInput.b('hidden')]: props.type === 'hidden',\n },\n rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n nsInput.e('wrapper'),\n nsInput.is('focus', isFocused.value),\n])\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n _ref,\n {\n disabled: inputDisabled,\n afterBlur() {\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n props.inputStyle,\n textareaCalcStyle.value,\n { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n () =>\n props.clearable &&\n !inputDisabled.value &&\n !props.readonly &&\n !!nativeInputValue.value &&\n (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n () =>\n props.showWordLimit &&\n !!props.maxlength &&\n (props.type === 'text' || props.type === 'textarea') &&\n !inputDisabled.value &&\n !props.readonly &&\n !props.showPassword\n)\nconst textLength = computed(() => nativeInputValue.value.length)\nconst inputExceed = computed(\n () =>\n // show exceed style if length of initial value greater then maxlength\n !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)\n)\nconst suffixVisible = computed(\n () =>\n !!slots.suffix ||\n !!props.suffixIcon ||\n showClear.value ||\n props.showPassword ||\n isWordLimitVisible.value ||\n (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n () => !!Object.keys(props.modelModifiers).length\n)\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n onceInitSizeTextarea()\n if (\n !isWordLimitVisible.value ||\n (props.resize !== 'both' && props.resize !== 'horizontal')\n )\n return\n const entry = entries[0]\n const { width } = entry.contentRect\n countStyle.value = {\n /** right: 100% - width + padding(22) - right(10) */\n right: `calc(100% - ${width + 22 - 10}px)`,\n }\n})\n\nconst resizeTextarea = () => {\n const { type, autosize } = props\n\n if (!isClient || type !== 'textarea' || !textarea.value) return\n\n if (autosize) {\n const minRows = isObject(autosize) ? autosize.minRows : undefined\n const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n // If set textarea height in this case, the scrollbar will not hide.\n // So we need to hide scrollbar first, and reset it in next tick.\n // see https://github.com/element-plus/element-plus/issues/8825\n textareaCalcStyle.value = {\n overflowY: 'hidden',\n ...textareaStyle,\n }\n\n nextTick(() => {\n // NOTE: Force repaint to make sure the style set above is applied.\n textarea.value!.offsetHeight\n textareaCalcStyle.value = textareaStyle\n })\n } else {\n textareaCalcStyle.value = {\n minHeight: calcTextareaHeight(textarea.value).minHeight,\n }\n }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n let isInit = false\n return () => {\n if (isInit || !props.autosize) return\n const isElHidden = textarea.value?.offsetParent === null\n if (!isElHidden) {\n setTimeout(resizeTextarea)\n isInit = true\n }\n }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n const input = _ref.value\n const formatterValue = props.formatter\n ? props.formatter(nativeInputValue.value)\n : nativeInputValue.value\n if (!input || input.value === formatterValue || props.type === 'file') return\n input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n const { trim, number } = props.modelModifiers\n if (trim) {\n value = value.trim()\n }\n if (number) {\n value = `${looseToNumber(value)}`\n }\n if (props.formatter && props.parser) {\n value = props.parser(value)\n }\n return value\n}\n\nconst handleInput = async (event: Event) => {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (isComposing.value) return\n\n const { lazy } = props.modelModifiers\n let { value } = event.target as TargetElement\n if (lazy) {\n emit(INPUT_EVENT, value)\n return\n }\n\n value = formatValue(value)\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (String(value) === nativeInputValue.value) {\n // preserve native features while being compatible with #9501\n if (props.formatter) {\n setNativeInputValue()\n }\n return\n }\n\n recordCursor()\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n await nextTick()\n\n if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n setNativeInputValue()\n }\n setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n let { value } = event.target as TargetElement\n\n value = formatValue(value)\n if (props.modelModifiers.lazy) {\n emit(UPDATE_MODEL_EVENT, value)\n }\n emit(CHANGE_EVENT, value, event)\n\n await nextTick()\n setNativeInputValue()\n}\n\nconst {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n hovering.value = false\n emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n hovering.value = true\n emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n emit('keydown', evt)\n}\n\nconst select = () => {\n _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n emit(UPDATE_MODEL_EVENT, '')\n emit(CHANGE_EVENT, '')\n emit('clear', evt)\n emit(INPUT_EVENT, '')\n}\n\nwatch(\n () => props.modelValue,\n () => {\n nextTick(() => resizeTextarea())\n if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n if (!_ref.value) {\n return\n }\n const { trim, number } = props.modelModifiers\n const elValue = _ref.value.value\n const displayValue =\n (number || props.type === 'number') && !/^0\\d/.test(elValue)\n ? `${looseToNumber(elValue)}`\n : elValue\n\n if (displayValue === newValue) {\n return\n }\n\n if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n if (trim && displayValue.trim() === newValue) {\n return\n }\n }\n\n setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n () => props.type,\n async () => {\n await nextTick()\n setNativeInputValue()\n resizeTextarea()\n }\n)\n\nonMounted(() => {\n if (!props.formatter && props.parser) {\n debugWarn(\n COMPONENT_NAME,\n 'If you set the parser, you also need to set the formatter.'\n )\n }\n setNativeInputValue()\n nextTick(resizeTextarea)\n})\n\ndefineExpose({\n /** @description HTML input element */\n input,\n /** @description HTML textarea element */\n textarea,\n /** @description HTML element, input or textarea */\n ref: _ref,\n /** @description style of textarea. */\n textareaStyle,\n\n /** @description from props (used on unit test) */\n autosize: toRef(props, 'autosize'),\n\n /** @description is input composing */\n isComposing,\n\n /** @description HTML input element native method */\n focus,\n /** @description HTML input element native method */\n blur,\n /** @description HTML input element native method */\n select,\n /** @description clear input value */\n clear,\n /** @description resize textarea. */\n resizeTextarea,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+NA,MAAM,iBAAiB;;;;;;;;EAKvB,MAAM,QAAQ;EACd,MAAM,OAAO;EAEb,MAAM,8BAAuB;EAC7B,MAAM,QAAQ,wBAAS;EACvB,MAAM,2BAAiB;EAEvB,MAAM,uCAA8B;GAClC,MAAM,SAAS,aAAa,WAAW,GAAG,GAAG,QAAQ,GAAG;GACxD,QAAQ,EAAE,UAAU,MAAM;GAC1B,QAAQ,GAAG,YAAY,cAAc,MAAM;GAC3C,QAAQ,GAAG,UAAU,YAAY,MAAM;GACvC;KACG,QAAQ,EAAE,QAAQ,GAAG,MAAM,WAAW,MAAM;KAC5C,QAAQ,EAAE,SAAS,GAAG,MAAM,UAAU,MAAM;KAC5C,QAAQ,EAAE,SAAS,GAClB,MAAM,UAAU,MAAM,cAAc,MAAM,aAAa,MAAM;KAC9D,QAAQ,GAAG,UAAU,iBAAiB,GACrC,UAAU,SAAS,eAAe;KACnC,QAAQ,EAAE,SAAS,GAAG,MAAM,SAAS;IACvC;GACD,SAAS;GACV,CAAA;EAED,MAAM,qCAA4B,CAChC,QAAQ,EAAE,UAAU,EACpB,QAAQ,GAAG,SAAS,UAAU,MAAM,CACrC,CAAA;EAED,MAAM,EAAE,MAAM,QAAQ,UAAU,eAAe,mCAAY;EAC3D,MAAM,EAAE,YAAY,yCAAmB,OAAO,EAC5C,iBAAiB,YAClB,CAAA;EACD,MAAM,YAAY,2CAAY;EAC9B,MAAM,gBAAgB,+CAAgB;EACtC,MAAM,UAAU,6BAAa,QAAO;EACpC,MAAM,aAAa,6BAAa,WAAU;EAE1C,MAAM,6BAAqC;EAC3C,MAAM,gCAA2C;EAEjD,MAAM,wBAAe,MAAK;EAC1B,MAAM,+BAAsB,MAAK;EACjC,MAAM,2BAA6B;EACnC,MAAM,wCAA+B,MAAM,WAAU;EAErD,MAAM,+BAAsB,MAAM,SAAS,SAAS,MAAK;EAGzD,MAAM,EAAE,YAAY,WAAW,aAAa,eAAe,mCACzD,MACA;GACE,UAAU;GACV,YAAY;AACV,QAAI,MAAM,cACR,aAAY,WAAW,OAAO,CAAC,OAAO,QAAQ,wBAAU,IAAI,CAAA;;GAGlE,CACF;EAEA,MAAM,yCAAgC,QAAQ,cAAc,MAAK;EACjE,MAAM,wCAA+B,YAAY,iBAAiB,GAAE;EACpE,MAAM,uCACE,cAAc,SAAS,mCAAsB,cAAc,OACnE;EACA,MAAM,uCAA+B,gBAAgB,QAAQ,+BAAO,6BAAK;EACzE,MAAM,yCAA4C,CAChD,SAAS,MACV,CAAA;EACD,MAAM,wCAA2C;GAC/C,MAAM;GACN,kBAAkB;GAClB,EAAE,QAAQ,MAAM,QAAQ;GACzB,CAAA;EACD,MAAM,qEACE,MAAM,WAAW,GAAG,KAAK,OAAO,MAAM,WAAU,CACxD;EACA,MAAM,oCAEF,MAAM,aACN,CAAC,cAAc,SACf,CAAC,MAAM,YACP,CAAC,CAAC,iBAAiB,UAClB,UAAU,SAAS,SAAS,OACjC;EACA,MAAM,yCACE,MAAM,gBAAgB,CAAC,cAAc,SAAS,CAAC,CAAC,iBAAiB,MACzE;EACA,MAAM,6CAEF,MAAM,iBACN,CAAC,CAAC,MAAM,cACP,MAAM,SAAS,UAAU,MAAM,SAAS,eACzC,CAAC,cAAc,SACf,CAAC,MAAM,YACP,CAAC,MAAM,aACX;EACA,MAAM,qCAA4B,iBAAiB,MAAM,OAAM;EAC/D,MAAM,sCAGF,CAAC,CAAC,mBAAmB,SAAS,WAAW,QAAQ,OAAO,MAAM,UAAS,CAC3E;EACA,MAAM,wCAEF,CAAC,CAAC,MAAM,UACR,CAAC,CAAC,MAAM,cACR,UAAU,SACV,MAAM,gBACN,mBAAmB,SAClB,CAAC,CAAC,cAAc,SAAS,eAAe,MAC7C;EACA,MAAM,4CACE,CAAC,CAAC,OAAO,KAAK,MAAM,eAAe,CAAC,OAC5C;EAEA,MAAM,CAAC,cAAc,aAAa,0BAAU,MAAK;AAEjD,sCAAkB,WAAW,YAAY;AACvC,yBAAqB;AACrB,OACE,CAAC,mBAAmB,SACnB,MAAM,WAAW,UAAU,MAAM,WAAW,aAE7C;GAEF,MAAM,EAAE,UADM,QAAQ,GACE;AACxB,cAAW,QAAQ,EAEjB,OAAO,eAAe,QAAQ,KAAK,GAAG,MACxC;IACD;EAED,MAAM,uBAAuB;GAC3B,MAAM,EAAE,MAAM,aAAa;AAE3B,OAAI,CAAC,yBAAY,SAAS,cAAc,CAAC,SAAS,MAAO;AAEzD,OAAI,UAAU;IACZ,MAAM,oCAAmB,SAAS,GAAG,SAAS,UAAU;IACxD,MAAM,oCAAmB,SAAS,GAAG,SAAS,UAAU;IACxD,MAAM,gBAAgB,iCAAmB,SAAS,OAAO,SAAS,QAAO;AAMzE,sBAAkB,QAAQ;KACxB,WAAW;KACX,GAAG;KACL;AAEA,4BAAe;AAEb,cAAS,MAAO;AAChB,uBAAkB,QAAQ;MAC3B;SAED,mBAAkB,QAAQ,EACxB,WAAW,iCAAmB,SAAS,MAAM,CAAC,WAChD;;EAIJ,MAAM,wBAAwB,mBAA+B;GAC3D,IAAI,SAAS;AACb,gBAAa;AACX,QAAI,UAAU,CAAC,MAAM,SAAU;AAE/B,QAAI,EADe,SAAS,OAAO,iBAAiB,OACnC;AACf,gBAAW,eAAc;AACzB,cAAS;;;;EAKf,MAAM,uBAAuB,qBAAqB,eAAc;EAEhE,MAAM,4BAA4B;GAChC,MAAM,QAAQ,KAAK;GACnB,MAAM,iBAAiB,MAAM,YACzB,MAAM,UAAU,iBAAiB,MAAK,GACtC,iBAAiB;AACrB,OAAI,CAAC,SAAS,MAAM,UAAU,kBAAkB,MAAM,SAAS,OAAQ;AACvE,SAAM,QAAQ;;EAGhB,MAAM,eAAe,UAAkB;GACrC,MAAM,EAAE,MAAM,WAAW,MAAM;AAC/B,OAAI,KACF,SAAQ,MAAM,MAAK;AAErB,OAAI,OACF,SAAQ,GAAG,4BAAc,MAAM;AAEjC,OAAI,MAAM,aAAa,MAAM,OAC3B,SAAQ,MAAM,OAAO,MAAK;AAE5B,UAAO;;EAGT,MAAM,cAAc,OAAO,UAAiB;AAG1C,OAAI,YAAY,MAAO;GAEvB,MAAM,EAAE,SAAS,MAAM;GACvB,IAAI,EAAE,UAAU,MAAM;AACtB,OAAI,MAAM;AACR,SAAK,2BAAa,MAAK;AACvB;;AAGF,WAAQ,YAAY,MAAK;AAIzB,OAAI,OAAO,MAAM,KAAK,iBAAiB,OAAO;AAE5C,QAAI,MAAM,UACR,sBAAoB;AAEtB;;AAGF,iBAAa;AACb,QAAK,kCAAoB,MAAK;AAC9B,QAAK,2BAAa,MAAK;AAIvB,4BAAe;AAEf,OAAK,MAAM,aAAa,MAAM,UAAW,CAAC,kBAAkB,MAC1D,sBAAoB;AAEtB,cAAU;;EAGZ,MAAM,eAAe,OAAO,UAAiB;GAC3C,IAAI,EAAE,UAAU,MAAM;AAEtB,WAAQ,YAAY,MAAK;AACzB,OAAI,MAAM,eAAe,KACvB,MAAK,kCAAoB,MAAK;AAEhC,QAAK,4BAAc,OAAO,MAAK;AAE/B,4BAAe;AACf,wBAAoB;;EAGtB,MAAM,EACJ,aACA,wBACA,yBACA,yBACE,+BAAe;GAAE;GAAM,kBAAkB;GAAa,CAAA;EAE1D,MAAM,8BAA8B;AAClC,mBAAgB,QAAQ,CAAC,gBAAgB;;EAG3C,MAAM,cAAc,KAAK,OAAO,OAAM;EAEtC,MAAM,aAAa,KAAK,OAAO,MAAK;EAEpC,MAAM,oBAAoB,QAAoB;AAC5C,YAAS,QAAQ;AACjB,QAAK,cAAc,IAAG;;EAGxB,MAAM,oBAAoB,QAAoB;AAC5C,YAAS,QAAQ;AACjB,QAAK,cAAc,IAAG;;EAGxB,MAAM,iBAAiB,QAAuB;AAC5C,QAAK,WAAW,IAAG;;EAGrB,MAAM,eAAe;AACnB,QAAK,OAAO,QAAO;;EAGrB,MAAM,SAAS,QAAqB;AAClC,QAAK,kCAAoB,GAAE;AAC3B,QAAK,4BAAc,GAAE;AACrB,QAAK,SAAS,IAAG;AACjB,QAAK,2BAAa,GAAE;;AAGtB,uBACQ,MAAM,kBACN;AACJ,2BAAe,gBAAgB,CAAA;AAC/B,OAAI,MAAM,cACR,aAAY,WAAW,SAAS,CAAC,OAAO,QAAQ,wBAAU,IAAI,CAAA;IAGpE;AAKA,iBAAM,mBAAmB,aAAa;AACpC,OAAI,CAAC,KAAK,MACR;GAEF,MAAM,EAAE,MAAM,WAAW,MAAM;GAC/B,MAAM,UAAU,KAAK,MAAM;GAC3B,MAAM,gBACH,UAAU,MAAM,SAAS,aAAa,CAAC,OAAO,KAAK,QAAO,GACvD,GAAG,4BAAc,QAAQ,KACzB;AAEN,OAAI,iBAAiB,SACnB;AAGF,OAAI,SAAS,kBAAkB,KAAK,SAAS,KAAK,MAAM,SAAS,SAC/D;QAAI,QAAQ,aAAa,MAAM,KAAK,SAClC;;AAIJ,wBAAoB;IACrB;AAKD,uBACQ,MAAM,MACZ,YAAY;AACV,4BAAe;AACf,wBAAoB;AACpB,mBAAe;IAEnB;AAEA,2BAAgB;AACd,OAAI,CAAC,MAAM,aAAa,MAAM,OAC5B,yBACE,gBACA,6DACF;AAEF,wBAAoB;AACpB,qBAAS,eAAc;IACxB;AAED,WAAa;GAEX;GAEA;GAEA,KAAK;GAEL;GAGA,yBAAgB,OAAO,WAAW;GAGlC;GAGA;GAEA;GAEA;GAEA;GAEA;GACD,CAAA;;4DApbO,OAAA;IAzKH,+BAAK,CAAU,aAAA;qBAA+B,QAAO,CAAC,GAAE,SAAA,SAAA,GAAsBA,KAAAA,OAAO;qBAAiB,QAAO,CAAC,GAAE,SAAA,UAAA,GAAuBA,KAAAA,OAAO;;IAO9I,+BAAO,eAAA,MAAc;IACrB,cAAY;IACZ,cAAY;mCAEb,UAAc,EACE,QAAA,SAAI,gEAsGT,cAAA,EAAA,KAAA,GAAA,EAAA;gCArGT,iBAAqB;IACVA,KAAAA,OAAO,6DAEZ,OAAA;;KAFsB,8CAAO,QAAO,CAAC,GAAE,SAAA,UAAA,CAAA;4BACpB,KAAA,QAAA,UAAA;gCA6FnB,OAAA;cA1FG;KAAJ,KAAI;KAAc,+BAAO,WAAA,MAAU;;iCACtC,gBAAoB;KACRA,KAAAA,OAAO,UAAU,QAAA,gEAOtB,QAAA;;MAPmC,8CAAO,QAAO,CAAC,EAAC,SAAA,CAAA;qCAMjD,QAAA,EALA,8CAAO,QAAO,CAAC,EAAC,eAAA,CAAA,yBACC,KAAA,QAAA,SAAA,EACP,QAAA,wEAEL,uBAAA,EAAA;;MAFkB,8CAAO,QAAO,CAAC,EAAC,OAAA,CAAA;;sCACZ,8EAAd,QAAA,WAAU,CAAA;;;iCA+B9B,6BAAA;MAzBC,mBAAI,QAAO;eACR;MAAJ,KAAI;MACH,sBAAO,QAAO,CAAC,EAAC,QAAA;uBACT,MAAK,EAAA;MACZ,MAAM,QAAA;MACN,WAAW,QAAA;MACX,WAAW,QAAA;MACX,MAAM,QAAA,eAAgB,gBAAA,QAAe,SAAA,aAA0B,QAAA;MAC/D,yBAAU,cAAa;MACvB,UAAU,QAAA;MACV,cAAc,QAAA;MACd,UAAU,QAAA;MACV,cAAY,QAAA;MACZ,aAAa,QAAA;MACb,OAAO,QAAA;MACP,MAAM,QAAA;MACN,WAAW,QAAA;MACX,MAAM,QAAA;MACN,WAAW,QAAA;MACX,oBAAgB,OAAA,OAAA,OAAA,iCAAE,uBAAA,mBAAA,uBAAA,CAAA,GAAA,KAAsB;MACxC,qBAAiB,OAAA,OAAA,OAAA,iCAAE,wBAAA,mBAAA,wBAAA,CAAA,GAAA,KAAuB;MAC1C,kBAAc,OAAA,OAAA,OAAA,iCAAE,qBAAA,mBAAA,qBAAA,CAAA,GAAA,KAAoB;MACpC,SAAO;MACP,UAAQ;MACR,WAAS;;iCAGZ,gBAAoB;KACR,cAAA,2DAiDL,QAAA;;MAjDqB,8CAAO,QAAO,CAAC,EAAC,SAAA,CAAA;qCAgDnC,QAAA,EA/CA,8CAAO,QAAO,CAAC,EAAC,eAAA,CAAA;OAEZ,UAAA,SAAS,CAAK,eAAA,SAAc,CAAK,mBAAA,2DAM/B,cAAA,EAAA,KAAA,GAAA,EAAA,qBAJa,KAAA,QAAA,SAAA,EACP,QAAA,wEAEL,uBAAA,EAAA;;OAFkB,8CAAO,QAAO,CAAC,EAAC,OAAA,CAAA;;uCACZ,8EAAd,QAAA,WAAU,CAAA;;;MAItB,UAAA,mEAME,uBAAA,EAAA;;OALP,+BAAK,gBAAG,QAAO,CAAC,EAAC,OAAA,iBAAU,QAAO,CAAC,EAAC,QAAA,CAAA,CAAA;OACpC,mDAAmB,iBAAI,EAAA,CAAA,UAAA,CAAA;OACvB,SAAO;;uCAEqB,8EAAb,QAAA,UAAS,CAAA;;;MAGnB,eAAA,mEAOE,uBAAA,EAAA;;OANP,+BAAK,gBAAG,QAAO,CAAC,EAAC,OAAA,iBAAU,QAAO,CAAC,EAAC,WAAA,CAAA,CAAA;OACpC,SAAO;OACP,mDAAmB,iBAAI,EAAA,CAAA,UAAA,CAAA;OACvB,iDAAiB,iBAAI,EAAA,CAAA,UAAA,CAAA;;uCAEU,8EAAhB,aAAA,MAAY,CAAA;;;;;;;MAGtB,mBAAA,2DASD,QAAA;;OARJ,+BAAK,gBAAoB,QAAO,CAAC,EAAC,QAAA,iBAA2B,QAAO,CAAC,GAAE,WAAY,QAAA,sBAAiB,UAAA;sCAO9F,QAAA,EAFA,8CAAO,QAAO,CAAC,EAAC,cAAA,CAAA,6BAClB,WAAA,MAAU,GAAG,iCAAM,QAAA,UAAS,EAAA,EAAA;MAI3B,cAAA,SAAiB,aAAA,SAAgB,eAAA,mEAQ/B,uBAAA,EAAA;;OAPP,+BAAK;uBAAoB,QAAO,CAAC,EAAC,OAAA;uBAA0B,QAAO,CAAC,EAAC,eAAA;uBAAkC,QAAO,CAAC,GAAE,WAAY,cAAA,UAAa,aAAA;;;uCAM3G,8EAAhB,aAAA,MAAY,CAAA;;;;;gCAMpC,gBAAoB;IACTA,KAAAA,OAAO,4DAEZ,OAAA;;KAFqB,8CAAO,QAAO,CAAC,GAAE,SAAA,SAAA,CAAA;4BACpB,KAAA,QAAA,SAAA;gEAwDf,cAAA,EAAA,KAAA,GAAA,EAAA;gCApDX,aAAiB;gCAiCb,gCAAA;KA9BC,mBAAI,QAAO;cACR;KAAJ,KAAI;KACH,OAAK;qBAAc,WAAU,CAAC,EAAC,QAAA;qBAAqB,QAAO,CAAC,GAAE,wBAAU,UAAS,CAAA;qBAAa,WAAU,CAAC,GAAE,aAAc,QAAA,UAAS;;sBAK3H,MAAK,EAAA;KACZ,MAAM,QAAA;KACN,WAAW,QAAA;KACX,WAAW,QAAA;KACX,UAAU,QAAA;KACV,yBAAU,cAAa;KACvB,UAAU,QAAA;KACV,cAAc,QAAA;KACd,OAAO,cAAA;KACP,cAAY,QAAA;KACZ,aAAa,QAAA;KACb,MAAM,QAAA;KACN,WAAW,QAAA;KACX,MAAM,QAAA;KACN,MAAM,QAAA;KACN,oBAAgB,OAAA,OAAA,OAAA,iCAAE,uBAAA,mBAAA,uBAAA,CAAA,GAAA,KAAsB;KACxC,qBAAiB,OAAA,OAAA,OAAA,iCAAE,wBAAA,mBAAA,wBAAA,CAAA,GAAA,KAAuB;KAC1C,kBAAc,OAAA,OAAA,OAAA,iCAAE,qBAAA,mBAAA,qBAAA,CAAA,GAAA,KAAoB;KACpC,SAAO;KACP,SAAK,OAAA,OAAA,OAAA,iCAAE,YAAA,mBAAA,YAAA,CAAA,GAAA,KAAW;KAClB,QAAI,OAAA,OAAA,OAAA,iCAAE,WAAA,mBAAA,WAAA,CAAA,GAAA,KAAU;KAChB,UAAQ;KACR,WAAS;;IAGJ,UAAA,mEAME,uBAAA,EAAA;;KALP,+BAAK,gBAAG,WAAU,CAAC,EAAC,OAAA,iBAAU,WAAU,CAAC,EAAC,QAAA,CAAA,CAAA;KAC1C,mDAAmB,iBAAI,EAAA,CAAA,UAAA,CAAA;KACvB,SAAO;;qCAEqB,8EAAb,QAAA,UAAS,CAAA;;;IAGnB,mBAAA,2DAQD,QAAA;;KAPJ,+BAAO,WAAA,MAAU;KACjB,+BAAK,gBAAc,QAAO,CAAC,EAAC,QAAA,iBAAqB,QAAO,CAAC,GAAE,WAAY,QAAA,sBAAiB,UAAA;gCAKtF,WAAA,MAAU,GAAG,iCAAM,QAAA,UAAS,EAAA,EAAA"}
1
+ {"version":3,"file":"input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../../../../packages/components/input/src/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n containerKls,\n {\n [nsInput.bm('group', 'append')]: $slots.append,\n [nsInput.bm('group', 'prepend')]: $slots.prepend,\n },\n ]\"\n :style=\"containerStyle\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- input -->\n <template v-if=\"type !== 'textarea'\">\n <!-- prepend slot -->\n <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n <slot name=\"prepend\" />\n </div>\n\n <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n <!-- prefix slot -->\n <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n <span :class=\"nsInput.e('prefix-inner')\">\n <slot name=\"prefix\" />\n <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </span>\n </span>\n\n <input\n :id=\"inputId\"\n ref=\"input\"\n :class=\"nsInput.e('inner')\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :tabindex=\"tabindex\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n\n <!-- suffix slot -->\n <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n <span :class=\"nsInput.e('suffix-inner')\">\n <template\n v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n >\n <slot name=\"suffix\" />\n <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"suffixIcon\" />\n </el-icon>\n </template>\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"showPwdVisible\"\n :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n @click=\"handlePasswordVisible\"\n @mousedown.prevent=\"NOOP\"\n @mouseup.prevent=\"NOOP\"\n >\n <slot name=\"password-icon\" :visible=\"passwordVisible\">\n <component :is=\"passwordIcon\" />\n </slot>\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n <span :class=\"nsInput.e('count-inner')\">\n {{ textLength }} / {{ maxlength }}\n </span>\n </span>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </span>\n </span>\n </div>\n\n <!-- append slot -->\n <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n <slot name=\"append\" />\n </div>\n </template>\n\n <!-- textarea -->\n <template v-else>\n <textarea\n :id=\"inputId\"\n ref=\"textarea\"\n :class=\"[\n nsTextarea.e('inner'),\n nsInput.is('focus', isFocused),\n nsTextarea.is('clearable', clearable),\n ]\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :tabindex=\"tabindex\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :style=\"textareaStyle\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :rows=\"rows\"\n :role=\"containerRole\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :style=\"countStyle\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n {{ textLength }} / {{ maxlength }}\n </span>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n toRef,\n useAttrs as useRawAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Hide, View } from '@element-plus/icons-vue'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport {\n NOOP,\n ValidateComponentsMap,\n debugWarn,\n isClient,\n isObject,\n} from '@element-plus/utils'\nimport {\n useAttrs,\n useComposition,\n useCursor,\n useFocusController,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n name: COMPONENT_NAME,\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n nsInput.m(inputSize.value),\n nsInput.is('disabled', inputDisabled.value),\n nsInput.is('exceed', inputExceed.value),\n {\n [nsInput.b('group')]: slots.prepend || slots.append,\n [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n [nsInput.m('suffix')]:\n slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n [nsInput.bm('suffix', 'password-clear')]:\n showClear.value && showPwdVisible.value,\n [nsInput.b('hidden')]: props.type === 'hidden',\n },\n rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n nsInput.e('wrapper'),\n nsInput.is('focus', isFocused.value),\n])\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n _ref,\n {\n disabled: inputDisabled,\n afterBlur() {\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n props.inputStyle,\n textareaCalcStyle.value,\n { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n () =>\n props.clearable &&\n !inputDisabled.value &&\n !props.readonly &&\n !!nativeInputValue.value &&\n (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n () =>\n props.showWordLimit &&\n !!props.maxlength &&\n (props.type === 'text' || props.type === 'textarea') &&\n !inputDisabled.value &&\n !props.readonly &&\n !props.showPassword\n)\nconst textLength = computed(() => nativeInputValue.value.length)\nconst inputExceed = computed(\n () =>\n // show exceed style if length of initial value greater then maxlength\n !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)\n)\nconst suffixVisible = computed(\n () =>\n !!slots.suffix ||\n !!props.suffixIcon ||\n showClear.value ||\n props.showPassword ||\n isWordLimitVisible.value ||\n (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n () => !!Object.keys(props.modelModifiers).length\n)\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n onceInitSizeTextarea()\n if (\n !isWordLimitVisible.value ||\n (props.resize !== 'both' && props.resize !== 'horizontal')\n )\n return\n const entry = entries[0]\n const { width } = entry.contentRect\n countStyle.value = {\n /** right: 100% - width + padding(22) - right(10) */\n right: `calc(100% - ${width + 22 - 10}px)`,\n }\n})\n\nconst resizeTextarea = () => {\n const { type, autosize } = props\n\n if (!isClient || type !== 'textarea' || !textarea.value) return\n\n if (autosize) {\n const minRows = isObject(autosize) ? autosize.minRows : undefined\n const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n // If set textarea height in this case, the scrollbar will not hide.\n // So we need to hide scrollbar first, and reset it in next tick.\n // see https://github.com/element-plus/element-plus/issues/8825\n textareaCalcStyle.value = {\n overflowY: 'hidden',\n ...textareaStyle,\n }\n\n nextTick(() => {\n // NOTE: Force repaint to make sure the style set above is applied.\n textarea.value!.offsetHeight\n textareaCalcStyle.value = textareaStyle\n })\n } else {\n textareaCalcStyle.value = {\n minHeight: calcTextareaHeight(textarea.value).minHeight,\n }\n }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n let isInit = false\n return () => {\n if (isInit || !props.autosize) return\n const isElHidden = textarea.value?.offsetParent === null\n if (!isElHidden) {\n setTimeout(resizeTextarea)\n isInit = true\n }\n }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n const input = _ref.value\n const formatterValue = props.formatter\n ? props.formatter(nativeInputValue.value)\n : nativeInputValue.value\n if (!input || input.value === formatterValue || props.type === 'file') return\n input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n const { trim, number } = props.modelModifiers\n if (trim) {\n value = value.trim()\n }\n if (number) {\n value = `${looseToNumber(value)}`\n }\n if (props.formatter && props.parser) {\n value = props.parser(value)\n }\n return value\n}\n\nconst handleInput = async (event: Event) => {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (isComposing.value) return\n\n const { lazy } = props.modelModifiers\n let { value } = event.target as TargetElement\n if (lazy) {\n emit(INPUT_EVENT, value)\n return\n }\n\n value = formatValue(value)\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (String(value) === nativeInputValue.value) {\n // preserve native features while being compatible with #9501\n if (props.formatter) {\n setNativeInputValue()\n }\n return\n }\n\n recordCursor()\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n await nextTick()\n\n if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n setNativeInputValue()\n }\n setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n let { value } = event.target as TargetElement\n\n value = formatValue(value)\n if (props.modelModifiers.lazy) {\n emit(UPDATE_MODEL_EVENT, value)\n }\n emit(CHANGE_EVENT, value, event)\n\n await nextTick()\n setNativeInputValue()\n}\n\nconst {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n hovering.value = false\n emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n hovering.value = true\n emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n emit('keydown', evt)\n}\n\nconst select = () => {\n _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n emit(UPDATE_MODEL_EVENT, '')\n emit(CHANGE_EVENT, '')\n emit('clear', evt)\n emit(INPUT_EVENT, '')\n}\n\nwatch(\n () => props.modelValue,\n () => {\n nextTick(() => resizeTextarea())\n if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n if (!_ref.value) {\n return\n }\n const { trim, number } = props.modelModifiers\n const elValue = _ref.value.value\n const displayValue =\n (number || props.type === 'number') && !/^0\\d/.test(elValue)\n ? `${looseToNumber(elValue)}`\n : elValue\n\n if (displayValue === newValue) {\n return\n }\n\n if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n if (trim && displayValue.trim() === newValue) {\n return\n }\n }\n\n setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n () => props.type,\n async () => {\n await nextTick()\n setNativeInputValue()\n resizeTextarea()\n }\n)\n\nonMounted(() => {\n if (!props.formatter && props.parser) {\n debugWarn(\n COMPONENT_NAME,\n 'If you set the parser, you also need to set the formatter.'\n )\n }\n setNativeInputValue()\n nextTick(resizeTextarea)\n})\n\ndefineExpose({\n /** @description HTML input element */\n input,\n /** @description HTML textarea element */\n textarea,\n /** @description HTML element, input or textarea */\n ref: _ref,\n /** @description style of textarea. */\n textareaStyle,\n\n /** @description from props (used on unit test) */\n autosize: toRef(props, 'autosize'),\n\n /** @description is input composing */\n isComposing,\n\n /** @description HTML input element native method */\n focus,\n /** @description HTML input element native method */\n blur,\n /** @description HTML input element native method */\n select,\n /** @description clear input value */\n clear,\n /** @description resize textarea. */\n resizeTextarea,\n})\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"input2.js","names":[],"sources":["../../../../../../packages/components/input/src/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n containerKls,\n {\n [nsInput.bm('group', 'append')]: $slots.append,\n [nsInput.bm('group', 'prepend')]: $slots.prepend,\n },\n ]\"\n :style=\"containerStyle\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- input -->\n <template v-if=\"type !== 'textarea'\">\n <!-- prepend slot -->\n <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n <slot name=\"prepend\" />\n </div>\n\n <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n <!-- prefix slot -->\n <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n <span :class=\"nsInput.e('prefix-inner')\">\n <slot name=\"prefix\" />\n <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </span>\n </span>\n\n <input\n :id=\"inputId\"\n ref=\"input\"\n :class=\"nsInput.e('inner')\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :tabindex=\"tabindex\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n\n <!-- suffix slot -->\n <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n <span :class=\"nsInput.e('suffix-inner')\">\n <template\n v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n >\n <slot name=\"suffix\" />\n <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"suffixIcon\" />\n </el-icon>\n </template>\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"showPwdVisible\"\n :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n @click=\"handlePasswordVisible\"\n @mousedown.prevent=\"NOOP\"\n @mouseup.prevent=\"NOOP\"\n >\n <component :is=\"passwordIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n <span :class=\"nsInput.e('count-inner')\">\n {{ textLength }} / {{ maxlength }}\n </span>\n </span>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </span>\n </span>\n </div>\n\n <!-- append slot -->\n <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n <slot name=\"append\" />\n </div>\n </template>\n\n <!-- textarea -->\n <template v-else>\n <textarea\n :id=\"inputId\"\n ref=\"textarea\"\n :class=\"[\n nsTextarea.e('inner'),\n nsInput.is('focus', isFocused),\n nsTextarea.is('clearable', clearable),\n ]\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :tabindex=\"tabindex\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :style=\"textareaStyle\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :rows=\"rows\"\n :role=\"containerRole\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :style=\"countStyle\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n {{ textLength }} / {{ maxlength }}\n </span>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n toRef,\n useAttrs as useRawAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Hide, View } from '@element-plus/icons-vue'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport {\n NOOP,\n ValidateComponentsMap,\n debugWarn,\n isClient,\n isObject,\n} from '@element-plus/utils'\nimport {\n useAttrs,\n useComposition,\n useCursor,\n useFocusController,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n name: COMPONENT_NAME,\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n nsInput.m(inputSize.value),\n nsInput.is('disabled', inputDisabled.value),\n nsInput.is('exceed', inputExceed.value),\n {\n [nsInput.b('group')]: slots.prepend || slots.append,\n [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n [nsInput.m('suffix')]:\n slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n [nsInput.bm('suffix', 'password-clear')]:\n showClear.value && showPwdVisible.value,\n [nsInput.b('hidden')]: props.type === 'hidden',\n },\n rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n nsInput.e('wrapper'),\n nsInput.is('focus', isFocused.value),\n])\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n _ref,\n {\n disabled: inputDisabled,\n afterBlur() {\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n props.inputStyle,\n textareaCalcStyle.value,\n { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n () =>\n props.clearable &&\n !inputDisabled.value &&\n !props.readonly &&\n !!nativeInputValue.value &&\n (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n () =>\n props.showWordLimit &&\n !!props.maxlength &&\n (props.type === 'text' || props.type === 'textarea') &&\n !inputDisabled.value &&\n !props.readonly &&\n !props.showPassword\n)\nconst textLength = computed(() => nativeInputValue.value.length)\nconst inputExceed = computed(\n () =>\n // show exceed style if length of initial value greater then maxlength\n !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)\n)\nconst suffixVisible = computed(\n () =>\n !!slots.suffix ||\n !!props.suffixIcon ||\n showClear.value ||\n props.showPassword ||\n isWordLimitVisible.value ||\n (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n () => !!Object.keys(props.modelModifiers).length\n)\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n onceInitSizeTextarea()\n if (\n !isWordLimitVisible.value ||\n (props.resize !== 'both' && props.resize !== 'horizontal')\n )\n return\n const entry = entries[0]\n const { width } = entry.contentRect\n countStyle.value = {\n /** right: 100% - width + padding(22) - right(10) */\n right: `calc(100% - ${width + 22 - 10}px)`,\n }\n})\n\nconst resizeTextarea = () => {\n const { type, autosize } = props\n\n if (!isClient || type !== 'textarea' || !textarea.value) return\n\n if (autosize) {\n const minRows = isObject(autosize) ? autosize.minRows : undefined\n const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n // If set textarea height in this case, the scrollbar will not hide.\n // So we need to hide scrollbar first, and reset it in next tick.\n // see https://github.com/element-plus/element-plus/issues/8825\n textareaCalcStyle.value = {\n overflowY: 'hidden',\n ...textareaStyle,\n }\n\n nextTick(() => {\n // NOTE: Force repaint to make sure the style set above is applied.\n textarea.value!.offsetHeight\n textareaCalcStyle.value = textareaStyle\n })\n } else {\n textareaCalcStyle.value = {\n minHeight: calcTextareaHeight(textarea.value).minHeight,\n }\n }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n let isInit = false\n return () => {\n if (isInit || !props.autosize) return\n const isElHidden = textarea.value?.offsetParent === null\n if (!isElHidden) {\n setTimeout(resizeTextarea)\n isInit = true\n }\n }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n const input = _ref.value\n const formatterValue = props.formatter\n ? props.formatter(nativeInputValue.value)\n : nativeInputValue.value\n if (!input || input.value === formatterValue || props.type === 'file') return\n input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n const { trim, number } = props.modelModifiers\n if (trim) {\n value = value.trim()\n }\n if (number) {\n value = `${looseToNumber(value)}`\n }\n if (props.formatter && props.parser) {\n value = props.parser(value)\n }\n return value\n}\n\nconst handleInput = async (event: Event) => {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (isComposing.value) return\n\n const { lazy } = props.modelModifiers\n let { value } = event.target as TargetElement\n if (lazy) {\n emit(INPUT_EVENT, value)\n return\n }\n\n value = formatValue(value)\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (String(value) === nativeInputValue.value) {\n // preserve native features while being compatible with #9501\n if (props.formatter) {\n setNativeInputValue()\n }\n return\n }\n\n recordCursor()\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n await nextTick()\n\n if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n setNativeInputValue()\n }\n setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n let { value } = event.target as TargetElement\n\n value = formatValue(value)\n if (props.modelModifiers.lazy) {\n emit(UPDATE_MODEL_EVENT, value)\n }\n emit(CHANGE_EVENT, value, event)\n\n await nextTick()\n setNativeInputValue()\n}\n\nconst {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n hovering.value = false\n emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n hovering.value = true\n emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n emit('keydown', evt)\n}\n\nconst select = () => {\n _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n emit(UPDATE_MODEL_EVENT, '')\n emit(CHANGE_EVENT, '')\n emit('clear', evt)\n emit(INPUT_EVENT, '')\n}\n\nwatch(\n () => props.modelValue,\n () => {\n nextTick(() => resizeTextarea())\n if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n if (!_ref.value) {\n return\n }\n const { trim, number } = props.modelModifiers\n const elValue = _ref.value.value\n const displayValue =\n (number || props.type === 'number') && !/^0\\d/.test(elValue)\n ? `${looseToNumber(elValue)}`\n : elValue\n\n if (displayValue === newValue) {\n return\n }\n\n if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n if (trim && displayValue.trim() === newValue) {\n return\n }\n }\n\n setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n () => props.type,\n async () => {\n await nextTick()\n setNativeInputValue()\n resizeTextarea()\n }\n)\n\nonMounted(() => {\n if (!props.formatter && props.parser) {\n debugWarn(\n COMPONENT_NAME,\n 'If you set the parser, you also need to set the formatter.'\n )\n }\n setNativeInputValue()\n nextTick(resizeTextarea)\n})\n\ndefineExpose({\n /** @description HTML input element */\n input,\n /** @description HTML textarea element */\n textarea,\n /** @description HTML element, input or textarea */\n ref: _ref,\n /** @description style of textarea. */\n textareaStyle,\n\n /** @description from props (used on unit test) */\n autosize: toRef(props, 'autosize'),\n\n /** @description is input composing */\n isComposing,\n\n /** @description HTML input element native method */\n focus,\n /** @description HTML input element native method */\n blur,\n /** @description HTML input element native method */\n select,\n /** @description clear input value */\n clear,\n /** @description resize textarea. */\n resizeTextarea,\n})\n</script>\n"],"mappings":""}
1
+ {"version":3,"file":"input2.js","names":[],"sources":["../../../../../../packages/components/input/src/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n containerKls,\n {\n [nsInput.bm('group', 'append')]: $slots.append,\n [nsInput.bm('group', 'prepend')]: $slots.prepend,\n },\n ]\"\n :style=\"containerStyle\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- input -->\n <template v-if=\"type !== 'textarea'\">\n <!-- prepend slot -->\n <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n <slot name=\"prepend\" />\n </div>\n\n <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n <!-- prefix slot -->\n <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n <span :class=\"nsInput.e('prefix-inner')\">\n <slot name=\"prefix\" />\n <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </span>\n </span>\n\n <input\n :id=\"inputId\"\n ref=\"input\"\n :class=\"nsInput.e('inner')\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :tabindex=\"tabindex\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n\n <!-- suffix slot -->\n <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n <span :class=\"nsInput.e('suffix-inner')\">\n <template\n v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n >\n <slot name=\"suffix\" />\n <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"suffixIcon\" />\n </el-icon>\n </template>\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"showPwdVisible\"\n :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n @click=\"handlePasswordVisible\"\n @mousedown.prevent=\"NOOP\"\n @mouseup.prevent=\"NOOP\"\n >\n <slot name=\"password-icon\" :visible=\"passwordVisible\">\n <component :is=\"passwordIcon\" />\n </slot>\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n <span :class=\"nsInput.e('count-inner')\">\n {{ textLength }} / {{ maxlength }}\n </span>\n </span>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </span>\n </span>\n </div>\n\n <!-- append slot -->\n <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n <slot name=\"append\" />\n </div>\n </template>\n\n <!-- textarea -->\n <template v-else>\n <textarea\n :id=\"inputId\"\n ref=\"textarea\"\n :class=\"[\n nsTextarea.e('inner'),\n nsInput.is('focus', isFocused),\n nsTextarea.is('clearable', clearable),\n ]\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :tabindex=\"tabindex\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :style=\"textareaStyle\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :rows=\"rows\"\n :role=\"containerRole\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :style=\"countStyle\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n {{ textLength }} / {{ maxlength }}\n </span>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n toRef,\n useAttrs as useRawAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Hide, View } from '@element-plus/icons-vue'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport {\n NOOP,\n ValidateComponentsMap,\n debugWarn,\n isClient,\n isObject,\n} from '@element-plus/utils'\nimport {\n useAttrs,\n useComposition,\n useCursor,\n useFocusController,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n name: COMPONENT_NAME,\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n nsInput.m(inputSize.value),\n nsInput.is('disabled', inputDisabled.value),\n nsInput.is('exceed', inputExceed.value),\n {\n [nsInput.b('group')]: slots.prepend || slots.append,\n [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n [nsInput.m('suffix')]:\n slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n [nsInput.bm('suffix', 'password-clear')]:\n showClear.value && showPwdVisible.value,\n [nsInput.b('hidden')]: props.type === 'hidden',\n },\n rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n nsInput.e('wrapper'),\n nsInput.is('focus', isFocused.value),\n])\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n _ref,\n {\n disabled: inputDisabled,\n afterBlur() {\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n props.inputStyle,\n textareaCalcStyle.value,\n { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n () =>\n props.clearable &&\n !inputDisabled.value &&\n !props.readonly &&\n !!nativeInputValue.value &&\n (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n () =>\n props.showWordLimit &&\n !!props.maxlength &&\n (props.type === 'text' || props.type === 'textarea') &&\n !inputDisabled.value &&\n !props.readonly &&\n !props.showPassword\n)\nconst textLength = computed(() => nativeInputValue.value.length)\nconst inputExceed = computed(\n () =>\n // show exceed style if length of initial value greater then maxlength\n !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)\n)\nconst suffixVisible = computed(\n () =>\n !!slots.suffix ||\n !!props.suffixIcon ||\n showClear.value ||\n props.showPassword ||\n isWordLimitVisible.value ||\n (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n () => !!Object.keys(props.modelModifiers).length\n)\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n onceInitSizeTextarea()\n if (\n !isWordLimitVisible.value ||\n (props.resize !== 'both' && props.resize !== 'horizontal')\n )\n return\n const entry = entries[0]\n const { width } = entry.contentRect\n countStyle.value = {\n /** right: 100% - width + padding(22) - right(10) */\n right: `calc(100% - ${width + 22 - 10}px)`,\n }\n})\n\nconst resizeTextarea = () => {\n const { type, autosize } = props\n\n if (!isClient || type !== 'textarea' || !textarea.value) return\n\n if (autosize) {\n const minRows = isObject(autosize) ? autosize.minRows : undefined\n const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n // If set textarea height in this case, the scrollbar will not hide.\n // So we need to hide scrollbar first, and reset it in next tick.\n // see https://github.com/element-plus/element-plus/issues/8825\n textareaCalcStyle.value = {\n overflowY: 'hidden',\n ...textareaStyle,\n }\n\n nextTick(() => {\n // NOTE: Force repaint to make sure the style set above is applied.\n textarea.value!.offsetHeight\n textareaCalcStyle.value = textareaStyle\n })\n } else {\n textareaCalcStyle.value = {\n minHeight: calcTextareaHeight(textarea.value).minHeight,\n }\n }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n let isInit = false\n return () => {\n if (isInit || !props.autosize) return\n const isElHidden = textarea.value?.offsetParent === null\n if (!isElHidden) {\n setTimeout(resizeTextarea)\n isInit = true\n }\n }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n const input = _ref.value\n const formatterValue = props.formatter\n ? props.formatter(nativeInputValue.value)\n : nativeInputValue.value\n if (!input || input.value === formatterValue || props.type === 'file') return\n input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n const { trim, number } = props.modelModifiers\n if (trim) {\n value = value.trim()\n }\n if (number) {\n value = `${looseToNumber(value)}`\n }\n if (props.formatter && props.parser) {\n value = props.parser(value)\n }\n return value\n}\n\nconst handleInput = async (event: Event) => {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (isComposing.value) return\n\n const { lazy } = props.modelModifiers\n let { value } = event.target as TargetElement\n if (lazy) {\n emit(INPUT_EVENT, value)\n return\n }\n\n value = formatValue(value)\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (String(value) === nativeInputValue.value) {\n // preserve native features while being compatible with #9501\n if (props.formatter) {\n setNativeInputValue()\n }\n return\n }\n\n recordCursor()\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n await nextTick()\n\n if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n setNativeInputValue()\n }\n setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n let { value } = event.target as TargetElement\n\n value = formatValue(value)\n if (props.modelModifiers.lazy) {\n emit(UPDATE_MODEL_EVENT, value)\n }\n emit(CHANGE_EVENT, value, event)\n\n await nextTick()\n setNativeInputValue()\n}\n\nconst {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n hovering.value = false\n emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n hovering.value = true\n emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n emit('keydown', evt)\n}\n\nconst select = () => {\n _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n emit(UPDATE_MODEL_EVENT, '')\n emit(CHANGE_EVENT, '')\n emit('clear', evt)\n emit(INPUT_EVENT, '')\n}\n\nwatch(\n () => props.modelValue,\n () => {\n nextTick(() => resizeTextarea())\n if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n if (!_ref.value) {\n return\n }\n const { trim, number } = props.modelModifiers\n const elValue = _ref.value.value\n const displayValue =\n (number || props.type === 'number') && !/^0\\d/.test(elValue)\n ? `${looseToNumber(elValue)}`\n : elValue\n\n if (displayValue === newValue) {\n return\n }\n\n if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n if (trim && displayValue.trim() === newValue) {\n return\n }\n }\n\n setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n () => props.type,\n async () => {\n await nextTick()\n setNativeInputValue()\n resizeTextarea()\n }\n)\n\nonMounted(() => {\n if (!props.formatter && props.parser) {\n debugWarn(\n COMPONENT_NAME,\n 'If you set the parser, you also need to set the formatter.'\n )\n }\n setNativeInputValue()\n nextTick(resizeTextarea)\n})\n\ndefineExpose({\n /** @description HTML input element */\n input,\n /** @description HTML textarea element */\n textarea,\n /** @description HTML element, input or textarea */\n ref: _ref,\n /** @description style of textarea. */\n textareaStyle,\n\n /** @description from props (used on unit test) */\n autosize: toRef(props, 'autosize'),\n\n /** @description is input composing */\n isComposing,\n\n /** @description HTML input element native method */\n focus,\n /** @description HTML input element native method */\n blur,\n /** @description HTML input element native method */\n select,\n /** @description clear input value */\n clear,\n /** @description resize textarea. */\n resizeTextarea,\n})\n</script>\n"],"mappings":""}
@@ -23,8 +23,8 @@ declare const __VLS_base: vue.DefineComponent<__VLS_WithDefaults<__VLS_TypeProps
23
23
  }>>> & {
24
24
  onClick?: ((evt: MouseEvent) => any) | undefined;
25
25
  }, {
26
- type: "primary" | "success" | "warning" | "info" | "danger" | "default";
27
26
  target: "_blank" | "_parent" | "_self" | "_top" | (string & NonNullable<unknown>);
27
+ type: "primary" | "success" | "warning" | "info" | "danger" | "default";
28
28
  underline: boolean | "always" | "never" | "hover";
29
29
  href: string;
30
30
  }, {}>;
@@ -17,7 +17,7 @@ const getMentionCtx = (inputEl, prefix, split) => {
17
17
  let mentionCtx;
18
18
  for (let i = selectionEnd - 1; i >= 0; --i) {
19
19
  const char = inputValue[i];
20
- if (char === split || char === "\n" || char === "\r") {
20
+ if (splitIndex === -1 && (char === split || char === "\n" || char === "\r")) {
21
21
  splitIndex = i;
22
22
  continue;
23
23
  }