@element-plus/nightly 0.0.20260329 → 0.0.20260331

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 (388) hide show
  1. package/dist/index.full.js +153 -13
  2. package/dist/index.full.min.js +6 -6
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +6 -6
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +153 -13
  7. package/dist/locale/af.js +1 -1
  8. package/dist/locale/af.min.js +1 -1
  9. package/dist/locale/af.min.mjs +1 -1
  10. package/dist/locale/af.mjs +1 -1
  11. package/dist/locale/ar-eg.js +1 -1
  12. package/dist/locale/ar-eg.min.js +1 -1
  13. package/dist/locale/ar-eg.min.mjs +1 -1
  14. package/dist/locale/ar-eg.mjs +1 -1
  15. package/dist/locale/ar.js +1 -1
  16. package/dist/locale/ar.min.js +1 -1
  17. package/dist/locale/ar.min.mjs +1 -1
  18. package/dist/locale/ar.mjs +1 -1
  19. package/dist/locale/az.js +1 -1
  20. package/dist/locale/az.min.js +1 -1
  21. package/dist/locale/az.min.mjs +1 -1
  22. package/dist/locale/az.mjs +1 -1
  23. package/dist/locale/bg.js +1 -1
  24. package/dist/locale/bg.min.js +1 -1
  25. package/dist/locale/bg.min.mjs +1 -1
  26. package/dist/locale/bg.mjs +1 -1
  27. package/dist/locale/bn.js +1 -1
  28. package/dist/locale/bn.min.js +1 -1
  29. package/dist/locale/bn.min.mjs +1 -1
  30. package/dist/locale/bn.mjs +1 -1
  31. package/dist/locale/ca.js +1 -1
  32. package/dist/locale/ca.min.js +1 -1
  33. package/dist/locale/ca.min.mjs +1 -1
  34. package/dist/locale/ca.mjs +1 -1
  35. package/dist/locale/ckb.js +1 -1
  36. package/dist/locale/ckb.min.js +1 -1
  37. package/dist/locale/ckb.min.mjs +1 -1
  38. package/dist/locale/ckb.mjs +1 -1
  39. package/dist/locale/cs.js +1 -1
  40. package/dist/locale/cs.min.js +1 -1
  41. package/dist/locale/cs.min.mjs +1 -1
  42. package/dist/locale/cs.mjs +1 -1
  43. package/dist/locale/da.js +1 -1
  44. package/dist/locale/da.min.js +1 -1
  45. package/dist/locale/da.min.mjs +1 -1
  46. package/dist/locale/da.mjs +1 -1
  47. package/dist/locale/de.js +1 -1
  48. package/dist/locale/de.min.js +1 -1
  49. package/dist/locale/de.min.mjs +1 -1
  50. package/dist/locale/de.mjs +1 -1
  51. package/dist/locale/el.js +1 -1
  52. package/dist/locale/el.min.js +1 -1
  53. package/dist/locale/el.min.mjs +1 -1
  54. package/dist/locale/el.mjs +1 -1
  55. package/dist/locale/en.js +1 -1
  56. package/dist/locale/en.min.js +1 -1
  57. package/dist/locale/en.min.mjs +1 -1
  58. package/dist/locale/en.mjs +1 -1
  59. package/dist/locale/eo.js +1 -1
  60. package/dist/locale/eo.min.js +1 -1
  61. package/dist/locale/eo.min.mjs +1 -1
  62. package/dist/locale/eo.mjs +1 -1
  63. package/dist/locale/es.js +1 -1
  64. package/dist/locale/es.min.js +1 -1
  65. package/dist/locale/es.min.mjs +1 -1
  66. package/dist/locale/es.mjs +1 -1
  67. package/dist/locale/et.js +1 -1
  68. package/dist/locale/et.min.js +1 -1
  69. package/dist/locale/et.min.mjs +1 -1
  70. package/dist/locale/et.mjs +1 -1
  71. package/dist/locale/eu.js +1 -1
  72. package/dist/locale/eu.min.js +1 -1
  73. package/dist/locale/eu.min.mjs +1 -1
  74. package/dist/locale/eu.mjs +1 -1
  75. package/dist/locale/fa.js +1 -1
  76. package/dist/locale/fa.min.js +1 -1
  77. package/dist/locale/fa.min.mjs +1 -1
  78. package/dist/locale/fa.mjs +1 -1
  79. package/dist/locale/fi.js +1 -1
  80. package/dist/locale/fi.min.js +1 -1
  81. package/dist/locale/fi.min.mjs +1 -1
  82. package/dist/locale/fi.mjs +1 -1
  83. package/dist/locale/fr.js +1 -1
  84. package/dist/locale/fr.min.js +1 -1
  85. package/dist/locale/fr.min.mjs +1 -1
  86. package/dist/locale/fr.mjs +1 -1
  87. package/dist/locale/he.js +1 -1
  88. package/dist/locale/he.min.js +1 -1
  89. package/dist/locale/he.min.mjs +1 -1
  90. package/dist/locale/he.mjs +1 -1
  91. package/dist/locale/hi.js +1 -1
  92. package/dist/locale/hi.min.js +1 -1
  93. package/dist/locale/hi.min.mjs +1 -1
  94. package/dist/locale/hi.mjs +1 -1
  95. package/dist/locale/hr.js +1 -1
  96. package/dist/locale/hr.min.js +1 -1
  97. package/dist/locale/hr.min.mjs +1 -1
  98. package/dist/locale/hr.mjs +1 -1
  99. package/dist/locale/hu.js +1 -1
  100. package/dist/locale/hu.min.js +1 -1
  101. package/dist/locale/hu.min.mjs +1 -1
  102. package/dist/locale/hu.mjs +1 -1
  103. package/dist/locale/hy-am.js +1 -1
  104. package/dist/locale/hy-am.min.js +1 -1
  105. package/dist/locale/hy-am.min.mjs +1 -1
  106. package/dist/locale/hy-am.mjs +1 -1
  107. package/dist/locale/id.js +1 -1
  108. package/dist/locale/id.min.js +1 -1
  109. package/dist/locale/id.min.mjs +1 -1
  110. package/dist/locale/id.mjs +1 -1
  111. package/dist/locale/it.js +1 -1
  112. package/dist/locale/it.min.js +1 -1
  113. package/dist/locale/it.min.mjs +1 -1
  114. package/dist/locale/it.mjs +1 -1
  115. package/dist/locale/ja.js +1 -1
  116. package/dist/locale/ja.min.js +1 -1
  117. package/dist/locale/ja.min.mjs +1 -1
  118. package/dist/locale/ja.mjs +1 -1
  119. package/dist/locale/kk.js +1 -1
  120. package/dist/locale/kk.min.js +1 -1
  121. package/dist/locale/kk.min.mjs +1 -1
  122. package/dist/locale/kk.mjs +1 -1
  123. package/dist/locale/km.js +1 -1
  124. package/dist/locale/km.min.js +1 -1
  125. package/dist/locale/km.min.mjs +1 -1
  126. package/dist/locale/km.mjs +1 -1
  127. package/dist/locale/ko.js +1 -1
  128. package/dist/locale/ko.min.js +1 -1
  129. package/dist/locale/ko.min.mjs +1 -1
  130. package/dist/locale/ko.mjs +1 -1
  131. package/dist/locale/ku.js +1 -1
  132. package/dist/locale/ku.min.js +1 -1
  133. package/dist/locale/ku.min.mjs +1 -1
  134. package/dist/locale/ku.mjs +1 -1
  135. package/dist/locale/ky.js +1 -1
  136. package/dist/locale/ky.min.js +1 -1
  137. package/dist/locale/ky.min.mjs +1 -1
  138. package/dist/locale/ky.mjs +1 -1
  139. package/dist/locale/lo.js +1 -1
  140. package/dist/locale/lo.min.js +1 -1
  141. package/dist/locale/lo.min.mjs +1 -1
  142. package/dist/locale/lo.mjs +1 -1
  143. package/dist/locale/lt.js +1 -1
  144. package/dist/locale/lt.min.js +1 -1
  145. package/dist/locale/lt.min.mjs +1 -1
  146. package/dist/locale/lt.mjs +1 -1
  147. package/dist/locale/lv.js +1 -1
  148. package/dist/locale/lv.min.js +1 -1
  149. package/dist/locale/lv.min.mjs +1 -1
  150. package/dist/locale/lv.mjs +1 -1
  151. package/dist/locale/mg.js +1 -1
  152. package/dist/locale/mg.min.js +1 -1
  153. package/dist/locale/mg.min.mjs +1 -1
  154. package/dist/locale/mg.mjs +1 -1
  155. package/dist/locale/mn.js +1 -1
  156. package/dist/locale/mn.min.js +1 -1
  157. package/dist/locale/mn.min.mjs +1 -1
  158. package/dist/locale/mn.mjs +1 -1
  159. package/dist/locale/ms.js +1 -1
  160. package/dist/locale/ms.min.js +1 -1
  161. package/dist/locale/ms.min.mjs +1 -1
  162. package/dist/locale/ms.mjs +1 -1
  163. package/dist/locale/my.js +1 -1
  164. package/dist/locale/my.min.js +1 -1
  165. package/dist/locale/my.min.mjs +1 -1
  166. package/dist/locale/my.mjs +1 -1
  167. package/dist/locale/nb-no.js +1 -1
  168. package/dist/locale/nb-no.min.js +1 -1
  169. package/dist/locale/nb-no.min.mjs +1 -1
  170. package/dist/locale/nb-no.mjs +1 -1
  171. package/dist/locale/nl.js +1 -1
  172. package/dist/locale/nl.min.js +1 -1
  173. package/dist/locale/nl.min.mjs +1 -1
  174. package/dist/locale/nl.mjs +1 -1
  175. package/dist/locale/no.js +1 -1
  176. package/dist/locale/no.min.js +1 -1
  177. package/dist/locale/no.min.mjs +1 -1
  178. package/dist/locale/no.mjs +1 -1
  179. package/dist/locale/pa.js +1 -1
  180. package/dist/locale/pa.min.js +1 -1
  181. package/dist/locale/pa.min.mjs +1 -1
  182. package/dist/locale/pa.mjs +1 -1
  183. package/dist/locale/pl.js +1 -1
  184. package/dist/locale/pl.min.js +1 -1
  185. package/dist/locale/pl.min.mjs +1 -1
  186. package/dist/locale/pl.mjs +1 -1
  187. package/dist/locale/pt-br.js +1 -1
  188. package/dist/locale/pt-br.min.js +1 -1
  189. package/dist/locale/pt-br.min.mjs +1 -1
  190. package/dist/locale/pt-br.mjs +1 -1
  191. package/dist/locale/pt.js +1 -1
  192. package/dist/locale/pt.min.js +1 -1
  193. package/dist/locale/pt.min.mjs +1 -1
  194. package/dist/locale/pt.mjs +1 -1
  195. package/dist/locale/ro.js +1 -1
  196. package/dist/locale/ro.min.js +1 -1
  197. package/dist/locale/ro.min.mjs +1 -1
  198. package/dist/locale/ro.mjs +1 -1
  199. package/dist/locale/ru.js +1 -1
  200. package/dist/locale/ru.min.js +1 -1
  201. package/dist/locale/ru.min.mjs +1 -1
  202. package/dist/locale/ru.mjs +1 -1
  203. package/dist/locale/sk.js +1 -1
  204. package/dist/locale/sk.min.js +1 -1
  205. package/dist/locale/sk.min.mjs +1 -1
  206. package/dist/locale/sk.mjs +1 -1
  207. package/dist/locale/sl.js +1 -1
  208. package/dist/locale/sl.min.js +1 -1
  209. package/dist/locale/sl.min.mjs +1 -1
  210. package/dist/locale/sl.mjs +1 -1
  211. package/dist/locale/sr.js +1 -1
  212. package/dist/locale/sr.min.js +1 -1
  213. package/dist/locale/sr.min.mjs +1 -1
  214. package/dist/locale/sr.mjs +1 -1
  215. package/dist/locale/sv.js +1 -1
  216. package/dist/locale/sv.min.js +1 -1
  217. package/dist/locale/sv.min.mjs +1 -1
  218. package/dist/locale/sv.mjs +1 -1
  219. package/dist/locale/sw.js +1 -1
  220. package/dist/locale/sw.min.js +1 -1
  221. package/dist/locale/sw.min.mjs +1 -1
  222. package/dist/locale/sw.mjs +1 -1
  223. package/dist/locale/ta.js +1 -1
  224. package/dist/locale/ta.min.js +1 -1
  225. package/dist/locale/ta.min.mjs +1 -1
  226. package/dist/locale/ta.mjs +1 -1
  227. package/dist/locale/te.js +1 -1
  228. package/dist/locale/te.min.js +1 -1
  229. package/dist/locale/te.min.mjs +1 -1
  230. package/dist/locale/te.mjs +1 -1
  231. package/dist/locale/th.js +1 -1
  232. package/dist/locale/th.min.js +1 -1
  233. package/dist/locale/th.min.mjs +1 -1
  234. package/dist/locale/th.mjs +1 -1
  235. package/dist/locale/tk.js +1 -1
  236. package/dist/locale/tk.min.js +1 -1
  237. package/dist/locale/tk.min.mjs +1 -1
  238. package/dist/locale/tk.mjs +1 -1
  239. package/dist/locale/tr.js +1 -1
  240. package/dist/locale/tr.min.js +1 -1
  241. package/dist/locale/tr.min.mjs +1 -1
  242. package/dist/locale/tr.mjs +1 -1
  243. package/dist/locale/ug-cn.js +1 -1
  244. package/dist/locale/ug-cn.min.js +1 -1
  245. package/dist/locale/ug-cn.min.mjs +1 -1
  246. package/dist/locale/ug-cn.mjs +1 -1
  247. package/dist/locale/uk.js +1 -1
  248. package/dist/locale/uk.min.js +1 -1
  249. package/dist/locale/uk.min.mjs +1 -1
  250. package/dist/locale/uk.mjs +1 -1
  251. package/dist/locale/uz-uz.js +1 -1
  252. package/dist/locale/uz-uz.min.js +1 -1
  253. package/dist/locale/uz-uz.min.mjs +1 -1
  254. package/dist/locale/uz-uz.mjs +1 -1
  255. package/dist/locale/vi.js +1 -1
  256. package/dist/locale/vi.min.js +1 -1
  257. package/dist/locale/vi.min.mjs +1 -1
  258. package/dist/locale/vi.mjs +1 -1
  259. package/dist/locale/zh-cn.js +1 -1
  260. package/dist/locale/zh-cn.min.js +1 -1
  261. package/dist/locale/zh-cn.min.mjs +1 -1
  262. package/dist/locale/zh-cn.mjs +1 -1
  263. package/dist/locale/zh-hk.js +1 -1
  264. package/dist/locale/zh-hk.min.js +1 -1
  265. package/dist/locale/zh-hk.min.mjs +1 -1
  266. package/dist/locale/zh-hk.mjs +1 -1
  267. package/dist/locale/zh-mo.js +1 -1
  268. package/dist/locale/zh-mo.min.js +1 -1
  269. package/dist/locale/zh-mo.min.mjs +1 -1
  270. package/dist/locale/zh-mo.mjs +1 -1
  271. package/dist/locale/zh-tw.js +1 -1
  272. package/dist/locale/zh-tw.min.js +1 -1
  273. package/dist/locale/zh-tw.min.mjs +1 -1
  274. package/dist/locale/zh-tw.mjs +1 -1
  275. package/es/components/anchor/src/anchor-link.vue.d.ts +1 -3
  276. package/es/components/anchor/src/anchor-link.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  277. package/es/components/anchor/src/anchor-link2.mjs.map +1 -1
  278. package/es/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.mjs +6 -1
  279. package/es/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  280. package/es/components/cascader/src/cascader2.mjs.map +1 -1
  281. package/es/components/cascader-panel/src/index.mjs.map +1 -1
  282. package/es/components/cascader-panel/src/index.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  283. package/es/components/color-picker-panel/src/composables/use-predefine.mjs.map +1 -1
  284. package/es/components/descriptions/src/description.mjs.map +1 -1
  285. package/es/components/dialog/src/use-dialog.d.ts +2 -2
  286. package/es/components/dialog/src/use-dialog.mjs.map +1 -1
  287. package/es/components/dropdown/src/dropdown-item.vue.d.ts +3 -9
  288. package/es/components/dropdown/src/dropdown.vue.d.ts +3 -9
  289. package/es/components/form/src/form-item.vue_vue_type_script_setup_true_lang.mjs +11 -1
  290. package/es/components/form/src/form-item.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  291. package/es/components/form/src/form-item2.mjs.map +1 -1
  292. package/es/components/form/src/form.vue_vue_type_script_setup_true_lang.mjs +11 -3
  293. package/es/components/form/src/form.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  294. package/es/components/form/src/form2.mjs.map +1 -1
  295. package/es/components/form/src/types.d.ts +2 -1
  296. package/es/components/icon/src/icon.vue.d.ts +1 -3
  297. package/es/components/icon/src/icon.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  298. package/es/components/icon/src/icon2.mjs.map +1 -1
  299. package/es/components/popper/src/trigger.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  300. package/es/components/popper/src/trigger2.mjs.map +1 -1
  301. package/es/components/select/src/select.vue.d.ts +3 -9
  302. package/es/components/select-v2/src/select.vue.d.ts +3 -9
  303. package/es/components/time-picker/src/common/picker.mjs.map +1 -1
  304. package/es/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.mjs +4 -3
  305. package/es/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  306. package/es/components/transfer/src/composables/use-check.d.ts +4 -4
  307. package/es/components/transfer/src/composables/use-check.mjs.map +1 -1
  308. package/es/components/transfer/src/composables/use-computed-data.d.ts +3 -3
  309. package/es/components/transfer/src/composables/use-computed-data.mjs +1 -1
  310. package/es/components/transfer/src/composables/use-computed-data.mjs.map +1 -1
  311. package/es/components/transfer/src/composables/use-move.d.ts +2 -2
  312. package/es/components/transfer/src/composables/use-move.mjs.map +1 -1
  313. package/es/components/transfer/src/composables/use-props-alias.d.ts +4 -2
  314. package/es/components/transfer/src/composables/use-props-alias.mjs.map +1 -1
  315. package/es/components/transfer/src/transfer-panel.d.ts +11 -10
  316. package/es/components/transfer/src/transfer-panel.mjs.map +1 -1
  317. package/es/components/transfer/src/transfer-panel.vue.d.ts +23 -25
  318. package/es/components/transfer/src/transfer-panel.vue_vue_type_script_setup_true_lang.mjs +48 -2
  319. package/es/components/transfer/src/transfer-panel.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  320. package/es/components/transfer/src/transfer-panel2.mjs.map +1 -1
  321. package/es/components/transfer/src/transfer.d.ts +9 -8
  322. package/es/components/transfer/src/transfer.mjs.map +1 -1
  323. package/es/components/transfer/src/transfer.vue.d.ts +32 -42
  324. package/es/components/transfer/src/transfer.vue_vue_type_script_setup_true_lang.mjs +73 -2
  325. package/es/components/transfer/src/transfer.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  326. package/es/components/transfer/src/transfer2.mjs.map +1 -1
  327. package/es/components/tree/src/tree.vue.d.ts +3 -9
  328. package/es/components/upload/src/upload-content.mjs.map +1 -1
  329. package/es/version.mjs +1 -1
  330. package/es/version.mjs.map +1 -1
  331. package/lib/components/anchor/src/anchor-link.vue.d.ts +1 -3
  332. package/lib/components/anchor/src/anchor-link.vue_vue_type_script_setup_true_lang.js.map +1 -1
  333. package/lib/components/anchor/src/anchor-link2.js.map +1 -1
  334. package/lib/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.js +6 -1
  335. package/lib/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  336. package/lib/components/cascader/src/cascader2.js.map +1 -1
  337. package/lib/components/cascader-panel/src/index.js.map +1 -1
  338. package/lib/components/cascader-panel/src/index.vue_vue_type_script_setup_true_lang.js.map +1 -1
  339. package/lib/components/color-picker-panel/src/composables/use-predefine.js.map +1 -1
  340. package/lib/components/descriptions/src/description.js.map +1 -1
  341. package/lib/components/dialog/src/use-dialog.d.ts +2 -2
  342. package/lib/components/dialog/src/use-dialog.js.map +1 -1
  343. package/lib/components/dropdown/src/dropdown-item.vue.d.ts +3 -9
  344. package/lib/components/dropdown/src/dropdown.vue.d.ts +3 -9
  345. package/lib/components/form/src/form-item.vue_vue_type_script_setup_true_lang.js +11 -1
  346. package/lib/components/form/src/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
  347. package/lib/components/form/src/form-item2.js.map +1 -1
  348. package/lib/components/form/src/form.vue_vue_type_script_setup_true_lang.js +11 -3
  349. package/lib/components/form/src/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  350. package/lib/components/form/src/form2.js.map +1 -1
  351. package/lib/components/form/src/types.d.ts +2 -1
  352. package/lib/components/icon/src/icon.vue.d.ts +1 -3
  353. package/lib/components/icon/src/icon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  354. package/lib/components/icon/src/icon2.js.map +1 -1
  355. package/lib/components/popper/src/trigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  356. package/lib/components/popper/src/trigger2.js.map +1 -1
  357. package/lib/components/select/src/select.vue.d.ts +3 -9
  358. package/lib/components/select-v2/src/select.vue.d.ts +3 -9
  359. package/lib/components/time-picker/src/common/picker.js.map +1 -1
  360. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.js +4 -3
  361. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  362. package/lib/components/transfer/src/composables/use-check.d.ts +4 -4
  363. package/lib/components/transfer/src/composables/use-check.js.map +1 -1
  364. package/lib/components/transfer/src/composables/use-computed-data.d.ts +3 -3
  365. package/lib/components/transfer/src/composables/use-computed-data.js +1 -1
  366. package/lib/components/transfer/src/composables/use-computed-data.js.map +1 -1
  367. package/lib/components/transfer/src/composables/use-move.d.ts +2 -2
  368. package/lib/components/transfer/src/composables/use-move.js.map +1 -1
  369. package/lib/components/transfer/src/composables/use-props-alias.d.ts +4 -2
  370. package/lib/components/transfer/src/composables/use-props-alias.js.map +1 -1
  371. package/lib/components/transfer/src/transfer-panel.d.ts +11 -10
  372. package/lib/components/transfer/src/transfer-panel.js.map +1 -1
  373. package/lib/components/transfer/src/transfer-panel.vue.d.ts +23 -25
  374. package/lib/components/transfer/src/transfer-panel.vue_vue_type_script_setup_true_lang.js +47 -1
  375. package/lib/components/transfer/src/transfer-panel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  376. package/lib/components/transfer/src/transfer-panel2.js.map +1 -1
  377. package/lib/components/transfer/src/transfer.d.ts +9 -8
  378. package/lib/components/transfer/src/transfer.js.map +1 -1
  379. package/lib/components/transfer/src/transfer.vue.d.ts +32 -42
  380. package/lib/components/transfer/src/transfer.vue_vue_type_script_setup_true_lang.js +72 -1
  381. package/lib/components/transfer/src/transfer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  382. package/lib/components/transfer/src/transfer2.js.map +1 -1
  383. package/lib/components/tree/src/tree.vue.d.ts +3 -9
  384. package/lib/components/upload/src/upload-content.js.map +1 -1
  385. package/lib/version.js +1 -1
  386. package/lib/version.js.map +1 -1
  387. package/package.json +2 -2
  388. package/web-types.json +1 -1
@@ -157,24 +157,18 @@ declare const __VLS_export: vue.DefineComponent<vue.ExtractPropTypes<{
157
157
  readonly divided: boolean;
158
158
  }, {}, {
159
159
  ElIcon: SFCWithInstall<{
160
- new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {
161
- size: number | string;
162
- }, false, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
160
+ new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {}, false, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
163
161
  P: {};
164
162
  B: {};
165
163
  D: {};
166
164
  C: {};
167
165
  M: {};
168
166
  Defaults: {};
169
- }, Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, {
170
- size: number | string;
171
- }>;
167
+ }, Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, {}>;
172
168
  __isFragment?: never;
173
169
  __isTeleport?: never;
174
170
  __isSuspense?: never;
175
- } & vue.ComponentOptionsBase<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {
176
- size: number | string;
177
- }, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new () => {
171
+ } & vue.ComponentOptionsBase<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {}, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new () => {
178
172
  $slots: {
179
173
  default?: (props: {}) => any;
180
174
  };
@@ -908,24 +908,18 @@ declare const __VLS_export: vue.DefineComponent<vue.ExtractPropTypes<{
908
908
  [key: string]: any;
909
909
  }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
910
910
  ElIcon: SFCWithInstall<{
911
- new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {
912
- size: number | string;
913
- }, false, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
911
+ new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {}, false, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
914
912
  P: {};
915
913
  B: {};
916
914
  D: {};
917
915
  C: {};
918
916
  M: {};
919
917
  Defaults: {};
920
- }, Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, {
921
- size: number | string;
922
- }>;
918
+ }, Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, {}>;
923
919
  __isFragment?: never;
924
920
  __isTeleport?: never;
925
921
  __isSuspense?: never;
926
- } & vue.ComponentOptionsBase<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {
927
- size: number | string;
928
- }, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new () => {
922
+ } & vue.ComponentOptionsBase<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {}, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new () => {
929
923
  $slots: {
930
924
  default?: (props: {}) => any;
931
925
  };
@@ -186,6 +186,7 @@ var form_item_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0,
186
186
  const setInitialValue = (value) => {
187
187
  initialValue = (0, lodash_unified.cloneDeep)(value);
188
188
  };
189
+ const getInitialValue = () => initialValue;
189
190
  (0, vue.watch)(() => props.error, (val) => {
190
191
  validateMessage.value = val || "";
191
192
  setValidationState(val ? "error" : "");
@@ -208,9 +209,18 @@ var form_item_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0,
208
209
  clearValidate,
209
210
  validate,
210
211
  propString,
211
- setInitialValue
212
+ setInitialValue,
213
+ getInitialValue
212
214
  });
213
215
  (0, vue.provide)(require_constants.formItemContextKey, context);
216
+ (0, vue.watch)(propString, (newPropString, oldPropString) => {
217
+ if (!formContext || !oldPropString) return;
218
+ formContext.removeField(context, oldPropString);
219
+ if (newPropString) {
220
+ setInitialValue(fieldValue.value);
221
+ formContext.addField(context);
222
+ }
223
+ });
214
224
  (0, vue.onMounted)(() => {
215
225
  if (props.prop) {
216
226
  setInitialValue(fieldValue.value);
@@ -1 +1 @@
1
- {"version":3,"file":"form-item.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../../../../packages/components/form/src/form-item.vue"],"sourcesContent":["<template>\n <div\n ref=\"formItemRef\"\n :class=\"formItemClasses\"\n :role=\"isGroup ? 'group' : undefined\"\n :aria-labelledby=\"isGroup ? labelId : undefined\"\n >\n <form-label-wrap\n :is-auto-width=\"labelStyle.width === 'auto'\"\n :update-all=\"formContext?.labelWidth === 'auto'\"\n >\n <component\n :is=\"labelFor ? 'label' : 'div'\"\n v-if=\"!!(label || $slots.label)\"\n :id=\"labelId\"\n :for=\"labelFor\"\n :class=\"ns.e('label')\"\n :style=\"labelStyle\"\n >\n <slot name=\"label\" :label=\"currentLabel\">\n {{ currentLabel }}\n </slot>\n </component>\n </form-label-wrap>\n\n <div :class=\"ns.e('content')\" :style=\"contentStyle\">\n <slot />\n <transition-group :name=\"`${ns.namespace.value}-zoom-in-top`\">\n <slot v-if=\"shouldShowError\" name=\"error\" :error=\"validateMessage\">\n <div :class=\"validateClasses\">\n {{ validateMessage }}\n </div>\n </slot>\n </transition-group>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n inject,\n nextTick,\n onBeforeUnmount,\n onMounted,\n provide,\n reactive,\n ref,\n toRefs,\n useSlots,\n watch,\n} from 'vue'\nimport AsyncValidator from 'async-validator'\nimport { refDebounced } from '@vueuse/core'\nimport {\n addUnit,\n ensureArray,\n getProp,\n isArray,\n isBoolean,\n isFunction,\n} from '@element-plus/utils'\nimport { useId, useNamespace } from '@element-plus/hooks'\nimport { useFormSize } from './hooks'\nimport FormLabelWrap from './form-label-wrap'\nimport { formContextKey, formItemContextKey } from './constants'\nimport { cloneDeep } from 'lodash-unified'\n\nimport type { CSSProperties } from 'vue'\nimport type { RuleItem } from 'async-validator'\nimport type { Arrayable } from '@element-plus/utils'\nimport type {\n FormItemContext,\n FormItemRule,\n FormValidateFailure,\n} from './types'\nimport type { FormItemProps, FormItemValidateState } from './form-item'\n\ndefineOptions({\n name: 'ElFormItem',\n})\nconst props = withDefaults(defineProps<FormItemProps>(), {\n labelPosition: '',\n showMessage: true,\n required: undefined,\n inlineMessage: undefined,\n})\nconst slots = useSlots()\n\nconst formContext = inject(formContextKey, undefined)\nconst parentFormItemContext = inject(formItemContextKey, undefined)\n\nconst _size = useFormSize(undefined, { formItem: false })\nconst ns = useNamespace('form-item')\n\nconst labelId = useId().value\nconst inputIds = ref<string[]>([])\n\nconst validateState = ref<FormItemValidateState>('')\nconst validateStateDebounced = refDebounced(validateState, 100)\nconst validateMessage = ref('')\nconst formItemRef = ref<HTMLDivElement>()\n// special inline value.\nlet initialValue: any = undefined\nlet isResettingField = false\n\nconst labelPosition = computed(\n () => props.labelPosition || formContext?.labelPosition\n)\n\nconst labelStyle = computed<CSSProperties>(() => {\n if (labelPosition.value === 'top') {\n return {}\n }\n\n const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n return { width: labelWidth }\n})\n\nconst contentStyle = computed<CSSProperties>(() => {\n if (labelPosition.value === 'top' || formContext?.inline) {\n return {}\n }\n if (!props.label && !props.labelWidth && isNested) {\n return {}\n }\n const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n if (!props.label && !slots.label) {\n return { marginLeft: labelWidth }\n }\n return {}\n})\n\nconst formItemClasses = computed(() => [\n ns.b(),\n ns.m(_size.value),\n ns.is('error', validateState.value === 'error'),\n ns.is('validating', validateState.value === 'validating'),\n ns.is('success', validateState.value === 'success'),\n ns.is('required', isRequired.value || props.required),\n ns.is('no-asterisk', formContext?.hideRequiredAsterisk),\n formContext?.requireAsteriskPosition === 'right'\n ? 'asterisk-right'\n : 'asterisk-left',\n {\n [ns.m('feedback')]: formContext?.statusIcon,\n [ns.m(`label-${labelPosition.value}`)]: labelPosition.value,\n },\n])\n\nconst _inlineMessage = computed(() =>\n isBoolean(props.inlineMessage)\n ? props.inlineMessage\n : formContext?.inlineMessage || false\n)\n\nconst validateClasses = computed(() => [\n ns.e('error'),\n { [ns.em('error', 'inline')]: _inlineMessage.value },\n])\n\nconst propString = computed(() => {\n if (!props.prop) return ''\n return isArray(props.prop) ? props.prop.join('.') : props.prop\n})\n\nconst hasLabel = computed<boolean>(() => {\n return !!(props.label || slots.label)\n})\n\nconst labelFor = computed<string | undefined>(() => {\n return (\n props.for ?? (inputIds.value.length === 1 ? inputIds.value[0] : undefined)\n )\n})\n\nconst isGroup = computed<boolean>(() => {\n return !labelFor.value && hasLabel.value\n})\n\nconst isNested = !!parentFormItemContext\n\nconst fieldValue = computed(() => {\n const model = formContext?.model\n if (!model || !props.prop) {\n return\n }\n return getProp(model, props.prop).value\n})\n\nconst normalizedRules = computed(() => {\n const { required } = props\n\n const rules: FormItemRule[] = []\n\n if (props.rules) {\n rules.push(...ensureArray(props.rules))\n }\n\n const formRules = formContext?.rules\n if (formRules && props.prop) {\n const _rules = getProp<Arrayable<FormItemRule> | undefined>(\n formRules,\n props.prop\n ).value\n if (_rules) {\n rules.push(...ensureArray(_rules))\n }\n }\n\n if (required !== undefined) {\n const requiredRules = rules\n .map((rule, i) => [rule, i] as const)\n .filter(([rule]) => 'required' in rule)\n\n if (requiredRules.length > 0) {\n for (const [rule, i] of requiredRules) {\n if (rule.required === required) continue\n rules[i] = { ...rule, required }\n }\n } else {\n rules.push({ required })\n }\n }\n\n return rules\n})\n\nconst validateEnabled = computed(() => normalizedRules.value.length > 0)\n\nconst getFilteredRule = (trigger: string) => {\n const rules = normalizedRules.value\n return (\n rules\n .filter((rule) => {\n if (!rule.trigger || !trigger) return true\n if (isArray(rule.trigger)) {\n return rule.trigger.includes(trigger)\n } else {\n return rule.trigger === trigger\n }\n })\n // exclude trigger\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .map(({ trigger, ...rule }): RuleItem => rule)\n )\n}\n\nconst isRequired = computed(() =>\n normalizedRules.value.some((rule) => rule.required)\n)\n\nconst shouldShowError = computed(\n () =>\n validateStateDebounced.value === 'error' &&\n props.showMessage &&\n (formContext?.showMessage ?? true)\n)\n\nconst currentLabel = computed(\n () => `${props.label || ''}${formContext?.labelSuffix || ''}`\n)\n\nconst setValidationState = (state: FormItemValidateState) => {\n validateState.value = state\n}\n\nconst onValidationFailed = (error: FormValidateFailure) => {\n const { errors, fields } = error\n if (!errors || !fields) {\n console.error(error)\n }\n\n setValidationState('error')\n validateMessage.value = errors\n ? (errors?.[0]?.message ?? `${props.prop} is required`)\n : ''\n\n formContext?.emit('validate', props.prop!, false, validateMessage.value)\n}\n\nconst onValidationSucceeded = () => {\n setValidationState('success')\n formContext?.emit('validate', props.prop!, true, '')\n}\n\nconst doValidate = async (rules: RuleItem[]): Promise<true> => {\n const modelName = propString.value\n const validator = new AsyncValidator({\n [modelName]: rules,\n })\n return validator\n .validate({ [modelName]: fieldValue.value }, { firstFields: true })\n .then(() => {\n onValidationSucceeded()\n return true as const\n })\n .catch((err: FormValidateFailure) => {\n onValidationFailed(err)\n return Promise.reject(err)\n })\n}\n\nconst validate: FormItemContext['validate'] = async (trigger, callback) => {\n // skip validation if its resetting\n if (isResettingField || !props.prop) {\n return false\n }\n\n const hasCallback = isFunction(callback)\n if (!validateEnabled.value) {\n callback?.(false)\n return false\n }\n\n const rules = getFilteredRule(trigger)\n if (rules.length === 0) {\n callback?.(true)\n return true\n }\n\n setValidationState('validating')\n\n return doValidate(rules)\n .then(() => {\n callback?.(true)\n return true as const\n })\n .catch((err: FormValidateFailure) => {\n const { fields } = err\n callback?.(false, fields)\n return hasCallback ? false : Promise.reject(fields)\n })\n}\n\nconst clearValidate: FormItemContext['clearValidate'] = () => {\n setValidationState('')\n validateMessage.value = ''\n isResettingField = false\n}\n\nconst resetField: FormItemContext['resetField'] = async () => {\n const model = formContext?.model\n if (!model || !props.prop) return\n\n const computedValue = getProp(model, props.prop)\n\n // prevent validation from being triggered\n isResettingField = true\n\n computedValue.value = cloneDeep(initialValue)\n\n await nextTick()\n clearValidate()\n\n isResettingField = false\n}\n\nconst addInputId: FormItemContext['addInputId'] = (id: string) => {\n if (!inputIds.value.includes(id)) {\n inputIds.value.push(id)\n }\n}\n\nconst removeInputId: FormItemContext['removeInputId'] = (id: string) => {\n inputIds.value = inputIds.value.filter((listId) => listId !== id)\n}\n\nconst setInitialValue: FormItemContext['setInitialValue'] = (value: any) => {\n initialValue = cloneDeep(value)\n}\n\nwatch(\n () => props.error,\n (val) => {\n validateMessage.value = val || ''\n setValidationState(val ? 'error' : '')\n },\n { immediate: true }\n)\n\nwatch(\n () => props.validateStatus,\n (val) => setValidationState(val || '')\n)\n\nconst context: FormItemContext = reactive({\n ...toRefs(props),\n $el: formItemRef,\n size: _size,\n validateMessage,\n validateState,\n labelId,\n inputIds,\n isGroup,\n hasLabel,\n fieldValue,\n addInputId,\n removeInputId,\n resetField,\n clearValidate,\n validate,\n propString,\n setInitialValue,\n})\n\nprovide(formItemContextKey, context)\n\nonMounted(() => {\n if (props.prop) {\n setInitialValue(fieldValue.value)\n formContext?.addField(context)\n }\n})\n\nonBeforeUnmount(() => {\n formContext?.removeField(context)\n})\n\ndefineExpose({\n /**\n * @description Form item size.\n */\n size: _size,\n /**\n * @description Validation message.\n */\n validateMessage,\n /**\n * @description Validation state.\n */\n validateState,\n /**\n * @description Validate form item.\n */\n validate,\n /**\n * @description Remove validation status of the field.\n */\n clearValidate,\n /**\n * @description Reset current field and remove validation result.\n */\n resetField,\n /**\n * @description Set initial value for this field. When `resetField` is called, the field will reset to this value.\n */\n setInitialValue,\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"form-item.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../../../../packages/components/form/src/form-item.vue"],"sourcesContent":["<template>\n <div\n ref=\"formItemRef\"\n :class=\"formItemClasses\"\n :role=\"isGroup ? 'group' : undefined\"\n :aria-labelledby=\"isGroup ? labelId : undefined\"\n >\n <form-label-wrap\n :is-auto-width=\"labelStyle.width === 'auto'\"\n :update-all=\"formContext?.labelWidth === 'auto'\"\n >\n <component\n :is=\"labelFor ? 'label' : 'div'\"\n v-if=\"!!(label || $slots.label)\"\n :id=\"labelId\"\n :for=\"labelFor\"\n :class=\"ns.e('label')\"\n :style=\"labelStyle\"\n >\n <slot name=\"label\" :label=\"currentLabel\">\n {{ currentLabel }}\n </slot>\n </component>\n </form-label-wrap>\n\n <div :class=\"ns.e('content')\" :style=\"contentStyle\">\n <slot />\n <transition-group :name=\"`${ns.namespace.value}-zoom-in-top`\">\n <slot v-if=\"shouldShowError\" name=\"error\" :error=\"validateMessage\">\n <div :class=\"validateClasses\">\n {{ validateMessage }}\n </div>\n </slot>\n </transition-group>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n inject,\n nextTick,\n onBeforeUnmount,\n onMounted,\n provide,\n reactive,\n ref,\n toRefs,\n useSlots,\n watch,\n} from 'vue'\nimport AsyncValidator from 'async-validator'\nimport { refDebounced } from '@vueuse/core'\nimport {\n addUnit,\n ensureArray,\n getProp,\n isArray,\n isBoolean,\n isFunction,\n} from '@element-plus/utils'\nimport { useId, useNamespace } from '@element-plus/hooks'\nimport { useFormSize } from './hooks'\nimport FormLabelWrap from './form-label-wrap'\nimport { formContextKey, formItemContextKey } from './constants'\nimport { cloneDeep } from 'lodash-unified'\n\nimport type { CSSProperties } from 'vue'\nimport type { RuleItem } from 'async-validator'\nimport type { Arrayable } from '@element-plus/utils'\nimport type {\n FormItemContext,\n FormItemRule,\n FormValidateFailure,\n} from './types'\nimport type { FormItemProps, FormItemValidateState } from './form-item'\n\ndefineOptions({\n name: 'ElFormItem',\n})\nconst props = withDefaults(defineProps<FormItemProps>(), {\n labelPosition: '',\n showMessage: true,\n required: undefined,\n inlineMessage: undefined,\n})\nconst slots = useSlots()\n\nconst formContext = inject(formContextKey, undefined)\nconst parentFormItemContext = inject(formItemContextKey, undefined)\n\nconst _size = useFormSize(undefined, { formItem: false })\nconst ns = useNamespace('form-item')\n\nconst labelId = useId().value\nconst inputIds = ref<string[]>([])\n\nconst validateState = ref<FormItemValidateState>('')\nconst validateStateDebounced = refDebounced(validateState, 100)\nconst validateMessage = ref('')\nconst formItemRef = ref<HTMLDivElement>()\n// special inline value.\nlet initialValue: any = undefined\nlet isResettingField = false\n\nconst labelPosition = computed(\n () => props.labelPosition || formContext?.labelPosition\n)\n\nconst labelStyle = computed<CSSProperties>(() => {\n if (labelPosition.value === 'top') {\n return {}\n }\n\n const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n return { width: labelWidth }\n})\n\nconst contentStyle = computed<CSSProperties>(() => {\n if (labelPosition.value === 'top' || formContext?.inline) {\n return {}\n }\n if (!props.label && !props.labelWidth && isNested) {\n return {}\n }\n const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n if (!props.label && !slots.label) {\n return { marginLeft: labelWidth }\n }\n return {}\n})\n\nconst formItemClasses = computed(() => [\n ns.b(),\n ns.m(_size.value),\n ns.is('error', validateState.value === 'error'),\n ns.is('validating', validateState.value === 'validating'),\n ns.is('success', validateState.value === 'success'),\n ns.is('required', isRequired.value || props.required),\n ns.is('no-asterisk', formContext?.hideRequiredAsterisk),\n formContext?.requireAsteriskPosition === 'right'\n ? 'asterisk-right'\n : 'asterisk-left',\n {\n [ns.m('feedback')]: formContext?.statusIcon,\n [ns.m(`label-${labelPosition.value}`)]: labelPosition.value,\n },\n])\n\nconst _inlineMessage = computed(() =>\n isBoolean(props.inlineMessage)\n ? props.inlineMessage\n : formContext?.inlineMessage || false\n)\n\nconst validateClasses = computed(() => [\n ns.e('error'),\n { [ns.em('error', 'inline')]: _inlineMessage.value },\n])\n\nconst propString = computed(() => {\n if (!props.prop) return ''\n return isArray(props.prop) ? props.prop.join('.') : props.prop\n})\n\nconst hasLabel = computed<boolean>(() => {\n return !!(props.label || slots.label)\n})\n\nconst labelFor = computed<string | undefined>(() => {\n return (\n props.for ?? (inputIds.value.length === 1 ? inputIds.value[0] : undefined)\n )\n})\n\nconst isGroup = computed<boolean>(() => {\n return !labelFor.value && hasLabel.value\n})\n\nconst isNested = !!parentFormItemContext\n\nconst fieldValue = computed(() => {\n const model = formContext?.model\n if (!model || !props.prop) {\n return\n }\n return getProp(model, props.prop).value\n})\n\nconst normalizedRules = computed(() => {\n const { required } = props\n\n const rules: FormItemRule[] = []\n\n if (props.rules) {\n rules.push(...ensureArray(props.rules))\n }\n\n const formRules = formContext?.rules\n if (formRules && props.prop) {\n const _rules = getProp<Arrayable<FormItemRule> | undefined>(\n formRules,\n props.prop\n ).value\n if (_rules) {\n rules.push(...ensureArray(_rules))\n }\n }\n\n if (required !== undefined) {\n const requiredRules = rules\n .map((rule, i) => [rule, i] as const)\n .filter(([rule]) => 'required' in rule)\n\n if (requiredRules.length > 0) {\n for (const [rule, i] of requiredRules) {\n if (rule.required === required) continue\n rules[i] = { ...rule, required }\n }\n } else {\n rules.push({ required })\n }\n }\n\n return rules\n})\n\nconst validateEnabled = computed(() => normalizedRules.value.length > 0)\n\nconst getFilteredRule = (trigger: string) => {\n const rules = normalizedRules.value\n return (\n rules\n .filter((rule) => {\n if (!rule.trigger || !trigger) return true\n if (isArray(rule.trigger)) {\n return rule.trigger.includes(trigger)\n } else {\n return rule.trigger === trigger\n }\n })\n // exclude trigger\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .map(({ trigger, ...rule }): RuleItem => rule)\n )\n}\n\nconst isRequired = computed(() =>\n normalizedRules.value.some((rule) => rule.required)\n)\n\nconst shouldShowError = computed(\n () =>\n validateStateDebounced.value === 'error' &&\n props.showMessage &&\n (formContext?.showMessage ?? true)\n)\n\nconst currentLabel = computed(\n () => `${props.label || ''}${formContext?.labelSuffix || ''}`\n)\n\nconst setValidationState = (state: FormItemValidateState) => {\n validateState.value = state\n}\n\nconst onValidationFailed = (error: FormValidateFailure) => {\n const { errors, fields } = error\n if (!errors || !fields) {\n console.error(error)\n }\n\n setValidationState('error')\n validateMessage.value = errors\n ? (errors?.[0]?.message ?? `${props.prop} is required`)\n : ''\n\n formContext?.emit('validate', props.prop!, false, validateMessage.value)\n}\n\nconst onValidationSucceeded = () => {\n setValidationState('success')\n formContext?.emit('validate', props.prop!, true, '')\n}\n\nconst doValidate = async (rules: RuleItem[]): Promise<true> => {\n const modelName = propString.value\n const validator = new AsyncValidator({\n [modelName]: rules,\n })\n return validator\n .validate({ [modelName]: fieldValue.value }, { firstFields: true })\n .then(() => {\n onValidationSucceeded()\n return true as const\n })\n .catch((err: FormValidateFailure) => {\n onValidationFailed(err)\n return Promise.reject(err)\n })\n}\n\nconst validate: FormItemContext['validate'] = async (trigger, callback) => {\n // skip validation if its resetting\n if (isResettingField || !props.prop) {\n return false\n }\n\n const hasCallback = isFunction(callback)\n if (!validateEnabled.value) {\n callback?.(false)\n return false\n }\n\n const rules = getFilteredRule(trigger)\n if (rules.length === 0) {\n callback?.(true)\n return true\n }\n\n setValidationState('validating')\n\n return doValidate(rules)\n .then(() => {\n callback?.(true)\n return true as const\n })\n .catch((err: FormValidateFailure) => {\n const { fields } = err\n callback?.(false, fields)\n return hasCallback ? false : Promise.reject(fields)\n })\n}\n\nconst clearValidate: FormItemContext['clearValidate'] = () => {\n setValidationState('')\n validateMessage.value = ''\n isResettingField = false\n}\n\nconst resetField: FormItemContext['resetField'] = async () => {\n const model = formContext?.model\n if (!model || !props.prop) return\n\n const computedValue = getProp(model, props.prop)\n\n // prevent validation from being triggered\n isResettingField = true\n\n computedValue.value = cloneDeep(initialValue)\n\n await nextTick()\n clearValidate()\n\n isResettingField = false\n}\n\nconst addInputId: FormItemContext['addInputId'] = (id: string) => {\n if (!inputIds.value.includes(id)) {\n inputIds.value.push(id)\n }\n}\n\nconst removeInputId: FormItemContext['removeInputId'] = (id: string) => {\n inputIds.value = inputIds.value.filter((listId) => listId !== id)\n}\n\nconst setInitialValue: FormItemContext['setInitialValue'] = (value: any) => {\n initialValue = cloneDeep(value)\n}\n\nconst getInitialValue: FormItemContext['getInitialValue'] = () => initialValue\n\nwatch(\n () => props.error,\n (val) => {\n validateMessage.value = val || ''\n setValidationState(val ? 'error' : '')\n },\n { immediate: true }\n)\n\nwatch(\n () => props.validateStatus,\n (val) => setValidationState(val || '')\n)\n\nconst context: FormItemContext = reactive({\n ...toRefs(props),\n $el: formItemRef,\n size: _size,\n validateMessage,\n validateState,\n labelId,\n inputIds,\n isGroup,\n hasLabel,\n fieldValue,\n addInputId,\n removeInputId,\n resetField,\n clearValidate,\n validate,\n propString,\n setInitialValue,\n getInitialValue,\n})\n\nprovide(formItemContextKey, context)\n\nwatch(propString, (newPropString, oldPropString) => {\n if (!formContext || !oldPropString) return\n formContext.removeField(context, oldPropString)\n if (newPropString) {\n setInitialValue(fieldValue.value)\n formContext.addField(context)\n }\n})\n\nonMounted(() => {\n if (props.prop) {\n setInitialValue(fieldValue.value)\n formContext?.addField(context)\n }\n})\n\nonBeforeUnmount(() => {\n formContext?.removeField(context)\n})\n\ndefineExpose({\n /**\n * @description Form item size.\n */\n size: _size,\n /**\n * @description Validation message.\n */\n validateMessage,\n /**\n * @description Validation state.\n */\n validateState,\n /**\n * @description Validate form item.\n */\n validate,\n /**\n * @description Remove validation status of the field.\n */\n clearValidate,\n /**\n * @description Reset current field and remove validation result.\n */\n resetField,\n /**\n * @description Set initial value for this field. When `resetField` is called, the field will reset to this value.\n */\n setInitialValue,\n})\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"form-item2.js","names":[],"sources":["../../../../../../packages/components/form/src/form-item.vue"],"sourcesContent":["<template>\n <div\n ref=\"formItemRef\"\n :class=\"formItemClasses\"\n :role=\"isGroup ? 'group' : undefined\"\n :aria-labelledby=\"isGroup ? labelId : undefined\"\n >\n <form-label-wrap\n :is-auto-width=\"labelStyle.width === 'auto'\"\n :update-all=\"formContext?.labelWidth === 'auto'\"\n >\n <component\n :is=\"labelFor ? 'label' : 'div'\"\n v-if=\"!!(label || $slots.label)\"\n :id=\"labelId\"\n :for=\"labelFor\"\n :class=\"ns.e('label')\"\n :style=\"labelStyle\"\n >\n <slot name=\"label\" :label=\"currentLabel\">\n {{ currentLabel }}\n </slot>\n </component>\n </form-label-wrap>\n\n <div :class=\"ns.e('content')\" :style=\"contentStyle\">\n <slot />\n <transition-group :name=\"`${ns.namespace.value}-zoom-in-top`\">\n <slot v-if=\"shouldShowError\" name=\"error\" :error=\"validateMessage\">\n <div :class=\"validateClasses\">\n {{ validateMessage }}\n </div>\n </slot>\n </transition-group>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n inject,\n nextTick,\n onBeforeUnmount,\n onMounted,\n provide,\n reactive,\n ref,\n toRefs,\n useSlots,\n watch,\n} from 'vue'\nimport AsyncValidator from 'async-validator'\nimport { refDebounced } from '@vueuse/core'\nimport {\n addUnit,\n ensureArray,\n getProp,\n isArray,\n isBoolean,\n isFunction,\n} from '@element-plus/utils'\nimport { useId, useNamespace } from '@element-plus/hooks'\nimport { useFormSize } from './hooks'\nimport FormLabelWrap from './form-label-wrap'\nimport { formContextKey, formItemContextKey } from './constants'\nimport { cloneDeep } from 'lodash-unified'\n\nimport type { CSSProperties } from 'vue'\nimport type { RuleItem } from 'async-validator'\nimport type { Arrayable } from '@element-plus/utils'\nimport type {\n FormItemContext,\n FormItemRule,\n FormValidateFailure,\n} from './types'\nimport type { FormItemProps, FormItemValidateState } from './form-item'\n\ndefineOptions({\n name: 'ElFormItem',\n})\nconst props = withDefaults(defineProps<FormItemProps>(), {\n labelPosition: '',\n showMessage: true,\n required: undefined,\n inlineMessage: undefined,\n})\nconst slots = useSlots()\n\nconst formContext = inject(formContextKey, undefined)\nconst parentFormItemContext = inject(formItemContextKey, undefined)\n\nconst _size = useFormSize(undefined, { formItem: false })\nconst ns = useNamespace('form-item')\n\nconst labelId = useId().value\nconst inputIds = ref<string[]>([])\n\nconst validateState = ref<FormItemValidateState>('')\nconst validateStateDebounced = refDebounced(validateState, 100)\nconst validateMessage = ref('')\nconst formItemRef = ref<HTMLDivElement>()\n// special inline value.\nlet initialValue: any = undefined\nlet isResettingField = false\n\nconst labelPosition = computed(\n () => props.labelPosition || formContext?.labelPosition\n)\n\nconst labelStyle = computed<CSSProperties>(() => {\n if (labelPosition.value === 'top') {\n return {}\n }\n\n const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n return { width: labelWidth }\n})\n\nconst contentStyle = computed<CSSProperties>(() => {\n if (labelPosition.value === 'top' || formContext?.inline) {\n return {}\n }\n if (!props.label && !props.labelWidth && isNested) {\n return {}\n }\n const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n if (!props.label && !slots.label) {\n return { marginLeft: labelWidth }\n }\n return {}\n})\n\nconst formItemClasses = computed(() => [\n ns.b(),\n ns.m(_size.value),\n ns.is('error', validateState.value === 'error'),\n ns.is('validating', validateState.value === 'validating'),\n ns.is('success', validateState.value === 'success'),\n ns.is('required', isRequired.value || props.required),\n ns.is('no-asterisk', formContext?.hideRequiredAsterisk),\n formContext?.requireAsteriskPosition === 'right'\n ? 'asterisk-right'\n : 'asterisk-left',\n {\n [ns.m('feedback')]: formContext?.statusIcon,\n [ns.m(`label-${labelPosition.value}`)]: labelPosition.value,\n },\n])\n\nconst _inlineMessage = computed(() =>\n isBoolean(props.inlineMessage)\n ? props.inlineMessage\n : formContext?.inlineMessage || false\n)\n\nconst validateClasses = computed(() => [\n ns.e('error'),\n { [ns.em('error', 'inline')]: _inlineMessage.value },\n])\n\nconst propString = computed(() => {\n if (!props.prop) return ''\n return isArray(props.prop) ? props.prop.join('.') : props.prop\n})\n\nconst hasLabel = computed<boolean>(() => {\n return !!(props.label || slots.label)\n})\n\nconst labelFor = computed<string | undefined>(() => {\n return (\n props.for ?? (inputIds.value.length === 1 ? inputIds.value[0] : undefined)\n )\n})\n\nconst isGroup = computed<boolean>(() => {\n return !labelFor.value && hasLabel.value\n})\n\nconst isNested = !!parentFormItemContext\n\nconst fieldValue = computed(() => {\n const model = formContext?.model\n if (!model || !props.prop) {\n return\n }\n return getProp(model, props.prop).value\n})\n\nconst normalizedRules = computed(() => {\n const { required } = props\n\n const rules: FormItemRule[] = []\n\n if (props.rules) {\n rules.push(...ensureArray(props.rules))\n }\n\n const formRules = formContext?.rules\n if (formRules && props.prop) {\n const _rules = getProp<Arrayable<FormItemRule> | undefined>(\n formRules,\n props.prop\n ).value\n if (_rules) {\n rules.push(...ensureArray(_rules))\n }\n }\n\n if (required !== undefined) {\n const requiredRules = rules\n .map((rule, i) => [rule, i] as const)\n .filter(([rule]) => 'required' in rule)\n\n if (requiredRules.length > 0) {\n for (const [rule, i] of requiredRules) {\n if (rule.required === required) continue\n rules[i] = { ...rule, required }\n }\n } else {\n rules.push({ required })\n }\n }\n\n return rules\n})\n\nconst validateEnabled = computed(() => normalizedRules.value.length > 0)\n\nconst getFilteredRule = (trigger: string) => {\n const rules = normalizedRules.value\n return (\n rules\n .filter((rule) => {\n if (!rule.trigger || !trigger) return true\n if (isArray(rule.trigger)) {\n return rule.trigger.includes(trigger)\n } else {\n return rule.trigger === trigger\n }\n })\n // exclude trigger\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .map(({ trigger, ...rule }): RuleItem => rule)\n )\n}\n\nconst isRequired = computed(() =>\n normalizedRules.value.some((rule) => rule.required)\n)\n\nconst shouldShowError = computed(\n () =>\n validateStateDebounced.value === 'error' &&\n props.showMessage &&\n (formContext?.showMessage ?? true)\n)\n\nconst currentLabel = computed(\n () => `${props.label || ''}${formContext?.labelSuffix || ''}`\n)\n\nconst setValidationState = (state: FormItemValidateState) => {\n validateState.value = state\n}\n\nconst onValidationFailed = (error: FormValidateFailure) => {\n const { errors, fields } = error\n if (!errors || !fields) {\n console.error(error)\n }\n\n setValidationState('error')\n validateMessage.value = errors\n ? (errors?.[0]?.message ?? `${props.prop} is required`)\n : ''\n\n formContext?.emit('validate', props.prop!, false, validateMessage.value)\n}\n\nconst onValidationSucceeded = () => {\n setValidationState('success')\n formContext?.emit('validate', props.prop!, true, '')\n}\n\nconst doValidate = async (rules: RuleItem[]): Promise<true> => {\n const modelName = propString.value\n const validator = new AsyncValidator({\n [modelName]: rules,\n })\n return validator\n .validate({ [modelName]: fieldValue.value }, { firstFields: true })\n .then(() => {\n onValidationSucceeded()\n return true as const\n })\n .catch((err: FormValidateFailure) => {\n onValidationFailed(err)\n return Promise.reject(err)\n })\n}\n\nconst validate: FormItemContext['validate'] = async (trigger, callback) => {\n // skip validation if its resetting\n if (isResettingField || !props.prop) {\n return false\n }\n\n const hasCallback = isFunction(callback)\n if (!validateEnabled.value) {\n callback?.(false)\n return false\n }\n\n const rules = getFilteredRule(trigger)\n if (rules.length === 0) {\n callback?.(true)\n return true\n }\n\n setValidationState('validating')\n\n return doValidate(rules)\n .then(() => {\n callback?.(true)\n return true as const\n })\n .catch((err: FormValidateFailure) => {\n const { fields } = err\n callback?.(false, fields)\n return hasCallback ? false : Promise.reject(fields)\n })\n}\n\nconst clearValidate: FormItemContext['clearValidate'] = () => {\n setValidationState('')\n validateMessage.value = ''\n isResettingField = false\n}\n\nconst resetField: FormItemContext['resetField'] = async () => {\n const model = formContext?.model\n if (!model || !props.prop) return\n\n const computedValue = getProp(model, props.prop)\n\n // prevent validation from being triggered\n isResettingField = true\n\n computedValue.value = cloneDeep(initialValue)\n\n await nextTick()\n clearValidate()\n\n isResettingField = false\n}\n\nconst addInputId: FormItemContext['addInputId'] = (id: string) => {\n if (!inputIds.value.includes(id)) {\n inputIds.value.push(id)\n }\n}\n\nconst removeInputId: FormItemContext['removeInputId'] = (id: string) => {\n inputIds.value = inputIds.value.filter((listId) => listId !== id)\n}\n\nconst setInitialValue: FormItemContext['setInitialValue'] = (value: any) => {\n initialValue = cloneDeep(value)\n}\n\nwatch(\n () => props.error,\n (val) => {\n validateMessage.value = val || ''\n setValidationState(val ? 'error' : '')\n },\n { immediate: true }\n)\n\nwatch(\n () => props.validateStatus,\n (val) => setValidationState(val || '')\n)\n\nconst context: FormItemContext = reactive({\n ...toRefs(props),\n $el: formItemRef,\n size: _size,\n validateMessage,\n validateState,\n labelId,\n inputIds,\n isGroup,\n hasLabel,\n fieldValue,\n addInputId,\n removeInputId,\n resetField,\n clearValidate,\n validate,\n propString,\n setInitialValue,\n})\n\nprovide(formItemContextKey, context)\n\nonMounted(() => {\n if (props.prop) {\n setInitialValue(fieldValue.value)\n formContext?.addField(context)\n }\n})\n\nonBeforeUnmount(() => {\n formContext?.removeField(context)\n})\n\ndefineExpose({\n /**\n * @description Form item size.\n */\n size: _size,\n /**\n * @description Validation message.\n */\n validateMessage,\n /**\n * @description Validation state.\n */\n validateState,\n /**\n * @description Validate form item.\n */\n validate,\n /**\n * @description Remove validation status of the field.\n */\n clearValidate,\n /**\n * @description Reset current field and remove validation result.\n */\n resetField,\n /**\n * @description Set initial value for this field. When `resetField` is called, the field will reset to this value.\n */\n setInitialValue,\n})\n</script>\n"],"mappings":""}
1
+ {"version":3,"file":"form-item2.js","names":[],"sources":["../../../../../../packages/components/form/src/form-item.vue"],"sourcesContent":["<template>\n <div\n ref=\"formItemRef\"\n :class=\"formItemClasses\"\n :role=\"isGroup ? 'group' : undefined\"\n :aria-labelledby=\"isGroup ? labelId : undefined\"\n >\n <form-label-wrap\n :is-auto-width=\"labelStyle.width === 'auto'\"\n :update-all=\"formContext?.labelWidth === 'auto'\"\n >\n <component\n :is=\"labelFor ? 'label' : 'div'\"\n v-if=\"!!(label || $slots.label)\"\n :id=\"labelId\"\n :for=\"labelFor\"\n :class=\"ns.e('label')\"\n :style=\"labelStyle\"\n >\n <slot name=\"label\" :label=\"currentLabel\">\n {{ currentLabel }}\n </slot>\n </component>\n </form-label-wrap>\n\n <div :class=\"ns.e('content')\" :style=\"contentStyle\">\n <slot />\n <transition-group :name=\"`${ns.namespace.value}-zoom-in-top`\">\n <slot v-if=\"shouldShowError\" name=\"error\" :error=\"validateMessage\">\n <div :class=\"validateClasses\">\n {{ validateMessage }}\n </div>\n </slot>\n </transition-group>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n inject,\n nextTick,\n onBeforeUnmount,\n onMounted,\n provide,\n reactive,\n ref,\n toRefs,\n useSlots,\n watch,\n} from 'vue'\nimport AsyncValidator from 'async-validator'\nimport { refDebounced } from '@vueuse/core'\nimport {\n addUnit,\n ensureArray,\n getProp,\n isArray,\n isBoolean,\n isFunction,\n} from '@element-plus/utils'\nimport { useId, useNamespace } from '@element-plus/hooks'\nimport { useFormSize } from './hooks'\nimport FormLabelWrap from './form-label-wrap'\nimport { formContextKey, formItemContextKey } from './constants'\nimport { cloneDeep } from 'lodash-unified'\n\nimport type { CSSProperties } from 'vue'\nimport type { RuleItem } from 'async-validator'\nimport type { Arrayable } from '@element-plus/utils'\nimport type {\n FormItemContext,\n FormItemRule,\n FormValidateFailure,\n} from './types'\nimport type { FormItemProps, FormItemValidateState } from './form-item'\n\ndefineOptions({\n name: 'ElFormItem',\n})\nconst props = withDefaults(defineProps<FormItemProps>(), {\n labelPosition: '',\n showMessage: true,\n required: undefined,\n inlineMessage: undefined,\n})\nconst slots = useSlots()\n\nconst formContext = inject(formContextKey, undefined)\nconst parentFormItemContext = inject(formItemContextKey, undefined)\n\nconst _size = useFormSize(undefined, { formItem: false })\nconst ns = useNamespace('form-item')\n\nconst labelId = useId().value\nconst inputIds = ref<string[]>([])\n\nconst validateState = ref<FormItemValidateState>('')\nconst validateStateDebounced = refDebounced(validateState, 100)\nconst validateMessage = ref('')\nconst formItemRef = ref<HTMLDivElement>()\n// special inline value.\nlet initialValue: any = undefined\nlet isResettingField = false\n\nconst labelPosition = computed(\n () => props.labelPosition || formContext?.labelPosition\n)\n\nconst labelStyle = computed<CSSProperties>(() => {\n if (labelPosition.value === 'top') {\n return {}\n }\n\n const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n return { width: labelWidth }\n})\n\nconst contentStyle = computed<CSSProperties>(() => {\n if (labelPosition.value === 'top' || formContext?.inline) {\n return {}\n }\n if (!props.label && !props.labelWidth && isNested) {\n return {}\n }\n const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n if (!props.label && !slots.label) {\n return { marginLeft: labelWidth }\n }\n return {}\n})\n\nconst formItemClasses = computed(() => [\n ns.b(),\n ns.m(_size.value),\n ns.is('error', validateState.value === 'error'),\n ns.is('validating', validateState.value === 'validating'),\n ns.is('success', validateState.value === 'success'),\n ns.is('required', isRequired.value || props.required),\n ns.is('no-asterisk', formContext?.hideRequiredAsterisk),\n formContext?.requireAsteriskPosition === 'right'\n ? 'asterisk-right'\n : 'asterisk-left',\n {\n [ns.m('feedback')]: formContext?.statusIcon,\n [ns.m(`label-${labelPosition.value}`)]: labelPosition.value,\n },\n])\n\nconst _inlineMessage = computed(() =>\n isBoolean(props.inlineMessage)\n ? props.inlineMessage\n : formContext?.inlineMessage || false\n)\n\nconst validateClasses = computed(() => [\n ns.e('error'),\n { [ns.em('error', 'inline')]: _inlineMessage.value },\n])\n\nconst propString = computed(() => {\n if (!props.prop) return ''\n return isArray(props.prop) ? props.prop.join('.') : props.prop\n})\n\nconst hasLabel = computed<boolean>(() => {\n return !!(props.label || slots.label)\n})\n\nconst labelFor = computed<string | undefined>(() => {\n return (\n props.for ?? (inputIds.value.length === 1 ? inputIds.value[0] : undefined)\n )\n})\n\nconst isGroup = computed<boolean>(() => {\n return !labelFor.value && hasLabel.value\n})\n\nconst isNested = !!parentFormItemContext\n\nconst fieldValue = computed(() => {\n const model = formContext?.model\n if (!model || !props.prop) {\n return\n }\n return getProp(model, props.prop).value\n})\n\nconst normalizedRules = computed(() => {\n const { required } = props\n\n const rules: FormItemRule[] = []\n\n if (props.rules) {\n rules.push(...ensureArray(props.rules))\n }\n\n const formRules = formContext?.rules\n if (formRules && props.prop) {\n const _rules = getProp<Arrayable<FormItemRule> | undefined>(\n formRules,\n props.prop\n ).value\n if (_rules) {\n rules.push(...ensureArray(_rules))\n }\n }\n\n if (required !== undefined) {\n const requiredRules = rules\n .map((rule, i) => [rule, i] as const)\n .filter(([rule]) => 'required' in rule)\n\n if (requiredRules.length > 0) {\n for (const [rule, i] of requiredRules) {\n if (rule.required === required) continue\n rules[i] = { ...rule, required }\n }\n } else {\n rules.push({ required })\n }\n }\n\n return rules\n})\n\nconst validateEnabled = computed(() => normalizedRules.value.length > 0)\n\nconst getFilteredRule = (trigger: string) => {\n const rules = normalizedRules.value\n return (\n rules\n .filter((rule) => {\n if (!rule.trigger || !trigger) return true\n if (isArray(rule.trigger)) {\n return rule.trigger.includes(trigger)\n } else {\n return rule.trigger === trigger\n }\n })\n // exclude trigger\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .map(({ trigger, ...rule }): RuleItem => rule)\n )\n}\n\nconst isRequired = computed(() =>\n normalizedRules.value.some((rule) => rule.required)\n)\n\nconst shouldShowError = computed(\n () =>\n validateStateDebounced.value === 'error' &&\n props.showMessage &&\n (formContext?.showMessage ?? true)\n)\n\nconst currentLabel = computed(\n () => `${props.label || ''}${formContext?.labelSuffix || ''}`\n)\n\nconst setValidationState = (state: FormItemValidateState) => {\n validateState.value = state\n}\n\nconst onValidationFailed = (error: FormValidateFailure) => {\n const { errors, fields } = error\n if (!errors || !fields) {\n console.error(error)\n }\n\n setValidationState('error')\n validateMessage.value = errors\n ? (errors?.[0]?.message ?? `${props.prop} is required`)\n : ''\n\n formContext?.emit('validate', props.prop!, false, validateMessage.value)\n}\n\nconst onValidationSucceeded = () => {\n setValidationState('success')\n formContext?.emit('validate', props.prop!, true, '')\n}\n\nconst doValidate = async (rules: RuleItem[]): Promise<true> => {\n const modelName = propString.value\n const validator = new AsyncValidator({\n [modelName]: rules,\n })\n return validator\n .validate({ [modelName]: fieldValue.value }, { firstFields: true })\n .then(() => {\n onValidationSucceeded()\n return true as const\n })\n .catch((err: FormValidateFailure) => {\n onValidationFailed(err)\n return Promise.reject(err)\n })\n}\n\nconst validate: FormItemContext['validate'] = async (trigger, callback) => {\n // skip validation if its resetting\n if (isResettingField || !props.prop) {\n return false\n }\n\n const hasCallback = isFunction(callback)\n if (!validateEnabled.value) {\n callback?.(false)\n return false\n }\n\n const rules = getFilteredRule(trigger)\n if (rules.length === 0) {\n callback?.(true)\n return true\n }\n\n setValidationState('validating')\n\n return doValidate(rules)\n .then(() => {\n callback?.(true)\n return true as const\n })\n .catch((err: FormValidateFailure) => {\n const { fields } = err\n callback?.(false, fields)\n return hasCallback ? false : Promise.reject(fields)\n })\n}\n\nconst clearValidate: FormItemContext['clearValidate'] = () => {\n setValidationState('')\n validateMessage.value = ''\n isResettingField = false\n}\n\nconst resetField: FormItemContext['resetField'] = async () => {\n const model = formContext?.model\n if (!model || !props.prop) return\n\n const computedValue = getProp(model, props.prop)\n\n // prevent validation from being triggered\n isResettingField = true\n\n computedValue.value = cloneDeep(initialValue)\n\n await nextTick()\n clearValidate()\n\n isResettingField = false\n}\n\nconst addInputId: FormItemContext['addInputId'] = (id: string) => {\n if (!inputIds.value.includes(id)) {\n inputIds.value.push(id)\n }\n}\n\nconst removeInputId: FormItemContext['removeInputId'] = (id: string) => {\n inputIds.value = inputIds.value.filter((listId) => listId !== id)\n}\n\nconst setInitialValue: FormItemContext['setInitialValue'] = (value: any) => {\n initialValue = cloneDeep(value)\n}\n\nconst getInitialValue: FormItemContext['getInitialValue'] = () => initialValue\n\nwatch(\n () => props.error,\n (val) => {\n validateMessage.value = val || ''\n setValidationState(val ? 'error' : '')\n },\n { immediate: true }\n)\n\nwatch(\n () => props.validateStatus,\n (val) => setValidationState(val || '')\n)\n\nconst context: FormItemContext = reactive({\n ...toRefs(props),\n $el: formItemRef,\n size: _size,\n validateMessage,\n validateState,\n labelId,\n inputIds,\n isGroup,\n hasLabel,\n fieldValue,\n addInputId,\n removeInputId,\n resetField,\n clearValidate,\n validate,\n propString,\n setInitialValue,\n getInitialValue,\n})\n\nprovide(formItemContextKey, context)\n\nwatch(propString, (newPropString, oldPropString) => {\n if (!formContext || !oldPropString) return\n formContext.removeField(context, oldPropString)\n if (newPropString) {\n setInitialValue(fieldValue.value)\n formContext.addField(context)\n }\n})\n\nonMounted(() => {\n if (props.prop) {\n setInitialValue(fieldValue.value)\n formContext?.addField(context)\n }\n})\n\nonBeforeUnmount(() => {\n formContext?.removeField(context)\n})\n\ndefineExpose({\n /**\n * @description Form item size.\n */\n size: _size,\n /**\n * @description Validation message.\n */\n validateMessage,\n /**\n * @description Validation state.\n */\n validateState,\n /**\n * @description Validate form item.\n */\n validate,\n /**\n * @description Remove validation status of the field.\n */\n clearValidate,\n /**\n * @description Reset current field and remove validation result.\n */\n resetField,\n /**\n * @description Set initial value for this field. When `resetField` is called, the field will reset to this value.\n */\n setInitialValue,\n})\n</script>\n"],"mappings":""}
@@ -40,12 +40,20 @@ var form_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.d
40
40
  return require_utils.filterFields(fields, [prop])[0];
41
41
  };
42
42
  const addField = (field) => {
43
- fields.push(field);
43
+ if (!fields.includes(field)) fields.push(field);
44
44
  if (field.propString) if (initialValues.has(field.propString)) field.setInitialValue(initialValues.get(field.propString));
45
45
  else initialValues.set(field.propString, (0, lodash_unified.cloneDeep)(field.fieldValue));
46
46
  };
47
- const removeField = (field) => {
48
- if (field.prop) fields.splice(fields.indexOf(field), 1);
47
+ const removeField = (field, oldPropString) => {
48
+ if (oldPropString) {
49
+ initialValues.delete(oldPropString);
50
+ return;
51
+ }
52
+ const idx = fields.indexOf(field);
53
+ if (idx > -1) {
54
+ fields.splice(idx, 1);
55
+ if (field.propString) initialValues.set(field.propString, (0, lodash_unified.cloneDeep)(field.getInitialValue()));
56
+ }
49
57
  };
50
58
  const setInitialValues = (initModel) => {
51
59
  if (!props.model) {
@@ -1 +1 @@
1
- {"version":3,"file":"form.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<template>\n <form ref=\"formRef\" :class=\"formClasses\">\n <slot />\n </form>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, reactive, ref, toRefs, watch } from 'vue'\nimport { cloneDeep } from 'lodash-unified'\nimport {\n debugWarn,\n ensureArray,\n getProp,\n isArray,\n isFunction,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useFormSize } from './hooks'\nimport { formContextKey } from './constants'\nimport { formEmits } from './form'\nimport { filterFields, useFormLabelWidth } from './utils'\n\nimport type { ValidateFieldsError } from 'async-validator'\nimport type { Arrayable } from '@element-plus/utils'\nimport type { FormProps } from './form'\nimport type {\n FormContext,\n FormItemContext,\n FormValidateCallback,\n FormValidationResult,\n} from './types'\nimport type { FormItemProp } from './form-item'\n\nconst COMPONENT_NAME = 'ElForm'\ndefineOptions({\n name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<FormProps>(), {\n labelPosition: 'right',\n requireAsteriskPosition: 'left',\n labelWidth: '',\n labelSuffix: '',\n showMessage: true,\n validateOnRuleChange: true,\n scrollIntoViewOptions: true,\n})\nconst emit = defineEmits(formEmits)\n\nconst formRef = ref<HTMLElement>()\nconst fields = reactive<FormItemContext[]>([])\nconst initialValues = new Map<string, any>()\n\nconst formSize = useFormSize()\nconst ns = useNamespace('form')\nconst formClasses = computed(() => {\n const { labelPosition, inline } = props\n return [\n ns.b(),\n ns.m(formSize.value || 'default'),\n {\n [ns.m(`label-${labelPosition}`)]: labelPosition,\n [ns.m('inline')]: inline,\n },\n ]\n})\n\nconst getField: FormContext['getField'] = (prop) => {\n return filterFields(fields, [prop])[0]\n}\n\nconst addField: FormContext['addField'] = (field) => {\n fields.push(field)\n if (field.propString) {\n if (initialValues.has(field.propString)) {\n field.setInitialValue(initialValues.get(field.propString))\n } else {\n initialValues.set(field.propString, cloneDeep(field.fieldValue))\n }\n }\n}\n\nconst removeField: FormContext['removeField'] = (field) => {\n if (field.prop) {\n fields.splice(fields.indexOf(field), 1)\n }\n}\n\nconst setInitialValues: FormContext['setInitialValues'] = (initModel) => {\n if (!props.model) {\n debugWarn(COMPONENT_NAME, 'model is required for setInitialValues to work.')\n return\n }\n if (!initModel) {\n debugWarn(\n COMPONENT_NAME,\n 'initModel is required for setInitialValues to work.'\n )\n return\n }\n\n for (const key of initialValues.keys()) {\n initialValues.set(key, cloneDeep(getProp(initModel, key).value))\n }\n fields.forEach((field) => {\n if (field.prop) {\n field.setInitialValue(getProp(initModel, field.prop).value)\n }\n })\n}\n\nconst resetFields: FormContext['resetFields'] = (properties = []) => {\n if (!props.model) {\n debugWarn(COMPONENT_NAME, 'model is required for resetFields to work.')\n return\n }\n\n filterFields(fields, properties).forEach((field) => field.resetField())\n\n const activePropStrings = new Set(\n fields.map((f) => f.propString).filter(Boolean)\n )\n const propsToCheck =\n properties.length > 0\n ? ensureArray(properties).map((p) => (isArray(p) ? p.join('.') : p))\n : [...initialValues.keys()]\n\n for (const propString of propsToCheck) {\n if (!activePropStrings.has(propString) && initialValues.has(propString)) {\n getProp(props.model, propString).value = cloneDeep(\n initialValues.get(propString)\n )\n }\n }\n}\n\nconst clearValidate: FormContext['clearValidate'] = (props = []) => {\n filterFields(fields, props).forEach((field) => field.clearValidate())\n}\n\nconst isValidatable = computed(() => {\n const hasModel = !!props.model\n if (!hasModel) {\n debugWarn(COMPONENT_NAME, 'model is required for validate to work.')\n }\n return hasModel\n})\n\nconst obtainValidateFields = (props: Arrayable<FormItemProp>) => {\n if (fields.length === 0) return []\n\n const filteredFields = filterFields(fields, props)\n if (!filteredFields.length) {\n debugWarn(COMPONENT_NAME, 'please pass correct props!')\n return []\n }\n return filteredFields\n}\n\nconst validate = async (\n callback?: FormValidateCallback\n): FormValidationResult => validateField(undefined, callback)\n\nconst doValidateField = async (\n props: Arrayable<FormItemProp> = []\n): Promise<boolean> => {\n if (!isValidatable.value) return false\n\n const fields = obtainValidateFields(props)\n if (fields.length === 0) return true\n\n let validationErrors: ValidateFieldsError = {}\n for (const field of fields) {\n try {\n await field.validate('')\n if (field.validateState === 'error' && !field.error) field.resetField()\n } catch (fields) {\n validationErrors = {\n ...validationErrors,\n ...(fields as ValidateFieldsError),\n }\n }\n }\n\n if (Object.keys(validationErrors).length === 0) return true\n return Promise.reject(validationErrors)\n}\n\nconst validateField: FormContext['validateField'] = async (\n modelProps = [],\n callback\n) => {\n let result = false\n const shouldThrow = !isFunction(callback)\n try {\n result = await doValidateField(modelProps)\n // When result is false meaning that the fields are not validatable\n if (result === true) {\n await callback?.(result)\n }\n return result\n } catch (e) {\n if (e instanceof Error) throw e\n\n const invalidFields = e as ValidateFieldsError\n\n if (props.scrollToError) {\n // form-item may be dynamically rendered based on the judgment conditions, and the order in invalidFields is uncertain.\n // Therefore, the first form field with an error is determined by directly looking for the rendered element.\n if (formRef.value) {\n const formItem = formRef.value.querySelector(`.${ns.b()}-item.is-error`)\n formItem?.scrollIntoView(props.scrollIntoViewOptions)\n }\n }\n !result && (await callback?.(false, invalidFields))\n return shouldThrow && Promise.reject(invalidFields)\n }\n}\n\nconst scrollToField = (prop: FormItemProp) => {\n const field = getField(prop)\n if (field) {\n field.$el?.scrollIntoView(props.scrollIntoViewOptions)\n }\n}\n\nwatch(\n () => props.rules,\n () => {\n if (props.validateOnRuleChange) {\n validate().catch((err) => debugWarn(err))\n }\n },\n { deep: true, flush: 'post' }\n)\n\nprovide(\n formContextKey,\n reactive({\n ...toRefs(props),\n emit,\n\n resetFields,\n clearValidate,\n validateField,\n getField,\n addField,\n removeField,\n setInitialValues,\n\n ...useFormLabelWidth(),\n })\n)\n\ndefineExpose({\n /**\n * @description Validate the whole form. Receives a callback or returns `Promise`.\n */\n validate,\n /**\n * @description Validate specified fields.\n */\n validateField,\n /**\n * @description Reset specified fields and remove validation result.\n */\n resetFields,\n /**\n * @description Clear validation message for specified fields.\n */\n clearValidate,\n /**\n * @description Scroll to the specified fields.\n */\n scrollToField,\n /**\n * @description Get a field context.\n */\n getField,\n /**\n * @description All fields context.\n */\n fields,\n /**\n * @description Set initial values for form fields. When `resetFields` is called, fields will reset to these values.\n */\n setInitialValues,\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"form.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<template>\n <form ref=\"formRef\" :class=\"formClasses\">\n <slot />\n </form>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, reactive, ref, toRefs, watch } from 'vue'\nimport { cloneDeep } from 'lodash-unified'\nimport {\n debugWarn,\n ensureArray,\n getProp,\n isArray,\n isFunction,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useFormSize } from './hooks'\nimport { formContextKey } from './constants'\nimport { formEmits } from './form'\nimport { filterFields, useFormLabelWidth } from './utils'\n\nimport type { ValidateFieldsError } from 'async-validator'\nimport type { Arrayable } from '@element-plus/utils'\nimport type { FormProps } from './form'\nimport type {\n FormContext,\n FormItemContext,\n FormValidateCallback,\n FormValidationResult,\n} from './types'\nimport type { FormItemProp } from './form-item'\n\nconst COMPONENT_NAME = 'ElForm'\ndefineOptions({\n name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<FormProps>(), {\n labelPosition: 'right',\n requireAsteriskPosition: 'left',\n labelWidth: '',\n labelSuffix: '',\n showMessage: true,\n validateOnRuleChange: true,\n scrollIntoViewOptions: true,\n})\nconst emit = defineEmits(formEmits)\n\nconst formRef = ref<HTMLElement>()\nconst fields = reactive<FormItemContext[]>([])\nconst initialValues = new Map<string, any>()\n\nconst formSize = useFormSize()\nconst ns = useNamespace('form')\nconst formClasses = computed(() => {\n const { labelPosition, inline } = props\n return [\n ns.b(),\n ns.m(formSize.value || 'default'),\n {\n [ns.m(`label-${labelPosition}`)]: labelPosition,\n [ns.m('inline')]: inline,\n },\n ]\n})\n\nconst getField: FormContext['getField'] = (prop) => {\n return filterFields(fields, [prop])[0]\n}\n\nconst addField: FormContext['addField'] = (field) => {\n if (!fields.includes(field)) {\n fields.push(field)\n }\n if (field.propString) {\n if (initialValues.has(field.propString)) {\n field.setInitialValue(initialValues.get(field.propString))\n } else {\n initialValues.set(field.propString, cloneDeep(field.fieldValue))\n }\n }\n}\n\nconst removeField: FormContext['removeField'] = (field, oldPropString?) => {\n if (oldPropString) {\n // Prop changed on a live field: delete stale key, field stays in fields[]\n initialValues.delete(oldPropString)\n return\n }\n // Unmount: splice from array, cache initialValue for potential remount\n const idx = fields.indexOf(field)\n if (idx > -1) {\n fields.splice(idx, 1)\n if (field.propString) {\n initialValues.set(field.propString, cloneDeep(field.getInitialValue()))\n }\n }\n}\n\nconst setInitialValues: FormContext['setInitialValues'] = (initModel) => {\n if (!props.model) {\n debugWarn(COMPONENT_NAME, 'model is required for setInitialValues to work.')\n return\n }\n if (!initModel) {\n debugWarn(\n COMPONENT_NAME,\n 'initModel is required for setInitialValues to work.'\n )\n return\n }\n\n for (const key of initialValues.keys()) {\n initialValues.set(key, cloneDeep(getProp(initModel, key).value))\n }\n fields.forEach((field) => {\n if (field.prop) {\n field.setInitialValue(getProp(initModel, field.prop).value)\n }\n })\n}\n\nconst resetFields: FormContext['resetFields'] = (properties = []) => {\n if (!props.model) {\n debugWarn(COMPONENT_NAME, 'model is required for resetFields to work.')\n return\n }\n\n filterFields(fields, properties).forEach((field) => field.resetField())\n\n const activePropStrings = new Set(\n fields.map((f) => f.propString).filter(Boolean)\n )\n const propsToCheck =\n properties.length > 0\n ? ensureArray(properties).map((p) => (isArray(p) ? p.join('.') : p))\n : [...initialValues.keys()]\n\n for (const propString of propsToCheck) {\n if (!activePropStrings.has(propString) && initialValues.has(propString)) {\n getProp(props.model, propString).value = cloneDeep(\n initialValues.get(propString)\n )\n }\n }\n}\n\nconst clearValidate: FormContext['clearValidate'] = (props = []) => {\n filterFields(fields, props).forEach((field) => field.clearValidate())\n}\n\nconst isValidatable = computed(() => {\n const hasModel = !!props.model\n if (!hasModel) {\n debugWarn(COMPONENT_NAME, 'model is required for validate to work.')\n }\n return hasModel\n})\n\nconst obtainValidateFields = (props: Arrayable<FormItemProp>) => {\n if (fields.length === 0) return []\n\n const filteredFields = filterFields(fields, props)\n if (!filteredFields.length) {\n debugWarn(COMPONENT_NAME, 'please pass correct props!')\n return []\n }\n return filteredFields\n}\n\nconst validate = async (\n callback?: FormValidateCallback\n): FormValidationResult => validateField(undefined, callback)\n\nconst doValidateField = async (\n props: Arrayable<FormItemProp> = []\n): Promise<boolean> => {\n if (!isValidatable.value) return false\n\n const fields = obtainValidateFields(props)\n if (fields.length === 0) return true\n\n let validationErrors: ValidateFieldsError = {}\n for (const field of fields) {\n try {\n await field.validate('')\n if (field.validateState === 'error' && !field.error) field.resetField()\n } catch (fields) {\n validationErrors = {\n ...validationErrors,\n ...(fields as ValidateFieldsError),\n }\n }\n }\n\n if (Object.keys(validationErrors).length === 0) return true\n return Promise.reject(validationErrors)\n}\n\nconst validateField: FormContext['validateField'] = async (\n modelProps = [],\n callback\n) => {\n let result = false\n const shouldThrow = !isFunction(callback)\n try {\n result = await doValidateField(modelProps)\n // When result is false meaning that the fields are not validatable\n if (result === true) {\n await callback?.(result)\n }\n return result\n } catch (e) {\n if (e instanceof Error) throw e\n\n const invalidFields = e as ValidateFieldsError\n\n if (props.scrollToError) {\n // form-item may be dynamically rendered based on the judgment conditions, and the order in invalidFields is uncertain.\n // Therefore, the first form field with an error is determined by directly looking for the rendered element.\n if (formRef.value) {\n const formItem = formRef.value.querySelector(`.${ns.b()}-item.is-error`)\n formItem?.scrollIntoView(props.scrollIntoViewOptions)\n }\n }\n !result && (await callback?.(false, invalidFields))\n return shouldThrow && Promise.reject(invalidFields)\n }\n}\n\nconst scrollToField = (prop: FormItemProp) => {\n const field = getField(prop)\n if (field) {\n field.$el?.scrollIntoView(props.scrollIntoViewOptions)\n }\n}\n\nwatch(\n () => props.rules,\n () => {\n if (props.validateOnRuleChange) {\n validate().catch((err) => debugWarn(err))\n }\n },\n { deep: true, flush: 'post' }\n)\n\nprovide(\n formContextKey,\n reactive({\n ...toRefs(props),\n emit,\n\n resetFields,\n clearValidate,\n validateField,\n getField,\n addField,\n removeField,\n setInitialValues,\n\n ...useFormLabelWidth(),\n })\n)\n\ndefineExpose({\n /**\n * @description Validate the whole form. Receives a callback or returns `Promise`.\n */\n validate,\n /**\n * @description Validate specified fields.\n */\n validateField,\n /**\n * @description Reset specified fields and remove validation result.\n */\n resetFields,\n /**\n * @description Clear validation message for specified fields.\n */\n clearValidate,\n /**\n * @description Scroll to the specified fields.\n */\n scrollToField,\n /**\n * @description Get a field context.\n */\n getField,\n /**\n * @description All fields context.\n */\n fields,\n /**\n * @description Set initial values for form fields. When `resetFields` is called, fields will reset to these values.\n */\n setInitialValues,\n})\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"form2.js","names":[],"sources":["../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<template>\n <form ref=\"formRef\" :class=\"formClasses\">\n <slot />\n </form>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, reactive, ref, toRefs, watch } from 'vue'\nimport { cloneDeep } from 'lodash-unified'\nimport {\n debugWarn,\n ensureArray,\n getProp,\n isArray,\n isFunction,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useFormSize } from './hooks'\nimport { formContextKey } from './constants'\nimport { formEmits } from './form'\nimport { filterFields, useFormLabelWidth } from './utils'\n\nimport type { ValidateFieldsError } from 'async-validator'\nimport type { Arrayable } from '@element-plus/utils'\nimport type { FormProps } from './form'\nimport type {\n FormContext,\n FormItemContext,\n FormValidateCallback,\n FormValidationResult,\n} from './types'\nimport type { FormItemProp } from './form-item'\n\nconst COMPONENT_NAME = 'ElForm'\ndefineOptions({\n name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<FormProps>(), {\n labelPosition: 'right',\n requireAsteriskPosition: 'left',\n labelWidth: '',\n labelSuffix: '',\n showMessage: true,\n validateOnRuleChange: true,\n scrollIntoViewOptions: true,\n})\nconst emit = defineEmits(formEmits)\n\nconst formRef = ref<HTMLElement>()\nconst fields = reactive<FormItemContext[]>([])\nconst initialValues = new Map<string, any>()\n\nconst formSize = useFormSize()\nconst ns = useNamespace('form')\nconst formClasses = computed(() => {\n const { labelPosition, inline } = props\n return [\n ns.b(),\n ns.m(formSize.value || 'default'),\n {\n [ns.m(`label-${labelPosition}`)]: labelPosition,\n [ns.m('inline')]: inline,\n },\n ]\n})\n\nconst getField: FormContext['getField'] = (prop) => {\n return filterFields(fields, [prop])[0]\n}\n\nconst addField: FormContext['addField'] = (field) => {\n fields.push(field)\n if (field.propString) {\n if (initialValues.has(field.propString)) {\n field.setInitialValue(initialValues.get(field.propString))\n } else {\n initialValues.set(field.propString, cloneDeep(field.fieldValue))\n }\n }\n}\n\nconst removeField: FormContext['removeField'] = (field) => {\n if (field.prop) {\n fields.splice(fields.indexOf(field), 1)\n }\n}\n\nconst setInitialValues: FormContext['setInitialValues'] = (initModel) => {\n if (!props.model) {\n debugWarn(COMPONENT_NAME, 'model is required for setInitialValues to work.')\n return\n }\n if (!initModel) {\n debugWarn(\n COMPONENT_NAME,\n 'initModel is required for setInitialValues to work.'\n )\n return\n }\n\n for (const key of initialValues.keys()) {\n initialValues.set(key, cloneDeep(getProp(initModel, key).value))\n }\n fields.forEach((field) => {\n if (field.prop) {\n field.setInitialValue(getProp(initModel, field.prop).value)\n }\n })\n}\n\nconst resetFields: FormContext['resetFields'] = (properties = []) => {\n if (!props.model) {\n debugWarn(COMPONENT_NAME, 'model is required for resetFields to work.')\n return\n }\n\n filterFields(fields, properties).forEach((field) => field.resetField())\n\n const activePropStrings = new Set(\n fields.map((f) => f.propString).filter(Boolean)\n )\n const propsToCheck =\n properties.length > 0\n ? ensureArray(properties).map((p) => (isArray(p) ? p.join('.') : p))\n : [...initialValues.keys()]\n\n for (const propString of propsToCheck) {\n if (!activePropStrings.has(propString) && initialValues.has(propString)) {\n getProp(props.model, propString).value = cloneDeep(\n initialValues.get(propString)\n )\n }\n }\n}\n\nconst clearValidate: FormContext['clearValidate'] = (props = []) => {\n filterFields(fields, props).forEach((field) => field.clearValidate())\n}\n\nconst isValidatable = computed(() => {\n const hasModel = !!props.model\n if (!hasModel) {\n debugWarn(COMPONENT_NAME, 'model is required for validate to work.')\n }\n return hasModel\n})\n\nconst obtainValidateFields = (props: Arrayable<FormItemProp>) => {\n if (fields.length === 0) return []\n\n const filteredFields = filterFields(fields, props)\n if (!filteredFields.length) {\n debugWarn(COMPONENT_NAME, 'please pass correct props!')\n return []\n }\n return filteredFields\n}\n\nconst validate = async (\n callback?: FormValidateCallback\n): FormValidationResult => validateField(undefined, callback)\n\nconst doValidateField = async (\n props: Arrayable<FormItemProp> = []\n): Promise<boolean> => {\n if (!isValidatable.value) return false\n\n const fields = obtainValidateFields(props)\n if (fields.length === 0) return true\n\n let validationErrors: ValidateFieldsError = {}\n for (const field of fields) {\n try {\n await field.validate('')\n if (field.validateState === 'error' && !field.error) field.resetField()\n } catch (fields) {\n validationErrors = {\n ...validationErrors,\n ...(fields as ValidateFieldsError),\n }\n }\n }\n\n if (Object.keys(validationErrors).length === 0) return true\n return Promise.reject(validationErrors)\n}\n\nconst validateField: FormContext['validateField'] = async (\n modelProps = [],\n callback\n) => {\n let result = false\n const shouldThrow = !isFunction(callback)\n try {\n result = await doValidateField(modelProps)\n // When result is false meaning that the fields are not validatable\n if (result === true) {\n await callback?.(result)\n }\n return result\n } catch (e) {\n if (e instanceof Error) throw e\n\n const invalidFields = e as ValidateFieldsError\n\n if (props.scrollToError) {\n // form-item may be dynamically rendered based on the judgment conditions, and the order in invalidFields is uncertain.\n // Therefore, the first form field with an error is determined by directly looking for the rendered element.\n if (formRef.value) {\n const formItem = formRef.value.querySelector(`.${ns.b()}-item.is-error`)\n formItem?.scrollIntoView(props.scrollIntoViewOptions)\n }\n }\n !result && (await callback?.(false, invalidFields))\n return shouldThrow && Promise.reject(invalidFields)\n }\n}\n\nconst scrollToField = (prop: FormItemProp) => {\n const field = getField(prop)\n if (field) {\n field.$el?.scrollIntoView(props.scrollIntoViewOptions)\n }\n}\n\nwatch(\n () => props.rules,\n () => {\n if (props.validateOnRuleChange) {\n validate().catch((err) => debugWarn(err))\n }\n },\n { deep: true, flush: 'post' }\n)\n\nprovide(\n formContextKey,\n reactive({\n ...toRefs(props),\n emit,\n\n resetFields,\n clearValidate,\n validateField,\n getField,\n addField,\n removeField,\n setInitialValues,\n\n ...useFormLabelWidth(),\n })\n)\n\ndefineExpose({\n /**\n * @description Validate the whole form. Receives a callback or returns `Promise`.\n */\n validate,\n /**\n * @description Validate specified fields.\n */\n validateField,\n /**\n * @description Reset specified fields and remove validation result.\n */\n resetFields,\n /**\n * @description Clear validation message for specified fields.\n */\n clearValidate,\n /**\n * @description Scroll to the specified fields.\n */\n scrollToField,\n /**\n * @description Get a field context.\n */\n getField,\n /**\n * @description All fields context.\n */\n fields,\n /**\n * @description Set initial values for form fields. When `resetFields` is called, fields will reset to these values.\n */\n setInitialValues,\n})\n</script>\n"],"mappings":""}
1
+ {"version":3,"file":"form2.js","names":[],"sources":["../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<template>\n <form ref=\"formRef\" :class=\"formClasses\">\n <slot />\n </form>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, reactive, ref, toRefs, watch } from 'vue'\nimport { cloneDeep } from 'lodash-unified'\nimport {\n debugWarn,\n ensureArray,\n getProp,\n isArray,\n isFunction,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useFormSize } from './hooks'\nimport { formContextKey } from './constants'\nimport { formEmits } from './form'\nimport { filterFields, useFormLabelWidth } from './utils'\n\nimport type { ValidateFieldsError } from 'async-validator'\nimport type { Arrayable } from '@element-plus/utils'\nimport type { FormProps } from './form'\nimport type {\n FormContext,\n FormItemContext,\n FormValidateCallback,\n FormValidationResult,\n} from './types'\nimport type { FormItemProp } from './form-item'\n\nconst COMPONENT_NAME = 'ElForm'\ndefineOptions({\n name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<FormProps>(), {\n labelPosition: 'right',\n requireAsteriskPosition: 'left',\n labelWidth: '',\n labelSuffix: '',\n showMessage: true,\n validateOnRuleChange: true,\n scrollIntoViewOptions: true,\n})\nconst emit = defineEmits(formEmits)\n\nconst formRef = ref<HTMLElement>()\nconst fields = reactive<FormItemContext[]>([])\nconst initialValues = new Map<string, any>()\n\nconst formSize = useFormSize()\nconst ns = useNamespace('form')\nconst formClasses = computed(() => {\n const { labelPosition, inline } = props\n return [\n ns.b(),\n ns.m(formSize.value || 'default'),\n {\n [ns.m(`label-${labelPosition}`)]: labelPosition,\n [ns.m('inline')]: inline,\n },\n ]\n})\n\nconst getField: FormContext['getField'] = (prop) => {\n return filterFields(fields, [prop])[0]\n}\n\nconst addField: FormContext['addField'] = (field) => {\n if (!fields.includes(field)) {\n fields.push(field)\n }\n if (field.propString) {\n if (initialValues.has(field.propString)) {\n field.setInitialValue(initialValues.get(field.propString))\n } else {\n initialValues.set(field.propString, cloneDeep(field.fieldValue))\n }\n }\n}\n\nconst removeField: FormContext['removeField'] = (field, oldPropString?) => {\n if (oldPropString) {\n // Prop changed on a live field: delete stale key, field stays in fields[]\n initialValues.delete(oldPropString)\n return\n }\n // Unmount: splice from array, cache initialValue for potential remount\n const idx = fields.indexOf(field)\n if (idx > -1) {\n fields.splice(idx, 1)\n if (field.propString) {\n initialValues.set(field.propString, cloneDeep(field.getInitialValue()))\n }\n }\n}\n\nconst setInitialValues: FormContext['setInitialValues'] = (initModel) => {\n if (!props.model) {\n debugWarn(COMPONENT_NAME, 'model is required for setInitialValues to work.')\n return\n }\n if (!initModel) {\n debugWarn(\n COMPONENT_NAME,\n 'initModel is required for setInitialValues to work.'\n )\n return\n }\n\n for (const key of initialValues.keys()) {\n initialValues.set(key, cloneDeep(getProp(initModel, key).value))\n }\n fields.forEach((field) => {\n if (field.prop) {\n field.setInitialValue(getProp(initModel, field.prop).value)\n }\n })\n}\n\nconst resetFields: FormContext['resetFields'] = (properties = []) => {\n if (!props.model) {\n debugWarn(COMPONENT_NAME, 'model is required for resetFields to work.')\n return\n }\n\n filterFields(fields, properties).forEach((field) => field.resetField())\n\n const activePropStrings = new Set(\n fields.map((f) => f.propString).filter(Boolean)\n )\n const propsToCheck =\n properties.length > 0\n ? ensureArray(properties).map((p) => (isArray(p) ? p.join('.') : p))\n : [...initialValues.keys()]\n\n for (const propString of propsToCheck) {\n if (!activePropStrings.has(propString) && initialValues.has(propString)) {\n getProp(props.model, propString).value = cloneDeep(\n initialValues.get(propString)\n )\n }\n }\n}\n\nconst clearValidate: FormContext['clearValidate'] = (props = []) => {\n filterFields(fields, props).forEach((field) => field.clearValidate())\n}\n\nconst isValidatable = computed(() => {\n const hasModel = !!props.model\n if (!hasModel) {\n debugWarn(COMPONENT_NAME, 'model is required for validate to work.')\n }\n return hasModel\n})\n\nconst obtainValidateFields = (props: Arrayable<FormItemProp>) => {\n if (fields.length === 0) return []\n\n const filteredFields = filterFields(fields, props)\n if (!filteredFields.length) {\n debugWarn(COMPONENT_NAME, 'please pass correct props!')\n return []\n }\n return filteredFields\n}\n\nconst validate = async (\n callback?: FormValidateCallback\n): FormValidationResult => validateField(undefined, callback)\n\nconst doValidateField = async (\n props: Arrayable<FormItemProp> = []\n): Promise<boolean> => {\n if (!isValidatable.value) return false\n\n const fields = obtainValidateFields(props)\n if (fields.length === 0) return true\n\n let validationErrors: ValidateFieldsError = {}\n for (const field of fields) {\n try {\n await field.validate('')\n if (field.validateState === 'error' && !field.error) field.resetField()\n } catch (fields) {\n validationErrors = {\n ...validationErrors,\n ...(fields as ValidateFieldsError),\n }\n }\n }\n\n if (Object.keys(validationErrors).length === 0) return true\n return Promise.reject(validationErrors)\n}\n\nconst validateField: FormContext['validateField'] = async (\n modelProps = [],\n callback\n) => {\n let result = false\n const shouldThrow = !isFunction(callback)\n try {\n result = await doValidateField(modelProps)\n // When result is false meaning that the fields are not validatable\n if (result === true) {\n await callback?.(result)\n }\n return result\n } catch (e) {\n if (e instanceof Error) throw e\n\n const invalidFields = e as ValidateFieldsError\n\n if (props.scrollToError) {\n // form-item may be dynamically rendered based on the judgment conditions, and the order in invalidFields is uncertain.\n // Therefore, the first form field with an error is determined by directly looking for the rendered element.\n if (formRef.value) {\n const formItem = formRef.value.querySelector(`.${ns.b()}-item.is-error`)\n formItem?.scrollIntoView(props.scrollIntoViewOptions)\n }\n }\n !result && (await callback?.(false, invalidFields))\n return shouldThrow && Promise.reject(invalidFields)\n }\n}\n\nconst scrollToField = (prop: FormItemProp) => {\n const field = getField(prop)\n if (field) {\n field.$el?.scrollIntoView(props.scrollIntoViewOptions)\n }\n}\n\nwatch(\n () => props.rules,\n () => {\n if (props.validateOnRuleChange) {\n validate().catch((err) => debugWarn(err))\n }\n },\n { deep: true, flush: 'post' }\n)\n\nprovide(\n formContextKey,\n reactive({\n ...toRefs(props),\n emit,\n\n resetFields,\n clearValidate,\n validateField,\n getField,\n addField,\n removeField,\n setInitialValues,\n\n ...useFormLabelWidth(),\n })\n)\n\ndefineExpose({\n /**\n * @description Validate the whole form. Receives a callback or returns `Promise`.\n */\n validate,\n /**\n * @description Validate specified fields.\n */\n validateField,\n /**\n * @description Reset specified fields and remove validation result.\n */\n resetFields,\n /**\n * @description Clear validation message for specified fields.\n */\n clearValidate,\n /**\n * @description Scroll to the specified fields.\n */\n scrollToField,\n /**\n * @description Get a field context.\n */\n getField,\n /**\n * @description All fields context.\n */\n fields,\n /**\n * @description Set initial values for form fields. When `resetFields` is called, fields will reset to these values.\n */\n setInitialValues,\n})\n</script>\n"],"mappings":""}
@@ -25,7 +25,7 @@ type FormContext = FormProps & UnwrapRef<FormLabelWidthContext> & {
25
25
  emit: SetupContext<FormEmits>['emit'];
26
26
  getField: (prop: FormItemProp) => FormItemContext | undefined;
27
27
  addField: (field: FormItemContext) => void;
28
- removeField: (field: FormItemContext) => void;
28
+ removeField: (field: FormItemContext, oldPropString?: string) => void;
29
29
  resetFields: (props?: Arrayable<FormItemProp>) => void;
30
30
  setInitialValues: (initModel: Record<string, any>) => void;
31
31
  clearValidate: (props?: Arrayable<FormItemProp>) => void;
@@ -48,6 +48,7 @@ interface FormItemContext extends FormItemProps {
48
48
  resetField(): void;
49
49
  clearValidate(): void;
50
50
  setInitialValue: (value: any) => void;
51
+ getInitialValue: () => any;
51
52
  }
52
53
  //#endregion
53
54
  export { FormContext, FormItemContext, FormItemRule, FormLabelWidthContext, FormRules, FormValidateCallback, FormValidateFailure, FormValidationResult };
@@ -6,9 +6,7 @@ declare var __VLS_1: {};
6
6
  type __VLS_Slots = {} & {
7
7
  default?: (props: typeof __VLS_1) => any;
8
8
  };
9
- declare const __VLS_base: vue.DefineComponent<IconProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<IconProps> & Readonly<{}>, {
10
- size: number | string;
11
- }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
9
+ declare const __VLS_base: vue.DefineComponent<IconProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
12
10
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
13
11
  declare const _default: typeof __VLS_export;
14
12
  type __VLS_WithSlots<T, S> = T & {
@@ -1 +1 @@
1
- {"version":3,"file":"icon.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../../../packages/components/icon/src/icon.vue"],"sourcesContent":["<template>\n <i :class=\"ns.b()\" :style=\"style\" v-bind=\"$attrs\">\n <slot />\n </i>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { addUnit } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\nimport type { IconProps } from './icon'\n\ndefineOptions({\n name: 'ElIcon',\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<IconProps>(), {\n size: undefined,\n})\nconst ns = useNamespace('icon')\n\nconst style = computed<CSSProperties>(() => {\n const { size, color } = props\n const fontSize = addUnit(size)\n if (!fontSize && !color) return {}\n\n return {\n fontSize,\n '--color': color,\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkBA,MAAM,QAAQ;EAGd,MAAM,KAAK,2BAAa,OAAM;EAE9B,MAAM,gCAAsC;GAC1C,MAAM,EAAE,MAAM,UAAU;GACxB,MAAM,WAAW,sBAAQ,KAAI;AAC7B,OAAI,CAAC,YAAY,CAAC,MAAO,QAAO,EAAC;AAEjC,UAAO;IACL;IACA,WAAW;IACb;IACD;;4DA7BK,yBAAA;IAFA,sBAAO,GAAE,CAAC,GAAC;IAAK,OAAO,MAAA;MAAeA,KAAAA,OAAM,EAAA,qBACtC,KAAA,QAAA,UAAA"}
1
+ {"version":3,"file":"icon.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../../../packages/components/icon/src/icon.vue"],"sourcesContent":["<template>\n <i :class=\"ns.b()\" :style=\"style\" v-bind=\"$attrs\">\n <slot />\n </i>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { addUnit } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\nimport type { IconProps } from './icon'\n\ndefineOptions({\n name: 'ElIcon',\n inheritAttrs: false,\n})\nconst props = defineProps<IconProps>()\nconst ns = useNamespace('icon')\n\nconst style = computed<CSSProperties>(() => {\n const { size, color } = props\n const fontSize = addUnit(size)\n if (!fontSize && !color) return {}\n\n return {\n fontSize,\n '--color': color,\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkBA,MAAM,QAAQ;EACd,MAAM,KAAK,2BAAa,OAAM;EAE9B,MAAM,gCAAsC;GAC1C,MAAM,EAAE,MAAM,UAAU;GACxB,MAAM,WAAW,sBAAQ,KAAI;AAC7B,OAAI,CAAC,YAAY,CAAC,MAAO,QAAO,EAAC;AAEjC,UAAO;IACL;IACA,WAAW;IACb;IACD;;4DA3BK,yBAAA;IAFA,sBAAO,GAAE,CAAC,GAAC;IAAK,OAAO,MAAA;MAAeA,KAAAA,OAAM,EAAA,qBACtC,KAAA,QAAA,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"icon2.js","names":[],"sources":["../../../../../../packages/components/icon/src/icon.vue"],"sourcesContent":["<template>\n <i :class=\"ns.b()\" :style=\"style\" v-bind=\"$attrs\">\n <slot />\n </i>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { addUnit } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\nimport type { IconProps } from './icon'\n\ndefineOptions({\n name: 'ElIcon',\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<IconProps>(), {\n size: undefined,\n})\nconst ns = useNamespace('icon')\n\nconst style = computed<CSSProperties>(() => {\n const { size, color } = props\n const fontSize = addUnit(size)\n if (!fontSize && !color) return {}\n\n return {\n fontSize,\n '--color': color,\n }\n})\n</script>\n"],"mappings":""}
1
+ {"version":3,"file":"icon2.js","names":[],"sources":["../../../../../../packages/components/icon/src/icon.vue"],"sourcesContent":["<template>\n <i :class=\"ns.b()\" :style=\"style\" v-bind=\"$attrs\">\n <slot />\n </i>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { addUnit } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\nimport type { IconProps } from './icon'\n\ndefineOptions({\n name: 'ElIcon',\n inheritAttrs: false,\n})\nconst props = defineProps<IconProps>()\nconst ns = useNamespace('icon')\n\nconst style = computed<CSSProperties>(() => {\n const { size, color } = props\n const fontSize = addUnit(size)\n if (!fontSize && !color) return {}\n\n return {\n fontSize,\n '--color': color,\n }\n})\n</script>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"trigger.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../../../packages/components/popper/src/trigger.vue"],"sourcesContent":["<template>\n <el-only-child\n v-if=\"!virtualTriggering\"\n v-bind=\"$attrs\"\n :aria-controls=\"ariaControls\"\n :aria-describedby=\"ariaDescribedby\"\n :aria-expanded=\"ariaExpanded\"\n :aria-haspopup=\"ariaHaspopup\"\n >\n <slot />\n </el-only-child>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { unrefElement } from '@vueuse/core'\nimport { ElOnlyChild } from '@element-plus/components/slot'\nimport { useForwardRef } from '@element-plus/hooks'\nimport { isElement, isFocusable } from '@element-plus/utils'\nimport { POPPER_INJECTION_KEY } from './constants'\n\nimport type { WatchStopHandle } from 'vue'\nimport type { PopperTriggerProps } from './trigger'\n\ndefineOptions({\n name: 'ElPopperTrigger',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<PopperTriggerProps>(), {})\n\nconst { role, triggerRef } = inject(POPPER_INJECTION_KEY, undefined)!\n\nuseForwardRef(triggerRef)\n\nconst ariaControls = computed<string | undefined>(() => {\n return ariaHaspopup.value ? props.id : undefined\n})\n\nconst ariaDescribedby = computed<string | undefined>(() => {\n if (role && role.value === 'tooltip') {\n return props.open && props.id ? props.id : undefined\n }\n return undefined\n})\n\nconst ariaHaspopup = computed<string | undefined>(() => {\n if (role && role.value !== 'tooltip') {\n return role.value\n }\n return undefined\n})\n\nconst ariaExpanded = computed<string | undefined>(() => {\n return ariaHaspopup.value ? `${props.open}` : undefined\n})\n\nlet virtualTriggerAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst TRIGGER_ELE_EVENTS = [\n 'onMouseenter',\n 'onMouseleave',\n 'onClick',\n 'onKeydown',\n 'onFocus',\n 'onBlur',\n 'onContextmenu',\n] as const\n\nonMounted(() => {\n watch(\n () => props.virtualRef,\n (virtualEl) => {\n if (virtualEl) {\n triggerRef.value = unrefElement(virtualEl as HTMLElement)\n }\n },\n {\n immediate: true,\n }\n )\n\n watch(\n triggerRef,\n (el, prevEl) => {\n virtualTriggerAriaStopWatch?.()\n virtualTriggerAriaStopWatch = undefined\n\n if (isElement(prevEl)) {\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // @ts-ignore\n ;(prevEl as HTMLElement).removeEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n }\n if (isElement(el)) {\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // It's not worth doing type gymnastics here\n // @ts-ignore\n ;(el as HTMLElement).addEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n if (isFocusable(el as HTMLElement)) {\n virtualTriggerAriaStopWatch = watch(\n [ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded],\n (watches) => {\n ;[\n 'aria-controls',\n 'aria-describedby',\n 'aria-haspopup',\n 'aria-expanded',\n ].forEach((key, idx) => {\n isNil(watches[idx])\n ? el.removeAttribute(key)\n : el.setAttribute(key, watches[idx]!)\n })\n },\n { immediate: true }\n )\n }\n }\n if (isElement(prevEl) && isFocusable(prevEl as HTMLElement)) {\n ;[\n 'aria-controls',\n 'aria-describedby',\n 'aria-haspopup',\n 'aria-expanded',\n ].forEach((key) => prevEl.removeAttribute(key))\n }\n },\n {\n immediate: true,\n }\n )\n})\n\nonBeforeUnmount(() => {\n virtualTriggerAriaStopWatch?.()\n virtualTriggerAriaStopWatch = undefined\n if (triggerRef.value && isElement(triggerRef.value)) {\n const el = triggerRef.value as HTMLElement\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // @ts-ignore\n el.removeEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n triggerRef.value = undefined\n }\n})\n\ndefineExpose({\n /**\n * @description trigger element\n */\n triggerRef,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EA8BA,MAAM,QAAQ;EAEd,MAAM,EAAE,MAAM,+BAAsB,wCAAsB,OAAU;AAEpE,8BAAc,WAAU;EAExB,MAAM,uCAAkD;AACtD,UAAO,aAAa,QAAQ,MAAM,KAAK;IACxC;EAED,MAAM,0CAAqD;AACzD,OAAI,QAAQ,KAAK,UAAU,UACzB,QAAO,MAAM,QAAQ,MAAM,KAAK,MAAM,KAAK;IAG9C;EAED,MAAM,uCAAkD;AACtD,OAAI,QAAQ,KAAK,UAAU,UACzB,QAAO,KAAK;IAGf;EAED,MAAM,uCAAkD;AACtD,UAAO,aAAa,QAAQ,GAAG,MAAM,SAAS;IAC/C;EAED,IAAI,8BAA2D;EAE/D,MAAM,qBAAqB;GACzB;GACA;GACA;GACA;GACA;GACA;GACA;GACD;AAED,2BAAgB;AACd,wBACQ,MAAM,aACX,cAAc;AACb,QAAI,UACF,YAAW,uCAAqB,UAAwB;MAG5D,EACE,WAAW,MACb,CACF;AAEA,kBACE,aACC,IAAI,WAAW;AACd,mCAA8B;AAC9B,kCAA8B;AAE9B,QAAI,wBAAU,OAAO,CACnB,oBAAmB,SAAS,cAAc;KACxC,MAAM,UAAU,MAAM;AACtB,SAAI,QAED,CAAC,OAAuB,oBACvB,UAAU,MAAM,EAAE,CAAC,aAAa,EAChC,SACA,CAAC,WAAW,SAAS,CAAC,SAAS,UAAS,CAC1C;MAEH;AAEH,QAAI,wBAAU,GAAG,EAAE;AACjB,wBAAmB,SAAS,cAAc;MACxC,MAAM,UAAU,MAAM;AACtB,UAAI,QAGD,CAAC,GAAmB,iBACnB,UAAU,MAAM,EAAE,CAAC,aAAa,EAChC,SACA,CAAC,WAAW,SAAS,CAAC,SAAS,UAAS,CAC1C;OAEH;AACD,SAAI,yBAAY,GAAkB,CAChC,8CACE;MAAC;MAAc;MAAiB;MAAc;MAAa,GAC1D,YAAY;AACV;OACC;OACA;OACA;OACA;OACD,CAAC,SAAS,KAAK,QAAQ;AACtB,iCAAM,QAAQ,KAAI,GACd,GAAG,gBAAgB,IAAG,GACtB,GAAG,aAAa,KAAK,QAAQ,KAAK;QACvC;QAEH,EAAE,WAAW,MAAK,CACpB;;AAGJ,QAAI,wBAAU,OAAO,IAAI,yBAAY,OAAsB,CACxD;KACC;KACA;KACA;KACA;KACD,CAAC,SAAS,QAAQ,OAAO,gBAAgB,IAAI,CAAA;MAGlD,EACE,WAAW,MACb,CACF;IACD;AAED,iCAAsB;AACpB,kCAA8B;AAC9B,iCAA8B;AAC9B,OAAI,WAAW,SAAS,wBAAU,WAAW,MAAM,EAAE;IACnD,MAAM,KAAK,WAAW;AACtB,uBAAmB,SAAS,cAAc;KACxC,MAAM,UAAU,MAAM;AACtB,SAAI,QAEF,IAAG,oBACD,UAAU,MAAM,EAAE,CAAC,aAAa,EAChC,SACA,CAAC,WAAW,SAAS,CAAC,SAAS,UAAS,CAC1C;MAEH;AACD,eAAW,QAAQ;;IAEtB;AAED,WAAa,EAIX,YACD,CAAA;;WA5KU,QAAA,+EAQO,6BAAA,sBAAA,EAAA,KAAA,GAAA,EAPNA,KAAAA,QAAM;IACb,iBAAe,aAAA;IACf,oBAAkB,gBAAA;IAClB,iBAAe,aAAA;IACf,iBAAe,aAAA;;oCAER,qBAAA,KAAA,QAAA,UAAA"}
1
+ {"version":3,"file":"trigger.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../../../packages/components/popper/src/trigger.vue"],"sourcesContent":["<template>\n <el-only-child\n v-if=\"!virtualTriggering\"\n v-bind=\"$attrs\"\n :aria-controls=\"ariaControls\"\n :aria-describedby=\"ariaDescribedby\"\n :aria-expanded=\"ariaExpanded\"\n :aria-haspopup=\"ariaHaspopup\"\n >\n <slot />\n </el-only-child>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { unrefElement } from '@vueuse/core'\nimport { ElOnlyChild } from '@element-plus/components/slot'\nimport { useForwardRef } from '@element-plus/hooks'\nimport { isElement, isFocusable } from '@element-plus/utils'\nimport { POPPER_INJECTION_KEY } from './constants'\n\nimport type { WatchStopHandle } from 'vue'\nimport type { PopperTriggerProps } from './trigger'\n\ndefineOptions({\n name: 'ElPopperTrigger',\n inheritAttrs: false,\n})\n\nconst props = defineProps<PopperTriggerProps>()\n\nconst { role, triggerRef } = inject(POPPER_INJECTION_KEY, undefined)!\n\nuseForwardRef(triggerRef)\n\nconst ariaControls = computed<string | undefined>(() => {\n return ariaHaspopup.value ? props.id : undefined\n})\n\nconst ariaDescribedby = computed<string | undefined>(() => {\n if (role && role.value === 'tooltip') {\n return props.open && props.id ? props.id : undefined\n }\n return undefined\n})\n\nconst ariaHaspopup = computed<string | undefined>(() => {\n if (role && role.value !== 'tooltip') {\n return role.value\n }\n return undefined\n})\n\nconst ariaExpanded = computed<string | undefined>(() => {\n return ariaHaspopup.value ? `${props.open}` : undefined\n})\n\nlet virtualTriggerAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst TRIGGER_ELE_EVENTS = [\n 'onMouseenter',\n 'onMouseleave',\n 'onClick',\n 'onKeydown',\n 'onFocus',\n 'onBlur',\n 'onContextmenu',\n] as const\n\nonMounted(() => {\n watch(\n () => props.virtualRef,\n (virtualEl) => {\n if (virtualEl) {\n triggerRef.value = unrefElement(virtualEl as HTMLElement)\n }\n },\n {\n immediate: true,\n }\n )\n\n watch(\n triggerRef,\n (el, prevEl) => {\n virtualTriggerAriaStopWatch?.()\n virtualTriggerAriaStopWatch = undefined\n\n if (isElement(prevEl)) {\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // @ts-ignore\n ;(prevEl as HTMLElement).removeEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n }\n if (isElement(el)) {\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // It's not worth doing type gymnastics here\n // @ts-ignore\n ;(el as HTMLElement).addEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n if (isFocusable(el as HTMLElement)) {\n virtualTriggerAriaStopWatch = watch(\n [ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded],\n (watches) => {\n ;[\n 'aria-controls',\n 'aria-describedby',\n 'aria-haspopup',\n 'aria-expanded',\n ].forEach((key, idx) => {\n isNil(watches[idx])\n ? el.removeAttribute(key)\n : el.setAttribute(key, watches[idx]!)\n })\n },\n { immediate: true }\n )\n }\n }\n if (isElement(prevEl) && isFocusable(prevEl as HTMLElement)) {\n ;[\n 'aria-controls',\n 'aria-describedby',\n 'aria-haspopup',\n 'aria-expanded',\n ].forEach((key) => prevEl.removeAttribute(key))\n }\n },\n {\n immediate: true,\n }\n )\n})\n\nonBeforeUnmount(() => {\n virtualTriggerAriaStopWatch?.()\n virtualTriggerAriaStopWatch = undefined\n if (triggerRef.value && isElement(triggerRef.value)) {\n const el = triggerRef.value as HTMLElement\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // @ts-ignore\n el.removeEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n triggerRef.value = undefined\n }\n})\n\ndefineExpose({\n /**\n * @description trigger element\n */\n triggerRef,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EA8BA,MAAM,QAAQ;EAEd,MAAM,EAAE,MAAM,+BAAsB,wCAAsB,OAAU;AAEpE,8BAAc,WAAU;EAExB,MAAM,uCAAkD;AACtD,UAAO,aAAa,QAAQ,MAAM,KAAK;IACxC;EAED,MAAM,0CAAqD;AACzD,OAAI,QAAQ,KAAK,UAAU,UACzB,QAAO,MAAM,QAAQ,MAAM,KAAK,MAAM,KAAK;IAG9C;EAED,MAAM,uCAAkD;AACtD,OAAI,QAAQ,KAAK,UAAU,UACzB,QAAO,KAAK;IAGf;EAED,MAAM,uCAAkD;AACtD,UAAO,aAAa,QAAQ,GAAG,MAAM,SAAS;IAC/C;EAED,IAAI,8BAA2D;EAE/D,MAAM,qBAAqB;GACzB;GACA;GACA;GACA;GACA;GACA;GACA;GACD;AAED,2BAAgB;AACd,wBACQ,MAAM,aACX,cAAc;AACb,QAAI,UACF,YAAW,uCAAqB,UAAwB;MAG5D,EACE,WAAW,MACb,CACF;AAEA,kBACE,aACC,IAAI,WAAW;AACd,mCAA8B;AAC9B,kCAA8B;AAE9B,QAAI,wBAAU,OAAO,CACnB,oBAAmB,SAAS,cAAc;KACxC,MAAM,UAAU,MAAM;AACtB,SAAI,QAED,CAAC,OAAuB,oBACvB,UAAU,MAAM,EAAE,CAAC,aAAa,EAChC,SACA,CAAC,WAAW,SAAS,CAAC,SAAS,UAAS,CAC1C;MAEH;AAEH,QAAI,wBAAU,GAAG,EAAE;AACjB,wBAAmB,SAAS,cAAc;MACxC,MAAM,UAAU,MAAM;AACtB,UAAI,QAGD,CAAC,GAAmB,iBACnB,UAAU,MAAM,EAAE,CAAC,aAAa,EAChC,SACA,CAAC,WAAW,SAAS,CAAC,SAAS,UAAS,CAC1C;OAEH;AACD,SAAI,yBAAY,GAAkB,CAChC,8CACE;MAAC;MAAc;MAAiB;MAAc;MAAa,GAC1D,YAAY;AACV;OACC;OACA;OACA;OACA;OACD,CAAC,SAAS,KAAK,QAAQ;AACtB,iCAAM,QAAQ,KAAI,GACd,GAAG,gBAAgB,IAAG,GACtB,GAAG,aAAa,KAAK,QAAQ,KAAK;QACvC;QAEH,EAAE,WAAW,MAAK,CACpB;;AAGJ,QAAI,wBAAU,OAAO,IAAI,yBAAY,OAAsB,CACxD;KACC;KACA;KACA;KACA;KACD,CAAC,SAAS,QAAQ,OAAO,gBAAgB,IAAI,CAAA;MAGlD,EACE,WAAW,MACb,CACF;IACD;AAED,iCAAsB;AACpB,kCAA8B;AAC9B,iCAA8B;AAC9B,OAAI,WAAW,SAAS,wBAAU,WAAW,MAAM,EAAE;IACnD,MAAM,KAAK,WAAW;AACtB,uBAAmB,SAAS,cAAc;KACxC,MAAM,UAAU,MAAM;AACtB,SAAI,QAEF,IAAG,oBACD,UAAU,MAAM,EAAE,CAAC,aAAa,EAChC,SACA,CAAC,WAAW,SAAS,CAAC,SAAS,UAAS,CAC1C;MAEH;AACD,eAAW,QAAQ;;IAEtB;AAED,WAAa,EAIX,YACD,CAAA;;WA5KU,QAAA,+EAQO,6BAAA,sBAAA,EAAA,KAAA,GAAA,EAPNA,KAAAA,QAAM;IACb,iBAAe,aAAA;IACf,oBAAkB,gBAAA;IAClB,iBAAe,aAAA;IACf,iBAAe,aAAA;;oCAER,qBAAA,KAAA,QAAA,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"trigger2.js","names":[],"sources":["../../../../../../packages/components/popper/src/trigger.vue"],"sourcesContent":["<template>\n <el-only-child\n v-if=\"!virtualTriggering\"\n v-bind=\"$attrs\"\n :aria-controls=\"ariaControls\"\n :aria-describedby=\"ariaDescribedby\"\n :aria-expanded=\"ariaExpanded\"\n :aria-haspopup=\"ariaHaspopup\"\n >\n <slot />\n </el-only-child>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { unrefElement } from '@vueuse/core'\nimport { ElOnlyChild } from '@element-plus/components/slot'\nimport { useForwardRef } from '@element-plus/hooks'\nimport { isElement, isFocusable } from '@element-plus/utils'\nimport { POPPER_INJECTION_KEY } from './constants'\n\nimport type { WatchStopHandle } from 'vue'\nimport type { PopperTriggerProps } from './trigger'\n\ndefineOptions({\n name: 'ElPopperTrigger',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<PopperTriggerProps>(), {})\n\nconst { role, triggerRef } = inject(POPPER_INJECTION_KEY, undefined)!\n\nuseForwardRef(triggerRef)\n\nconst ariaControls = computed<string | undefined>(() => {\n return ariaHaspopup.value ? props.id : undefined\n})\n\nconst ariaDescribedby = computed<string | undefined>(() => {\n if (role && role.value === 'tooltip') {\n return props.open && props.id ? props.id : undefined\n }\n return undefined\n})\n\nconst ariaHaspopup = computed<string | undefined>(() => {\n if (role && role.value !== 'tooltip') {\n return role.value\n }\n return undefined\n})\n\nconst ariaExpanded = computed<string | undefined>(() => {\n return ariaHaspopup.value ? `${props.open}` : undefined\n})\n\nlet virtualTriggerAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst TRIGGER_ELE_EVENTS = [\n 'onMouseenter',\n 'onMouseleave',\n 'onClick',\n 'onKeydown',\n 'onFocus',\n 'onBlur',\n 'onContextmenu',\n] as const\n\nonMounted(() => {\n watch(\n () => props.virtualRef,\n (virtualEl) => {\n if (virtualEl) {\n triggerRef.value = unrefElement(virtualEl as HTMLElement)\n }\n },\n {\n immediate: true,\n }\n )\n\n watch(\n triggerRef,\n (el, prevEl) => {\n virtualTriggerAriaStopWatch?.()\n virtualTriggerAriaStopWatch = undefined\n\n if (isElement(prevEl)) {\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // @ts-ignore\n ;(prevEl as HTMLElement).removeEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n }\n if (isElement(el)) {\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // It's not worth doing type gymnastics here\n // @ts-ignore\n ;(el as HTMLElement).addEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n if (isFocusable(el as HTMLElement)) {\n virtualTriggerAriaStopWatch = watch(\n [ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded],\n (watches) => {\n ;[\n 'aria-controls',\n 'aria-describedby',\n 'aria-haspopup',\n 'aria-expanded',\n ].forEach((key, idx) => {\n isNil(watches[idx])\n ? el.removeAttribute(key)\n : el.setAttribute(key, watches[idx]!)\n })\n },\n { immediate: true }\n )\n }\n }\n if (isElement(prevEl) && isFocusable(prevEl as HTMLElement)) {\n ;[\n 'aria-controls',\n 'aria-describedby',\n 'aria-haspopup',\n 'aria-expanded',\n ].forEach((key) => prevEl.removeAttribute(key))\n }\n },\n {\n immediate: true,\n }\n )\n})\n\nonBeforeUnmount(() => {\n virtualTriggerAriaStopWatch?.()\n virtualTriggerAriaStopWatch = undefined\n if (triggerRef.value && isElement(triggerRef.value)) {\n const el = triggerRef.value as HTMLElement\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // @ts-ignore\n el.removeEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n triggerRef.value = undefined\n }\n})\n\ndefineExpose({\n /**\n * @description trigger element\n */\n triggerRef,\n})\n</script>\n"],"mappings":""}
1
+ {"version":3,"file":"trigger2.js","names":[],"sources":["../../../../../../packages/components/popper/src/trigger.vue"],"sourcesContent":["<template>\n <el-only-child\n v-if=\"!virtualTriggering\"\n v-bind=\"$attrs\"\n :aria-controls=\"ariaControls\"\n :aria-describedby=\"ariaDescribedby\"\n :aria-expanded=\"ariaExpanded\"\n :aria-haspopup=\"ariaHaspopup\"\n >\n <slot />\n </el-only-child>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { unrefElement } from '@vueuse/core'\nimport { ElOnlyChild } from '@element-plus/components/slot'\nimport { useForwardRef } from '@element-plus/hooks'\nimport { isElement, isFocusable } from '@element-plus/utils'\nimport { POPPER_INJECTION_KEY } from './constants'\n\nimport type { WatchStopHandle } from 'vue'\nimport type { PopperTriggerProps } from './trigger'\n\ndefineOptions({\n name: 'ElPopperTrigger',\n inheritAttrs: false,\n})\n\nconst props = defineProps<PopperTriggerProps>()\n\nconst { role, triggerRef } = inject(POPPER_INJECTION_KEY, undefined)!\n\nuseForwardRef(triggerRef)\n\nconst ariaControls = computed<string | undefined>(() => {\n return ariaHaspopup.value ? props.id : undefined\n})\n\nconst ariaDescribedby = computed<string | undefined>(() => {\n if (role && role.value === 'tooltip') {\n return props.open && props.id ? props.id : undefined\n }\n return undefined\n})\n\nconst ariaHaspopup = computed<string | undefined>(() => {\n if (role && role.value !== 'tooltip') {\n return role.value\n }\n return undefined\n})\n\nconst ariaExpanded = computed<string | undefined>(() => {\n return ariaHaspopup.value ? `${props.open}` : undefined\n})\n\nlet virtualTriggerAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst TRIGGER_ELE_EVENTS = [\n 'onMouseenter',\n 'onMouseleave',\n 'onClick',\n 'onKeydown',\n 'onFocus',\n 'onBlur',\n 'onContextmenu',\n] as const\n\nonMounted(() => {\n watch(\n () => props.virtualRef,\n (virtualEl) => {\n if (virtualEl) {\n triggerRef.value = unrefElement(virtualEl as HTMLElement)\n }\n },\n {\n immediate: true,\n }\n )\n\n watch(\n triggerRef,\n (el, prevEl) => {\n virtualTriggerAriaStopWatch?.()\n virtualTriggerAriaStopWatch = undefined\n\n if (isElement(prevEl)) {\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // @ts-ignore\n ;(prevEl as HTMLElement).removeEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n }\n if (isElement(el)) {\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // It's not worth doing type gymnastics here\n // @ts-ignore\n ;(el as HTMLElement).addEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n if (isFocusable(el as HTMLElement)) {\n virtualTriggerAriaStopWatch = watch(\n [ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded],\n (watches) => {\n ;[\n 'aria-controls',\n 'aria-describedby',\n 'aria-haspopup',\n 'aria-expanded',\n ].forEach((key, idx) => {\n isNil(watches[idx])\n ? el.removeAttribute(key)\n : el.setAttribute(key, watches[idx]!)\n })\n },\n { immediate: true }\n )\n }\n }\n if (isElement(prevEl) && isFocusable(prevEl as HTMLElement)) {\n ;[\n 'aria-controls',\n 'aria-describedby',\n 'aria-haspopup',\n 'aria-expanded',\n ].forEach((key) => prevEl.removeAttribute(key))\n }\n },\n {\n immediate: true,\n }\n )\n})\n\nonBeforeUnmount(() => {\n virtualTriggerAriaStopWatch?.()\n virtualTriggerAriaStopWatch = undefined\n if (triggerRef.value && isElement(triggerRef.value)) {\n const el = triggerRef.value as HTMLElement\n TRIGGER_ELE_EVENTS.forEach((eventName) => {\n const handler = props[eventName]\n if (handler) {\n // @ts-ignore\n el.removeEventListener(\n eventName.slice(2).toLowerCase(),\n handler,\n ['onFocus', 'onBlur'].includes(eventName)\n )\n }\n })\n triggerRef.value = undefined\n }\n})\n\ndefineExpose({\n /**\n * @description trigger element\n */\n triggerRef,\n})\n</script>\n"],"mappings":""}
@@ -889,24 +889,18 @@ declare const __VLS_export: vue.DefineComponent<vue.ExtractPropTypes<{
889
889
  };
890
890
  })>;
891
891
  ElIcon: SFCWithInstall<{
892
- new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {
893
- size: number | string;
894
- }, false, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
892
+ new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {}, false, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
895
893
  P: {};
896
894
  B: {};
897
895
  D: {};
898
896
  C: {};
899
897
  M: {};
900
898
  Defaults: {};
901
- }, Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, {
902
- size: number | string;
903
- }>;
899
+ }, Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, {}>;
904
900
  __isFragment?: never;
905
901
  __isTeleport?: never;
906
902
  __isSuspense?: never;
907
- } & vue.ComponentOptionsBase<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {
908
- size: number | string;
909
- }, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new () => {
903
+ } & vue.ComponentOptionsBase<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {}, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new () => {
910
904
  $slots: {
911
905
  default?: (props: {}) => any;
912
906
  };
@@ -870,24 +870,18 @@ declare const __VLS_export: vue.DefineComponent<vue.ExtractPropTypes<{
870
870
  };
871
871
  })>;
872
872
  ElIcon: SFCWithInstall<{
873
- new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {
874
- size: number | string;
875
- }, false, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
873
+ new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {}, false, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
876
874
  P: {};
877
875
  B: {};
878
876
  D: {};
879
877
  C: {};
880
878
  M: {};
881
879
  Defaults: {};
882
- }, Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, {
883
- size: number | string;
884
- }>;
880
+ }, Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, {}>;
885
881
  __isFragment?: never;
886
882
  __isTeleport?: never;
887
883
  __isSuspense?: never;
888
- } & vue.ComponentOptionsBase<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {
889
- size: number | string;
890
- }, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new () => {
884
+ } & vue.ComponentOptionsBase<Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {}, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new () => {
891
885
  $slots: {
892
886
  default?: (props: {}) => any;
893
887
  };