@element-plus/nightly 0.0.20260304 → 0.0.20260306

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 (358) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.css +1 -1
  3. package/dist/index.full.js +78 -27
  4. package/dist/index.full.min.js +8 -8
  5. package/dist/index.full.min.js.map +1 -1
  6. package/dist/index.full.min.mjs +8 -8
  7. package/dist/index.full.min.mjs.map +1 -1
  8. package/dist/index.full.mjs +79 -28
  9. package/dist/locale/af.js +1 -1
  10. package/dist/locale/af.min.js +1 -1
  11. package/dist/locale/af.min.mjs +1 -1
  12. package/dist/locale/af.mjs +1 -1
  13. package/dist/locale/ar-eg.js +1 -1
  14. package/dist/locale/ar-eg.min.js +1 -1
  15. package/dist/locale/ar-eg.min.mjs +1 -1
  16. package/dist/locale/ar-eg.mjs +1 -1
  17. package/dist/locale/ar.js +1 -1
  18. package/dist/locale/ar.min.js +1 -1
  19. package/dist/locale/ar.min.mjs +1 -1
  20. package/dist/locale/ar.mjs +1 -1
  21. package/dist/locale/az.js +1 -1
  22. package/dist/locale/az.min.js +1 -1
  23. package/dist/locale/az.min.mjs +1 -1
  24. package/dist/locale/az.mjs +1 -1
  25. package/dist/locale/bg.js +1 -1
  26. package/dist/locale/bg.min.js +1 -1
  27. package/dist/locale/bg.min.mjs +1 -1
  28. package/dist/locale/bg.mjs +1 -1
  29. package/dist/locale/bn.js +1 -1
  30. package/dist/locale/bn.min.js +1 -1
  31. package/dist/locale/bn.min.mjs +1 -1
  32. package/dist/locale/bn.mjs +1 -1
  33. package/dist/locale/ca.js +1 -1
  34. package/dist/locale/ca.min.js +1 -1
  35. package/dist/locale/ca.min.mjs +1 -1
  36. package/dist/locale/ca.mjs +1 -1
  37. package/dist/locale/ckb.js +1 -1
  38. package/dist/locale/ckb.min.js +1 -1
  39. package/dist/locale/ckb.min.mjs +1 -1
  40. package/dist/locale/ckb.mjs +1 -1
  41. package/dist/locale/cs.js +1 -1
  42. package/dist/locale/cs.min.js +1 -1
  43. package/dist/locale/cs.min.mjs +1 -1
  44. package/dist/locale/cs.mjs +1 -1
  45. package/dist/locale/da.js +1 -1
  46. package/dist/locale/da.min.js +1 -1
  47. package/dist/locale/da.min.mjs +1 -1
  48. package/dist/locale/da.mjs +1 -1
  49. package/dist/locale/de.js +1 -1
  50. package/dist/locale/de.min.js +1 -1
  51. package/dist/locale/de.min.mjs +1 -1
  52. package/dist/locale/de.mjs +1 -1
  53. package/dist/locale/el.js +1 -1
  54. package/dist/locale/el.min.js +1 -1
  55. package/dist/locale/el.min.mjs +1 -1
  56. package/dist/locale/el.mjs +1 -1
  57. package/dist/locale/en.js +1 -1
  58. package/dist/locale/en.min.js +1 -1
  59. package/dist/locale/en.min.mjs +1 -1
  60. package/dist/locale/en.mjs +1 -1
  61. package/dist/locale/eo.js +1 -1
  62. package/dist/locale/eo.min.js +1 -1
  63. package/dist/locale/eo.min.mjs +1 -1
  64. package/dist/locale/eo.mjs +1 -1
  65. package/dist/locale/es.js +1 -1
  66. package/dist/locale/es.min.js +1 -1
  67. package/dist/locale/es.min.mjs +1 -1
  68. package/dist/locale/es.mjs +1 -1
  69. package/dist/locale/et.js +1 -1
  70. package/dist/locale/et.min.js +1 -1
  71. package/dist/locale/et.min.mjs +1 -1
  72. package/dist/locale/et.mjs +1 -1
  73. package/dist/locale/eu.js +1 -1
  74. package/dist/locale/eu.min.js +1 -1
  75. package/dist/locale/eu.min.mjs +1 -1
  76. package/dist/locale/eu.mjs +1 -1
  77. package/dist/locale/fa.js +1 -1
  78. package/dist/locale/fa.min.js +1 -1
  79. package/dist/locale/fa.min.mjs +1 -1
  80. package/dist/locale/fa.mjs +1 -1
  81. package/dist/locale/fi.js +1 -1
  82. package/dist/locale/fi.min.js +1 -1
  83. package/dist/locale/fi.min.mjs +1 -1
  84. package/dist/locale/fi.mjs +1 -1
  85. package/dist/locale/fr.js +1 -1
  86. package/dist/locale/fr.min.js +1 -1
  87. package/dist/locale/fr.min.mjs +1 -1
  88. package/dist/locale/fr.mjs +1 -1
  89. package/dist/locale/he.js +1 -1
  90. package/dist/locale/he.min.js +1 -1
  91. package/dist/locale/he.min.mjs +1 -1
  92. package/dist/locale/he.mjs +1 -1
  93. package/dist/locale/hi.js +1 -1
  94. package/dist/locale/hi.min.js +1 -1
  95. package/dist/locale/hi.min.mjs +1 -1
  96. package/dist/locale/hi.mjs +1 -1
  97. package/dist/locale/hr.js +1 -1
  98. package/dist/locale/hr.min.js +1 -1
  99. package/dist/locale/hr.min.mjs +1 -1
  100. package/dist/locale/hr.mjs +1 -1
  101. package/dist/locale/hu.js +1 -1
  102. package/dist/locale/hu.min.js +1 -1
  103. package/dist/locale/hu.min.mjs +1 -1
  104. package/dist/locale/hu.mjs +1 -1
  105. package/dist/locale/hy-am.js +1 -1
  106. package/dist/locale/hy-am.min.js +1 -1
  107. package/dist/locale/hy-am.min.mjs +1 -1
  108. package/dist/locale/hy-am.mjs +1 -1
  109. package/dist/locale/id.js +1 -1
  110. package/dist/locale/id.min.js +1 -1
  111. package/dist/locale/id.min.mjs +1 -1
  112. package/dist/locale/id.mjs +1 -1
  113. package/dist/locale/it.js +1 -1
  114. package/dist/locale/it.min.js +1 -1
  115. package/dist/locale/it.min.mjs +1 -1
  116. package/dist/locale/it.mjs +1 -1
  117. package/dist/locale/ja.js +1 -1
  118. package/dist/locale/ja.min.js +1 -1
  119. package/dist/locale/ja.min.mjs +1 -1
  120. package/dist/locale/ja.mjs +1 -1
  121. package/dist/locale/kk.js +1 -1
  122. package/dist/locale/kk.min.js +1 -1
  123. package/dist/locale/kk.min.mjs +1 -1
  124. package/dist/locale/kk.mjs +1 -1
  125. package/dist/locale/km.js +1 -1
  126. package/dist/locale/km.min.js +1 -1
  127. package/dist/locale/km.min.mjs +1 -1
  128. package/dist/locale/km.mjs +1 -1
  129. package/dist/locale/ko.js +1 -1
  130. package/dist/locale/ko.min.js +1 -1
  131. package/dist/locale/ko.min.mjs +1 -1
  132. package/dist/locale/ko.mjs +1 -1
  133. package/dist/locale/ku.js +1 -1
  134. package/dist/locale/ku.min.js +1 -1
  135. package/dist/locale/ku.min.mjs +1 -1
  136. package/dist/locale/ku.mjs +1 -1
  137. package/dist/locale/ky.js +1 -1
  138. package/dist/locale/ky.min.js +1 -1
  139. package/dist/locale/ky.min.mjs +1 -1
  140. package/dist/locale/ky.mjs +1 -1
  141. package/dist/locale/lo.js +1 -1
  142. package/dist/locale/lo.min.js +1 -1
  143. package/dist/locale/lo.min.mjs +1 -1
  144. package/dist/locale/lo.mjs +1 -1
  145. package/dist/locale/lt.js +1 -1
  146. package/dist/locale/lt.min.js +1 -1
  147. package/dist/locale/lt.min.mjs +1 -1
  148. package/dist/locale/lt.mjs +1 -1
  149. package/dist/locale/lv.js +1 -1
  150. package/dist/locale/lv.min.js +1 -1
  151. package/dist/locale/lv.min.mjs +1 -1
  152. package/dist/locale/lv.mjs +1 -1
  153. package/dist/locale/mg.js +1 -1
  154. package/dist/locale/mg.min.js +1 -1
  155. package/dist/locale/mg.min.mjs +1 -1
  156. package/dist/locale/mg.mjs +1 -1
  157. package/dist/locale/mn.js +1 -1
  158. package/dist/locale/mn.min.js +1 -1
  159. package/dist/locale/mn.min.mjs +1 -1
  160. package/dist/locale/mn.mjs +1 -1
  161. package/dist/locale/ms.js +1 -1
  162. package/dist/locale/ms.min.js +1 -1
  163. package/dist/locale/ms.min.mjs +1 -1
  164. package/dist/locale/ms.mjs +1 -1
  165. package/dist/locale/my.js +1 -1
  166. package/dist/locale/my.min.js +1 -1
  167. package/dist/locale/my.min.mjs +1 -1
  168. package/dist/locale/my.mjs +1 -1
  169. package/dist/locale/nb-no.js +1 -1
  170. package/dist/locale/nb-no.min.js +1 -1
  171. package/dist/locale/nb-no.min.mjs +1 -1
  172. package/dist/locale/nb-no.mjs +1 -1
  173. package/dist/locale/nl.js +1 -1
  174. package/dist/locale/nl.min.js +1 -1
  175. package/dist/locale/nl.min.mjs +1 -1
  176. package/dist/locale/nl.mjs +1 -1
  177. package/dist/locale/no.js +1 -1
  178. package/dist/locale/no.min.js +1 -1
  179. package/dist/locale/no.min.mjs +1 -1
  180. package/dist/locale/no.mjs +1 -1
  181. package/dist/locale/pa.js +1 -1
  182. package/dist/locale/pa.min.js +1 -1
  183. package/dist/locale/pa.min.mjs +1 -1
  184. package/dist/locale/pa.mjs +1 -1
  185. package/dist/locale/pl.js +1 -1
  186. package/dist/locale/pl.min.js +1 -1
  187. package/dist/locale/pl.min.mjs +1 -1
  188. package/dist/locale/pl.mjs +1 -1
  189. package/dist/locale/pt-br.js +1 -1
  190. package/dist/locale/pt-br.min.js +1 -1
  191. package/dist/locale/pt-br.min.mjs +1 -1
  192. package/dist/locale/pt-br.mjs +1 -1
  193. package/dist/locale/pt.js +1 -1
  194. package/dist/locale/pt.min.js +1 -1
  195. package/dist/locale/pt.min.mjs +1 -1
  196. package/dist/locale/pt.mjs +1 -1
  197. package/dist/locale/ro.js +1 -1
  198. package/dist/locale/ro.min.js +1 -1
  199. package/dist/locale/ro.min.mjs +1 -1
  200. package/dist/locale/ro.mjs +1 -1
  201. package/dist/locale/ru.js +1 -1
  202. package/dist/locale/ru.min.js +1 -1
  203. package/dist/locale/ru.min.mjs +1 -1
  204. package/dist/locale/ru.mjs +1 -1
  205. package/dist/locale/sk.js +1 -1
  206. package/dist/locale/sk.min.js +1 -1
  207. package/dist/locale/sk.min.mjs +1 -1
  208. package/dist/locale/sk.mjs +1 -1
  209. package/dist/locale/sl.js +1 -1
  210. package/dist/locale/sl.min.js +1 -1
  211. package/dist/locale/sl.min.mjs +1 -1
  212. package/dist/locale/sl.mjs +1 -1
  213. package/dist/locale/sr.js +1 -1
  214. package/dist/locale/sr.min.js +1 -1
  215. package/dist/locale/sr.min.mjs +1 -1
  216. package/dist/locale/sr.mjs +1 -1
  217. package/dist/locale/sv.js +1 -1
  218. package/dist/locale/sv.min.js +1 -1
  219. package/dist/locale/sv.min.mjs +1 -1
  220. package/dist/locale/sv.mjs +1 -1
  221. package/dist/locale/sw.js +1 -1
  222. package/dist/locale/sw.min.js +1 -1
  223. package/dist/locale/sw.min.mjs +1 -1
  224. package/dist/locale/sw.mjs +1 -1
  225. package/dist/locale/ta.js +1 -1
  226. package/dist/locale/ta.min.js +1 -1
  227. package/dist/locale/ta.min.mjs +1 -1
  228. package/dist/locale/ta.mjs +1 -1
  229. package/dist/locale/te.js +1 -1
  230. package/dist/locale/te.min.js +1 -1
  231. package/dist/locale/te.min.mjs +1 -1
  232. package/dist/locale/te.mjs +1 -1
  233. package/dist/locale/th.js +1 -1
  234. package/dist/locale/th.min.js +1 -1
  235. package/dist/locale/th.min.mjs +1 -1
  236. package/dist/locale/th.mjs +1 -1
  237. package/dist/locale/tk.js +1 -1
  238. package/dist/locale/tk.min.js +1 -1
  239. package/dist/locale/tk.min.mjs +1 -1
  240. package/dist/locale/tk.mjs +1 -1
  241. package/dist/locale/tr.js +1 -1
  242. package/dist/locale/tr.min.js +1 -1
  243. package/dist/locale/tr.min.mjs +1 -1
  244. package/dist/locale/tr.mjs +1 -1
  245. package/dist/locale/ug-cn.js +1 -1
  246. package/dist/locale/ug-cn.min.js +1 -1
  247. package/dist/locale/ug-cn.min.mjs +1 -1
  248. package/dist/locale/ug-cn.mjs +1 -1
  249. package/dist/locale/uk.js +1 -1
  250. package/dist/locale/uk.min.js +1 -1
  251. package/dist/locale/uk.min.mjs +1 -1
  252. package/dist/locale/uk.mjs +1 -1
  253. package/dist/locale/uz-uz.js +1 -1
  254. package/dist/locale/uz-uz.min.js +1 -1
  255. package/dist/locale/uz-uz.min.mjs +1 -1
  256. package/dist/locale/uz-uz.mjs +1 -1
  257. package/dist/locale/vi.js +1 -1
  258. package/dist/locale/vi.min.js +1 -1
  259. package/dist/locale/vi.min.mjs +1 -1
  260. package/dist/locale/vi.mjs +1 -1
  261. package/dist/locale/zh-cn.js +1 -1
  262. package/dist/locale/zh-cn.min.js +1 -1
  263. package/dist/locale/zh-cn.min.mjs +1 -1
  264. package/dist/locale/zh-cn.mjs +1 -1
  265. package/dist/locale/zh-hk.js +1 -1
  266. package/dist/locale/zh-hk.min.js +1 -1
  267. package/dist/locale/zh-hk.min.mjs +1 -1
  268. package/dist/locale/zh-hk.mjs +1 -1
  269. package/dist/locale/zh-mo.js +1 -1
  270. package/dist/locale/zh-mo.min.js +1 -1
  271. package/dist/locale/zh-mo.min.mjs +1 -1
  272. package/dist/locale/zh-mo.mjs +1 -1
  273. package/dist/locale/zh-tw.js +1 -1
  274. package/dist/locale/zh-tw.min.js +1 -1
  275. package/dist/locale/zh-tw.min.mjs +1 -1
  276. package/dist/locale/zh-tw.mjs +1 -1
  277. package/es/components/calendar/style/css.mjs +1 -1
  278. package/es/components/calendar/style/index.mjs +1 -1
  279. package/es/components/date-picker/src/date-picker.d.ts +3 -0
  280. package/es/components/date-picker/src/props.d.ts +1 -0
  281. package/es/components/dropdown/style/css.mjs +1 -1
  282. package/es/components/dropdown/style/index.mjs +1 -1
  283. package/es/components/image/src/image.vue.d.ts +1 -1
  284. package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs +15 -2
  285. package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  286. package/es/components/input/src/input2.mjs.map +1 -1
  287. package/es/components/input-tag/src/input-tag.vue.d.ts +1 -1
  288. package/es/components/popover/src/popover.vue.d.ts +3 -1
  289. package/es/components/popover/src/popover.vue_vue_type_script_setup_true_lang.mjs +1 -1
  290. package/es/components/popover/src/popover.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  291. package/es/components/popover/src/popover2.mjs.map +1 -1
  292. package/es/components/time-picker/src/common/picker.mjs.map +1 -1
  293. package/es/components/time-picker/src/common/picker.vue.d.ts +3 -0
  294. package/es/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.mjs +5 -1
  295. package/es/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  296. package/es/components/time-picker/src/common/props.d.ts +2 -0
  297. package/es/components/time-picker/src/common/props.mjs +4 -0
  298. package/es/components/time-picker/src/common/props.mjs.map +1 -1
  299. package/es/components/time-picker/src/composables/use-common-picker.d.ts +1 -0
  300. package/es/components/time-picker/src/composables/use-time-picker.mjs +8 -2
  301. package/es/components/time-picker/src/composables/use-time-picker.mjs.map +1 -1
  302. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.mjs.map +1 -1
  303. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_script_setup_true_lang.mjs +17 -2
  304. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  305. package/es/components/time-picker/src/time-picker-com/panel-time-pick.mjs.map +1 -1
  306. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_setup_true_lang.mjs +7 -2
  307. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  308. package/es/components/time-picker/src/time-picker-com/panel-time-range.mjs.map +1 -1
  309. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_setup_true_lang.mjs +7 -2
  310. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  311. package/es/components/time-picker/src/time-picker.d.ts +3 -0
  312. package/es/components/tooltip/src/tooltip.vue.d.ts +2 -2
  313. package/es/version.mjs +1 -1
  314. package/es/version.mjs.map +1 -1
  315. package/lib/components/calendar/style/css.js +1 -1
  316. package/lib/components/calendar/style/index.js +1 -1
  317. package/lib/components/date-picker/src/date-picker.d.ts +3 -0
  318. package/lib/components/date-picker/src/props.d.ts +1 -0
  319. package/lib/components/dropdown/style/css.js +1 -1
  320. package/lib/components/dropdown/style/index.js +1 -1
  321. package/lib/components/image/src/image.vue.d.ts +1 -1
  322. package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js +15 -2
  323. package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  324. package/lib/components/input/src/input2.js.map +1 -1
  325. package/lib/components/input-tag/src/input-tag.vue.d.ts +1 -1
  326. package/lib/components/popover/src/popover.vue.d.ts +3 -1
  327. package/lib/components/popover/src/popover.vue_vue_type_script_setup_true_lang.js +1 -1
  328. package/lib/components/popover/src/popover.vue_vue_type_script_setup_true_lang.js.map +1 -1
  329. package/lib/components/popover/src/popover2.js.map +1 -1
  330. package/lib/components/time-picker/src/common/picker.js.map +1 -1
  331. package/lib/components/time-picker/src/common/picker.vue.d.ts +3 -0
  332. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.js +5 -1
  333. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  334. package/lib/components/time-picker/src/common/props.d.ts +2 -0
  335. package/lib/components/time-picker/src/common/props.js +4 -0
  336. package/lib/components/time-picker/src/common/props.js.map +1 -1
  337. package/lib/components/time-picker/src/composables/use-common-picker.d.ts +1 -0
  338. package/lib/components/time-picker/src/composables/use-time-picker.js +7 -1
  339. package/lib/components/time-picker/src/composables/use-time-picker.js.map +1 -1
  340. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.js.map +1 -1
  341. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_script_setup_true_lang.js +17 -2
  342. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  343. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.js.map +1 -1
  344. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_setup_true_lang.js +7 -2
  345. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_setup_true_lang.js.map +1 -1
  346. package/lib/components/time-picker/src/time-picker-com/panel-time-range.js.map +1 -1
  347. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_setup_true_lang.js +7 -2
  348. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_setup_true_lang.js.map +1 -1
  349. package/lib/components/time-picker/src/time-picker.d.ts +3 -0
  350. package/lib/components/tooltip/src/tooltip.vue.d.ts +2 -2
  351. package/lib/version.js +1 -1
  352. package/lib/version.js.map +1 -1
  353. package/package.json +2 -2
  354. package/tags.json +1 -1
  355. package/theme-chalk/el-input.css +1 -1
  356. package/theme-chalk/index.css +1 -1
  357. package/theme-chalk/src/input.scss +23 -0
  358. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"panel-time-pick.vue_vue_type_script_setup_true_lang.mjs","names":["actualVisible","visible","datetimeRole","parsedValue"],"sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-pick.vue"],"sourcesContent":["<template>\n <transition :name=\"transitionName\">\n <div v-if=\"actualVisible || visible\" :class=\"ns.b('panel')\">\n <div :class=\"[ns.be('panel', 'content'), { 'has-seconds': showSeconds }]\">\n <time-spinner\n ref=\"spinner\"\n :role=\"datetimeRole || 'start'\"\n :arrow-control=\"arrowControl\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :spinner-date=\"\n // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n parsedValue as any\n \"\n :disabled-hours=\"disabledHours\"\n :disabled-minutes=\"disabledMinutes\"\n :disabled-seconds=\"disabledSeconds\"\n @change=\"handleChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setSelectionRange\"\n />\n </div>\n <div :class=\"ns.be('panel', 'footer')\">\n <button\n type=\"button\"\n :class=\"[ns.be('panel', 'btn'), 'cancel']\"\n @click=\"handleCancel\"\n >\n {{ t('el.datepicker.cancel') }}\n </button>\n <button\n type=\"button\"\n :class=\"[ns.be('panel', 'btn'), 'confirm']\"\n @click=\"handleConfirm()\"\n >\n {{ t('el.datepicker.confirm') }}\n </button>\n </div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { getEventCode, isUndefined } from '@element-plus/utils'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimePickerProps } from '../props/panel-time-picker'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n buildAvailableTimeSlotGetter,\n useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimePickerProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\n// Injections\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue,\n} = pickerBase.props\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n buildAvailableTimeSlotGetter(disabledHours, disabledMinutes, disabledSeconds)\n\nconst ns = useNamespace('time')\nconst { t, lang } = useLocale()\n// data\nconst selectionRange = ref([0, 2])\nconst oldValue = useOldValue(props)\n// computed\nconst transitionName = computed(() => {\n return isUndefined(props.actualVisible)\n ? `${ns.namespace.value}-zoom-in-top`\n : ''\n})\nconst showSeconds = computed(() => {\n return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n if (props.format.includes('A')) return 'A'\n if (props.format.includes('a')) return 'a'\n return ''\n})\n// method\nconst isValidValue = (_date: Dayjs) => {\n const parsedDate = dayjs(_date).locale(lang.value)\n const result = getRangeAvailableTime(parsedDate)\n return parsedDate.isSame(result)\n}\nconst handleCancel = () => {\n const old = oldValue.value\n emit('pick', old, false)\n nextTick(() => {\n oldValue.value = old\n })\n}\nconst handleConfirm = (visible = false, first = false) => {\n if (first) return\n emit('pick', props.parsedValue, visible)\n}\nconst handleChange = (_date: Dayjs) => {\n // visible avoids edge cases, when use scrolls during panel closing animation\n if (!props.visible) {\n return\n }\n const result = getRangeAvailableTime(_date).millisecond(0)\n emit('pick', result, true)\n}\n\nconst setSelectionRange = (start: number, end: number) => {\n emit('select-range', start, end)\n selectionRange.value = [start, end]\n}\n\nconst changeSelectionRange = (step: number) => {\n const actualFormat = props.format\n const hourIndex = actualFormat.indexOf('HH')\n const minuteIndex = actualFormat.indexOf('mm')\n const secondIndex = actualFormat.indexOf('ss')\n const list: number[] = []\n const mapping: string[] = []\n if (hourIndex !== -1) {\n list.push(hourIndex)\n mapping.push('hours')\n }\n if (minuteIndex !== -1) {\n list.push(minuteIndex)\n mapping.push('minutes')\n }\n if (secondIndex !== -1 && showSeconds.value) {\n list.push(secondIndex)\n mapping.push('seconds')\n }\n\n const index = list.indexOf(selectionRange.value[0])\n const next = (index + step + list.length) % list.length\n timePickerOptions['start_emitSelectRange'](mapping[next])\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n\n const { left, right, up, down } = EVENT_CODE\n\n if ([left, right].includes(code)) {\n const step = code === left ? -1 : 1\n changeSelectionRange(step)\n event.preventDefault()\n return\n }\n\n if ([up, down].includes(code)) {\n const step = code === up ? -1 : 1\n timePickerOptions['start_scrollDown'](step)\n event.preventDefault()\n return\n }\n}\n\nconst { timePickerOptions, onSetOption, getAvailableTime } = useTimePanel({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds,\n})\n\nconst getRangeAvailableTime = (date: Dayjs) => {\n return getAvailableTime(date, props.datetimeRole || '', true)\n}\n\nconst parseUserInput = (value: Dayjs) => {\n if (!value) return null\n return dayjs(value, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n return dayjs(defaultValue).locale(lang.value)\n}\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"panel-time-pick.vue_vue_type_script_setup_true_lang.mjs","names":["actualVisible","visible","datetimeRole","parsedValue"],"sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-pick.vue"],"sourcesContent":["<template>\n <transition :name=\"transitionName\">\n <div v-if=\"actualVisible || visible\" :class=\"ns.b('panel')\">\n <div :class=\"[ns.be('panel', 'content'), { 'has-seconds': showSeconds }]\">\n <time-spinner\n ref=\"spinner\"\n :role=\"datetimeRole || 'start'\"\n :arrow-control=\"arrowControl\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :spinner-date=\"\n // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n parsedValue as any\n \"\n :disabled-hours=\"disabledHours\"\n :disabled-minutes=\"disabledMinutes\"\n :disabled-seconds=\"disabledSeconds\"\n @change=\"handleChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setSelectionRange\"\n />\n </div>\n <div :class=\"ns.be('panel', 'footer')\">\n <button\n type=\"button\"\n :class=\"[ns.be('panel', 'btn'), 'cancel']\"\n @click=\"handleCancel\"\n >\n {{ t('el.datepicker.cancel') }}\n </button>\n <button\n type=\"button\"\n :class=\"[ns.be('panel', 'btn'), 'confirm']\"\n @click=\"handleConfirm()\"\n >\n {{ t('el.datepicker.confirm') }}\n </button>\n </div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { getEventCode, isUndefined } from '@element-plus/utils'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimePickerProps } from '../props/panel-time-picker'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n buildAvailableTimeSlotGetter,\n useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimePickerProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\n// Injections\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue,\n} = pickerBase.props\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n buildAvailableTimeSlotGetter(disabledHours, disabledMinutes, disabledSeconds)\n\nconst ns = useNamespace('time')\nconst { t, lang } = useLocale()\n// data\nconst selectionRange = ref([0, 2])\n\nconst oldValue = useOldValue(props, {\n modelValue: computed(() => pickerBase.props.modelValue),\n valueOnClear: computed(() =>\n pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null\n ),\n})\n\n// computed\nconst transitionName = computed(() => {\n return isUndefined(props.actualVisible)\n ? `${ns.namespace.value}-zoom-in-top`\n : ''\n})\nconst showSeconds = computed(() => {\n return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n if (props.format.includes('A')) return 'A'\n if (props.format.includes('a')) return 'a'\n return ''\n})\n// method\nconst isValidValue = (_date: Dayjs) => {\n const parsedDate = dayjs(_date).locale(lang.value)\n const result = getRangeAvailableTime(parsedDate)\n return parsedDate.isSame(result)\n}\nconst handleCancel = () => {\n const old = oldValue.value\n emit('pick', old, false)\n nextTick(() => {\n oldValue.value = old\n })\n}\nconst handleConfirm = (visible = false, first = false) => {\n if (first) return\n emit('pick', props.parsedValue, visible)\n}\nconst handleChange = (_date: Dayjs) => {\n // visible avoids edge cases, when use scrolls during panel closing animation\n if (!props.visible) {\n return\n }\n const result = getRangeAvailableTime(_date).millisecond(0)\n emit('pick', result, true)\n}\n\nconst setSelectionRange = (start: number, end: number) => {\n emit('select-range', start, end)\n selectionRange.value = [start, end]\n}\n\nconst changeSelectionRange = (step: number) => {\n const actualFormat = props.format\n const hourIndex = actualFormat.indexOf('HH')\n const minuteIndex = actualFormat.indexOf('mm')\n const secondIndex = actualFormat.indexOf('ss')\n const list: number[] = []\n const mapping: string[] = []\n if (hourIndex !== -1) {\n list.push(hourIndex)\n mapping.push('hours')\n }\n if (minuteIndex !== -1) {\n list.push(minuteIndex)\n mapping.push('minutes')\n }\n if (secondIndex !== -1 && showSeconds.value) {\n list.push(secondIndex)\n mapping.push('seconds')\n }\n\n const index = list.indexOf(selectionRange.value[0])\n const next = (index + step + list.length) % list.length\n timePickerOptions['start_emitSelectRange'](mapping[next])\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n\n const { left, right, up, down } = EVENT_CODE\n\n if ([left, right].includes(code)) {\n const step = code === left ? -1 : 1\n changeSelectionRange(step)\n event.preventDefault()\n return\n }\n\n if ([up, down].includes(code)) {\n const step = code === up ? -1 : 1\n timePickerOptions['start_scrollDown'](step)\n event.preventDefault()\n return\n }\n}\n\nconst { timePickerOptions, onSetOption, getAvailableTime } = useTimePanel({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds,\n})\n\nconst getRangeAvailableTime = (date: Dayjs) => {\n return getAvailableTime(date, props.datetimeRole || '', true)\n}\n\nconst parseUserInput = (value: Dayjs) => {\n if (!value) return null\n return dayjs(value, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n return dayjs(defaultValue).locale(lang.value)\n}\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\nemit('set-picker-option', ['handleCancel', handleCancel])\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"panel-time-range.mjs","names":[],"sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue"],"sourcesContent":["<template>\n <div\n v-if=\"actualVisible\"\n :class=\"[nsTime.b('range-picker'), nsPicker.b('panel')]\"\n >\n <div :class=\"nsTime.be('range-picker', 'content')\">\n <div :class=\"nsTime.be('range-picker', 'cell')\">\n <div :class=\"nsTime.be('range-picker', 'header')\">\n {{ t('el.datepicker.startTime') }}\n </div>\n <div :class=\"startContainerKls\">\n <time-spinner\n ref=\"minSpinner\"\n role=\"start\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"startTime\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMinChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMinSelectionRange\"\n />\n </div>\n </div>\n <div :class=\"nsTime.be('range-picker', 'cell')\">\n <div :class=\"nsTime.be('range-picker', 'header')\">\n {{ t('el.datepicker.endTime') }}\n </div>\n <div :class=\"endContainerKls\">\n <time-spinner\n ref=\"maxSpinner\"\n role=\"end\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"endTime\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMaxChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMaxSelectionRange\"\n />\n </div>\n </div>\n </div>\n <div :class=\"nsTime.be('panel', 'footer')\">\n <button\n type=\"button\"\n :class=\"[nsTime.be('panel', 'btn'), 'cancel']\"\n @click=\"handleCancel()\"\n >\n {{ t('el.datepicker.cancel') }}\n </button>\n <button\n type=\"button\"\n :class=\"[nsTime.be('panel', 'btn'), 'confirm']\"\n :disabled=\"btnConfirmDisabled\"\n @click=\"handleConfirm()\"\n >\n {{ t('el.datepicker.confirm') }}\n </button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref, unref } from 'vue'\nimport dayjs from 'dayjs'\nimport { union } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { getEventCode, isArray } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimeRangeProps } from '../props/panel-time-range'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n buildAvailableTimeSlotGetter,\n useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimeRangeProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\nconst makeSelectRange = (start: number, end: number) => {\n const result: number[] = []\n for (let i = start; i <= end; i++) {\n result.push(i)\n }\n return result\n}\n\nconst { t, lang } = useLocale()\nconst nsTime = useNamespace('time')\nconst nsPicker = useNamespace('picker')\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue,\n} = pickerBase.props\n\nconst startContainerKls = computed(() => [\n nsTime.be('range-picker', 'body'),\n nsTime.be('panel', 'content'),\n nsTime.is('arrow', arrowControl),\n showSeconds.value ? 'has-seconds' : '',\n])\nconst endContainerKls = computed(() => [\n nsTime.be('range-picker', 'body'),\n nsTime.be('panel', 'content'),\n nsTime.is('arrow', arrowControl),\n showSeconds.value ? 'has-seconds' : '',\n])\n\nconst startTime = computed(() => props.parsedValue![0])\nconst endTime = computed(() => props.parsedValue![1])\nconst oldValue = useOldValue(props)\nconst handleCancel = () => {\n const old = oldValue.value\n emit('pick', old, false)\n nextTick(() => {\n oldValue.value = old\n })\n}\nconst showSeconds = computed(() => {\n return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n if (props.format.includes('A')) return 'A'\n if (props.format.includes('a')) return 'a'\n return ''\n})\n\nconst handleConfirm = (visible = false) => {\n emit('pick', [startTime.value, endTime.value], visible)\n}\n\nconst handleMinChange = (date: Dayjs) => {\n handleChange(date.millisecond(0), endTime.value)\n}\nconst handleMaxChange = (date: Dayjs) => {\n handleChange(startTime.value, date.millisecond(0))\n}\n\nconst isValidValue = (_date: Dayjs[]) => {\n const parsedDate = _date.map((_) => dayjs(_).locale(lang.value))\n const result = getRangeAvailableTime(parsedDate)\n return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1])\n}\n\nconst handleChange = (start: Dayjs, end: Dayjs) => {\n if (!props.visible) {\n return\n }\n // todo getRangeAvailableTime(_date).millisecond(0)\n emit('pick', [start, end], true)\n}\nconst btnConfirmDisabled = computed(() => {\n return startTime.value > endTime.value\n})\n\nconst selectionRange = ref([0, 2])\nconst setMinSelectionRange = (start: number, end: number) => {\n emit('select-range', start, end, 'min')\n selectionRange.value = [start, end]\n}\n\nconst offset = computed(() => (showSeconds.value ? 11 : 8))\nconst setMaxSelectionRange = (start: number, end: number) => {\n emit('select-range', start, end, 'max')\n const _offset = unref(offset)\n selectionRange.value = [start + _offset, end + _offset]\n}\n\nconst changeSelectionRange = (step: number) => {\n const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11]\n const mapping = ['hours', 'minutes'].concat(\n showSeconds.value ? ['seconds'] : []\n )\n const index = list.indexOf(selectionRange.value[0])\n const next = (index + step + list.length) % list.length\n const half = list.length / 2\n if (next < half) {\n timePickerOptions['start_emitSelectRange'](mapping[next])\n } else {\n timePickerOptions['end_emitSelectRange'](mapping[next - half])\n }\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n\n const { left, right, up, down } = EVENT_CODE\n\n if ([left, right].includes(code)) {\n const step = code === left ? -1 : 1\n changeSelectionRange(step)\n event.preventDefault()\n return\n }\n\n if ([up, down].includes(code)) {\n const step = code === up ? -1 : 1\n const role = selectionRange.value[0] < offset.value ? 'start' : 'end'\n timePickerOptions[`${role}_scrollDown`](step)\n event.preventDefault()\n return\n }\n}\n\nconst disabledHours_ = (role: string, compare?: Dayjs) => {\n const defaultDisable = disabledHours ? disabledHours(role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n const nextDisable = isStart\n ? makeSelectRange(compareHour + 1, 23)\n : makeSelectRange(0, compareHour - 1)\n return union(defaultDisable, nextDisable)\n}\nconst disabledMinutes_ = (hour: number, role: string, compare?: Dayjs) => {\n const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n if (hour !== compareHour) {\n return defaultDisable\n }\n const compareMinute = compareDate.minute()\n const nextDisable = isStart\n ? makeSelectRange(compareMinute + 1, 59)\n : makeSelectRange(0, compareMinute - 1)\n return union(defaultDisable, nextDisable)\n}\nconst disabledSeconds_ = (\n hour: number,\n minute: number,\n role: string,\n compare?: Dayjs\n) => {\n const defaultDisable = disabledSeconds\n ? disabledSeconds(hour, minute, role)\n : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n const compareMinute = compareDate.minute()\n if (hour !== compareHour || minute !== compareMinute) {\n return defaultDisable\n }\n const compareSecond = compareDate.second()\n const nextDisable = isStart\n ? makeSelectRange(compareSecond + 1, 59)\n : makeSelectRange(0, compareSecond - 1)\n return union(defaultDisable, nextDisable)\n}\n\nconst getRangeAvailableTime = ([start, end]: Array<Dayjs>) => {\n return [\n getAvailableTime(start, 'start', true, end),\n getAvailableTime(end, 'end', false, start),\n ] as const\n}\n\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n buildAvailableTimeSlotGetter(\n disabledHours_,\n disabledMinutes_,\n disabledSeconds_\n )\n\nconst {\n timePickerOptions,\n\n getAvailableTime,\n onSetOption,\n} = useTimePanel({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds,\n})\n\nconst parseUserInput = (days: Dayjs[] | Dayjs) => {\n if (!days) return null\n if (isArray(days)) {\n return days.map((d) => dayjs(d, props.format).locale(lang.value))\n }\n return dayjs(days, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n if (isArray(defaultValue)) {\n return defaultValue.map((d: Date) => dayjs(d).locale(lang.value))\n }\n const defaultDay = dayjs(defaultValue).locale(lang.value)\n return [defaultDay, defaultDay.add(60, 'm')]\n}\n\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\n</script>\n"],"mappings":""}
1
+ {"version":3,"file":"panel-time-range.mjs","names":[],"sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue"],"sourcesContent":["<template>\n <div\n v-if=\"actualVisible\"\n :class=\"[nsTime.b('range-picker'), nsPicker.b('panel')]\"\n >\n <div :class=\"nsTime.be('range-picker', 'content')\">\n <div :class=\"nsTime.be('range-picker', 'cell')\">\n <div :class=\"nsTime.be('range-picker', 'header')\">\n {{ t('el.datepicker.startTime') }}\n </div>\n <div :class=\"startContainerKls\">\n <time-spinner\n ref=\"minSpinner\"\n role=\"start\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"startTime\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMinChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMinSelectionRange\"\n />\n </div>\n </div>\n <div :class=\"nsTime.be('range-picker', 'cell')\">\n <div :class=\"nsTime.be('range-picker', 'header')\">\n {{ t('el.datepicker.endTime') }}\n </div>\n <div :class=\"endContainerKls\">\n <time-spinner\n ref=\"maxSpinner\"\n role=\"end\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"endTime\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMaxChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMaxSelectionRange\"\n />\n </div>\n </div>\n </div>\n <div :class=\"nsTime.be('panel', 'footer')\">\n <button\n type=\"button\"\n :class=\"[nsTime.be('panel', 'btn'), 'cancel']\"\n @click=\"handleCancel()\"\n >\n {{ t('el.datepicker.cancel') }}\n </button>\n <button\n type=\"button\"\n :class=\"[nsTime.be('panel', 'btn'), 'confirm']\"\n :disabled=\"btnConfirmDisabled\"\n @click=\"handleConfirm()\"\n >\n {{ t('el.datepicker.confirm') }}\n </button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref, unref } from 'vue'\nimport dayjs from 'dayjs'\nimport { union } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { getEventCode, isArray } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimeRangeProps } from '../props/panel-time-range'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n buildAvailableTimeSlotGetter,\n useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimeRangeProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\nconst makeSelectRange = (start: number, end: number) => {\n const result: number[] = []\n for (let i = start; i <= end; i++) {\n result.push(i)\n }\n return result\n}\n\nconst { t, lang } = useLocale()\nconst nsTime = useNamespace('time')\nconst nsPicker = useNamespace('picker')\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue,\n} = pickerBase.props\n\nconst startContainerKls = computed(() => [\n nsTime.be('range-picker', 'body'),\n nsTime.be('panel', 'content'),\n nsTime.is('arrow', arrowControl),\n showSeconds.value ? 'has-seconds' : '',\n])\nconst endContainerKls = computed(() => [\n nsTime.be('range-picker', 'body'),\n nsTime.be('panel', 'content'),\n nsTime.is('arrow', arrowControl),\n showSeconds.value ? 'has-seconds' : '',\n])\n\nconst startTime = computed(() => props.parsedValue![0])\nconst endTime = computed(() => props.parsedValue![1])\nconst oldValue = useOldValue(props, {\n modelValue: computed(() => pickerBase.props.modelValue),\n valueOnClear: computed(() =>\n pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null\n ),\n})\nconst handleCancel = () => {\n const old = oldValue.value\n emit('pick', old, false)\n nextTick(() => {\n oldValue.value = old\n })\n}\n\nconst showSeconds = computed(() => {\n return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n if (props.format.includes('A')) return 'A'\n if (props.format.includes('a')) return 'a'\n return ''\n})\n\nconst handleConfirm = (visible = false) => {\n emit('pick', [startTime.value, endTime.value], visible)\n}\n\nconst handleMinChange = (date: Dayjs) => {\n handleChange(date.millisecond(0), endTime.value)\n}\nconst handleMaxChange = (date: Dayjs) => {\n handleChange(startTime.value, date.millisecond(0))\n}\n\nconst isValidValue = (_date: Dayjs[]) => {\n const parsedDate = _date.map((_) => dayjs(_).locale(lang.value))\n const result = getRangeAvailableTime(parsedDate)\n return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1])\n}\n\nconst handleChange = (start: Dayjs, end: Dayjs) => {\n if (!props.visible) {\n return\n }\n // todo getRangeAvailableTime(_date).millisecond(0)\n emit('pick', [start, end], true)\n}\nconst btnConfirmDisabled = computed(() => {\n return startTime.value > endTime.value\n})\n\nconst selectionRange = ref([0, 2])\nconst setMinSelectionRange = (start: number, end: number) => {\n emit('select-range', start, end, 'min')\n selectionRange.value = [start, end]\n}\n\nconst offset = computed(() => (showSeconds.value ? 11 : 8))\nconst setMaxSelectionRange = (start: number, end: number) => {\n emit('select-range', start, end, 'max')\n const _offset = unref(offset)\n selectionRange.value = [start + _offset, end + _offset]\n}\n\nconst changeSelectionRange = (step: number) => {\n const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11]\n const mapping = ['hours', 'minutes'].concat(\n showSeconds.value ? ['seconds'] : []\n )\n const index = list.indexOf(selectionRange.value[0])\n const next = (index + step + list.length) % list.length\n const half = list.length / 2\n if (next < half) {\n timePickerOptions['start_emitSelectRange'](mapping[next])\n } else {\n timePickerOptions['end_emitSelectRange'](mapping[next - half])\n }\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n\n const { left, right, up, down } = EVENT_CODE\n\n if ([left, right].includes(code)) {\n const step = code === left ? -1 : 1\n changeSelectionRange(step)\n event.preventDefault()\n return\n }\n\n if ([up, down].includes(code)) {\n const step = code === up ? -1 : 1\n const role = selectionRange.value[0] < offset.value ? 'start' : 'end'\n timePickerOptions[`${role}_scrollDown`](step)\n event.preventDefault()\n return\n }\n}\n\nconst disabledHours_ = (role: string, compare?: Dayjs) => {\n const defaultDisable = disabledHours ? disabledHours(role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n const nextDisable = isStart\n ? makeSelectRange(compareHour + 1, 23)\n : makeSelectRange(0, compareHour - 1)\n return union(defaultDisable, nextDisable)\n}\nconst disabledMinutes_ = (hour: number, role: string, compare?: Dayjs) => {\n const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n if (hour !== compareHour) {\n return defaultDisable\n }\n const compareMinute = compareDate.minute()\n const nextDisable = isStart\n ? makeSelectRange(compareMinute + 1, 59)\n : makeSelectRange(0, compareMinute - 1)\n return union(defaultDisable, nextDisable)\n}\nconst disabledSeconds_ = (\n hour: number,\n minute: number,\n role: string,\n compare?: Dayjs\n) => {\n const defaultDisable = disabledSeconds\n ? disabledSeconds(hour, minute, role)\n : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n const compareMinute = compareDate.minute()\n if (hour !== compareHour || minute !== compareMinute) {\n return defaultDisable\n }\n const compareSecond = compareDate.second()\n const nextDisable = isStart\n ? makeSelectRange(compareSecond + 1, 59)\n : makeSelectRange(0, compareSecond - 1)\n return union(defaultDisable, nextDisable)\n}\n\nconst getRangeAvailableTime = ([start, end]: Array<Dayjs>) => {\n return [\n getAvailableTime(start, 'start', true, end),\n getAvailableTime(end, 'end', false, start),\n ] as const\n}\n\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n buildAvailableTimeSlotGetter(\n disabledHours_,\n disabledMinutes_,\n disabledSeconds_\n )\n\nconst {\n timePickerOptions,\n\n getAvailableTime,\n onSetOption,\n} = useTimePanel({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds,\n})\n\nconst parseUserInput = (days: Dayjs[] | Dayjs) => {\n if (!days) return null\n if (isArray(days)) {\n return days.map((d) => dayjs(d, props.format).locale(lang.value))\n }\n return dayjs(days, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n if (isArray(defaultValue)) {\n return defaultValue.map((d: Date) => dayjs(d).locale(lang.value))\n }\n const defaultDay = dayjs(defaultValue).locale(lang.value)\n return [defaultDay, defaultDay.add(60, 'm')]\n}\n\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\nemit('set-picker-option', ['handleCancel', handleCancel])\n</script>\n"],"mappings":""}
@@ -33,7 +33,8 @@ var panel_time_range_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
33
33
  const { t, lang } = useLocale();
34
34
  const nsTime = useNamespace("time");
35
35
  const nsPicker = useNamespace("picker");
36
- const { arrowControl, disabledHours, disabledMinutes, disabledSeconds, defaultValue } = inject(PICKER_BASE_INJECTION_KEY).props;
36
+ const pickerBase = inject(PICKER_BASE_INJECTION_KEY);
37
+ const { arrowControl, disabledHours, disabledMinutes, disabledSeconds, defaultValue } = pickerBase.props;
37
38
  const startContainerKls = computed(() => [
38
39
  nsTime.be("range-picker", "body"),
39
40
  nsTime.be("panel", "content"),
@@ -48,7 +49,10 @@ var panel_time_range_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
48
49
  ]);
49
50
  const startTime = computed(() => props.parsedValue[0]);
50
51
  const endTime = computed(() => props.parsedValue[1]);
51
- const oldValue = useOldValue(props);
52
+ const oldValue = useOldValue(props, {
53
+ modelValue: computed(() => pickerBase.props.modelValue),
54
+ valueOnClear: computed(() => pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null)
55
+ });
52
56
  const handleCancel = () => {
53
57
  const old = oldValue.value;
54
58
  emit("pick", old, false);
@@ -179,6 +183,7 @@ var panel_time_range_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
179
183
  emit("set-picker-option", ["handleKeydownInput", handleKeydown]);
180
184
  emit("set-picker-option", ["getDefaultValue", getDefaultValue]);
181
185
  emit("set-picker-option", ["getRangeAvailableTime", getRangeAvailableTime]);
186
+ emit("set-picker-option", ["handleCancel", handleCancel]);
182
187
  return (_ctx, _cache) => {
183
188
  return _ctx.actualVisible ? (openBlock(), createElementBlock("div", {
184
189
  key: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"panel-time-range.vue_vue_type_script_setup_true_lang.mjs","names":["actualVisible"],"sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue"],"sourcesContent":["<template>\n <div\n v-if=\"actualVisible\"\n :class=\"[nsTime.b('range-picker'), nsPicker.b('panel')]\"\n >\n <div :class=\"nsTime.be('range-picker', 'content')\">\n <div :class=\"nsTime.be('range-picker', 'cell')\">\n <div :class=\"nsTime.be('range-picker', 'header')\">\n {{ t('el.datepicker.startTime') }}\n </div>\n <div :class=\"startContainerKls\">\n <time-spinner\n ref=\"minSpinner\"\n role=\"start\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"startTime\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMinChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMinSelectionRange\"\n />\n </div>\n </div>\n <div :class=\"nsTime.be('range-picker', 'cell')\">\n <div :class=\"nsTime.be('range-picker', 'header')\">\n {{ t('el.datepicker.endTime') }}\n </div>\n <div :class=\"endContainerKls\">\n <time-spinner\n ref=\"maxSpinner\"\n role=\"end\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"endTime\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMaxChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMaxSelectionRange\"\n />\n </div>\n </div>\n </div>\n <div :class=\"nsTime.be('panel', 'footer')\">\n <button\n type=\"button\"\n :class=\"[nsTime.be('panel', 'btn'), 'cancel']\"\n @click=\"handleCancel()\"\n >\n {{ t('el.datepicker.cancel') }}\n </button>\n <button\n type=\"button\"\n :class=\"[nsTime.be('panel', 'btn'), 'confirm']\"\n :disabled=\"btnConfirmDisabled\"\n @click=\"handleConfirm()\"\n >\n {{ t('el.datepicker.confirm') }}\n </button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref, unref } from 'vue'\nimport dayjs from 'dayjs'\nimport { union } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { getEventCode, isArray } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimeRangeProps } from '../props/panel-time-range'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n buildAvailableTimeSlotGetter,\n useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimeRangeProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\nconst makeSelectRange = (start: number, end: number) => {\n const result: number[] = []\n for (let i = start; i <= end; i++) {\n result.push(i)\n }\n return result\n}\n\nconst { t, lang } = useLocale()\nconst nsTime = useNamespace('time')\nconst nsPicker = useNamespace('picker')\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue,\n} = pickerBase.props\n\nconst startContainerKls = computed(() => [\n nsTime.be('range-picker', 'body'),\n nsTime.be('panel', 'content'),\n nsTime.is('arrow', arrowControl),\n showSeconds.value ? 'has-seconds' : '',\n])\nconst endContainerKls = computed(() => [\n nsTime.be('range-picker', 'body'),\n nsTime.be('panel', 'content'),\n nsTime.is('arrow', arrowControl),\n showSeconds.value ? 'has-seconds' : '',\n])\n\nconst startTime = computed(() => props.parsedValue![0])\nconst endTime = computed(() => props.parsedValue![1])\nconst oldValue = useOldValue(props)\nconst handleCancel = () => {\n const old = oldValue.value\n emit('pick', old, false)\n nextTick(() => {\n oldValue.value = old\n })\n}\nconst showSeconds = computed(() => {\n return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n if (props.format.includes('A')) return 'A'\n if (props.format.includes('a')) return 'a'\n return ''\n})\n\nconst handleConfirm = (visible = false) => {\n emit('pick', [startTime.value, endTime.value], visible)\n}\n\nconst handleMinChange = (date: Dayjs) => {\n handleChange(date.millisecond(0), endTime.value)\n}\nconst handleMaxChange = (date: Dayjs) => {\n handleChange(startTime.value, date.millisecond(0))\n}\n\nconst isValidValue = (_date: Dayjs[]) => {\n const parsedDate = _date.map((_) => dayjs(_).locale(lang.value))\n const result = getRangeAvailableTime(parsedDate)\n return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1])\n}\n\nconst handleChange = (start: Dayjs, end: Dayjs) => {\n if (!props.visible) {\n return\n }\n // todo getRangeAvailableTime(_date).millisecond(0)\n emit('pick', [start, end], true)\n}\nconst btnConfirmDisabled = computed(() => {\n return startTime.value > endTime.value\n})\n\nconst selectionRange = ref([0, 2])\nconst setMinSelectionRange = (start: number, end: number) => {\n emit('select-range', start, end, 'min')\n selectionRange.value = [start, end]\n}\n\nconst offset = computed(() => (showSeconds.value ? 11 : 8))\nconst setMaxSelectionRange = (start: number, end: number) => {\n emit('select-range', start, end, 'max')\n const _offset = unref(offset)\n selectionRange.value = [start + _offset, end + _offset]\n}\n\nconst changeSelectionRange = (step: number) => {\n const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11]\n const mapping = ['hours', 'minutes'].concat(\n showSeconds.value ? ['seconds'] : []\n )\n const index = list.indexOf(selectionRange.value[0])\n const next = (index + step + list.length) % list.length\n const half = list.length / 2\n if (next < half) {\n timePickerOptions['start_emitSelectRange'](mapping[next])\n } else {\n timePickerOptions['end_emitSelectRange'](mapping[next - half])\n }\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n\n const { left, right, up, down } = EVENT_CODE\n\n if ([left, right].includes(code)) {\n const step = code === left ? -1 : 1\n changeSelectionRange(step)\n event.preventDefault()\n return\n }\n\n if ([up, down].includes(code)) {\n const step = code === up ? -1 : 1\n const role = selectionRange.value[0] < offset.value ? 'start' : 'end'\n timePickerOptions[`${role}_scrollDown`](step)\n event.preventDefault()\n return\n }\n}\n\nconst disabledHours_ = (role: string, compare?: Dayjs) => {\n const defaultDisable = disabledHours ? disabledHours(role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n const nextDisable = isStart\n ? makeSelectRange(compareHour + 1, 23)\n : makeSelectRange(0, compareHour - 1)\n return union(defaultDisable, nextDisable)\n}\nconst disabledMinutes_ = (hour: number, role: string, compare?: Dayjs) => {\n const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n if (hour !== compareHour) {\n return defaultDisable\n }\n const compareMinute = compareDate.minute()\n const nextDisable = isStart\n ? makeSelectRange(compareMinute + 1, 59)\n : makeSelectRange(0, compareMinute - 1)\n return union(defaultDisable, nextDisable)\n}\nconst disabledSeconds_ = (\n hour: number,\n minute: number,\n role: string,\n compare?: Dayjs\n) => {\n const defaultDisable = disabledSeconds\n ? disabledSeconds(hour, minute, role)\n : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n const compareMinute = compareDate.minute()\n if (hour !== compareHour || minute !== compareMinute) {\n return defaultDisable\n }\n const compareSecond = compareDate.second()\n const nextDisable = isStart\n ? makeSelectRange(compareSecond + 1, 59)\n : makeSelectRange(0, compareSecond - 1)\n return union(defaultDisable, nextDisable)\n}\n\nconst getRangeAvailableTime = ([start, end]: Array<Dayjs>) => {\n return [\n getAvailableTime(start, 'start', true, end),\n getAvailableTime(end, 'end', false, start),\n ] as const\n}\n\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n buildAvailableTimeSlotGetter(\n disabledHours_,\n disabledMinutes_,\n disabledSeconds_\n )\n\nconst {\n timePickerOptions,\n\n getAvailableTime,\n onSetOption,\n} = useTimePanel({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds,\n})\n\nconst parseUserInput = (days: Dayjs[] | Dayjs) => {\n if (!days) return null\n if (isArray(days)) {\n return days.map((d) => dayjs(d, props.format).locale(lang.value))\n }\n return dayjs(days, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n if (isArray(defaultValue)) {\n return defaultValue.map((d: Date) => dayjs(d).locale(lang.value))\n }\n const defaultDay = dayjs(defaultValue).locale(lang.value)\n return [defaultDay, defaultDay.add(60, 'm')]\n}\n\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"panel-time-range.vue_vue_type_script_setup_true_lang.mjs","names":["actualVisible"],"sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue"],"sourcesContent":["<template>\n <div\n v-if=\"actualVisible\"\n :class=\"[nsTime.b('range-picker'), nsPicker.b('panel')]\"\n >\n <div :class=\"nsTime.be('range-picker', 'content')\">\n <div :class=\"nsTime.be('range-picker', 'cell')\">\n <div :class=\"nsTime.be('range-picker', 'header')\">\n {{ t('el.datepicker.startTime') }}\n </div>\n <div :class=\"startContainerKls\">\n <time-spinner\n ref=\"minSpinner\"\n role=\"start\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"startTime\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMinChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMinSelectionRange\"\n />\n </div>\n </div>\n <div :class=\"nsTime.be('range-picker', 'cell')\">\n <div :class=\"nsTime.be('range-picker', 'header')\">\n {{ t('el.datepicker.endTime') }}\n </div>\n <div :class=\"endContainerKls\">\n <time-spinner\n ref=\"maxSpinner\"\n role=\"end\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"endTime\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMaxChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMaxSelectionRange\"\n />\n </div>\n </div>\n </div>\n <div :class=\"nsTime.be('panel', 'footer')\">\n <button\n type=\"button\"\n :class=\"[nsTime.be('panel', 'btn'), 'cancel']\"\n @click=\"handleCancel()\"\n >\n {{ t('el.datepicker.cancel') }}\n </button>\n <button\n type=\"button\"\n :class=\"[nsTime.be('panel', 'btn'), 'confirm']\"\n :disabled=\"btnConfirmDisabled\"\n @click=\"handleConfirm()\"\n >\n {{ t('el.datepicker.confirm') }}\n </button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref, unref } from 'vue'\nimport dayjs from 'dayjs'\nimport { union } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { getEventCode, isArray } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimeRangeProps } from '../props/panel-time-range'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n buildAvailableTimeSlotGetter,\n useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimeRangeProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\nconst makeSelectRange = (start: number, end: number) => {\n const result: number[] = []\n for (let i = start; i <= end; i++) {\n result.push(i)\n }\n return result\n}\n\nconst { t, lang } = useLocale()\nconst nsTime = useNamespace('time')\nconst nsPicker = useNamespace('picker')\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue,\n} = pickerBase.props\n\nconst startContainerKls = computed(() => [\n nsTime.be('range-picker', 'body'),\n nsTime.be('panel', 'content'),\n nsTime.is('arrow', arrowControl),\n showSeconds.value ? 'has-seconds' : '',\n])\nconst endContainerKls = computed(() => [\n nsTime.be('range-picker', 'body'),\n nsTime.be('panel', 'content'),\n nsTime.is('arrow', arrowControl),\n showSeconds.value ? 'has-seconds' : '',\n])\n\nconst startTime = computed(() => props.parsedValue![0])\nconst endTime = computed(() => props.parsedValue![1])\nconst oldValue = useOldValue(props, {\n modelValue: computed(() => pickerBase.props.modelValue),\n valueOnClear: computed(() =>\n pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null\n ),\n})\nconst handleCancel = () => {\n const old = oldValue.value\n emit('pick', old, false)\n nextTick(() => {\n oldValue.value = old\n })\n}\n\nconst showSeconds = computed(() => {\n return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n if (props.format.includes('A')) return 'A'\n if (props.format.includes('a')) return 'a'\n return ''\n})\n\nconst handleConfirm = (visible = false) => {\n emit('pick', [startTime.value, endTime.value], visible)\n}\n\nconst handleMinChange = (date: Dayjs) => {\n handleChange(date.millisecond(0), endTime.value)\n}\nconst handleMaxChange = (date: Dayjs) => {\n handleChange(startTime.value, date.millisecond(0))\n}\n\nconst isValidValue = (_date: Dayjs[]) => {\n const parsedDate = _date.map((_) => dayjs(_).locale(lang.value))\n const result = getRangeAvailableTime(parsedDate)\n return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1])\n}\n\nconst handleChange = (start: Dayjs, end: Dayjs) => {\n if (!props.visible) {\n return\n }\n // todo getRangeAvailableTime(_date).millisecond(0)\n emit('pick', [start, end], true)\n}\nconst btnConfirmDisabled = computed(() => {\n return startTime.value > endTime.value\n})\n\nconst selectionRange = ref([0, 2])\nconst setMinSelectionRange = (start: number, end: number) => {\n emit('select-range', start, end, 'min')\n selectionRange.value = [start, end]\n}\n\nconst offset = computed(() => (showSeconds.value ? 11 : 8))\nconst setMaxSelectionRange = (start: number, end: number) => {\n emit('select-range', start, end, 'max')\n const _offset = unref(offset)\n selectionRange.value = [start + _offset, end + _offset]\n}\n\nconst changeSelectionRange = (step: number) => {\n const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11]\n const mapping = ['hours', 'minutes'].concat(\n showSeconds.value ? ['seconds'] : []\n )\n const index = list.indexOf(selectionRange.value[0])\n const next = (index + step + list.length) % list.length\n const half = list.length / 2\n if (next < half) {\n timePickerOptions['start_emitSelectRange'](mapping[next])\n } else {\n timePickerOptions['end_emitSelectRange'](mapping[next - half])\n }\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n\n const { left, right, up, down } = EVENT_CODE\n\n if ([left, right].includes(code)) {\n const step = code === left ? -1 : 1\n changeSelectionRange(step)\n event.preventDefault()\n return\n }\n\n if ([up, down].includes(code)) {\n const step = code === up ? -1 : 1\n const role = selectionRange.value[0] < offset.value ? 'start' : 'end'\n timePickerOptions[`${role}_scrollDown`](step)\n event.preventDefault()\n return\n }\n}\n\nconst disabledHours_ = (role: string, compare?: Dayjs) => {\n const defaultDisable = disabledHours ? disabledHours(role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n const nextDisable = isStart\n ? makeSelectRange(compareHour + 1, 23)\n : makeSelectRange(0, compareHour - 1)\n return union(defaultDisable, nextDisable)\n}\nconst disabledMinutes_ = (hour: number, role: string, compare?: Dayjs) => {\n const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n if (hour !== compareHour) {\n return defaultDisable\n }\n const compareMinute = compareDate.minute()\n const nextDisable = isStart\n ? makeSelectRange(compareMinute + 1, 59)\n : makeSelectRange(0, compareMinute - 1)\n return union(defaultDisable, nextDisable)\n}\nconst disabledSeconds_ = (\n hour: number,\n minute: number,\n role: string,\n compare?: Dayjs\n) => {\n const defaultDisable = disabledSeconds\n ? disabledSeconds(hour, minute, role)\n : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? endTime.value : startTime.value)\n const compareHour = compareDate.hour()\n const compareMinute = compareDate.minute()\n if (hour !== compareHour || minute !== compareMinute) {\n return defaultDisable\n }\n const compareSecond = compareDate.second()\n const nextDisable = isStart\n ? makeSelectRange(compareSecond + 1, 59)\n : makeSelectRange(0, compareSecond - 1)\n return union(defaultDisable, nextDisable)\n}\n\nconst getRangeAvailableTime = ([start, end]: Array<Dayjs>) => {\n return [\n getAvailableTime(start, 'start', true, end),\n getAvailableTime(end, 'end', false, start),\n ] as const\n}\n\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n buildAvailableTimeSlotGetter(\n disabledHours_,\n disabledMinutes_,\n disabledSeconds_\n )\n\nconst {\n timePickerOptions,\n\n getAvailableTime,\n onSetOption,\n} = useTimePanel({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds,\n})\n\nconst parseUserInput = (days: Dayjs[] | Dayjs) => {\n if (!days) return null\n if (isArray(days)) {\n return days.map((d) => dayjs(d, props.format).locale(lang.value))\n }\n return dayjs(days, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n if (isArray(defaultValue)) {\n return defaultValue.map((d: Date) => dayjs(d).locale(lang.value))\n }\n const defaultDay = dayjs(defaultValue).locale(lang.value)\n return [defaultDay, defaultDay.add(60, 'm')]\n}\n\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\nemit('set-picker-option', ['handleCancel', handleCancel])\n</script>\n"],"mappings":"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"}
@@ -190,6 +190,7 @@ declare const _default: vue.DefineComponent<{
190
190
  __epPropKey: true;
191
191
  };
192
192
  editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
193
+ saveOnBlur: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
193
194
  prefixIcon: EpPropFinalized<(new (...args: any[]) => (string | vue.Component) & {}) | (() => string | vue.Component) | ((new (...args: any[]) => (string | vue.Component) & {}) | (() => string | vue.Component))[], unknown, unknown, "", boolean>;
194
195
  size: {
195
196
  readonly type: vue.PropType<EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
@@ -400,6 +401,7 @@ declare const _default: vue.DefineComponent<{
400
401
  __epPropKey: true;
401
402
  };
402
403
  editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
404
+ saveOnBlur: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
403
405
  prefixIcon: EpPropFinalized<(new (...args: any[]) => (string | vue.Component) & {}) | (() => string | vue.Component) | ((new (...args: any[]) => (string | vue.Component) & {}) | (() => string | vue.Component))[], unknown, unknown, "", boolean>;
404
406
  size: {
405
407
  readonly type: vue.PropType<EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
@@ -445,6 +447,7 @@ declare const _default: vue.DefineComponent<{
445
447
  valueOnClear: EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
446
448
  automaticDropdown: EpPropMergeType<BooleanConstructor, unknown, unknown>;
447
449
  editable: EpPropMergeType<BooleanConstructor, unknown, unknown>;
450
+ saveOnBlur: EpPropMergeType<BooleanConstructor, unknown, unknown>;
448
451
  rangeSeparator: string;
449
452
  shortcuts: unknown[];
450
453
  showNow: EpPropMergeType<BooleanConstructor, unknown, unknown>;
@@ -72,9 +72,9 @@ declare const __VLS_base: vue.DefineComponent<__VLS_WithDefaults<__VLS_TypeProps
72
72
  */
73
73
  hide: (event?: Event) => void;
74
74
  }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
75
- close: (...args: any[]) => void;
76
- hide: (...args: any[]) => void;
77
75
  show: (...args: any[]) => void;
76
+ hide: (...args: any[]) => void;
77
+ close: (...args: any[]) => void;
78
78
  open: (...args: any[]) => void;
79
79
  "update:visible": (...args: any[]) => void;
80
80
  "before-show": (...args: any[]) => void;
package/es/version.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  //#region ../../packages/element-plus/version.ts
2
- const version = "0.0.20260304";
2
+ const version = "0.0.20260306";
3
3
 
4
4
  //#endregion
5
5
  export { version };
@@ -1 +1 @@
1
- {"version":3,"file":"version.mjs","names":[],"sources":["../../../packages/element-plus/version.ts"],"sourcesContent":["export const version = '0.0.20260304'\n"],"mappings":";AAAA,MAAa,UAAU"}
1
+ {"version":3,"file":"version.mjs","names":[],"sources":["../../../packages/element-plus/version.ts"],"sourcesContent":["export const version = '0.0.20260306'\n"],"mappings":";AAAA,MAAa,UAAU"}
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  require('../../base/style/css.js');
3
- require('../../button/style/css.js');
4
3
  require('../../button-group/style/css.js');
4
+ require('../../button/style/css.js');
5
5
  require('../../select/style/css.js');
6
6
  require("@element-plus/nightly/theme-chalk/el-calendar.css");
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  require('../../base/style/index.js');
3
- require('../../button/style/index.js');
4
3
  require('../../button-group/style/index.js');
4
+ require('../../button/style/index.js');
5
5
  require('../../select/style/index.js');
6
6
  require("@element-plus/nightly/theme-chalk/src/calendar.scss");
@@ -189,6 +189,7 @@ declare const _default: vue.DefineComponent<{
189
189
  __epPropKey: true;
190
190
  };
191
191
  readonly editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
192
+ readonly saveOnBlur: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
192
193
  readonly prefixIcon: EpPropFinalized<(new (...args: any[]) => (string | vue.Component) & {}) | (() => string | vue.Component) | ((new (...args: any[]) => (string | vue.Component) & {}) | (() => string | vue.Component))[], unknown, unknown, "", boolean>;
193
194
  readonly size: {
194
195
  readonly type: vue.PropType<EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
@@ -396,6 +397,7 @@ declare const _default: vue.DefineComponent<{
396
397
  __epPropKey: true;
397
398
  };
398
399
  readonly editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
400
+ readonly saveOnBlur: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
399
401
  readonly prefixIcon: EpPropFinalized<(new (...args: any[]) => (string | vue.Component) & {}) | (() => string | vue.Component) | ((new (...args: any[]) => (string | vue.Component) & {}) | (() => string | vue.Component))[], unknown, unknown, "", boolean>;
400
402
  readonly size: {
401
403
  readonly type: vue.PropType<EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
@@ -442,6 +444,7 @@ declare const _default: vue.DefineComponent<{
442
444
  readonly valueOnClear: EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
443
445
  readonly automaticDropdown: EpPropMergeType<BooleanConstructor, unknown, unknown>;
444
446
  readonly editable: EpPropMergeType<BooleanConstructor, unknown, unknown>;
447
+ readonly saveOnBlur: EpPropMergeType<BooleanConstructor, unknown, unknown>;
445
448
  readonly rangeSeparator: string;
446
449
  readonly shortcuts: unknown[];
447
450
  readonly showNow: EpPropMergeType<BooleanConstructor, unknown, unknown>;
@@ -188,6 +188,7 @@ declare const datePickerProps: {
188
188
  __epPropKey: true;
189
189
  };
190
190
  readonly editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
191
+ readonly saveOnBlur: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
191
192
  readonly prefixIcon: EpPropFinalized<(new (...args: any[]) => (string | vue.Component) & {}) | (() => string | vue.Component) | ((new (...args: any[]) => (string | vue.Component) & {}) | (() => string | vue.Component))[], unknown, unknown, "", boolean>;
192
193
  readonly size: {
193
194
  readonly type: vue.PropType<EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
@@ -2,6 +2,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  require('../../base/style/css.js');
3
3
  require('../../scrollbar/style/css.js');
4
4
  require('../../popper/style/css.js');
5
- require('../../button/style/css.js');
6
5
  require('../../button-group/style/css.js');
6
+ require('../../button/style/css.js');
7
7
  require("@element-plus/nightly/theme-chalk/el-dropdown.css");
@@ -2,6 +2,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  require('../../base/style/index.js');
3
3
  require('../../scrollbar/style/index.js');
4
4
  require('../../popper/style/index.js');
5
- require('../../button/style/index.js');
6
5
  require('../../button-group/style/index.js');
6
+ require('../../button/style/index.js');
7
7
  require("@element-plus/nightly/theme-chalk/src/dropdown.scss");
@@ -46,9 +46,9 @@ declare const __VLS_base: vue.DefineComponent<__VLS_WithDefaults<__VLS_TypeProps
46
46
  }>, {
47
47
  /** @description manually open preview */showPreview: typeof clickHandler;
48
48
  }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
49
+ show: () => void;
49
50
  close: () => void;
50
51
  error: (evt: Event) => void;
51
- show: () => void;
52
52
  load: (evt: Event) => void;
53
53
  switch: (val: number) => void;
54
54
  }, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ImageProps>, {
@@ -382,7 +382,11 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.
382
382
  id: (0, vue.unref)(inputId),
383
383
  ref_key: "textarea",
384
384
  ref: textarea,
385
- class: [(0, vue.unref)(nsTextarea).e("inner"), (0, vue.unref)(nsInput).is("focus", (0, vue.unref)(isFocused))]
385
+ class: [
386
+ (0, vue.unref)(nsTextarea).e("inner"),
387
+ (0, vue.unref)(nsInput).is("focus", (0, vue.unref)(isFocused)),
388
+ (0, vue.unref)(nsTextarea).is("clearable", __props.clearable)
389
+ ]
386
390
  }, (0, vue.unref)(attrs), {
387
391
  name: __props.name,
388
392
  minlength: __props.minlength,
@@ -407,8 +411,17 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.
407
411
  onChange: handleChange,
408
412
  onKeydown: handleKeydown
409
413
  }), null, 16, _hoisted_2),
410
- isWordLimitVisible.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
414
+ showClear.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(require_index$5.ElIcon), {
411
415
  key: 0,
416
+ class: (0, vue.normalizeClass)([(0, vue.unref)(nsTextarea).e("icon"), (0, vue.unref)(nsTextarea).e("clear")]),
417
+ onMousedown: (0, vue.withModifiers)((0, vue.unref)(_vue_shared.NOOP), ["prevent"]),
418
+ onClick: clear
419
+ }, {
420
+ default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.clearIcon)))]),
421
+ _: 1
422
+ }, 8, ["class", "onMousedown"])) : (0, vue.createCommentVNode)("v-if", true),
423
+ isWordLimitVisible.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
424
+ key: 1,
412
425
  style: (0, vue.normalizeStyle)(countStyle.value),
413
426
  class: (0, vue.normalizeClass)([(0, vue.unref)(nsInput).e("count"), (0, vue.unref)(nsInput).is("outside", __props.wordLimitPosition === "outside")])
414
427
  }, (0, vue.toDisplayString)(textLength.value) + " / " + (0, vue.toDisplayString)(__props.maxlength), 7)) : (0, vue.createCommentVNode)("v-if", true)
@@ -1 +1 @@
1
- {"version":3,"file":"input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../../../../packages/components/input/src/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n containerKls,\n {\n [nsInput.bm('group', 'append')]: $slots.append,\n [nsInput.bm('group', 'prepend')]: $slots.prepend,\n },\n ]\"\n :style=\"containerStyle\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- input -->\n <template v-if=\"type !== 'textarea'\">\n <!-- prepend slot -->\n <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n <slot name=\"prepend\" />\n </div>\n\n <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n <!-- prefix slot -->\n <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n <span :class=\"nsInput.e('prefix-inner')\">\n <slot name=\"prefix\" />\n <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </span>\n </span>\n\n <input\n :id=\"inputId\"\n ref=\"input\"\n :class=\"nsInput.e('inner')\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :tabindex=\"tabindex\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n\n <!-- suffix slot -->\n <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n <span :class=\"nsInput.e('suffix-inner')\">\n <template\n v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n >\n <slot name=\"suffix\" />\n <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"suffixIcon\" />\n </el-icon>\n </template>\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"showPwdVisible\"\n :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n @click=\"handlePasswordVisible\"\n @mousedown.prevent=\"NOOP\"\n @mouseup.prevent=\"NOOP\"\n >\n <component :is=\"passwordIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n <span :class=\"nsInput.e('count-inner')\">\n {{ textLength }} / {{ maxlength }}\n </span>\n </span>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </span>\n </span>\n </div>\n\n <!-- append slot -->\n <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n <slot name=\"append\" />\n </div>\n </template>\n\n <!-- textarea -->\n <template v-else>\n <textarea\n :id=\"inputId\"\n ref=\"textarea\"\n :class=\"[nsTextarea.e('inner'), nsInput.is('focus', isFocused)]\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :tabindex=\"tabindex\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :style=\"textareaStyle\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :rows=\"rows\"\n :role=\"containerRole\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n <span\n v-if=\"isWordLimitVisible\"\n :style=\"countStyle\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n {{ textLength }} / {{ maxlength }}\n </span>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n toRef,\n useAttrs as useRawAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Hide, View } from '@element-plus/icons-vue'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport {\n NOOP,\n ValidateComponentsMap,\n debugWarn,\n isClient,\n isObject,\n} from '@element-plus/utils'\nimport {\n useAttrs,\n useComposition,\n useCursor,\n useFocusController,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n name: COMPONENT_NAME,\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n nsInput.m(inputSize.value),\n nsInput.is('disabled', inputDisabled.value),\n nsInput.is('exceed', inputExceed.value),\n {\n [nsInput.b('group')]: slots.prepend || slots.append,\n [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n [nsInput.m('suffix')]:\n slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n [nsInput.bm('suffix', 'password-clear')]:\n showClear.value && showPwdVisible.value,\n [nsInput.b('hidden')]: props.type === 'hidden',\n },\n rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n nsInput.e('wrapper'),\n nsInput.is('focus', isFocused.value),\n])\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n _ref,\n {\n disabled: inputDisabled,\n afterBlur() {\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n props.inputStyle,\n textareaCalcStyle.value,\n { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n () =>\n props.clearable &&\n !inputDisabled.value &&\n !props.readonly &&\n !!nativeInputValue.value &&\n (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n () =>\n props.showWordLimit &&\n !!props.maxlength &&\n (props.type === 'text' || props.type === 'textarea') &&\n !inputDisabled.value &&\n !props.readonly &&\n !props.showPassword\n)\nconst textLength = computed(() => nativeInputValue.value.length)\nconst inputExceed = computed(\n () =>\n // show exceed style if length of initial value greater then maxlength\n !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)\n)\nconst suffixVisible = computed(\n () =>\n !!slots.suffix ||\n !!props.suffixIcon ||\n showClear.value ||\n props.showPassword ||\n isWordLimitVisible.value ||\n (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n () => !!Object.keys(props.modelModifiers).length\n)\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n onceInitSizeTextarea()\n if (\n !isWordLimitVisible.value ||\n (props.resize !== 'both' && props.resize !== 'horizontal')\n )\n return\n const entry = entries[0]\n const { width } = entry.contentRect\n countStyle.value = {\n /** right: 100% - width + padding(22) - right(10) */\n right: `calc(100% - ${width + 22 - 10}px)`,\n }\n})\n\nconst resizeTextarea = () => {\n const { type, autosize } = props\n\n if (!isClient || type !== 'textarea' || !textarea.value) return\n\n if (autosize) {\n const minRows = isObject(autosize) ? autosize.minRows : undefined\n const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n // If set textarea height in this case, the scrollbar will not hide.\n // So we need to hide scrollbar first, and reset it in next tick.\n // see https://github.com/element-plus/element-plus/issues/8825\n textareaCalcStyle.value = {\n overflowY: 'hidden',\n ...textareaStyle,\n }\n\n nextTick(() => {\n // NOTE: Force repaint to make sure the style set above is applied.\n textarea.value!.offsetHeight\n textareaCalcStyle.value = textareaStyle\n })\n } else {\n textareaCalcStyle.value = {\n minHeight: calcTextareaHeight(textarea.value).minHeight,\n }\n }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n let isInit = false\n return () => {\n if (isInit || !props.autosize) return\n const isElHidden = textarea.value?.offsetParent === null\n if (!isElHidden) {\n setTimeout(resizeTextarea)\n isInit = true\n }\n }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n const input = _ref.value\n const formatterValue = props.formatter\n ? props.formatter(nativeInputValue.value)\n : nativeInputValue.value\n if (!input || input.value === formatterValue || props.type === 'file') return\n input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n const { trim, number } = props.modelModifiers\n if (trim) {\n value = value.trim()\n }\n if (number) {\n value = `${looseToNumber(value)}`\n }\n if (props.formatter && props.parser) {\n value = props.parser(value)\n }\n return value\n}\n\nconst handleInput = async (event: Event) => {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (isComposing.value) return\n\n const { lazy } = props.modelModifiers\n let { value } = event.target as TargetElement\n if (lazy) {\n emit(INPUT_EVENT, value)\n return\n }\n\n value = formatValue(value)\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (String(value) === nativeInputValue.value) {\n // preserve native features while being compatible with #9501\n if (props.formatter) {\n setNativeInputValue()\n }\n return\n }\n\n recordCursor()\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n await nextTick()\n\n if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n setNativeInputValue()\n }\n setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n let { value } = event.target as TargetElement\n\n value = formatValue(value)\n if (props.modelModifiers.lazy) {\n emit(UPDATE_MODEL_EVENT, value)\n }\n emit(CHANGE_EVENT, value, event)\n\n await nextTick()\n setNativeInputValue()\n}\n\nconst {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n hovering.value = false\n emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n hovering.value = true\n emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n emit('keydown', evt)\n}\n\nconst select = () => {\n _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n emit(UPDATE_MODEL_EVENT, '')\n emit(CHANGE_EVENT, '')\n emit('clear', evt)\n emit(INPUT_EVENT, '')\n}\n\nwatch(\n () => props.modelValue,\n () => {\n nextTick(() => resizeTextarea())\n if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n if (!_ref.value) {\n return\n }\n const { trim, number } = props.modelModifiers\n const elValue = _ref.value.value\n const displayValue =\n (number || props.type === 'number') && !/^0\\d/.test(elValue)\n ? `${looseToNumber(elValue)}`\n : elValue\n\n if (displayValue === newValue) {\n return\n }\n\n if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n if (trim && displayValue.trim() === newValue) {\n return\n }\n }\n\n setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n () => props.type,\n async () => {\n await nextTick()\n setNativeInputValue()\n resizeTextarea()\n }\n)\n\nonMounted(() => {\n if (!props.formatter && props.parser) {\n debugWarn(\n COMPONENT_NAME,\n 'If you set the parser, you also need to set the formatter.'\n )\n }\n setNativeInputValue()\n nextTick(resizeTextarea)\n})\n\ndefineExpose({\n /** @description HTML input element */\n input,\n /** @description HTML textarea element */\n textarea,\n /** @description HTML element, input or textarea */\n ref: _ref,\n /** @description style of textarea. */\n textareaStyle,\n\n /** @description from props (used on unit test) */\n autosize: toRef(props, 'autosize'),\n\n /** @description is input composing */\n isComposing,\n\n /** @description HTML input element native method */\n focus,\n /** @description HTML input element native method */\n blur,\n /** @description HTML input element native method */\n select,\n /** @description clear input value */\n clear,\n /** @description resize textarea. */\n resizeTextarea,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmNA,MAAM,iBAAiB;;;;;;;;EAKvB,MAAM,QAAQ;EACd,MAAM,OAAO;EAEb,MAAM,8BAAuB;EAC7B,MAAM,QAAQ,wBAAS;EACvB,MAAM,2BAAiB;EAEvB,MAAM,uCAA8B;GAClC,MAAM,SAAS,aAAa,WAAW,GAAG,GAAG,QAAQ,GAAG;GACxD,QAAQ,EAAE,UAAU,MAAM;GAC1B,QAAQ,GAAG,YAAY,cAAc,MAAM;GAC3C,QAAQ,GAAG,UAAU,YAAY,MAAM;GACvC;KACG,QAAQ,EAAE,QAAQ,GAAG,MAAM,WAAW,MAAM;KAC5C,QAAQ,EAAE,SAAS,GAAG,MAAM,UAAU,MAAM;KAC5C,QAAQ,EAAE,SAAS,GAClB,MAAM,UAAU,MAAM,cAAc,MAAM,aAAa,MAAM;KAC9D,QAAQ,GAAG,UAAU,iBAAiB,GACrC,UAAU,SAAS,eAAe;KACnC,QAAQ,EAAE,SAAS,GAAG,MAAM,SAAS;IACvC;GACD,SAAS;GACV,CAAA;EAED,MAAM,qCAA4B,CAChC,QAAQ,EAAE,UAAU,EACpB,QAAQ,GAAG,SAAS,UAAU,MAAM,CACrC,CAAA;EAED,MAAM,EAAE,MAAM,QAAQ,UAAU,eAAe,mCAAY;EAC3D,MAAM,EAAE,YAAY,yCAAmB,OAAO,EAC5C,iBAAiB,YAClB,CAAA;EACD,MAAM,YAAY,2CAAY;EAC9B,MAAM,gBAAgB,+CAAgB;EACtC,MAAM,UAAU,6BAAa,QAAO;EACpC,MAAM,aAAa,6BAAa,WAAU;EAE1C,MAAM,6BAAqC;EAC3C,MAAM,gCAA2C;EAEjD,MAAM,wBAAe,MAAK;EAC1B,MAAM,+BAAsB,MAAK;EACjC,MAAM,2BAA6B;EACnC,MAAM,wCAA+B,MAAM,WAAU;EAErD,MAAM,+BAAsB,MAAM,SAAS,SAAS,MAAK;EAGzD,MAAM,EAAE,YAAY,WAAW,aAAa,eAAe,mCACzD,MACA;GACE,UAAU;GACV,YAAY;AACV,QAAI,MAAM,cACR,aAAY,WAAW,OAAO,CAAC,OAAO,QAAQ,wBAAU,IAAI,CAAA;;GAGlE,CACF;EAEA,MAAM,yCAAgC,QAAQ,cAAc,MAAK;EACjE,MAAM,wCAA+B,YAAY,iBAAiB,GAAE;EACpE,MAAM,uCACE,cAAc,SAAS,mCAAsB,cAAc,OACnE;EACA,MAAM,uCAA+B,gBAAgB,QAAQ,+BAAO,6BAAK;EACzE,MAAM,yCAA4C,CAChD,SAAS,MACV,CAAA;EACD,MAAM,wCAA2C;GAC/C,MAAM;GACN,kBAAkB;GAClB,EAAE,QAAQ,MAAM,QAAQ;GACzB,CAAA;EACD,MAAM,qEACE,MAAM,WAAW,GAAG,KAAK,OAAO,MAAM,WAAU,CACxD;EACA,MAAM,oCAEF,MAAM,aACN,CAAC,cAAc,SACf,CAAC,MAAM,YACP,CAAC,CAAC,iBAAiB,UAClB,UAAU,SAAS,SAAS,OACjC;EACA,MAAM,yCACE,MAAM,gBAAgB,CAAC,cAAc,SAAS,CAAC,CAAC,iBAAiB,MACzE;EACA,MAAM,6CAEF,MAAM,iBACN,CAAC,CAAC,MAAM,cACP,MAAM,SAAS,UAAU,MAAM,SAAS,eACzC,CAAC,cAAc,SACf,CAAC,MAAM,YACP,CAAC,MAAM,aACX;EACA,MAAM,qCAA4B,iBAAiB,MAAM,OAAM;EAC/D,MAAM,sCAGF,CAAC,CAAC,mBAAmB,SAAS,WAAW,QAAQ,OAAO,MAAM,UAAS,CAC3E;EACA,MAAM,wCAEF,CAAC,CAAC,MAAM,UACR,CAAC,CAAC,MAAM,cACR,UAAU,SACV,MAAM,gBACN,mBAAmB,SAClB,CAAC,CAAC,cAAc,SAAS,eAAe,MAC7C;EACA,MAAM,4CACE,CAAC,CAAC,OAAO,KAAK,MAAM,eAAe,CAAC,OAC5C;EAEA,MAAM,CAAC,cAAc,aAAa,0BAAU,MAAK;AAEjD,sCAAkB,WAAW,YAAY;AACvC,yBAAqB;AACrB,OACE,CAAC,mBAAmB,SACnB,MAAM,WAAW,UAAU,MAAM,WAAW,aAE7C;GAEF,MAAM,EAAE,UADM,QAAQ,GACE;AACxB,cAAW,QAAQ,EAEjB,OAAO,eAAe,QAAQ,KAAK,GAAG,MACxC;IACD;EAED,MAAM,uBAAuB;GAC3B,MAAM,EAAE,MAAM,aAAa;AAE3B,OAAI,CAAC,yBAAY,SAAS,cAAc,CAAC,SAAS,MAAO;AAEzD,OAAI,UAAU;IACZ,MAAM,oCAAmB,SAAS,GAAG,SAAS,UAAU;IACxD,MAAM,oCAAmB,SAAS,GAAG,SAAS,UAAU;IACxD,MAAM,gBAAgB,iCAAmB,SAAS,OAAO,SAAS,QAAO;AAMzE,sBAAkB,QAAQ;KACxB,WAAW;KACX,GAAG;KACL;AAEA,4BAAe;AAEb,cAAS,MAAO;AAChB,uBAAkB,QAAQ;MAC3B;SAED,mBAAkB,QAAQ,EACxB,WAAW,iCAAmB,SAAS,MAAM,CAAC,WAChD;;EAIJ,MAAM,wBAAwB,mBAA+B;GAC3D,IAAI,SAAS;AACb,gBAAa;AACX,QAAI,UAAU,CAAC,MAAM,SAAU;AAE/B,QAAI,EADe,SAAS,OAAO,iBAAiB,OACnC;AACf,gBAAW,eAAc;AACzB,cAAS;;;;EAKf,MAAM,uBAAuB,qBAAqB,eAAc;EAEhE,MAAM,4BAA4B;GAChC,MAAM,QAAQ,KAAK;GACnB,MAAM,iBAAiB,MAAM,YACzB,MAAM,UAAU,iBAAiB,MAAK,GACtC,iBAAiB;AACrB,OAAI,CAAC,SAAS,MAAM,UAAU,kBAAkB,MAAM,SAAS,OAAQ;AACvE,SAAM,QAAQ;;EAGhB,MAAM,eAAe,UAAkB;GACrC,MAAM,EAAE,MAAM,WAAW,MAAM;AAC/B,OAAI,KACF,SAAQ,MAAM,MAAK;AAErB,OAAI,OACF,SAAQ,GAAG,4BAAc,MAAM;AAEjC,OAAI,MAAM,aAAa,MAAM,OAC3B,SAAQ,MAAM,OAAO,MAAK;AAE5B,UAAO;;EAGT,MAAM,cAAc,OAAO,UAAiB;AAG1C,OAAI,YAAY,MAAO;GAEvB,MAAM,EAAE,SAAS,MAAM;GACvB,IAAI,EAAE,UAAU,MAAM;AACtB,OAAI,MAAM;AACR,SAAK,2BAAa,MAAK;AACvB;;AAGF,WAAQ,YAAY,MAAK;AAIzB,OAAI,OAAO,MAAM,KAAK,iBAAiB,OAAO;AAE5C,QAAI,MAAM,UACR,sBAAoB;AAEtB;;AAGF,iBAAa;AACb,QAAK,kCAAoB,MAAK;AAC9B,QAAK,2BAAa,MAAK;AAIvB,4BAAe;AAEf,OAAK,MAAM,aAAa,MAAM,UAAW,CAAC,kBAAkB,MAC1D,sBAAoB;AAEtB,cAAU;;EAGZ,MAAM,eAAe,OAAO,UAAiB;GAC3C,IAAI,EAAE,UAAU,MAAM;AAEtB,WAAQ,YAAY,MAAK;AACzB,OAAI,MAAM,eAAe,KACvB,MAAK,kCAAoB,MAAK;AAEhC,QAAK,4BAAc,OAAO,MAAK;AAE/B,4BAAe;AACf,wBAAoB;;EAGtB,MAAM,EACJ,aACA,wBACA,yBACA,yBACE,+BAAe;GAAE;GAAM,kBAAkB;GAAa,CAAA;EAE1D,MAAM,8BAA8B;AAClC,mBAAgB,QAAQ,CAAC,gBAAgB;;EAG3C,MAAM,cAAc,KAAK,OAAO,OAAM;EAEtC,MAAM,aAAa,KAAK,OAAO,MAAK;EAEpC,MAAM,oBAAoB,QAAoB;AAC5C,YAAS,QAAQ;AACjB,QAAK,cAAc,IAAG;;EAGxB,MAAM,oBAAoB,QAAoB;AAC5C,YAAS,QAAQ;AACjB,QAAK,cAAc,IAAG;;EAGxB,MAAM,iBAAiB,QAAuB;AAC5C,QAAK,WAAW,IAAG;;EAGrB,MAAM,eAAe;AACnB,QAAK,OAAO,QAAO;;EAGrB,MAAM,SAAS,QAAqB;AAClC,QAAK,kCAAoB,GAAE;AAC3B,QAAK,4BAAc,GAAE;AACrB,QAAK,SAAS,IAAG;AACjB,QAAK,2BAAa,GAAE;;AAGtB,uBACQ,MAAM,kBACN;AACJ,2BAAe,gBAAgB,CAAA;AAC/B,OAAI,MAAM,cACR,aAAY,WAAW,SAAS,CAAC,OAAO,QAAQ,wBAAU,IAAI,CAAA;IAGpE;AAKA,iBAAM,mBAAmB,aAAa;AACpC,OAAI,CAAC,KAAK,MACR;GAEF,MAAM,EAAE,MAAM,WAAW,MAAM;GAC/B,MAAM,UAAU,KAAK,MAAM;GAC3B,MAAM,gBACH,UAAU,MAAM,SAAS,aAAa,CAAC,OAAO,KAAK,QAAO,GACvD,GAAG,4BAAc,QAAQ,KACzB;AAEN,OAAI,iBAAiB,SACnB;AAGF,OAAI,SAAS,kBAAkB,KAAK,SAAS,KAAK,MAAM,SAAS,SAC/D;QAAI,QAAQ,aAAa,MAAM,KAAK,SAClC;;AAIJ,wBAAoB;IACrB;AAKD,uBACQ,MAAM,MACZ,YAAY;AACV,4BAAe;AACf,wBAAoB;AACpB,mBAAe;IAEnB;AAEA,2BAAgB;AACd,OAAI,CAAC,MAAM,aAAa,MAAM,OAC5B,yBACE,gBACA,6DACF;AAEF,wBAAoB;AACpB,qBAAS,eAAc;IACxB;AAED,WAAa;GAEX;GAEA;GAEA,KAAK;GAEL;GAGA,yBAAgB,OAAO,WAAW;GAGlC;GAGA;GAEA;GAEA;GAEA;GAEA;GACD,CAAA;;4DApbO,OAAA;IA7JH,+BAAK,CAAU,aAAA;qBAA+B,QAAO,CAAC,GAAE,SAAA,SAAA,GAAsBA,KAAAA,OAAO;qBAAiB,QAAO,CAAC,GAAE,SAAA,UAAA,GAAuBA,KAAAA,OAAO;;IAO9I,+BAAO,eAAA,MAAc;IACrB,cAAY;IACZ,cAAY;mCAEb,UAAc,EACE,QAAA,SAAI,gEAsGT,cAAA,EAAA,KAAA,GAAA,EAAA;gCArGT,iBAAqB;IACVA,KAAAA,OAAO,6DAEZ,OAAA;;KAFsB,8CAAO,QAAO,CAAC,GAAE,SAAA,UAAA,CAAA;4BACpB,KAAA,QAAA,UAAA;gCA6FnB,OAAA;cA1FG;KAAJ,KAAI;KAAc,+BAAO,WAAA,MAAU;;iCACtC,gBAAoB;KACRA,KAAAA,OAAO,UAAU,QAAA,gEAOtB,QAAA;;MAPmC,8CAAO,QAAO,CAAC,EAAC,SAAA,CAAA;qCAMjD,QAAA,EALA,8CAAO,QAAO,CAAC,EAAC,eAAA,CAAA,yBACC,KAAA,QAAA,SAAA,EACP,QAAA,wEAEL,uBAAA,EAAA;;MAFkB,8CAAO,QAAO,CAAC,EAAC,OAAA,CAAA;;sCACZ,8EAAd,QAAA,WAAU,CAAA;;;iCA+B9B,6BAAA;MAzBC,mBAAI,QAAO;eACR;MAAJ,KAAI;MACH,sBAAO,QAAO,CAAC,EAAC,QAAA;uBACT,MAAK,EAAA;MACZ,MAAM,QAAA;MACN,WAAW,QAAA;MACX,WAAW,QAAA;MACX,MAAM,QAAA,eAAgB,gBAAA,QAAe,SAAA,aAA0B,QAAA;MAC/D,yBAAU,cAAa;MACvB,UAAU,QAAA;MACV,cAAc,QAAA;MACd,UAAU,QAAA;MACV,cAAY,QAAA;MACZ,aAAa,QAAA;MACb,OAAO,QAAA;MACP,MAAM,QAAA;MACN,WAAW,QAAA;MACX,MAAM,QAAA;MACN,WAAW,QAAA;MACX,oBAAgB,OAAA,OAAA,OAAA,iCAAE,uBAAA,mBAAA,uBAAA,CAAA,GAAA,KAAsB;MACxC,qBAAiB,OAAA,OAAA,OAAA,iCAAE,wBAAA,mBAAA,wBAAA,CAAA,GAAA,KAAuB;MAC1C,kBAAc,OAAA,OAAA,OAAA,iCAAE,qBAAA,mBAAA,qBAAA,CAAA,GAAA,KAAoB;MACpC,SAAO;MACP,UAAQ;MACR,WAAS;;iCAGZ,gBAAoB;KACR,cAAA,2DAiDL,QAAA;;MAjDqB,8CAAO,QAAO,CAAC,EAAC,SAAA,CAAA;qCAgDnC,QAAA,EA/CA,8CAAO,QAAO,CAAC,EAAC,eAAA,CAAA;OAEZ,UAAA,SAAS,CAAK,eAAA,SAAc,CAAK,mBAAA,2DAM/B,cAAA,EAAA,KAAA,GAAA,EAAA,qBAJa,KAAA,QAAA,SAAA,EACP,QAAA,wEAEL,uBAAA,EAAA;;OAFkB,8CAAO,QAAO,CAAC,EAAC,OAAA,CAAA;;uCACZ,8EAAd,QAAA,WAAU,CAAA;;;MAItB,UAAA,mEAME,uBAAA,EAAA;;OALP,+BAAK,gBAAG,QAAO,CAAC,EAAC,OAAA,iBAAU,QAAO,CAAC,EAAC,QAAA,CAAA,CAAA;OACpC,mDAAmB,iBAAI,EAAA,CAAA,UAAA,CAAA;OACvB,SAAO;;uCAEqB,8EAAb,QAAA,UAAS,CAAA;;;MAGnB,eAAA,mEAOE,uBAAA,EAAA;;OANP,+BAAK,gBAAG,QAAO,CAAC,EAAC,OAAA,iBAAU,QAAO,CAAC,EAAC,WAAA,CAAA,CAAA;OACpC,SAAO;OACP,mDAAmB,iBAAI,EAAA,CAAA,UAAA,CAAA;OACvB,iDAAiB,iBAAI,EAAA,CAAA,UAAA,CAAA;;uCAEU,8EAAhB,aAAA,MAAY,CAAA;;;;;;;MAGtB,mBAAA,2DASD,QAAA;;OARJ,+BAAK,gBAAoB,QAAO,CAAC,EAAC,QAAA,iBAA2B,QAAO,CAAC,GAAE,WAAY,QAAA,sBAAiB,UAAA;sCAO9F,QAAA,EAFA,8CAAO,QAAO,CAAC,EAAC,cAAA,CAAA,6BAClB,WAAA,MAAU,GAAG,iCAAM,QAAA,UAAS,EAAA,EAAA;MAI3B,cAAA,SAAiB,aAAA,SAAgB,eAAA,mEAQ/B,uBAAA,EAAA;;OAPP,+BAAK;uBAAoB,QAAO,CAAC,EAAC,OAAA;uBAA0B,QAAO,CAAC,EAAC,eAAA;uBAAkC,QAAO,CAAC,GAAE,WAAY,cAAA,UAAa,aAAA;;;uCAM3G,8EAAhB,aAAA,MAAY,CAAA;;;;;gCAMpC,gBAAoB;IACTA,KAAAA,OAAO,4DAEZ,OAAA;;KAFqB,8CAAO,QAAO,CAAC,GAAE,SAAA,SAAA,CAAA;4BACpB,KAAA,QAAA,SAAA;gEA4Cf,cAAA,EAAA,KAAA,GAAA,EAAA;gCAxCX,aAAiB;gCA6Bb,gCAAA;KA1BC,mBAAI,QAAO;cACR;KAAJ,KAAI;KACH,OAAK,gBAAG,WAAU,CAAC,EAAC,QAAA,iBAAW,QAAO,CAAC,GAAE,wBAAU,UAAS,CAAA,CAAA;sBACrD,MAAK,EAAA;KACZ,MAAM,QAAA;KACN,WAAW,QAAA;KACX,WAAW,QAAA;KACX,UAAU,QAAA;KACV,yBAAU,cAAa;KACvB,UAAU,QAAA;KACV,cAAc,QAAA;KACd,OAAO,cAAA;KACP,cAAY,QAAA;KACZ,aAAa,QAAA;KACb,MAAM,QAAA;KACN,WAAW,QAAA;KACX,MAAM,QAAA;KACN,MAAM,QAAA;KACN,oBAAgB,OAAA,OAAA,OAAA,iCAAE,uBAAA,mBAAA,uBAAA,CAAA,GAAA,KAAsB;KACxC,qBAAiB,OAAA,OAAA,OAAA,iCAAE,wBAAA,mBAAA,wBAAA,CAAA,GAAA,KAAuB;KAC1C,kBAAc,OAAA,OAAA,OAAA,iCAAE,qBAAA,mBAAA,qBAAA,CAAA,GAAA,KAAoB;KACpC,SAAO;KACP,SAAK,OAAA,OAAA,OAAA,iCAAE,YAAA,mBAAA,YAAA,CAAA,GAAA,KAAW;KAClB,QAAI,OAAA,OAAA,OAAA,iCAAE,WAAA,mBAAA,WAAA,CAAA,GAAA,KAAU;KAChB,UAAQ;KACR,WAAS;;IAGJ,mBAAA,2DAQD,QAAA;;KAPJ,+BAAO,WAAA,MAAU;KACjB,+BAAK,gBAAc,QAAO,CAAC,EAAC,QAAA,iBAAqB,QAAO,CAAC,GAAE,WAAY,QAAA,sBAAiB,UAAA;gCAKtF,WAAA,MAAU,GAAG,iCAAM,QAAA,UAAS,EAAA,EAAA"}
1
+ {"version":3,"file":"input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../../../../packages/components/input/src/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n containerKls,\n {\n [nsInput.bm('group', 'append')]: $slots.append,\n [nsInput.bm('group', 'prepend')]: $slots.prepend,\n },\n ]\"\n :style=\"containerStyle\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- input -->\n <template v-if=\"type !== 'textarea'\">\n <!-- prepend slot -->\n <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n <slot name=\"prepend\" />\n </div>\n\n <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n <!-- prefix slot -->\n <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n <span :class=\"nsInput.e('prefix-inner')\">\n <slot name=\"prefix\" />\n <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </span>\n </span>\n\n <input\n :id=\"inputId\"\n ref=\"input\"\n :class=\"nsInput.e('inner')\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :tabindex=\"tabindex\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n\n <!-- suffix slot -->\n <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n <span :class=\"nsInput.e('suffix-inner')\">\n <template\n v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n >\n <slot name=\"suffix\" />\n <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"suffixIcon\" />\n </el-icon>\n </template>\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"showPwdVisible\"\n :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n @click=\"handlePasswordVisible\"\n @mousedown.prevent=\"NOOP\"\n @mouseup.prevent=\"NOOP\"\n >\n <component :is=\"passwordIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n <span :class=\"nsInput.e('count-inner')\">\n {{ textLength }} / {{ maxlength }}\n </span>\n </span>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </span>\n </span>\n </div>\n\n <!-- append slot -->\n <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n <slot name=\"append\" />\n </div>\n </template>\n\n <!-- textarea -->\n <template v-else>\n <textarea\n :id=\"inputId\"\n ref=\"textarea\"\n :class=\"[\n nsTextarea.e('inner'),\n nsInput.is('focus', isFocused),\n nsTextarea.is('clearable', clearable),\n ]\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :tabindex=\"tabindex\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :style=\"textareaStyle\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :rows=\"rows\"\n :role=\"containerRole\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :style=\"countStyle\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n {{ textLength }} / {{ maxlength }}\n </span>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n toRef,\n useAttrs as useRawAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Hide, View } from '@element-plus/icons-vue'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport {\n NOOP,\n ValidateComponentsMap,\n debugWarn,\n isClient,\n isObject,\n} from '@element-plus/utils'\nimport {\n useAttrs,\n useComposition,\n useCursor,\n useFocusController,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n name: COMPONENT_NAME,\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n nsInput.m(inputSize.value),\n nsInput.is('disabled', inputDisabled.value),\n nsInput.is('exceed', inputExceed.value),\n {\n [nsInput.b('group')]: slots.prepend || slots.append,\n [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n [nsInput.m('suffix')]:\n slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n [nsInput.bm('suffix', 'password-clear')]:\n showClear.value && showPwdVisible.value,\n [nsInput.b('hidden')]: props.type === 'hidden',\n },\n rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n nsInput.e('wrapper'),\n nsInput.is('focus', isFocused.value),\n])\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n _ref,\n {\n disabled: inputDisabled,\n afterBlur() {\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n props.inputStyle,\n textareaCalcStyle.value,\n { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n () =>\n props.clearable &&\n !inputDisabled.value &&\n !props.readonly &&\n !!nativeInputValue.value &&\n (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n () =>\n props.showWordLimit &&\n !!props.maxlength &&\n (props.type === 'text' || props.type === 'textarea') &&\n !inputDisabled.value &&\n !props.readonly &&\n !props.showPassword\n)\nconst textLength = computed(() => nativeInputValue.value.length)\nconst inputExceed = computed(\n () =>\n // show exceed style if length of initial value greater then maxlength\n !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)\n)\nconst suffixVisible = computed(\n () =>\n !!slots.suffix ||\n !!props.suffixIcon ||\n showClear.value ||\n props.showPassword ||\n isWordLimitVisible.value ||\n (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n () => !!Object.keys(props.modelModifiers).length\n)\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n onceInitSizeTextarea()\n if (\n !isWordLimitVisible.value ||\n (props.resize !== 'both' && props.resize !== 'horizontal')\n )\n return\n const entry = entries[0]\n const { width } = entry.contentRect\n countStyle.value = {\n /** right: 100% - width + padding(22) - right(10) */\n right: `calc(100% - ${width + 22 - 10}px)`,\n }\n})\n\nconst resizeTextarea = () => {\n const { type, autosize } = props\n\n if (!isClient || type !== 'textarea' || !textarea.value) return\n\n if (autosize) {\n const minRows = isObject(autosize) ? autosize.minRows : undefined\n const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n // If set textarea height in this case, the scrollbar will not hide.\n // So we need to hide scrollbar first, and reset it in next tick.\n // see https://github.com/element-plus/element-plus/issues/8825\n textareaCalcStyle.value = {\n overflowY: 'hidden',\n ...textareaStyle,\n }\n\n nextTick(() => {\n // NOTE: Force repaint to make sure the style set above is applied.\n textarea.value!.offsetHeight\n textareaCalcStyle.value = textareaStyle\n })\n } else {\n textareaCalcStyle.value = {\n minHeight: calcTextareaHeight(textarea.value).minHeight,\n }\n }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n let isInit = false\n return () => {\n if (isInit || !props.autosize) return\n const isElHidden = textarea.value?.offsetParent === null\n if (!isElHidden) {\n setTimeout(resizeTextarea)\n isInit = true\n }\n }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n const input = _ref.value\n const formatterValue = props.formatter\n ? props.formatter(nativeInputValue.value)\n : nativeInputValue.value\n if (!input || input.value === formatterValue || props.type === 'file') return\n input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n const { trim, number } = props.modelModifiers\n if (trim) {\n value = value.trim()\n }\n if (number) {\n value = `${looseToNumber(value)}`\n }\n if (props.formatter && props.parser) {\n value = props.parser(value)\n }\n return value\n}\n\nconst handleInput = async (event: Event) => {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (isComposing.value) return\n\n const { lazy } = props.modelModifiers\n let { value } = event.target as TargetElement\n if (lazy) {\n emit(INPUT_EVENT, value)\n return\n }\n\n value = formatValue(value)\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (String(value) === nativeInputValue.value) {\n // preserve native features while being compatible with #9501\n if (props.formatter) {\n setNativeInputValue()\n }\n return\n }\n\n recordCursor()\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n await nextTick()\n\n if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n setNativeInputValue()\n }\n setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n let { value } = event.target as TargetElement\n\n value = formatValue(value)\n if (props.modelModifiers.lazy) {\n emit(UPDATE_MODEL_EVENT, value)\n }\n emit(CHANGE_EVENT, value, event)\n\n await nextTick()\n setNativeInputValue()\n}\n\nconst {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n hovering.value = false\n emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n hovering.value = true\n emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n emit('keydown', evt)\n}\n\nconst select = () => {\n _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n emit(UPDATE_MODEL_EVENT, '')\n emit(CHANGE_EVENT, '')\n emit('clear', evt)\n emit(INPUT_EVENT, '')\n}\n\nwatch(\n () => props.modelValue,\n () => {\n nextTick(() => resizeTextarea())\n if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n if (!_ref.value) {\n return\n }\n const { trim, number } = props.modelModifiers\n const elValue = _ref.value.value\n const displayValue =\n (number || props.type === 'number') && !/^0\\d/.test(elValue)\n ? `${looseToNumber(elValue)}`\n : elValue\n\n if (displayValue === newValue) {\n return\n }\n\n if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n if (trim && displayValue.trim() === newValue) {\n return\n }\n }\n\n setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n () => props.type,\n async () => {\n await nextTick()\n setNativeInputValue()\n resizeTextarea()\n }\n)\n\nonMounted(() => {\n if (!props.formatter && props.parser) {\n debugWarn(\n COMPONENT_NAME,\n 'If you set the parser, you also need to set the formatter.'\n )\n }\n setNativeInputValue()\n nextTick(resizeTextarea)\n})\n\ndefineExpose({\n /** @description HTML input element */\n input,\n /** @description HTML textarea element */\n textarea,\n /** @description HTML element, input or textarea */\n ref: _ref,\n /** @description style of textarea. */\n textareaStyle,\n\n /** @description from props (used on unit test) */\n autosize: toRef(props, 'autosize'),\n\n /** @description is input composing */\n isComposing,\n\n /** @description HTML input element native method */\n focus,\n /** @description HTML input element native method */\n blur,\n /** @description HTML input element native method */\n select,\n /** @description clear input value */\n clear,\n /** @description resize textarea. */\n resizeTextarea,\n})\n</script>\n"],"mappings":"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"}