@element-plus/nightly 0.0.20220117 → 0.0.20220118

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 (663) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.css +1 -1
  3. package/dist/index.full.js +2196 -3407
  4. package/dist/index.full.min.js +8 -10
  5. package/dist/index.full.min.js.map +1 -1
  6. package/dist/index.full.min.mjs +8 -10
  7. package/dist/index.full.min.mjs.map +1 -1
  8. package/dist/index.full.mjs +2189 -3403
  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.js +1 -1
  14. package/dist/locale/ar.min.js +1 -1
  15. package/dist/locale/ar.min.mjs +1 -1
  16. package/dist/locale/ar.mjs +1 -1
  17. package/dist/locale/bg.js +1 -1
  18. package/dist/locale/bg.min.js +1 -1
  19. package/dist/locale/bg.min.mjs +1 -1
  20. package/dist/locale/bg.mjs +1 -1
  21. package/dist/locale/bn.js +1 -1
  22. package/dist/locale/bn.min.js +1 -1
  23. package/dist/locale/bn.min.mjs +1 -1
  24. package/dist/locale/bn.mjs +1 -1
  25. package/dist/locale/ca.js +1 -1
  26. package/dist/locale/ca.min.js +1 -1
  27. package/dist/locale/ca.min.mjs +1 -1
  28. package/dist/locale/ca.mjs +1 -1
  29. package/dist/locale/cs.js +1 -1
  30. package/dist/locale/cs.min.js +1 -1
  31. package/dist/locale/cs.min.mjs +1 -1
  32. package/dist/locale/cs.mjs +1 -1
  33. package/dist/locale/da.js +1 -1
  34. package/dist/locale/da.min.js +1 -1
  35. package/dist/locale/da.min.mjs +1 -1
  36. package/dist/locale/da.mjs +1 -1
  37. package/dist/locale/de.js +1 -1
  38. package/dist/locale/de.min.js +1 -1
  39. package/dist/locale/de.min.mjs +1 -1
  40. package/dist/locale/de.mjs +1 -1
  41. package/dist/locale/el.js +1 -1
  42. package/dist/locale/el.min.js +1 -1
  43. package/dist/locale/el.min.mjs +1 -1
  44. package/dist/locale/el.mjs +1 -1
  45. package/dist/locale/en.js +1 -1
  46. package/dist/locale/en.min.js +1 -1
  47. package/dist/locale/en.min.mjs +1 -1
  48. package/dist/locale/en.mjs +1 -1
  49. package/dist/locale/eo.js +1 -1
  50. package/dist/locale/eo.min.js +1 -1
  51. package/dist/locale/eo.min.mjs +1 -1
  52. package/dist/locale/eo.mjs +1 -1
  53. package/dist/locale/es.js +1 -1
  54. package/dist/locale/es.min.js +1 -1
  55. package/dist/locale/es.min.mjs +1 -1
  56. package/dist/locale/es.mjs +1 -1
  57. package/dist/locale/et.js +1 -1
  58. package/dist/locale/et.min.js +1 -1
  59. package/dist/locale/et.min.mjs +1 -1
  60. package/dist/locale/et.mjs +1 -1
  61. package/dist/locale/eu.js +1 -1
  62. package/dist/locale/eu.min.js +1 -1
  63. package/dist/locale/eu.min.mjs +1 -1
  64. package/dist/locale/eu.mjs +1 -1
  65. package/dist/locale/fa.js +1 -1
  66. package/dist/locale/fa.min.js +1 -1
  67. package/dist/locale/fa.min.mjs +1 -1
  68. package/dist/locale/fa.mjs +1 -1
  69. package/dist/locale/fi.js +1 -1
  70. package/dist/locale/fi.min.js +1 -1
  71. package/dist/locale/fi.min.mjs +1 -1
  72. package/dist/locale/fi.mjs +1 -1
  73. package/dist/locale/fr.js +1 -1
  74. package/dist/locale/fr.min.js +1 -1
  75. package/dist/locale/fr.min.mjs +1 -1
  76. package/dist/locale/fr.mjs +1 -1
  77. package/dist/locale/he.js +1 -1
  78. package/dist/locale/he.min.js +1 -1
  79. package/dist/locale/he.min.mjs +1 -1
  80. package/dist/locale/he.mjs +1 -1
  81. package/dist/locale/hr.js +1 -1
  82. package/dist/locale/hr.min.js +1 -1
  83. package/dist/locale/hr.min.mjs +1 -1
  84. package/dist/locale/hr.mjs +1 -1
  85. package/dist/locale/hu.js +1 -1
  86. package/dist/locale/hu.min.js +1 -1
  87. package/dist/locale/hu.min.mjs +1 -1
  88. package/dist/locale/hu.mjs +1 -1
  89. package/dist/locale/hy-am.js +1 -1
  90. package/dist/locale/hy-am.min.js +1 -1
  91. package/dist/locale/hy-am.min.mjs +1 -1
  92. package/dist/locale/hy-am.mjs +1 -1
  93. package/dist/locale/id.js +1 -1
  94. package/dist/locale/id.min.js +1 -1
  95. package/dist/locale/id.min.mjs +1 -1
  96. package/dist/locale/id.mjs +1 -1
  97. package/dist/locale/it.js +1 -1
  98. package/dist/locale/it.min.js +1 -1
  99. package/dist/locale/it.min.mjs +1 -1
  100. package/dist/locale/it.mjs +1 -1
  101. package/dist/locale/ja.js +1 -1
  102. package/dist/locale/ja.min.js +1 -1
  103. package/dist/locale/ja.min.mjs +1 -1
  104. package/dist/locale/ja.mjs +1 -1
  105. package/dist/locale/kk.js +1 -1
  106. package/dist/locale/kk.min.js +1 -1
  107. package/dist/locale/kk.min.mjs +1 -1
  108. package/dist/locale/kk.mjs +1 -1
  109. package/dist/locale/km.js +1 -1
  110. package/dist/locale/km.min.js +1 -1
  111. package/dist/locale/km.min.mjs +1 -1
  112. package/dist/locale/km.mjs +1 -1
  113. package/dist/locale/ko.js +1 -1
  114. package/dist/locale/ko.min.js +1 -1
  115. package/dist/locale/ko.min.mjs +1 -1
  116. package/dist/locale/ko.mjs +1 -1
  117. package/dist/locale/ku.js +1 -1
  118. package/dist/locale/ku.min.js +1 -1
  119. package/dist/locale/ku.min.mjs +1 -1
  120. package/dist/locale/ku.mjs +1 -1
  121. package/dist/locale/ky.js +1 -1
  122. package/dist/locale/ky.min.js +1 -1
  123. package/dist/locale/ky.min.mjs +1 -1
  124. package/dist/locale/ky.mjs +1 -1
  125. package/dist/locale/lt.js +1 -1
  126. package/dist/locale/lt.min.js +1 -1
  127. package/dist/locale/lt.min.mjs +1 -1
  128. package/dist/locale/lt.mjs +1 -1
  129. package/dist/locale/lv.js +1 -1
  130. package/dist/locale/lv.min.js +1 -1
  131. package/dist/locale/lv.min.mjs +1 -1
  132. package/dist/locale/lv.mjs +1 -1
  133. package/dist/locale/mn.js +1 -1
  134. package/dist/locale/mn.min.js +1 -1
  135. package/dist/locale/mn.min.mjs +1 -1
  136. package/dist/locale/mn.mjs +1 -1
  137. package/dist/locale/nb-no.js +1 -1
  138. package/dist/locale/nb-no.min.js +1 -1
  139. package/dist/locale/nb-no.min.mjs +1 -1
  140. package/dist/locale/nb-no.mjs +1 -1
  141. package/dist/locale/nl.js +1 -1
  142. package/dist/locale/nl.min.js +1 -1
  143. package/dist/locale/nl.min.mjs +1 -1
  144. package/dist/locale/nl.mjs +1 -1
  145. package/dist/locale/pa.js +1 -1
  146. package/dist/locale/pa.min.js +1 -1
  147. package/dist/locale/pa.min.mjs +1 -1
  148. package/dist/locale/pa.mjs +1 -1
  149. package/dist/locale/pl.js +1 -1
  150. package/dist/locale/pl.min.js +1 -1
  151. package/dist/locale/pl.min.mjs +1 -1
  152. package/dist/locale/pl.mjs +1 -1
  153. package/dist/locale/pt-br.js +1 -1
  154. package/dist/locale/pt-br.min.js +1 -1
  155. package/dist/locale/pt-br.min.mjs +1 -1
  156. package/dist/locale/pt-br.mjs +1 -1
  157. package/dist/locale/pt.js +1 -1
  158. package/dist/locale/pt.min.js +1 -1
  159. package/dist/locale/pt.min.mjs +1 -1
  160. package/dist/locale/pt.mjs +1 -1
  161. package/dist/locale/ro.js +1 -1
  162. package/dist/locale/ro.min.js +1 -1
  163. package/dist/locale/ro.min.mjs +1 -1
  164. package/dist/locale/ro.mjs +1 -1
  165. package/dist/locale/ru.js +1 -1
  166. package/dist/locale/ru.min.js +1 -1
  167. package/dist/locale/ru.min.mjs +1 -1
  168. package/dist/locale/ru.mjs +1 -1
  169. package/dist/locale/sk.js +1 -1
  170. package/dist/locale/sk.min.js +1 -1
  171. package/dist/locale/sk.min.mjs +1 -1
  172. package/dist/locale/sk.mjs +1 -1
  173. package/dist/locale/sl.js +1 -1
  174. package/dist/locale/sl.min.js +1 -1
  175. package/dist/locale/sl.min.mjs +1 -1
  176. package/dist/locale/sl.mjs +1 -1
  177. package/dist/locale/sr.js +1 -1
  178. package/dist/locale/sr.min.js +1 -1
  179. package/dist/locale/sr.min.mjs +1 -1
  180. package/dist/locale/sr.mjs +1 -1
  181. package/dist/locale/sv.js +1 -1
  182. package/dist/locale/sv.min.js +1 -1
  183. package/dist/locale/sv.min.mjs +1 -1
  184. package/dist/locale/sv.mjs +1 -1
  185. package/dist/locale/ta.js +1 -1
  186. package/dist/locale/ta.min.js +1 -1
  187. package/dist/locale/ta.min.mjs +1 -1
  188. package/dist/locale/ta.mjs +1 -1
  189. package/dist/locale/th.js +1 -1
  190. package/dist/locale/th.min.js +1 -1
  191. package/dist/locale/th.min.mjs +1 -1
  192. package/dist/locale/th.mjs +1 -1
  193. package/dist/locale/tk.js +1 -1
  194. package/dist/locale/tk.min.js +1 -1
  195. package/dist/locale/tk.min.mjs +1 -1
  196. package/dist/locale/tk.mjs +1 -1
  197. package/dist/locale/tr.js +1 -1
  198. package/dist/locale/tr.min.js +1 -1
  199. package/dist/locale/tr.min.mjs +1 -1
  200. package/dist/locale/tr.mjs +1 -1
  201. package/dist/locale/ug-cn.js +1 -1
  202. package/dist/locale/ug-cn.min.js +1 -1
  203. package/dist/locale/ug-cn.min.mjs +1 -1
  204. package/dist/locale/ug-cn.mjs +1 -1
  205. package/dist/locale/uk.js +1 -1
  206. package/dist/locale/uk.min.js +1 -1
  207. package/dist/locale/uk.min.mjs +1 -1
  208. package/dist/locale/uk.mjs +1 -1
  209. package/dist/locale/uz-uz.js +1 -1
  210. package/dist/locale/uz-uz.min.js +1 -1
  211. package/dist/locale/uz-uz.min.mjs +1 -1
  212. package/dist/locale/uz-uz.mjs +1 -1
  213. package/dist/locale/vi.js +1 -1
  214. package/dist/locale/vi.min.js +1 -1
  215. package/dist/locale/vi.min.mjs +1 -1
  216. package/dist/locale/vi.mjs +1 -1
  217. package/dist/locale/zh-cn.js +1 -1
  218. package/dist/locale/zh-cn.min.js +1 -1
  219. package/dist/locale/zh-cn.min.mjs +1 -1
  220. package/dist/locale/zh-cn.mjs +1 -1
  221. package/dist/locale/zh-tw.js +1 -1
  222. package/dist/locale/zh-tw.min.js +1 -1
  223. package/dist/locale/zh-tw.min.mjs +1 -1
  224. package/dist/locale/zh-tw.mjs +1 -1
  225. package/es/components/alert/index.d.ts +5 -5
  226. package/es/components/alert/src/alert.d.ts +1 -1
  227. package/es/components/alert/src/alert.vue.d.ts +5 -5
  228. package/es/components/avatar/index.d.ts +1 -1
  229. package/es/components/avatar/src/avatar.d.ts +3 -1
  230. package/es/components/avatar/src/avatar.mjs +1 -1
  231. package/es/components/avatar/src/avatar.mjs.map +1 -1
  232. package/es/components/avatar/src/avatar.vue.d.ts +1 -1
  233. package/es/components/avatar/src/avatar.vue_vue_type_script_lang.mjs +13 -8
  234. package/es/components/avatar/src/avatar.vue_vue_type_script_lang.mjs.map +1 -1
  235. package/es/components/avatar/src/avatar.vue_vue_type_template_id_46e3f365_lang.mjs.map +1 -1
  236. package/es/components/button/index.d.ts +6 -0
  237. package/es/components/button/src/button-group.vue.d.ts +2 -0
  238. package/es/components/button/src/button.vue.d.ts +2 -0
  239. package/es/components/card/index.d.ts +13 -1
  240. package/es/components/card/src/card.d.ts +2 -0
  241. package/es/components/card/src/card.mjs.map +1 -1
  242. package/es/components/card/src/card.vue.d.ts +13 -1
  243. package/es/components/card/src/card.vue_vue_type_script_lang.mjs +9 -1
  244. package/es/components/card/src/card.vue_vue_type_script_lang.mjs.map +1 -1
  245. package/es/components/card/src/card.vue_vue_type_template_id_7a6bdf05_lang.mjs +8 -9
  246. package/es/components/card/src/card.vue_vue_type_template_id_7a6bdf05_lang.mjs.map +1 -1
  247. package/es/components/cascader/index.d.ts +38 -34
  248. package/es/components/cascader/src/index.vue.d.ts +19 -17
  249. package/es/components/check-tag/index.d.ts +21 -9
  250. package/es/components/check-tag/index.mjs +3 -2
  251. package/es/components/check-tag/index.mjs.map +1 -1
  252. package/es/components/check-tag/src/check-tag.d.ts +12 -0
  253. package/es/components/check-tag/src/check-tag.mjs +16 -0
  254. package/es/components/check-tag/src/check-tag.mjs.map +1 -0
  255. package/es/components/check-tag/src/check-tag.vue.d.ts +29 -0
  256. package/es/components/check-tag/src/check-tag.vue_vue_type_script_lang.mjs +25 -0
  257. package/es/components/check-tag/src/check-tag.vue_vue_type_script_lang.mjs.map +1 -0
  258. package/es/components/check-tag/src/{index.vue_vue_type_template_id_58558910_lang.mjs → check-tag.vue_vue_type_template_id_d949910a_lang.mjs} +2 -5
  259. package/es/components/check-tag/src/check-tag.vue_vue_type_template_id_d949910a_lang.mjs.map +1 -0
  260. package/es/components/check-tag/src/check-tag2.mjs +7 -0
  261. package/es/components/check-tag/src/check-tag2.mjs.map +1 -0
  262. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue.d.ts +2 -1
  263. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs +10 -1
  264. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs.map +1 -1
  265. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.mjs.map +1 -1
  266. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue.d.ts +2 -1
  267. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.mjs +12 -1
  268. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.mjs.map +1 -1
  269. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_template_id_62b45ab2_lang.mjs.map +1 -1
  270. package/es/components/descriptions/index.d.ts +4 -4
  271. package/es/components/descriptions/src/index.vue.d.ts +4 -4
  272. package/es/components/divider/index.d.ts +14 -1
  273. package/es/components/divider/src/divider.d.ts +2 -0
  274. package/es/components/divider/src/divider.mjs.map +1 -1
  275. package/es/components/divider/src/divider.vue.d.ts +15 -1
  276. package/es/components/divider/src/divider.vue_vue_type_script_lang.mjs +16 -2
  277. package/es/components/divider/src/divider.vue_vue_type_script_lang.mjs.map +1 -1
  278. package/es/components/divider/src/divider.vue_vue_type_template_id_6ddd3543_lang.mjs +3 -3
  279. package/es/components/divider/src/divider.vue_vue_type_template_id_6ddd3543_lang.mjs.map +1 -1
  280. package/es/components/dropdown/index.d.ts +13 -11
  281. package/es/components/dropdown/src/dropdown.vue.d.ts +13 -11
  282. package/es/components/empty/index.d.ts +11 -0
  283. package/es/components/empty/src/empty.d.ts +2 -0
  284. package/es/components/empty/src/empty.mjs.map +1 -1
  285. package/es/components/empty/src/empty.vue.d.ts +11 -0
  286. package/es/components/empty/src/empty.vue_vue_type_script_lang.mjs +3 -0
  287. package/es/components/empty/src/empty.vue_vue_type_script_lang.mjs.map +1 -1
  288. package/es/components/empty/src/empty.vue_vue_type_template_id_10d211eb_lang.mjs +20 -19
  289. package/es/components/empty/src/empty.vue_vue_type_template_id_10d211eb_lang.mjs.map +1 -1
  290. package/es/components/icon/index.d.ts +11 -0
  291. package/es/components/icon/src/icon.d.ts +2 -0
  292. package/es/components/icon/src/icon.mjs.map +1 -1
  293. package/es/components/icon/src/icon.vue.d.ts +11 -0
  294. package/es/components/icon/src/icon.vue_vue_type_script_lang.mjs +14 -15
  295. package/es/components/icon/src/icon.vue_vue_type_script_lang.mjs.map +1 -1
  296. package/es/components/icon/src/icon.vue_vue_type_template_id_89b755b6_lang.mjs +1 -1
  297. package/es/components/icon/src/icon.vue_vue_type_template_id_89b755b6_lang.mjs.map +1 -1
  298. package/es/components/image/src/image.vue_vue_type_script_lang.mjs +14 -3
  299. package/es/components/image/src/image.vue_vue_type_script_lang.mjs.map +1 -1
  300. package/es/components/image/src/image.vue_vue_type_template_id_34467287_lang.mjs.map +1 -1
  301. package/es/components/index.mjs +2 -0
  302. package/es/components/index.mjs.map +1 -1
  303. package/es/components/input-number/src/input-number.vue_vue_type_script_lang.mjs +1 -1
  304. package/es/components/input-number/src/input-number.vue_vue_type_script_lang.mjs.map +1 -1
  305. package/es/components/input-number/src/input-number.vue_vue_type_template_id_dec60af6_lang.mjs.map +1 -1
  306. package/es/components/link/index.d.ts +11 -0
  307. package/es/components/link/src/link.d.ts +2 -0
  308. package/es/components/link/src/link.mjs.map +1 -1
  309. package/es/components/link/src/link.vue.d.ts +11 -0
  310. package/es/components/link/src/link.vue_vue_type_script_lang.mjs +4 -0
  311. package/es/components/link/src/link.vue_vue_type_script_lang.mjs.map +1 -1
  312. package/es/components/link/src/link.vue_vue_type_template_id_6a422645_lang.mjs +7 -8
  313. package/es/components/link/src/link.vue_vue_type_template_id_6a422645_lang.mjs.map +1 -1
  314. package/es/components/menu/index.d.ts +2 -2
  315. package/es/components/menu/src/menu.d.ts +2 -2
  316. package/es/components/pagination/index.d.ts +2 -2
  317. package/es/components/pagination/src/pagination.d.ts +2 -2
  318. package/es/components/popover/index.d.ts +32 -26
  319. package/es/components/popover/src/index.vue.d.ts +16 -13
  320. package/es/components/popover/src/index.vue_vue_type_script_lang.mjs +6 -1
  321. package/es/components/popover/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  322. package/es/components/popover/src/index.vue_vue_type_template_id_15486cf0_lang.mjs.map +1 -1
  323. package/es/components/rate/index.d.ts +11 -0
  324. package/es/components/rate/src/rate.d.ts +2 -0
  325. package/es/components/rate/src/rate.mjs +1 -1
  326. package/es/components/rate/src/rate.mjs.map +1 -1
  327. package/es/components/rate/src/rate.vue.d.ts +11 -0
  328. package/es/components/rate/src/rate.vue_vue_type_script_lang.mjs +7 -5
  329. package/es/components/rate/src/rate.vue_vue_type_script_lang.mjs.map +1 -1
  330. package/es/components/rate/src/rate.vue_vue_type_template_id_38c42df6_lang.mjs +7 -7
  331. package/es/components/rate/src/rate.vue_vue_type_template_id_38c42df6_lang.mjs.map +1 -1
  332. package/es/components/result/index.d.ts +11 -0
  333. package/es/components/result/src/result.d.ts +2 -0
  334. package/es/components/result/src/result.mjs.map +1 -1
  335. package/es/components/result/src/result.vue.d.ts +11 -0
  336. package/es/components/result/src/result.vue_vue_type_script_lang.mjs +4 -0
  337. package/es/components/result/src/result.vue_vue_type_script_lang.mjs.map +1 -1
  338. package/es/components/result/src/result.vue_vue_type_template_id_263c10e5_lang.mjs +24 -25
  339. package/es/components/result/src/result.vue_vue_type_template_id_263c10e5_lang.mjs.map +1 -1
  340. package/es/components/row/index.d.ts +3 -3
  341. package/es/components/row/src/row.d.ts +7 -6
  342. package/es/components/row/src/row.mjs +9 -6
  343. package/es/components/row/src/row.mjs.map +1 -1
  344. package/es/components/scrollbar/index.d.ts +2 -2
  345. package/es/components/scrollbar/src/bar.vue_vue_type_script_lang.mjs +11 -4
  346. package/es/components/scrollbar/src/bar.vue_vue_type_script_lang.mjs.map +1 -1
  347. package/es/components/scrollbar/src/bar.vue_vue_type_template_id_2f63f10a_lang.mjs.map +1 -1
  348. package/es/components/scrollbar/src/scrollbar.vue.d.ts +2 -2
  349. package/es/components/select/index.d.ts +15 -13
  350. package/es/components/select/src/select.vue.d.ts +15 -13
  351. package/es/components/select/src/useSelect.d.ts +13 -11
  352. package/es/components/select-v2/index.d.ts +38 -28
  353. package/es/components/select-v2/src/defaults.d.ts +4 -1
  354. package/es/components/select-v2/src/defaults.mjs +4 -1
  355. package/es/components/select-v2/src/defaults.mjs.map +1 -1
  356. package/es/components/select-v2/src/select.vue.d.ts +19 -14
  357. package/es/components/select-v2/src/useSelect.d.ts +13 -11
  358. package/es/components/select-v2/src/useSelect.mjs +1 -1
  359. package/es/components/select-v2/src/useSelect.mjs.map +1 -1
  360. package/es/components/space/index.d.ts +2 -2
  361. package/es/components/space/src/space.d.ts +2 -2
  362. package/es/components/steps/index.d.ts +2 -2
  363. package/es/components/steps/src/index.vue.d.ts +2 -2
  364. package/es/components/switch/index.d.ts +11 -0
  365. package/es/components/switch/src/switch.vue.d.ts +11 -0
  366. package/es/components/switch/src/switch.vue_vue_type_script_lang.mjs +5 -3
  367. package/es/components/switch/src/switch.vue_vue_type_script_lang.mjs.map +1 -1
  368. package/es/components/switch/src/switch.vue_vue_type_template_id_538fbc85_lang.mjs +21 -21
  369. package/es/components/switch/src/switch.vue_vue_type_template_id_538fbc85_lang.mjs.map +1 -1
  370. package/es/components/table/index.d.ts +2 -2
  371. package/es/components/table/src/filter-panel.vue.d.ts +13 -11
  372. package/es/components/table/src/store/index.mjs +1 -1
  373. package/es/components/table/src/store/index.mjs.map +1 -1
  374. package/es/components/table/src/store/watcher.mjs +0 -5
  375. package/es/components/table/src/store/watcher.mjs.map +1 -1
  376. package/es/components/table/src/table.vue.d.ts +2 -2
  377. package/es/components/table/src/util.mjs +1 -1
  378. package/es/components/table/src/util.mjs.map +1 -1
  379. package/es/components/tag/index.d.ts +3 -3
  380. package/es/components/tag/src/tag.d.ts +1 -1
  381. package/es/components/tag/src/tag.vue.d.ts +3 -3
  382. package/es/components/time-picker/src/common/picker.vue.d.ts +16 -12
  383. package/es/components/time-picker/src/common/picker.vue_vue_type_script_lang.mjs +12 -1
  384. package/es/components/time-picker/src/common/picker.vue_vue_type_script_lang.mjs.map +1 -1
  385. package/es/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.mjs +5 -4
  386. package/es/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.mjs.map +1 -1
  387. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue.d.ts +1 -1
  388. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_script_lang.mjs +10 -10
  389. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_script_lang.mjs.map +1 -1
  390. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_template_id_4fb3c576_lang.mjs +1 -1
  391. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_template_id_4fb3c576_lang.mjs.map +1 -1
  392. package/es/components/timeline/index.d.ts +78 -106
  393. package/es/components/timeline/index.mjs +7 -7
  394. package/es/components/timeline/index.mjs.map +1 -1
  395. package/es/components/timeline/src/timeline-item.d.ts +15 -0
  396. package/es/components/timeline/src/timeline-item.mjs +43 -0
  397. package/es/components/timeline/src/timeline-item.mjs.map +1 -0
  398. package/es/components/timeline/src/timeline-item.vue.d.ts +54 -0
  399. package/es/components/timeline/src/timeline-item.vue_vue_type_script_lang.mjs +22 -0
  400. package/es/components/timeline/src/timeline-item.vue_vue_type_script_lang.mjs.map +1 -0
  401. package/es/components/timeline/src/timeline-item.vue_vue_type_template_id_1db6c36b_lang.mjs +60 -0
  402. package/es/components/timeline/src/timeline-item.vue_vue_type_template_id_1db6c36b_lang.mjs.map +1 -0
  403. package/es/components/timeline/src/timeline-item2.mjs +7 -0
  404. package/es/components/timeline/src/timeline-item2.mjs.map +1 -0
  405. package/es/components/timeline/src/{index.vue.d.ts → timeline.d.ts} +3 -2
  406. package/es/components/timeline/src/timeline.mjs +17 -0
  407. package/es/components/timeline/src/timeline.mjs.map +1 -0
  408. package/es/components/tooltip/index.d.ts +5 -4
  409. package/es/components/tooltip/src/content.vue.d.ts +4 -4
  410. package/es/components/tooltip/src/tooltip.vue.d.ts +5 -4
  411. package/es/components/tooltip/src/tooltip.vue_vue_type_script_lang.mjs +1 -0
  412. package/es/components/tooltip/src/tooltip.vue_vue_type_script_lang.mjs.map +1 -1
  413. package/es/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.mjs.map +1 -1
  414. package/es/components/virtual-list/src/builders/build-list.d.ts +2 -2
  415. package/es/components/virtual-list/src/components/dynamic-size-list.d.ts +2 -2
  416. package/es/components/virtual-list/src/components/fixed-size-list.d.ts +2 -2
  417. package/es/hooks/use-namespace/index.d.ts +2 -0
  418. package/es/hooks/use-namespace/index.mjs +16 -11
  419. package/es/hooks/use-namespace/index.mjs.map +1 -1
  420. package/es/index.mjs +2 -0
  421. package/es/index.mjs.map +1 -1
  422. package/es/version.d.ts +1 -1
  423. package/es/version.mjs +1 -1
  424. package/es/version.mjs.map +1 -1
  425. package/lib/components/alert/index.d.ts +5 -5
  426. package/lib/components/alert/src/alert.d.ts +1 -1
  427. package/lib/components/alert/src/alert.vue.d.ts +5 -5
  428. package/lib/components/avatar/index.d.ts +1 -1
  429. package/lib/components/avatar/src/avatar.d.ts +3 -1
  430. package/lib/components/avatar/src/avatar.js +1 -1
  431. package/lib/components/avatar/src/avatar.js.map +1 -1
  432. package/lib/components/avatar/src/avatar.vue.d.ts +1 -1
  433. package/lib/components/avatar/src/avatar.vue_vue_type_script_lang.js +13 -8
  434. package/lib/components/avatar/src/avatar.vue_vue_type_script_lang.js.map +1 -1
  435. package/lib/components/avatar/src/avatar.vue_vue_type_template_id_46e3f365_lang.js.map +1 -1
  436. package/lib/components/button/index.d.ts +6 -0
  437. package/lib/components/button/src/button-group.vue.d.ts +2 -0
  438. package/lib/components/button/src/button.vue.d.ts +2 -0
  439. package/lib/components/card/index.d.ts +13 -1
  440. package/lib/components/card/src/card.d.ts +2 -0
  441. package/lib/components/card/src/card.js.map +1 -1
  442. package/lib/components/card/src/card.vue.d.ts +13 -1
  443. package/lib/components/card/src/card.vue_vue_type_script_lang.js +9 -1
  444. package/lib/components/card/src/card.vue_vue_type_script_lang.js.map +1 -1
  445. package/lib/components/card/src/card.vue_vue_type_template_id_7a6bdf05_lang.js +8 -9
  446. package/lib/components/card/src/card.vue_vue_type_template_id_7a6bdf05_lang.js.map +1 -1
  447. package/lib/components/cascader/index.d.ts +38 -34
  448. package/lib/components/cascader/src/index.vue.d.ts +19 -17
  449. package/lib/components/check-tag/index.d.ts +21 -9
  450. package/lib/components/check-tag/index.js +6 -3
  451. package/lib/components/check-tag/index.js.map +1 -1
  452. package/lib/components/check-tag/src/check-tag.d.ts +12 -0
  453. package/lib/components/check-tag/src/check-tag.js +21 -0
  454. package/lib/components/check-tag/src/check-tag.js.map +1 -0
  455. package/lib/components/check-tag/src/check-tag.vue.d.ts +29 -0
  456. package/lib/components/check-tag/src/{index.vue_vue_type_script_lang.js → check-tag.vue_vue_type_script_lang.js} +8 -10
  457. package/lib/components/check-tag/src/check-tag.vue_vue_type_script_lang.js.map +1 -0
  458. package/lib/components/check-tag/src/{index.vue_vue_type_template_id_58558910_lang.js → check-tag.vue_vue_type_template_id_d949910a_lang.js} +2 -5
  459. package/lib/components/check-tag/src/check-tag.vue_vue_type_template_id_d949910a_lang.js.map +1 -0
  460. package/lib/components/check-tag/src/check-tag2.js +12 -0
  461. package/lib/components/check-tag/src/check-tag2.js.map +1 -0
  462. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue.d.ts +2 -1
  463. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js +10 -1
  464. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js.map +1 -1
  465. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.js.map +1 -1
  466. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue.d.ts +2 -1
  467. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.js +12 -1
  468. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.js.map +1 -1
  469. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_template_id_62b45ab2_lang.js.map +1 -1
  470. package/lib/components/descriptions/index.d.ts +4 -4
  471. package/lib/components/descriptions/src/index.vue.d.ts +4 -4
  472. package/lib/components/divider/index.d.ts +14 -1
  473. package/lib/components/divider/src/divider.d.ts +2 -0
  474. package/lib/components/divider/src/divider.js.map +1 -1
  475. package/lib/components/divider/src/divider.vue.d.ts +15 -1
  476. package/lib/components/divider/src/divider.vue_vue_type_script_lang.js +15 -1
  477. package/lib/components/divider/src/divider.vue_vue_type_script_lang.js.map +1 -1
  478. package/lib/components/divider/src/divider.vue_vue_type_template_id_6ddd3543_lang.js +3 -3
  479. package/lib/components/divider/src/divider.vue_vue_type_template_id_6ddd3543_lang.js.map +1 -1
  480. package/lib/components/dropdown/index.d.ts +13 -11
  481. package/lib/components/dropdown/src/dropdown.vue.d.ts +13 -11
  482. package/lib/components/empty/index.d.ts +11 -0
  483. package/lib/components/empty/src/empty.d.ts +2 -0
  484. package/lib/components/empty/src/empty.js.map +1 -1
  485. package/lib/components/empty/src/empty.vue.d.ts +11 -0
  486. package/lib/components/empty/src/empty.vue_vue_type_script_lang.js +3 -0
  487. package/lib/components/empty/src/empty.vue_vue_type_script_lang.js.map +1 -1
  488. package/lib/components/empty/src/empty.vue_vue_type_template_id_10d211eb_lang.js +19 -18
  489. package/lib/components/empty/src/empty.vue_vue_type_template_id_10d211eb_lang.js.map +1 -1
  490. package/lib/components/icon/index.d.ts +11 -0
  491. package/lib/components/icon/src/icon.d.ts +2 -0
  492. package/lib/components/icon/src/icon.js.map +1 -1
  493. package/lib/components/icon/src/icon.vue.d.ts +11 -0
  494. package/lib/components/icon/src/icon.vue_vue_type_script_lang.js +13 -14
  495. package/lib/components/icon/src/icon.vue_vue_type_script_lang.js.map +1 -1
  496. package/lib/components/icon/src/icon.vue_vue_type_template_id_89b755b6_lang.js +1 -1
  497. package/lib/components/icon/src/icon.vue_vue_type_template_id_89b755b6_lang.js.map +1 -1
  498. package/lib/components/image/src/image.vue_vue_type_script_lang.js +14 -3
  499. package/lib/components/image/src/image.vue_vue_type_script_lang.js.map +1 -1
  500. package/lib/components/image/src/image.vue_vue_type_template_id_34467287_lang.js.map +1 -1
  501. package/lib/components/index.js +5 -0
  502. package/lib/components/index.js.map +1 -1
  503. package/lib/components/input-number/src/input-number.vue_vue_type_script_lang.js +1 -1
  504. package/lib/components/input-number/src/input-number.vue_vue_type_script_lang.js.map +1 -1
  505. package/lib/components/input-number/src/input-number.vue_vue_type_template_id_dec60af6_lang.js.map +1 -1
  506. package/lib/components/link/index.d.ts +11 -0
  507. package/lib/components/link/src/link.d.ts +2 -0
  508. package/lib/components/link/src/link.js.map +1 -1
  509. package/lib/components/link/src/link.vue.d.ts +11 -0
  510. package/lib/components/link/src/link.vue_vue_type_script_lang.js +4 -0
  511. package/lib/components/link/src/link.vue_vue_type_script_lang.js.map +1 -1
  512. package/lib/components/link/src/link.vue_vue_type_template_id_6a422645_lang.js +7 -8
  513. package/lib/components/link/src/link.vue_vue_type_template_id_6a422645_lang.js.map +1 -1
  514. package/lib/components/menu/index.d.ts +2 -2
  515. package/lib/components/menu/src/menu.d.ts +2 -2
  516. package/lib/components/pagination/index.d.ts +2 -2
  517. package/lib/components/pagination/src/pagination.d.ts +2 -2
  518. package/lib/components/popover/index.d.ts +32 -26
  519. package/lib/components/popover/src/index.vue.d.ts +16 -13
  520. package/lib/components/popover/src/index.vue_vue_type_script_lang.js +6 -1
  521. package/lib/components/popover/src/index.vue_vue_type_script_lang.js.map +1 -1
  522. package/lib/components/popover/src/index.vue_vue_type_template_id_15486cf0_lang.js.map +1 -1
  523. package/lib/components/rate/index.d.ts +11 -0
  524. package/lib/components/rate/src/rate.d.ts +2 -0
  525. package/lib/components/rate/src/rate.js +1 -1
  526. package/lib/components/rate/src/rate.js.map +1 -1
  527. package/lib/components/rate/src/rate.vue.d.ts +11 -0
  528. package/lib/components/rate/src/rate.vue_vue_type_script_lang.js +7 -5
  529. package/lib/components/rate/src/rate.vue_vue_type_script_lang.js.map +1 -1
  530. package/lib/components/rate/src/rate.vue_vue_type_template_id_38c42df6_lang.js +7 -7
  531. package/lib/components/rate/src/rate.vue_vue_type_template_id_38c42df6_lang.js.map +1 -1
  532. package/lib/components/result/index.d.ts +11 -0
  533. package/lib/components/result/src/result.d.ts +2 -0
  534. package/lib/components/result/src/result.js.map +1 -1
  535. package/lib/components/result/src/result.vue.d.ts +11 -0
  536. package/lib/components/result/src/result.vue_vue_type_script_lang.js +4 -0
  537. package/lib/components/result/src/result.vue_vue_type_script_lang.js.map +1 -1
  538. package/lib/components/result/src/result.vue_vue_type_template_id_263c10e5_lang.js +23 -24
  539. package/lib/components/result/src/result.vue_vue_type_template_id_263c10e5_lang.js.map +1 -1
  540. package/lib/components/row/index.d.ts +3 -3
  541. package/lib/components/row/src/row.d.ts +7 -6
  542. package/lib/components/row/src/row.js +9 -6
  543. package/lib/components/row/src/row.js.map +1 -1
  544. package/lib/components/scrollbar/index.d.ts +2 -2
  545. package/lib/components/scrollbar/src/bar.vue_vue_type_script_lang.js +10 -3
  546. package/lib/components/scrollbar/src/bar.vue_vue_type_script_lang.js.map +1 -1
  547. package/lib/components/scrollbar/src/bar.vue_vue_type_template_id_2f63f10a_lang.js.map +1 -1
  548. package/lib/components/scrollbar/src/scrollbar.vue.d.ts +2 -2
  549. package/lib/components/select/index.d.ts +15 -13
  550. package/lib/components/select/src/select.vue.d.ts +15 -13
  551. package/lib/components/select/src/useSelect.d.ts +13 -11
  552. package/lib/components/select-v2/index.d.ts +38 -28
  553. package/lib/components/select-v2/src/defaults.d.ts +4 -1
  554. package/lib/components/select-v2/src/defaults.js +4 -1
  555. package/lib/components/select-v2/src/defaults.js.map +1 -1
  556. package/lib/components/select-v2/src/select.vue.d.ts +19 -14
  557. package/lib/components/select-v2/src/useSelect.d.ts +13 -11
  558. package/lib/components/select-v2/src/useSelect.js +1 -1
  559. package/lib/components/select-v2/src/useSelect.js.map +1 -1
  560. package/lib/components/space/index.d.ts +2 -2
  561. package/lib/components/space/src/space.d.ts +2 -2
  562. package/lib/components/steps/index.d.ts +2 -2
  563. package/lib/components/steps/src/index.vue.d.ts +2 -2
  564. package/lib/components/switch/index.d.ts +11 -0
  565. package/lib/components/switch/src/switch.vue.d.ts +11 -0
  566. package/lib/components/switch/src/switch.vue_vue_type_script_lang.js +5 -3
  567. package/lib/components/switch/src/switch.vue_vue_type_script_lang.js.map +1 -1
  568. package/lib/components/switch/src/switch.vue_vue_type_template_id_538fbc85_lang.js +21 -21
  569. package/lib/components/switch/src/switch.vue_vue_type_template_id_538fbc85_lang.js.map +1 -1
  570. package/lib/components/table/index.d.ts +2 -2
  571. package/lib/components/table/src/filter-panel.vue.d.ts +13 -11
  572. package/lib/components/table/src/store/index.js +1 -1
  573. package/lib/components/table/src/store/index.js.map +1 -1
  574. package/lib/components/table/src/store/watcher.js +0 -5
  575. package/lib/components/table/src/store/watcher.js.map +1 -1
  576. package/lib/components/table/src/table.vue.d.ts +2 -2
  577. package/lib/components/table/src/util.js +1 -1
  578. package/lib/components/table/src/util.js.map +1 -1
  579. package/lib/components/tag/index.d.ts +3 -3
  580. package/lib/components/tag/src/tag.d.ts +1 -1
  581. package/lib/components/tag/src/tag.vue.d.ts +3 -3
  582. package/lib/components/time-picker/src/common/picker.vue.d.ts +16 -12
  583. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_lang.js +12 -1
  584. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_lang.js.map +1 -1
  585. package/lib/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.js +5 -4
  586. package/lib/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.js.map +1 -1
  587. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue.d.ts +1 -1
  588. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_script_lang.js +10 -10
  589. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_script_lang.js.map +1 -1
  590. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_template_id_4fb3c576_lang.js +1 -1
  591. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_template_id_4fb3c576_lang.js.map +1 -1
  592. package/lib/components/timeline/index.d.ts +78 -106
  593. package/lib/components/timeline/index.js +8 -7
  594. package/lib/components/timeline/index.js.map +1 -1
  595. package/lib/components/timeline/src/timeline-item.d.ts +15 -0
  596. package/lib/components/timeline/src/timeline-item.js +47 -0
  597. package/lib/components/timeline/src/timeline-item.js.map +1 -0
  598. package/lib/components/timeline/src/timeline-item.vue.d.ts +54 -0
  599. package/lib/components/timeline/src/timeline-item.vue_vue_type_script_lang.js +26 -0
  600. package/lib/components/timeline/src/timeline-item.vue_vue_type_script_lang.js.map +1 -0
  601. package/lib/components/timeline/src/timeline-item.vue_vue_type_template_id_1db6c36b_lang.js +64 -0
  602. package/lib/components/timeline/src/timeline-item.vue_vue_type_template_id_1db6c36b_lang.js.map +1 -0
  603. package/lib/components/timeline/src/timeline-item2.js +12 -0
  604. package/lib/components/timeline/src/timeline-item2.js.map +1 -0
  605. package/lib/components/timeline/src/{index.vue.d.ts → timeline.d.ts} +3 -2
  606. package/lib/components/timeline/src/timeline.js +21 -0
  607. package/lib/components/timeline/src/timeline.js.map +1 -0
  608. package/lib/components/tooltip/index.d.ts +5 -4
  609. package/lib/components/tooltip/src/content.vue.d.ts +4 -4
  610. package/lib/components/tooltip/src/tooltip.vue.d.ts +5 -4
  611. package/lib/components/tooltip/src/tooltip.vue_vue_type_script_lang.js +1 -0
  612. package/lib/components/tooltip/src/tooltip.vue_vue_type_script_lang.js.map +1 -1
  613. package/lib/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.js.map +1 -1
  614. package/lib/components/virtual-list/src/builders/build-list.d.ts +2 -2
  615. package/lib/components/virtual-list/src/components/dynamic-size-list.d.ts +2 -2
  616. package/lib/components/virtual-list/src/components/fixed-size-list.d.ts +2 -2
  617. package/lib/hooks/use-namespace/index.d.ts +2 -0
  618. package/lib/hooks/use-namespace/index.js +16 -15
  619. package/lib/hooks/use-namespace/index.js.map +1 -1
  620. package/lib/index.js +5 -0
  621. package/lib/index.js.map +1 -1
  622. package/lib/version.d.ts +1 -1
  623. package/lib/version.js +1 -1
  624. package/lib/version.js.map +1 -1
  625. package/package.json +2 -2
  626. package/tags.json +1 -1
  627. package/theme-chalk/el-popper.css +1 -1
  628. package/theme-chalk/index.css +1 -1
  629. package/theme-chalk/src/popper.scss +1 -1
  630. package/web-types.json +1 -1
  631. package/es/components/check-tag/src/index.mjs +0 -7
  632. package/es/components/check-tag/src/index.mjs.map +0 -1
  633. package/es/components/check-tag/src/index.vue.d.ts +0 -26
  634. package/es/components/check-tag/src/index.vue_vue_type_script_lang.mjs +0 -26
  635. package/es/components/check-tag/src/index.vue_vue_type_script_lang.mjs.map +0 -1
  636. package/es/components/check-tag/src/index.vue_vue_type_template_id_58558910_lang.mjs.map +0 -1
  637. package/es/components/timeline/src/index.mjs +0 -5
  638. package/es/components/timeline/src/index.mjs.map +0 -1
  639. package/es/components/timeline/src/index.vue_vue_type_script_lang.mjs +0 -17
  640. package/es/components/timeline/src/index.vue_vue_type_script_lang.mjs.map +0 -1
  641. package/es/components/timeline/src/item.mjs +0 -7
  642. package/es/components/timeline/src/item.mjs.map +0 -1
  643. package/es/components/timeline/src/item.vue.d.ts +0 -70
  644. package/es/components/timeline/src/item.vue_vue_type_script_lang.mjs +0 -53
  645. package/es/components/timeline/src/item.vue_vue_type_script_lang.mjs.map +0 -1
  646. package/es/components/timeline/src/item.vue_vue_type_template_id_174d5b12_lang.mjs +0 -59
  647. package/es/components/timeline/src/item.vue_vue_type_template_id_174d5b12_lang.mjs.map +0 -1
  648. package/lib/components/check-tag/src/index.js +0 -13
  649. package/lib/components/check-tag/src/index.js.map +0 -1
  650. package/lib/components/check-tag/src/index.vue.d.ts +0 -26
  651. package/lib/components/check-tag/src/index.vue_vue_type_script_lang.js.map +0 -1
  652. package/lib/components/check-tag/src/index.vue_vue_type_template_id_58558910_lang.js.map +0 -1
  653. package/lib/components/timeline/src/index.js +0 -10
  654. package/lib/components/timeline/src/index.js.map +0 -1
  655. package/lib/components/timeline/src/index.vue_vue_type_script_lang.js +0 -21
  656. package/lib/components/timeline/src/index.vue_vue_type_script_lang.js.map +0 -1
  657. package/lib/components/timeline/src/item.js +0 -12
  658. package/lib/components/timeline/src/item.js.map +0 -1
  659. package/lib/components/timeline/src/item.vue.d.ts +0 -70
  660. package/lib/components/timeline/src/item.vue_vue_type_script_lang.js +0 -57
  661. package/lib/components/timeline/src/item.vue_vue_type_script_lang.js.map +0 -1
  662. package/lib/components/timeline/src/item.vue_vue_type_template_id_174d5b12_lang.js +0 -63
  663. package/lib/components/timeline/src/item.vue_vue_type_template_id_174d5b12_lang.js.map +0 -1
@@ -155,9 +155,8 @@ declare const _default: import("vue").DefineComponent<{
155
155
  style: import("vue").StyleValue;
156
156
  transition: string;
157
157
  offset: number;
158
- visible: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<boolean | null>, unknown, unknown>;
159
- content: string;
160
158
  effect: string;
159
+ visible: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<boolean | null>, unknown, unknown>;
161
160
  arrowOffset: number;
162
161
  boundariesPadding: number;
163
162
  fallbackPlacements: import("@popperjs/core").Placement[];
@@ -220,6 +219,7 @@ declare const _default: import("vue").DefineComponent<{
220
219
  popperStyle: import("vue").StyleValue;
221
220
  referenceEl: HTMLElement;
222
221
  stopPopperMouseEvent: import("../../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
222
+ content: string;
223
223
  showAfter: number;
224
224
  hideAfter: number;
225
225
  appendTo: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
@@ -273,9 +273,8 @@ declare const _default: import("vue").DefineComponent<{
273
273
  style: import("vue").StyleValue;
274
274
  transition: string;
275
275
  offset: number;
276
- visible: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<boolean | null>, unknown, unknown>;
277
- content: string;
278
276
  effect: string;
277
+ visible: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<boolean | null>, unknown, unknown>;
279
278
  arrowOffset: number;
280
279
  boundariesPadding: number;
281
280
  fallbackPlacements: import("@popperjs/core").Placement[];
@@ -338,6 +337,7 @@ declare const _default: import("vue").DefineComponent<{
338
337
  popperStyle: import("vue").StyleValue;
339
338
  referenceEl: HTMLElement;
340
339
  stopPopperMouseEvent: import("../../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
340
+ content: string;
341
341
  showAfter: number;
342
342
  hideAfter: number;
343
343
  appendTo: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
@@ -355,7 +355,7 @@ declare const _default: import("vue").DefineComponent<{
355
355
  virtualTriggering?: import("../../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown> | undefined;
356
356
  }> & {
357
357
  [x: string & `on${string}`]: ((...args: any[]) => any) | undefined;
358
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "disabled" | "style" | "transition" | "offset" | "visible" | "content" | "effect" | "arrowOffset" | "boundariesPadding" | "fallbackPlacements" | "gpuAcceleration" | "placement" | "popperOptions" | "strategy" | "className" | "enterable" | "pure" | "popperClass" | "popperStyle" | "referenceEl" | "stopPopperMouseEvent" | "showAfter" | "hideAfter" | "appendTo" | "rawContent" | "persistent" | "teleported" | "trigger" | "virtualRef" | "virtualTriggering" | "openDelay" | "visibleArrow" | "showArrow">;
358
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "disabled" | "style" | "transition" | "offset" | "effect" | "visible" | "arrowOffset" | "boundariesPadding" | "fallbackPlacements" | "gpuAcceleration" | "placement" | "popperOptions" | "strategy" | "className" | "enterable" | "pure" | "popperClass" | "popperStyle" | "referenceEl" | "stopPopperMouseEvent" | "content" | "showAfter" | "hideAfter" | "appendTo" | "rawContent" | "persistent" | "teleported" | "trigger" | "virtualRef" | "virtualTriggering" | "openDelay" | "visibleArrow" | "showArrow">;
359
359
  $attrs: {
360
360
  [x: string]: unknown;
361
361
  };
@@ -410,9 +410,8 @@ declare const _default: import("vue").DefineComponent<{
410
410
  style: import("vue").StyleValue;
411
411
  transition: string;
412
412
  offset: number;
413
- visible: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<boolean | null>, unknown, unknown>;
414
- content: string;
415
413
  effect: string;
414
+ visible: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<boolean | null>, unknown, unknown>;
416
415
  arrowOffset: number;
417
416
  boundariesPadding: number;
418
417
  fallbackPlacements: import("@popperjs/core").Placement[];
@@ -475,6 +474,7 @@ declare const _default: import("vue").DefineComponent<{
475
474
  popperStyle: import("vue").StyleValue;
476
475
  referenceEl: HTMLElement;
477
476
  stopPopperMouseEvent: import("../../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
477
+ content: string;
478
478
  showAfter: number;
479
479
  hideAfter: number;
480
480
  appendTo: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
@@ -534,6 +534,7 @@ declare const _default: import("vue").DefineComponent<{
534
534
  $watch(source: string | Function, cb: Function, options?: import("vue").WatchOptions<boolean> | undefined): import("vue").WatchStopHandle;
535
535
  } & Readonly<{} & {} & {}> & import("vue").ShallowUnwrapRef<import("../../..").ElPopperInjectionContext> & {} & {} & import("vue").ComponentCustomProperties) | null>;
536
536
  open: import("vue").Ref<boolean>;
537
+ hide: () => void;
537
538
  updatePopper: () => void;
538
539
  onOpen: () => void;
539
540
  onClose: () => void;
@@ -542,9 +543,8 @@ declare const _default: import("vue").DefineComponent<{
542
543
  style: import("vue").StyleValue;
543
544
  transition: string;
544
545
  offset: number;
545
- visible: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<boolean | null>, unknown, unknown>;
546
- content: string;
547
546
  effect: string;
547
+ visible: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<boolean | null>, unknown, unknown>;
548
548
  arrowOffset: number;
549
549
  boundariesPadding: number;
550
550
  fallbackPlacements: import("@popperjs/core").Placement[];
@@ -607,6 +607,7 @@ declare const _default: import("vue").DefineComponent<{
607
607
  popperStyle: import("vue").StyleValue;
608
608
  referenceEl: HTMLElement;
609
609
  stopPopperMouseEvent: import("../../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
610
+ content: string;
610
611
  showAfter: number;
611
612
  hideAfter: number;
612
613
  appendTo: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
@@ -680,9 +681,8 @@ declare const _default: import("vue").DefineComponent<{
680
681
  style: import("vue").StyleValue;
681
682
  transition: string;
682
683
  offset: number;
683
- visible: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<boolean | null>, unknown, unknown>;
684
- content: string;
685
684
  effect: string;
685
+ visible: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<boolean | null>, unknown, unknown>;
686
686
  arrowOffset: number;
687
687
  boundariesPadding: number;
688
688
  fallbackPlacements: import("@popperjs/core").Placement[];
@@ -745,6 +745,7 @@ declare const _default: import("vue").DefineComponent<{
745
745
  popperStyle: import("vue").StyleValue;
746
746
  referenceEl: HTMLElement;
747
747
  stopPopperMouseEvent: import("../../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
748
+ content: string;
748
749
  showAfter: number;
749
750
  hideAfter: number;
750
751
  appendTo: import("../../../../utils/props").BuildPropType<import("../../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
@@ -804,6 +805,7 @@ declare const _default: import("vue").DefineComponent<{
804
805
  $watch(source: string | Function, cb: Function, options?: import("vue").WatchOptions<boolean> | undefined): import("vue").WatchStopHandle;
805
806
  } & Readonly<{} & {} & {}> & import("vue").ShallowUnwrapRef<import("../../..").ElPopperInjectionContext> & {} & {} & import("vue").ComponentCustomProperties) | null>;
806
807
  open: import("vue").Ref<boolean>;
808
+ hide: () => void;
807
809
  updatePopper: () => void;
808
810
  onOpen: () => void;
809
811
  onClose: () => void;
@@ -812,8 +814,9 @@ declare const _default: import("vue").DefineComponent<{
812
814
  pickerDisabled: import("vue").ComputedRef<boolean | undefined>;
813
815
  onSetPickerOption: <T extends keyof PickerOptions>(e: [T, PickerOptions[T]]) => void;
814
816
  onCalendarChange: (e: any) => void;
817
+ onPanelChange: (value: any, mode: any, view: any) => void;
815
818
  focus: (focusStartInput?: boolean) => void;
816
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "change" | "blur" | "focus" | "calendar-change")[], "update:modelValue" | "change" | "blur" | "focus" | "calendar-change", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
819
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "change" | "blur" | "focus" | "calendar-change" | "panel-change")[], "update:modelValue" | "change" | "blur" | "focus" | "calendar-change" | "panel-change", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
817
820
  id?: unknown;
818
821
  name?: unknown;
819
822
  popperClass?: unknown;
@@ -884,6 +887,7 @@ declare const _default: import("vue").DefineComponent<{
884
887
  onBlur?: ((...args: any[]) => any) | undefined;
885
888
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
886
889
  "onCalendar-change"?: ((...args: any[]) => any) | undefined;
890
+ "onPanel-change"?: ((...args: any[]) => any) | undefined;
887
891
  }, {
888
892
  type: string;
889
893
  disabled: boolean;
@@ -59,7 +59,14 @@ var script = defineComponent({
59
59
  ElIcon
60
60
  },
61
61
  props: timePickerDefaultProps,
62
- emits: ["update:modelValue", "change", "focus", "blur", "calendar-change"],
62
+ emits: [
63
+ "update:modelValue",
64
+ "change",
65
+ "focus",
66
+ "blur",
67
+ "calendar-change",
68
+ "panel-change"
69
+ ],
63
70
  setup(props, ctx) {
64
71
  const { lang } = useLocale();
65
72
  const elForm = inject(elFormKey, {});
@@ -381,6 +388,9 @@ var script = defineComponent({
381
388
  const onCalendarChange = (e) => {
382
389
  ctx.emit("calendar-change", e);
383
390
  };
391
+ const onPanelChange = (value, mode, view) => {
392
+ ctx.emit("panel-change", value, mode, view);
393
+ };
384
394
  provide("EP_PICKER_BASE", {
385
395
  props
386
396
  });
@@ -416,6 +426,7 @@ var script = defineComponent({
416
426
  pickerDisabled,
417
427
  onSetPickerOption,
418
428
  onCalendarChange,
429
+ onPanelChange,
419
430
  focus
420
431
  };
421
432
  }
@@ -1 +1 @@
1
- {"version":3,"file":"picker.vue_vue_type_script_lang.mjs","sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"refPopper\"\n v-model:visible=\"pickerVisible\"\n effect=\"light\"\n pure\n trigger=\"click\"\n v-bind=\"$attrs\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :popper-class=\"`el-picker__popper ${popperClass}`\"\n :popper-options=\"elPopperOptions\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :gpu-acceleration=\"false\"\n :stop-popper-mouse-event=\"false\"\n :hide-after=\"0\"\n persistent\n @show=\"pickerActualVisible = true\"\n @hide=\"pickerActualVisible = false\"\n >\n <template #default>\n <el-input\n v-if=\"!isRangeInput\"\n :id=\"id\"\n ref=\"inputRef\"\n :model-value=\"displayValue\"\n :name=\"name\"\n :size=\"pickerSize\"\n :disabled=\"pickerDisabled\"\n :placeholder=\"placeholder\"\n class=\"el-date-editor\"\n :class=\"['el-date-editor--' + type, $attrs.class || undefined]\"\n :style=\"$attrs.style || undefined\"\n :readonly=\"!editable || readonly || isDatesPicker || type === 'week'\"\n @input=\"onUserInput\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n @change=\"handleChange\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @click.stop\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"showClose && clearIcon\"\n class=\"el-input__icon clear-icon\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </el-input>\n <div\n v-else\n ref=\"inputRef\"\n class=\"el-date-editor el-range-editor el-input__inner\"\n :class=\"[\n 'el-date-editor--' + type,\n pickerSize ? `el-range-editor--${pickerSize}` : '',\n pickerDisabled ? 'is-disabled' : '',\n pickerVisible ? 'is-active' : '',\n $attrs.class || undefined,\n ]\"\n :style=\"$attrs.style || undefined\"\n @click=\"handleFocus\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @keydown=\"handleKeydown\"\n >\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon el-range__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n <input\n :id=\"id && id[0]\"\n autocomplete=\"off\"\n :name=\"name && name[0]\"\n :placeholder=\"startPlaceholder\"\n :value=\"displayValue && displayValue[0]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @input=\"handleStartInput\"\n @change=\"handleStartChange\"\n @focus=\"handleFocus\"\n />\n <slot name=\"range-separator\">\n <span class=\"el-range-separator\">{{ rangeSeparator }}</span>\n </slot>\n <input\n :id=\"id && id[1]\"\n autocomplete=\"off\"\n :name=\"name && name[1]\"\n :placeholder=\"endPlaceholder\"\n :value=\"displayValue && displayValue[1]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @focus=\"handleFocus\"\n @input=\"handleEndInput\"\n @change=\"handleEndChange\"\n />\n <el-icon\n v-if=\"clearIcon\"\n class=\"el-input__icon el-range__close-icon\"\n :class=\"{\n 'el-range__close-icon--hidden': !showClose,\n }\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </div>\n </template>\n <template #content>\n <slot\n :visible=\"pickerVisible\"\n :actual-visible=\"pickerActualVisible\"\n :parsed-value=\"parsedValue\"\n :format=\"format\"\n :unlink-panels=\"unlinkPanels\"\n :type=\"type\"\n :default-value=\"defaultValue\"\n @pick=\"onPick\"\n @select-range=\"setSelectionRange\"\n @set-picker-option=\"onSetPickerOption\"\n @calendar-change=\"onCalendarChange\"\n @mousedown.stop\n ></slot>\n </template>\n </el-tooltip>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n nextTick,\n inject,\n watch,\n provide,\n unref,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport isEqual from 'lodash/isEqual'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useSize } from '@element-plus/hooks'\nimport { elFormKey, elFormItemKey } from '@element-plus/tokens'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isEmpty } from '@element-plus/utils/util'\nimport { Clock, Calendar } from '@element-plus/icons-vue'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type { Options } from '@popperjs/core'\n\ninterface PickerOptions {\n isValidValue: (date: Dayjs) => boolean\n handleKeydown: (event: KeyboardEvent) => void\n parseUserInput: (value: Dayjs) => dayjs.Dayjs\n formatToString: (value: Dayjs) => string | string[]\n getRangeAvailableTime: (date: Dayjs) => dayjs.Dayjs\n getDefaultValue: () => Dayjs\n panelReady: boolean\n handleClear: () => void\n}\n\n// Date object and string\nconst dateEquals = function (a: Date | any, b: Date | any) {\n const aIsDate = a instanceof Date\n const bIsDate = b instanceof Date\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime()\n }\n if (!aIsDate && !bIsDate) {\n return a === b\n }\n return false\n}\n\nconst valueEquals = function (a: Array<Date> | any, b: Array<Date> | any) {\n const aIsArray = a instanceof Array\n const bIsArray = b instanceof Array\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false\n }\n return (a as Array<Date>).every((item, index) => dateEquals(item, b[index]))\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b)\n }\n return false\n}\n\nconst parser = function (\n date: Date | string,\n format: string,\n lang: string\n): Dayjs {\n const day =\n isEmpty(format) || format === 'x'\n ? dayjs(date).locale(lang)\n : dayjs(date, format).locale(lang)\n return day.isValid() ? day : undefined\n}\n\nconst formatter = function (date: number | Date, format: string, lang: string) {\n if (isEmpty(format)) return date\n if (format === 'x') return +date\n return dayjs(date).locale(lang).format(format)\n}\n\nexport default defineComponent({\n name: 'Picker',\n components: {\n ElInput,\n ElTooltip,\n ElIcon,\n },\n props: timePickerDefaultProps,\n emits: ['update:modelValue', 'change', 'focus', 'blur', 'calendar-change'],\n setup(props, ctx) {\n const { lang } = useLocale()\n\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const elPopperOptions = inject('ElPopperOptions', {} as Options)\n\n const refPopper = ref<InstanceType<typeof ElTooltip>>()\n const inputRef = ref<HTMLElement | ComponentPublicInstance>()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const valueOnOpen = ref(null)\n\n watch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null\n nextTick(() => {\n emitChange(props.modelValue)\n })\n ctx.emit('blur')\n blurInput()\n props.validateEvent && elFormItem.validate?.('blur')\n } else {\n valueOnOpen.value = props.modelValue\n }\n })\n const emitChange = (val, isClear?: boolean) => {\n // determine user real change only\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n ctx.emit('change', val)\n props.validateEvent && elFormItem.validate?.('change')\n }\n }\n const emitInput = (val) => {\n if (!valueEquals(props.modelValue, val)) {\n let formatValue\n if (Array.isArray(val)) {\n formatValue = val.map((_) =>\n formatter(_, props.valueFormat, lang.value)\n )\n } else if (val) {\n formatValue = formatter(val, props.valueFormat, lang.value)\n }\n ctx.emit('update:modelValue', val ? formatValue : val, lang.value)\n }\n }\n const refInput = computed<HTMLInputElement[]>(() => {\n if (inputRef.value) {\n const _r = isRangeInput.value\n ? inputRef.value\n : (inputRef.value as any as ComponentPublicInstance).$el\n return Array.from<HTMLInputElement>(_r.querySelectorAll('input'))\n }\n return []\n })\n const refStartInput = computed(() => {\n return refInput?.value[0]\n })\n const refEndInput = computed(() => {\n return refInput?.value[1]\n })\n const setSelectionRange = (start, end, pos) => {\n const _inputs = refInput.value\n if (!_inputs.length) return\n if (!pos || pos === 'min') {\n _inputs[0].setSelectionRange(start, end)\n _inputs[0].focus()\n } else if (pos === 'max') {\n _inputs[1].setSelectionRange(start, end)\n _inputs[1].focus()\n }\n }\n const onPick = (date: any = '', visible = false) => {\n pickerVisible.value = visible\n let result\n if (Array.isArray(date)) {\n result = date.map((_) => _.toDate())\n } else {\n // clear btn emit null\n result = date ? date.toDate() : date\n }\n userInput.value = null\n emitInput(result)\n }\n\n const focus = (focusStartInput = true) => {\n let input = refStartInput.value\n if (!focusStartInput && isRangeInput.value) {\n input = refEndInput.value\n }\n if (input) {\n input.focus()\n }\n }\n\n const handleFocus = (e) => {\n if (props.readonly || pickerDisabled.value || pickerVisible.value) return\n pickerVisible.value = true\n ctx.emit('focus', e)\n }\n\n const handleBlur = () => {\n refPopper.value?.onClose()\n blurInput()\n }\n\n const pickerDisabled = computed(() => {\n return props.disabled || elForm.disabled\n })\n\n const parsedValue = computed(() => {\n let result\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n result = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (Array.isArray(props.modelValue)) {\n result = props.modelValue.map((_) =>\n parser(_, props.valueFormat, lang.value)\n )\n } else {\n result = parser(props.modelValue, props.valueFormat, lang.value)\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult =\n pickerOptions.value.getRangeAvailableTime(result)\n if (!isEqual(availableResult, result)) {\n result = availableResult\n emitInput(\n Array.isArray(result)\n ? result.map((_) => _.toDate())\n : result.toDate()\n )\n }\n }\n if (Array.isArray(result) && result.some((_) => !_)) {\n result = []\n }\n return result\n })\n\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady) return\n const formattedValue = formatDayjsToString(parsedValue.value)\n if (Array.isArray(userInput.value)) {\n return [\n userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n ]\n } else if (userInput.value !== null) {\n return userInput.value\n }\n if (!isTimePicker.value && valueIsEmpty.value) return\n if (!pickerVisible.value && valueIsEmpty.value) return\n if (formattedValue) {\n return isDatesPicker.value\n ? (formattedValue as Array<string>).join(', ')\n : formattedValue\n }\n return ''\n })\n\n const isTimeLikePicker = computed(() => props.type.includes('time'))\n\n const isTimePicker = computed(() => props.type.startsWith('time'))\n\n const isDatesPicker = computed(() => props.type === 'dates')\n\n const triggerIcon = computed(\n () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n )\n\n const showClose = ref(false)\n\n const onClearIconClick = (event) => {\n if (props.readonly || pickerDisabled.value) return\n if (showClose.value) {\n event.stopPropagation()\n emitInput(null)\n emitChange(null, true)\n showClose.value = false\n pickerVisible.value = false\n pickerOptions.value.handleClear && pickerOptions.value.handleClear()\n }\n }\n const valueIsEmpty = computed(() => {\n return (\n !props.modelValue ||\n (Array.isArray(props.modelValue) && !props.modelValue.length)\n )\n })\n const onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value) return\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true\n }\n }\n const onMouseLeave = () => {\n showClose.value = false\n }\n const isRangeInput = computed(() => {\n return props.type.indexOf('range') > -1\n })\n\n const pickerSize = useSize()\n\n const popperPaneRef = computed(() => {\n return refPopper.value?.popperRef?.contentRef\n })\n\n const popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n const actualInputRef = computed(() => {\n if (unref(isRangeInput)) {\n return unref(inputRef)\n }\n\n return (unref(inputRef) as ComponentPublicInstance)?.$el\n })\n\n onClickOutside(actualInputRef, (e: PointerEvent) => {\n const unrefedPopperEl = unref(popperEl)\n const inputEl = unref(actualInputRef)\n if (\n (unrefedPopperEl &&\n (e.target === unrefedPopperEl ||\n e.composedPath().includes(unrefedPopperEl))) ||\n e.target === inputEl ||\n e.composedPath().includes(inputEl)\n )\n return\n pickerVisible.value = false\n })\n\n const userInput = ref(null)\n\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value)\n if (value) {\n if (isValidValue(value)) {\n emitInput(\n Array.isArray(value)\n ? value.map((_) => _.toDate())\n : value.toDate()\n )\n userInput.value = null\n }\n }\n }\n if (userInput.value === '') {\n emitInput(null)\n emitChange(null)\n userInput.value = null\n }\n }\n\n const blurInput = () => {\n refInput.value.forEach((input) => input.blur())\n }\n\n const parseUserInputToDayjs = (value) => {\n if (!value) return null\n return pickerOptions.value.parseUserInput(value)\n }\n\n const formatDayjsToString = (value) => {\n if (!value) return null\n return pickerOptions.value.formatToString(value)\n }\n\n const isValidValue = (value) => {\n return pickerOptions.value.isValidValue(value)\n }\n\n const handleKeydown = (event) => {\n const code = event.code\n\n if (code === EVENT_CODE.esc) {\n pickerVisible.value = false\n event.stopPropagation()\n return\n }\n\n if (code === EVENT_CODE.tab) {\n if (!isRangeInput.value) {\n handleChange()\n pickerVisible.value = false\n event.stopPropagation()\n } else {\n // user may change focus between two input\n setTimeout(() => {\n if (refInput.value.indexOf(document.activeElement) === -1) {\n pickerVisible.value = false\n blurInput()\n }\n }, 0)\n }\n return\n }\n\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (\n userInput.value === null ||\n userInput.value === '' ||\n isValidValue(parseUserInputToDayjs(displayValue.value))\n ) {\n handleChange()\n pickerVisible.value = false\n }\n event.stopPropagation()\n return\n }\n\n // if user is typing, do not let picker handle key input\n if (userInput.value) {\n event.stopPropagation()\n return\n }\n\n if (pickerOptions.value.handleKeydown) {\n pickerOptions.value.handleKeydown(event)\n }\n }\n const onUserInput = (e) => {\n userInput.value = e\n }\n\n const handleStartInput = (event) => {\n if (userInput.value) {\n userInput.value = [event.target.value, userInput.value[1]]\n } else {\n userInput.value = [event.target.value, null]\n }\n }\n\n const handleEndInput = (event) => {\n if (userInput.value) {\n userInput.value = [userInput.value[0], event.target.value]\n } else {\n userInput.value = [null, event.target.value]\n }\n }\n\n const handleStartChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[0])\n if (value && value.isValid()) {\n userInput.value = [formatDayjsToString(value), displayValue.value[1]]\n const newValue = [value, parsedValue.value && parsedValue.value[1]]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const handleEndChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[1])\n if (value && value.isValid()) {\n userInput.value = [displayValue.value[0], formatDayjsToString(value)]\n const newValue = [parsedValue.value && parsedValue.value[0], value]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const pickerOptions = ref<Partial<PickerOptions>>({})\n const onSetPickerOption = <T extends keyof PickerOptions>(\n e: [T, PickerOptions[T]]\n ) => {\n pickerOptions.value[e[0]] = e[1]\n pickerOptions.value.panelReady = true\n }\n\n const onCalendarChange = (e) => {\n ctx.emit('calendar-change', e)\n }\n\n provide('EP_PICKER_BASE', {\n props,\n })\n\n return {\n // injected popper options\n elPopperOptions,\n\n isDatesPicker,\n handleEndChange,\n handleStartChange,\n handleStartInput,\n handleEndInput,\n onUserInput,\n handleChange,\n handleKeydown,\n popperPaneRef,\n onClickOutside,\n pickerSize,\n isRangeInput,\n onMouseLeave,\n onMouseEnter,\n onClearIconClick,\n showClose,\n triggerIcon,\n onPick,\n handleFocus,\n handleBlur,\n pickerVisible,\n pickerActualVisible,\n displayValue,\n parsedValue,\n setSelectionRange,\n refPopper,\n inputRef,\n pickerDisabled,\n onSetPickerOption,\n onCalendarChange,\n focus,\n }\n },\n})\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"picker.vue_vue_type_script_lang.mjs","sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"refPopper\"\n v-model:visible=\"pickerVisible\"\n effect=\"light\"\n pure\n trigger=\"click\"\n v-bind=\"$attrs\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :popper-class=\"`el-picker__popper ${popperClass}`\"\n :popper-options=\"elPopperOptions\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :gpu-acceleration=\"false\"\n :stop-popper-mouse-event=\"false\"\n :hide-after=\"0\"\n persistent\n @show=\"pickerActualVisible = true\"\n @hide=\"pickerActualVisible = false\"\n >\n <template #default>\n <el-input\n v-if=\"!isRangeInput\"\n :id=\"id\"\n ref=\"inputRef\"\n :model-value=\"displayValue\"\n :name=\"name\"\n :size=\"pickerSize\"\n :disabled=\"pickerDisabled\"\n :placeholder=\"placeholder\"\n class=\"el-date-editor\"\n :class=\"['el-date-editor--' + type, $attrs.class || undefined]\"\n :style=\"$attrs.style || undefined\"\n :readonly=\"!editable || readonly || isDatesPicker || type === 'week'\"\n @input=\"onUserInput\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n @change=\"handleChange\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @click.stop\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"showClose && clearIcon\"\n class=\"el-input__icon clear-icon\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </el-input>\n <div\n v-else\n ref=\"inputRef\"\n class=\"el-date-editor el-range-editor el-input__inner\"\n :class=\"[\n 'el-date-editor--' + type,\n pickerSize ? `el-range-editor--${pickerSize}` : '',\n pickerDisabled ? 'is-disabled' : '',\n pickerVisible ? 'is-active' : '',\n $attrs.class || undefined,\n ]\"\n :style=\"$attrs.style || undefined\"\n @click=\"handleFocus\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @keydown=\"handleKeydown\"\n >\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon el-range__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n <input\n :id=\"id && id[0]\"\n autocomplete=\"off\"\n :name=\"name && name[0]\"\n :placeholder=\"startPlaceholder\"\n :value=\"displayValue && displayValue[0]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @input=\"handleStartInput\"\n @change=\"handleStartChange\"\n @focus=\"handleFocus\"\n />\n <slot name=\"range-separator\">\n <span class=\"el-range-separator\">{{ rangeSeparator }}</span>\n </slot>\n <input\n :id=\"id && id[1]\"\n autocomplete=\"off\"\n :name=\"name && name[1]\"\n :placeholder=\"endPlaceholder\"\n :value=\"displayValue && displayValue[1]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @focus=\"handleFocus\"\n @input=\"handleEndInput\"\n @change=\"handleEndChange\"\n />\n <el-icon\n v-if=\"clearIcon\"\n class=\"el-input__icon el-range__close-icon\"\n :class=\"{\n 'el-range__close-icon--hidden': !showClose,\n }\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </div>\n </template>\n <template #content>\n <slot\n :visible=\"pickerVisible\"\n :actual-visible=\"pickerActualVisible\"\n :parsed-value=\"parsedValue\"\n :format=\"format\"\n :unlink-panels=\"unlinkPanels\"\n :type=\"type\"\n :default-value=\"defaultValue\"\n @pick=\"onPick\"\n @select-range=\"setSelectionRange\"\n @set-picker-option=\"onSetPickerOption\"\n @calendar-change=\"onCalendarChange\"\n @panel-change=\"onPanelChange\"\n @mousedown.stop\n ></slot>\n </template>\n </el-tooltip>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n nextTick,\n inject,\n watch,\n provide,\n unref,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport isEqual from 'lodash/isEqual'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useSize } from '@element-plus/hooks'\nimport { elFormKey, elFormItemKey } from '@element-plus/tokens'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isEmpty } from '@element-plus/utils/util'\nimport { Clock, Calendar } from '@element-plus/icons-vue'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type { Options } from '@popperjs/core'\n\ninterface PickerOptions {\n isValidValue: (date: Dayjs) => boolean\n handleKeydown: (event: KeyboardEvent) => void\n parseUserInput: (value: Dayjs) => dayjs.Dayjs\n formatToString: (value: Dayjs) => string | string[]\n getRangeAvailableTime: (date: Dayjs) => dayjs.Dayjs\n getDefaultValue: () => Dayjs\n panelReady: boolean\n handleClear: () => void\n}\n\n// Date object and string\nconst dateEquals = function (a: Date | any, b: Date | any) {\n const aIsDate = a instanceof Date\n const bIsDate = b instanceof Date\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime()\n }\n if (!aIsDate && !bIsDate) {\n return a === b\n }\n return false\n}\n\nconst valueEquals = function (a: Array<Date> | any, b: Array<Date> | any) {\n const aIsArray = a instanceof Array\n const bIsArray = b instanceof Array\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false\n }\n return (a as Array<Date>).every((item, index) => dateEquals(item, b[index]))\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b)\n }\n return false\n}\n\nconst parser = function (\n date: Date | string,\n format: string,\n lang: string\n): Dayjs {\n const day =\n isEmpty(format) || format === 'x'\n ? dayjs(date).locale(lang)\n : dayjs(date, format).locale(lang)\n return day.isValid() ? day : undefined\n}\n\nconst formatter = function (date: number | Date, format: string, lang: string) {\n if (isEmpty(format)) return date\n if (format === 'x') return +date\n return dayjs(date).locale(lang).format(format)\n}\n\nexport default defineComponent({\n name: 'Picker',\n components: {\n ElInput,\n ElTooltip,\n ElIcon,\n },\n props: timePickerDefaultProps,\n emits: [\n 'update:modelValue',\n 'change',\n 'focus',\n 'blur',\n 'calendar-change',\n 'panel-change',\n ],\n setup(props, ctx) {\n const { lang } = useLocale()\n\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const elPopperOptions = inject('ElPopperOptions', {} as Options)\n\n const refPopper = ref<InstanceType<typeof ElTooltip>>()\n const inputRef = ref<HTMLElement | ComponentPublicInstance>()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const valueOnOpen = ref(null)\n\n watch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null\n nextTick(() => {\n emitChange(props.modelValue)\n })\n ctx.emit('blur')\n blurInput()\n props.validateEvent && elFormItem.validate?.('blur')\n } else {\n valueOnOpen.value = props.modelValue\n }\n })\n const emitChange = (val, isClear?: boolean) => {\n // determine user real change only\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n ctx.emit('change', val)\n props.validateEvent && elFormItem.validate?.('change')\n }\n }\n const emitInput = (val) => {\n if (!valueEquals(props.modelValue, val)) {\n let formatValue\n if (Array.isArray(val)) {\n formatValue = val.map((_) =>\n formatter(_, props.valueFormat, lang.value)\n )\n } else if (val) {\n formatValue = formatter(val, props.valueFormat, lang.value)\n }\n ctx.emit('update:modelValue', val ? formatValue : val, lang.value)\n }\n }\n const refInput = computed<HTMLInputElement[]>(() => {\n if (inputRef.value) {\n const _r = isRangeInput.value\n ? inputRef.value\n : (inputRef.value as any as ComponentPublicInstance).$el\n return Array.from<HTMLInputElement>(_r.querySelectorAll('input'))\n }\n return []\n })\n const refStartInput = computed(() => {\n return refInput?.value[0]\n })\n const refEndInput = computed(() => {\n return refInput?.value[1]\n })\n const setSelectionRange = (start, end, pos) => {\n const _inputs = refInput.value\n if (!_inputs.length) return\n if (!pos || pos === 'min') {\n _inputs[0].setSelectionRange(start, end)\n _inputs[0].focus()\n } else if (pos === 'max') {\n _inputs[1].setSelectionRange(start, end)\n _inputs[1].focus()\n }\n }\n const onPick = (date: any = '', visible = false) => {\n pickerVisible.value = visible\n let result\n if (Array.isArray(date)) {\n result = date.map((_) => _.toDate())\n } else {\n // clear btn emit null\n result = date ? date.toDate() : date\n }\n userInput.value = null\n emitInput(result)\n }\n\n const focus = (focusStartInput = true) => {\n let input = refStartInput.value\n if (!focusStartInput && isRangeInput.value) {\n input = refEndInput.value\n }\n if (input) {\n input.focus()\n }\n }\n\n const handleFocus = (e) => {\n if (props.readonly || pickerDisabled.value || pickerVisible.value) return\n pickerVisible.value = true\n ctx.emit('focus', e)\n }\n\n const handleBlur = () => {\n refPopper.value?.onClose()\n blurInput()\n }\n\n const pickerDisabled = computed(() => {\n return props.disabled || elForm.disabled\n })\n\n const parsedValue = computed(() => {\n let result\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n result = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (Array.isArray(props.modelValue)) {\n result = props.modelValue.map((_) =>\n parser(_, props.valueFormat, lang.value)\n )\n } else {\n result = parser(props.modelValue, props.valueFormat, lang.value)\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult =\n pickerOptions.value.getRangeAvailableTime(result)\n if (!isEqual(availableResult, result)) {\n result = availableResult\n emitInput(\n Array.isArray(result)\n ? result.map((_) => _.toDate())\n : result.toDate()\n )\n }\n }\n if (Array.isArray(result) && result.some((_) => !_)) {\n result = []\n }\n return result\n })\n\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady) return\n const formattedValue = formatDayjsToString(parsedValue.value)\n if (Array.isArray(userInput.value)) {\n return [\n userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n ]\n } else if (userInput.value !== null) {\n return userInput.value\n }\n if (!isTimePicker.value && valueIsEmpty.value) return\n if (!pickerVisible.value && valueIsEmpty.value) return\n if (formattedValue) {\n return isDatesPicker.value\n ? (formattedValue as Array<string>).join(', ')\n : formattedValue\n }\n return ''\n })\n\n const isTimeLikePicker = computed(() => props.type.includes('time'))\n\n const isTimePicker = computed(() => props.type.startsWith('time'))\n\n const isDatesPicker = computed(() => props.type === 'dates')\n\n const triggerIcon = computed(\n () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n )\n\n const showClose = ref(false)\n\n const onClearIconClick = (event) => {\n if (props.readonly || pickerDisabled.value) return\n if (showClose.value) {\n event.stopPropagation()\n emitInput(null)\n emitChange(null, true)\n showClose.value = false\n pickerVisible.value = false\n pickerOptions.value.handleClear && pickerOptions.value.handleClear()\n }\n }\n const valueIsEmpty = computed(() => {\n return (\n !props.modelValue ||\n (Array.isArray(props.modelValue) && !props.modelValue.length)\n )\n })\n const onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value) return\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true\n }\n }\n const onMouseLeave = () => {\n showClose.value = false\n }\n const isRangeInput = computed(() => {\n return props.type.indexOf('range') > -1\n })\n\n const pickerSize = useSize()\n\n const popperPaneRef = computed(() => {\n return refPopper.value?.popperRef?.contentRef\n })\n\n const popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n const actualInputRef = computed(() => {\n if (unref(isRangeInput)) {\n return unref(inputRef)\n }\n\n return (unref(inputRef) as ComponentPublicInstance)?.$el\n })\n\n onClickOutside(actualInputRef, (e: PointerEvent) => {\n const unrefedPopperEl = unref(popperEl)\n const inputEl = unref(actualInputRef)\n if (\n (unrefedPopperEl &&\n (e.target === unrefedPopperEl ||\n e.composedPath().includes(unrefedPopperEl))) ||\n e.target === inputEl ||\n e.composedPath().includes(inputEl)\n )\n return\n pickerVisible.value = false\n })\n\n const userInput = ref(null)\n\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value)\n if (value) {\n if (isValidValue(value)) {\n emitInput(\n Array.isArray(value)\n ? value.map((_) => _.toDate())\n : value.toDate()\n )\n userInput.value = null\n }\n }\n }\n if (userInput.value === '') {\n emitInput(null)\n emitChange(null)\n userInput.value = null\n }\n }\n\n const blurInput = () => {\n refInput.value.forEach((input) => input.blur())\n }\n\n const parseUserInputToDayjs = (value) => {\n if (!value) return null\n return pickerOptions.value.parseUserInput(value)\n }\n\n const formatDayjsToString = (value) => {\n if (!value) return null\n return pickerOptions.value.formatToString(value)\n }\n\n const isValidValue = (value) => {\n return pickerOptions.value.isValidValue(value)\n }\n\n const handleKeydown = (event) => {\n const code = event.code\n\n if (code === EVENT_CODE.esc) {\n pickerVisible.value = false\n event.stopPropagation()\n return\n }\n\n if (code === EVENT_CODE.tab) {\n if (!isRangeInput.value) {\n handleChange()\n pickerVisible.value = false\n event.stopPropagation()\n } else {\n // user may change focus between two input\n setTimeout(() => {\n if (refInput.value.indexOf(document.activeElement) === -1) {\n pickerVisible.value = false\n blurInput()\n }\n }, 0)\n }\n return\n }\n\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (\n userInput.value === null ||\n userInput.value === '' ||\n isValidValue(parseUserInputToDayjs(displayValue.value))\n ) {\n handleChange()\n pickerVisible.value = false\n }\n event.stopPropagation()\n return\n }\n\n // if user is typing, do not let picker handle key input\n if (userInput.value) {\n event.stopPropagation()\n return\n }\n\n if (pickerOptions.value.handleKeydown) {\n pickerOptions.value.handleKeydown(event)\n }\n }\n const onUserInput = (e) => {\n userInput.value = e\n }\n\n const handleStartInput = (event) => {\n if (userInput.value) {\n userInput.value = [event.target.value, userInput.value[1]]\n } else {\n userInput.value = [event.target.value, null]\n }\n }\n\n const handleEndInput = (event) => {\n if (userInput.value) {\n userInput.value = [userInput.value[0], event.target.value]\n } else {\n userInput.value = [null, event.target.value]\n }\n }\n\n const handleStartChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[0])\n if (value && value.isValid()) {\n userInput.value = [formatDayjsToString(value), displayValue.value[1]]\n const newValue = [value, parsedValue.value && parsedValue.value[1]]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const handleEndChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[1])\n if (value && value.isValid()) {\n userInput.value = [displayValue.value[0], formatDayjsToString(value)]\n const newValue = [parsedValue.value && parsedValue.value[0], value]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const pickerOptions = ref<Partial<PickerOptions>>({})\n const onSetPickerOption = <T extends keyof PickerOptions>(\n e: [T, PickerOptions[T]]\n ) => {\n pickerOptions.value[e[0]] = e[1]\n pickerOptions.value.panelReady = true\n }\n\n const onCalendarChange = (e) => {\n ctx.emit('calendar-change', e)\n }\n\n const onPanelChange = (value, mode, view) => {\n ctx.emit('panel-change', value, mode, view)\n }\n\n provide('EP_PICKER_BASE', {\n props,\n })\n\n return {\n // injected popper options\n elPopperOptions,\n\n isDatesPicker,\n handleEndChange,\n handleStartChange,\n handleStartInput,\n handleEndInput,\n onUserInput,\n handleChange,\n handleKeydown,\n popperPaneRef,\n onClickOutside,\n pickerSize,\n isRangeInput,\n onMouseLeave,\n onMouseEnter,\n onClearIconClick,\n showClose,\n triggerIcon,\n onPick,\n handleFocus,\n handleBlur,\n pickerVisible,\n pickerActualVisible,\n displayValue,\n parsedValue,\n setSelectionRange,\n refPopper,\n inputRef,\n pickerDisabled,\n onSetPickerOption,\n onCalendarChange,\n onPanelChange,\n focus,\n }\n },\n})\n</script>\n"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
10
10
  return openBlock(), createBlock(_component_el_tooltip, mergeProps({
11
11
  ref: "refPopper",
12
12
  visible: _ctx.pickerVisible,
13
- "onUpdate:visible": _cache[16] || (_cache[16] = ($event) => _ctx.pickerVisible = $event),
13
+ "onUpdate:visible": _cache[17] || (_cache[17] = ($event) => _ctx.pickerVisible = $event),
14
14
  effect: "light",
15
15
  pure: "",
16
16
  trigger: "click"
@@ -24,8 +24,8 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
24
24
  "stop-popper-mouse-event": false,
25
25
  "hide-after": 0,
26
26
  persistent: "",
27
- onShow: _cache[17] || (_cache[17] = ($event) => _ctx.pickerActualVisible = true),
28
- onHide: _cache[18] || (_cache[18] = ($event) => _ctx.pickerActualVisible = false)
27
+ onShow: _cache[18] || (_cache[18] = ($event) => _ctx.pickerActualVisible = true),
28
+ onHide: _cache[19] || (_cache[19] = ($event) => _ctx.pickerActualVisible = false)
29
29
  }), {
30
30
  default: withCtx(() => [
31
31
  !_ctx.isRangeInput ? (openBlock(), createBlock(_component_el_input, {
@@ -156,7 +156,8 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
156
156
  onSelectRange: _cache[12] || (_cache[12] = (...args) => _ctx.setSelectionRange && _ctx.setSelectionRange(...args)),
157
157
  onSetPickerOption: _cache[13] || (_cache[13] = (...args) => _ctx.onSetPickerOption && _ctx.onSetPickerOption(...args)),
158
158
  onCalendarChange: _cache[14] || (_cache[14] = (...args) => _ctx.onCalendarChange && _ctx.onCalendarChange(...args)),
159
- onMousedown: _cache[15] || (_cache[15] = withModifiers(() => {
159
+ onPanelChange: _cache[15] || (_cache[15] = (...args) => _ctx.onPanelChange && _ctx.onPanelChange(...args)),
160
+ onMousedown: _cache[16] || (_cache[16] = withModifiers(() => {
160
161
  }, ["stop"]))
161
162
  })
162
163
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"picker.vue_vue_type_template_id_1d54be91_lang.mjs","sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue?vue&type=template&id=1d54be91&lang.js"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"refPopper\"\n v-model:visible=\"pickerVisible\"\n effect=\"light\"\n pure\n trigger=\"click\"\n v-bind=\"$attrs\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :popper-class=\"`el-picker__popper ${popperClass}`\"\n :popper-options=\"elPopperOptions\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :gpu-acceleration=\"false\"\n :stop-popper-mouse-event=\"false\"\n :hide-after=\"0\"\n persistent\n @show=\"pickerActualVisible = true\"\n @hide=\"pickerActualVisible = false\"\n >\n <template #default>\n <el-input\n v-if=\"!isRangeInput\"\n :id=\"id\"\n ref=\"inputRef\"\n :model-value=\"displayValue\"\n :name=\"name\"\n :size=\"pickerSize\"\n :disabled=\"pickerDisabled\"\n :placeholder=\"placeholder\"\n class=\"el-date-editor\"\n :class=\"['el-date-editor--' + type, $attrs.class || undefined]\"\n :style=\"$attrs.style || undefined\"\n :readonly=\"!editable || readonly || isDatesPicker || type === 'week'\"\n @input=\"onUserInput\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n @change=\"handleChange\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @click.stop\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"showClose && clearIcon\"\n class=\"el-input__icon clear-icon\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </el-input>\n <div\n v-else\n ref=\"inputRef\"\n class=\"el-date-editor el-range-editor el-input__inner\"\n :class=\"[\n 'el-date-editor--' + type,\n pickerSize ? `el-range-editor--${pickerSize}` : '',\n pickerDisabled ? 'is-disabled' : '',\n pickerVisible ? 'is-active' : '',\n $attrs.class || undefined,\n ]\"\n :style=\"$attrs.style || undefined\"\n @click=\"handleFocus\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @keydown=\"handleKeydown\"\n >\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon el-range__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n <input\n :id=\"id && id[0]\"\n autocomplete=\"off\"\n :name=\"name && name[0]\"\n :placeholder=\"startPlaceholder\"\n :value=\"displayValue && displayValue[0]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @input=\"handleStartInput\"\n @change=\"handleStartChange\"\n @focus=\"handleFocus\"\n />\n <slot name=\"range-separator\">\n <span class=\"el-range-separator\">{{ rangeSeparator }}</span>\n </slot>\n <input\n :id=\"id && id[1]\"\n autocomplete=\"off\"\n :name=\"name && name[1]\"\n :placeholder=\"endPlaceholder\"\n :value=\"displayValue && displayValue[1]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @focus=\"handleFocus\"\n @input=\"handleEndInput\"\n @change=\"handleEndChange\"\n />\n <el-icon\n v-if=\"clearIcon\"\n class=\"el-input__icon el-range__close-icon\"\n :class=\"{\n 'el-range__close-icon--hidden': !showClose,\n }\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </div>\n </template>\n <template #content>\n <slot\n :visible=\"pickerVisible\"\n :actual-visible=\"pickerActualVisible\"\n :parsed-value=\"parsedValue\"\n :format=\"format\"\n :unlink-panels=\"unlinkPanels\"\n :type=\"type\"\n :default-value=\"defaultValue\"\n @pick=\"onPick\"\n @select-range=\"setSelectionRange\"\n @set-picker-option=\"onSetPickerOption\"\n @calendar-change=\"onCalendarChange\"\n @mousedown.stop\n ></slot>\n </template>\n </el-tooltip>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n nextTick,\n inject,\n watch,\n provide,\n unref,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport isEqual from 'lodash/isEqual'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useSize } from '@element-plus/hooks'\nimport { elFormKey, elFormItemKey } from '@element-plus/tokens'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isEmpty } from '@element-plus/utils/util'\nimport { Clock, Calendar } from '@element-plus/icons-vue'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type { Options } from '@popperjs/core'\n\ninterface PickerOptions {\n isValidValue: (date: Dayjs) => boolean\n handleKeydown: (event: KeyboardEvent) => void\n parseUserInput: (value: Dayjs) => dayjs.Dayjs\n formatToString: (value: Dayjs) => string | string[]\n getRangeAvailableTime: (date: Dayjs) => dayjs.Dayjs\n getDefaultValue: () => Dayjs\n panelReady: boolean\n handleClear: () => void\n}\n\n// Date object and string\nconst dateEquals = function (a: Date | any, b: Date | any) {\n const aIsDate = a instanceof Date\n const bIsDate = b instanceof Date\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime()\n }\n if (!aIsDate && !bIsDate) {\n return a === b\n }\n return false\n}\n\nconst valueEquals = function (a: Array<Date> | any, b: Array<Date> | any) {\n const aIsArray = a instanceof Array\n const bIsArray = b instanceof Array\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false\n }\n return (a as Array<Date>).every((item, index) => dateEquals(item, b[index]))\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b)\n }\n return false\n}\n\nconst parser = function (\n date: Date | string,\n format: string,\n lang: string\n): Dayjs {\n const day =\n isEmpty(format) || format === 'x'\n ? dayjs(date).locale(lang)\n : dayjs(date, format).locale(lang)\n return day.isValid() ? day : undefined\n}\n\nconst formatter = function (date: number | Date, format: string, lang: string) {\n if (isEmpty(format)) return date\n if (format === 'x') return +date\n return dayjs(date).locale(lang).format(format)\n}\n\nexport default defineComponent({\n name: 'Picker',\n components: {\n ElInput,\n ElTooltip,\n ElIcon,\n },\n props: timePickerDefaultProps,\n emits: ['update:modelValue', 'change', 'focus', 'blur', 'calendar-change'],\n setup(props, ctx) {\n const { lang } = useLocale()\n\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const elPopperOptions = inject('ElPopperOptions', {} as Options)\n\n const refPopper = ref<InstanceType<typeof ElTooltip>>()\n const inputRef = ref<HTMLElement | ComponentPublicInstance>()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const valueOnOpen = ref(null)\n\n watch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null\n nextTick(() => {\n emitChange(props.modelValue)\n })\n ctx.emit('blur')\n blurInput()\n props.validateEvent && elFormItem.validate?.('blur')\n } else {\n valueOnOpen.value = props.modelValue\n }\n })\n const emitChange = (val, isClear?: boolean) => {\n // determine user real change only\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n ctx.emit('change', val)\n props.validateEvent && elFormItem.validate?.('change')\n }\n }\n const emitInput = (val) => {\n if (!valueEquals(props.modelValue, val)) {\n let formatValue\n if (Array.isArray(val)) {\n formatValue = val.map((_) =>\n formatter(_, props.valueFormat, lang.value)\n )\n } else if (val) {\n formatValue = formatter(val, props.valueFormat, lang.value)\n }\n ctx.emit('update:modelValue', val ? formatValue : val, lang.value)\n }\n }\n const refInput = computed<HTMLInputElement[]>(() => {\n if (inputRef.value) {\n const _r = isRangeInput.value\n ? inputRef.value\n : (inputRef.value as any as ComponentPublicInstance).$el\n return Array.from<HTMLInputElement>(_r.querySelectorAll('input'))\n }\n return []\n })\n const refStartInput = computed(() => {\n return refInput?.value[0]\n })\n const refEndInput = computed(() => {\n return refInput?.value[1]\n })\n const setSelectionRange = (start, end, pos) => {\n const _inputs = refInput.value\n if (!_inputs.length) return\n if (!pos || pos === 'min') {\n _inputs[0].setSelectionRange(start, end)\n _inputs[0].focus()\n } else if (pos === 'max') {\n _inputs[1].setSelectionRange(start, end)\n _inputs[1].focus()\n }\n }\n const onPick = (date: any = '', visible = false) => {\n pickerVisible.value = visible\n let result\n if (Array.isArray(date)) {\n result = date.map((_) => _.toDate())\n } else {\n // clear btn emit null\n result = date ? date.toDate() : date\n }\n userInput.value = null\n emitInput(result)\n }\n\n const focus = (focusStartInput = true) => {\n let input = refStartInput.value\n if (!focusStartInput && isRangeInput.value) {\n input = refEndInput.value\n }\n if (input) {\n input.focus()\n }\n }\n\n const handleFocus = (e) => {\n if (props.readonly || pickerDisabled.value || pickerVisible.value) return\n pickerVisible.value = true\n ctx.emit('focus', e)\n }\n\n const handleBlur = () => {\n refPopper.value?.onClose()\n blurInput()\n }\n\n const pickerDisabled = computed(() => {\n return props.disabled || elForm.disabled\n })\n\n const parsedValue = computed(() => {\n let result\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n result = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (Array.isArray(props.modelValue)) {\n result = props.modelValue.map((_) =>\n parser(_, props.valueFormat, lang.value)\n )\n } else {\n result = parser(props.modelValue, props.valueFormat, lang.value)\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult =\n pickerOptions.value.getRangeAvailableTime(result)\n if (!isEqual(availableResult, result)) {\n result = availableResult\n emitInput(\n Array.isArray(result)\n ? result.map((_) => _.toDate())\n : result.toDate()\n )\n }\n }\n if (Array.isArray(result) && result.some((_) => !_)) {\n result = []\n }\n return result\n })\n\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady) return\n const formattedValue = formatDayjsToString(parsedValue.value)\n if (Array.isArray(userInput.value)) {\n return [\n userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n ]\n } else if (userInput.value !== null) {\n return userInput.value\n }\n if (!isTimePicker.value && valueIsEmpty.value) return\n if (!pickerVisible.value && valueIsEmpty.value) return\n if (formattedValue) {\n return isDatesPicker.value\n ? (formattedValue as Array<string>).join(', ')\n : formattedValue\n }\n return ''\n })\n\n const isTimeLikePicker = computed(() => props.type.includes('time'))\n\n const isTimePicker = computed(() => props.type.startsWith('time'))\n\n const isDatesPicker = computed(() => props.type === 'dates')\n\n const triggerIcon = computed(\n () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n )\n\n const showClose = ref(false)\n\n const onClearIconClick = (event) => {\n if (props.readonly || pickerDisabled.value) return\n if (showClose.value) {\n event.stopPropagation()\n emitInput(null)\n emitChange(null, true)\n showClose.value = false\n pickerVisible.value = false\n pickerOptions.value.handleClear && pickerOptions.value.handleClear()\n }\n }\n const valueIsEmpty = computed(() => {\n return (\n !props.modelValue ||\n (Array.isArray(props.modelValue) && !props.modelValue.length)\n )\n })\n const onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value) return\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true\n }\n }\n const onMouseLeave = () => {\n showClose.value = false\n }\n const isRangeInput = computed(() => {\n return props.type.indexOf('range') > -1\n })\n\n const pickerSize = useSize()\n\n const popperPaneRef = computed(() => {\n return refPopper.value?.popperRef?.contentRef\n })\n\n const popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n const actualInputRef = computed(() => {\n if (unref(isRangeInput)) {\n return unref(inputRef)\n }\n\n return (unref(inputRef) as ComponentPublicInstance)?.$el\n })\n\n onClickOutside(actualInputRef, (e: PointerEvent) => {\n const unrefedPopperEl = unref(popperEl)\n const inputEl = unref(actualInputRef)\n if (\n (unrefedPopperEl &&\n (e.target === unrefedPopperEl ||\n e.composedPath().includes(unrefedPopperEl))) ||\n e.target === inputEl ||\n e.composedPath().includes(inputEl)\n )\n return\n pickerVisible.value = false\n })\n\n const userInput = ref(null)\n\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value)\n if (value) {\n if (isValidValue(value)) {\n emitInput(\n Array.isArray(value)\n ? value.map((_) => _.toDate())\n : value.toDate()\n )\n userInput.value = null\n }\n }\n }\n if (userInput.value === '') {\n emitInput(null)\n emitChange(null)\n userInput.value = null\n }\n }\n\n const blurInput = () => {\n refInput.value.forEach((input) => input.blur())\n }\n\n const parseUserInputToDayjs = (value) => {\n if (!value) return null\n return pickerOptions.value.parseUserInput(value)\n }\n\n const formatDayjsToString = (value) => {\n if (!value) return null\n return pickerOptions.value.formatToString(value)\n }\n\n const isValidValue = (value) => {\n return pickerOptions.value.isValidValue(value)\n }\n\n const handleKeydown = (event) => {\n const code = event.code\n\n if (code === EVENT_CODE.esc) {\n pickerVisible.value = false\n event.stopPropagation()\n return\n }\n\n if (code === EVENT_CODE.tab) {\n if (!isRangeInput.value) {\n handleChange()\n pickerVisible.value = false\n event.stopPropagation()\n } else {\n // user may change focus between two input\n setTimeout(() => {\n if (refInput.value.indexOf(document.activeElement) === -1) {\n pickerVisible.value = false\n blurInput()\n }\n }, 0)\n }\n return\n }\n\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (\n userInput.value === null ||\n userInput.value === '' ||\n isValidValue(parseUserInputToDayjs(displayValue.value))\n ) {\n handleChange()\n pickerVisible.value = false\n }\n event.stopPropagation()\n return\n }\n\n // if user is typing, do not let picker handle key input\n if (userInput.value) {\n event.stopPropagation()\n return\n }\n\n if (pickerOptions.value.handleKeydown) {\n pickerOptions.value.handleKeydown(event)\n }\n }\n const onUserInput = (e) => {\n userInput.value = e\n }\n\n const handleStartInput = (event) => {\n if (userInput.value) {\n userInput.value = [event.target.value, userInput.value[1]]\n } else {\n userInput.value = [event.target.value, null]\n }\n }\n\n const handleEndInput = (event) => {\n if (userInput.value) {\n userInput.value = [userInput.value[0], event.target.value]\n } else {\n userInput.value = [null, event.target.value]\n }\n }\n\n const handleStartChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[0])\n if (value && value.isValid()) {\n userInput.value = [formatDayjsToString(value), displayValue.value[1]]\n const newValue = [value, parsedValue.value && parsedValue.value[1]]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const handleEndChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[1])\n if (value && value.isValid()) {\n userInput.value = [displayValue.value[0], formatDayjsToString(value)]\n const newValue = [parsedValue.value && parsedValue.value[0], value]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const pickerOptions = ref<Partial<PickerOptions>>({})\n const onSetPickerOption = <T extends keyof PickerOptions>(\n e: [T, PickerOptions[T]]\n ) => {\n pickerOptions.value[e[0]] = e[1]\n pickerOptions.value.panelReady = true\n }\n\n const onCalendarChange = (e) => {\n ctx.emit('calendar-change', e)\n }\n\n provide('EP_PICKER_BASE', {\n props,\n })\n\n return {\n // injected popper options\n elPopperOptions,\n\n isDatesPicker,\n handleEndChange,\n handleStartChange,\n handleStartInput,\n handleEndInput,\n onUserInput,\n handleChange,\n handleKeydown,\n popperPaneRef,\n onClickOutside,\n pickerSize,\n isRangeInput,\n onMouseLeave,\n onMouseEnter,\n onClearIconClick,\n showClose,\n triggerIcon,\n onPick,\n handleFocus,\n handleBlur,\n pickerVisible,\n pickerActualVisible,\n displayValue,\n parsedValue,\n setSelectionRange,\n refPopper,\n inputRef,\n pickerDisabled,\n onSetPickerOption,\n onCalendarChange,\n focus,\n }\n },\n})\n</script>\n"],"names":["_normalizeStyle"],"mappings":";;;;0BAmGqB;;;;;;;;wBAlGnB;IACE;IACQ;;UACF;IACN;IACA;;IAEA,kBAAA;IACA;IACC;IACA;IACA;IACA;IACA,gCAA8B;IAC9B,cAAY,CAAC;IACd;IACC;;;;QAKU;;;YACN,EAAE;;yBAES;;;yCAGa;;iBAEpB;iBAEC;uBACM;;;uBAGF;YACT,QAAM;;uBAEI;;;YAGA;;;;wBAGF,EAAC;;;;;;;;;;;;;;;2BAUA;;;2EAEU;;;;;;;;;;eAMjBA;iBACE;;;;;;;iBAQC;mBACA;;;8DAGI;;aAGF;;;kBACN,OAAM;;;;;;;;;;;;mBAQC,aAAQ;+CACe;;;cAG7B,WAAW;;cAEX,OAAK;;qBAEA;;;;;;kBAMD,WAAM;;;;;;;mBAON;;;6DAGI;;aAGH;;;;;;;;;;;;;;;;;;;QAcP;;QAEA;;;;;;"}
1
+ {"version":3,"file":"picker.vue_vue_type_template_id_1d54be91_lang.mjs","sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue?vue&type=template&id=1d54be91&lang.js"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"refPopper\"\n v-model:visible=\"pickerVisible\"\n effect=\"light\"\n pure\n trigger=\"click\"\n v-bind=\"$attrs\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :popper-class=\"`el-picker__popper ${popperClass}`\"\n :popper-options=\"elPopperOptions\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :gpu-acceleration=\"false\"\n :stop-popper-mouse-event=\"false\"\n :hide-after=\"0\"\n persistent\n @show=\"pickerActualVisible = true\"\n @hide=\"pickerActualVisible = false\"\n >\n <template #default>\n <el-input\n v-if=\"!isRangeInput\"\n :id=\"id\"\n ref=\"inputRef\"\n :model-value=\"displayValue\"\n :name=\"name\"\n :size=\"pickerSize\"\n :disabled=\"pickerDisabled\"\n :placeholder=\"placeholder\"\n class=\"el-date-editor\"\n :class=\"['el-date-editor--' + type, $attrs.class || undefined]\"\n :style=\"$attrs.style || undefined\"\n :readonly=\"!editable || readonly || isDatesPicker || type === 'week'\"\n @input=\"onUserInput\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n @change=\"handleChange\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @click.stop\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"showClose && clearIcon\"\n class=\"el-input__icon clear-icon\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </el-input>\n <div\n v-else\n ref=\"inputRef\"\n class=\"el-date-editor el-range-editor el-input__inner\"\n :class=\"[\n 'el-date-editor--' + type,\n pickerSize ? `el-range-editor--${pickerSize}` : '',\n pickerDisabled ? 'is-disabled' : '',\n pickerVisible ? 'is-active' : '',\n $attrs.class || undefined,\n ]\"\n :style=\"$attrs.style || undefined\"\n @click=\"handleFocus\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @keydown=\"handleKeydown\"\n >\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon el-range__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n <input\n :id=\"id && id[0]\"\n autocomplete=\"off\"\n :name=\"name && name[0]\"\n :placeholder=\"startPlaceholder\"\n :value=\"displayValue && displayValue[0]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @input=\"handleStartInput\"\n @change=\"handleStartChange\"\n @focus=\"handleFocus\"\n />\n <slot name=\"range-separator\">\n <span class=\"el-range-separator\">{{ rangeSeparator }}</span>\n </slot>\n <input\n :id=\"id && id[1]\"\n autocomplete=\"off\"\n :name=\"name && name[1]\"\n :placeholder=\"endPlaceholder\"\n :value=\"displayValue && displayValue[1]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @focus=\"handleFocus\"\n @input=\"handleEndInput\"\n @change=\"handleEndChange\"\n />\n <el-icon\n v-if=\"clearIcon\"\n class=\"el-input__icon el-range__close-icon\"\n :class=\"{\n 'el-range__close-icon--hidden': !showClose,\n }\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </div>\n </template>\n <template #content>\n <slot\n :visible=\"pickerVisible\"\n :actual-visible=\"pickerActualVisible\"\n :parsed-value=\"parsedValue\"\n :format=\"format\"\n :unlink-panels=\"unlinkPanels\"\n :type=\"type\"\n :default-value=\"defaultValue\"\n @pick=\"onPick\"\n @select-range=\"setSelectionRange\"\n @set-picker-option=\"onSetPickerOption\"\n @calendar-change=\"onCalendarChange\"\n @panel-change=\"onPanelChange\"\n @mousedown.stop\n ></slot>\n </template>\n </el-tooltip>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n nextTick,\n inject,\n watch,\n provide,\n unref,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport isEqual from 'lodash/isEqual'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useSize } from '@element-plus/hooks'\nimport { elFormKey, elFormItemKey } from '@element-plus/tokens'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isEmpty } from '@element-plus/utils/util'\nimport { Clock, Calendar } from '@element-plus/icons-vue'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type { Options } from '@popperjs/core'\n\ninterface PickerOptions {\n isValidValue: (date: Dayjs) => boolean\n handleKeydown: (event: KeyboardEvent) => void\n parseUserInput: (value: Dayjs) => dayjs.Dayjs\n formatToString: (value: Dayjs) => string | string[]\n getRangeAvailableTime: (date: Dayjs) => dayjs.Dayjs\n getDefaultValue: () => Dayjs\n panelReady: boolean\n handleClear: () => void\n}\n\n// Date object and string\nconst dateEquals = function (a: Date | any, b: Date | any) {\n const aIsDate = a instanceof Date\n const bIsDate = b instanceof Date\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime()\n }\n if (!aIsDate && !bIsDate) {\n return a === b\n }\n return false\n}\n\nconst valueEquals = function (a: Array<Date> | any, b: Array<Date> | any) {\n const aIsArray = a instanceof Array\n const bIsArray = b instanceof Array\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false\n }\n return (a as Array<Date>).every((item, index) => dateEquals(item, b[index]))\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b)\n }\n return false\n}\n\nconst parser = function (\n date: Date | string,\n format: string,\n lang: string\n): Dayjs {\n const day =\n isEmpty(format) || format === 'x'\n ? dayjs(date).locale(lang)\n : dayjs(date, format).locale(lang)\n return day.isValid() ? day : undefined\n}\n\nconst formatter = function (date: number | Date, format: string, lang: string) {\n if (isEmpty(format)) return date\n if (format === 'x') return +date\n return dayjs(date).locale(lang).format(format)\n}\n\nexport default defineComponent({\n name: 'Picker',\n components: {\n ElInput,\n ElTooltip,\n ElIcon,\n },\n props: timePickerDefaultProps,\n emits: [\n 'update:modelValue',\n 'change',\n 'focus',\n 'blur',\n 'calendar-change',\n 'panel-change',\n ],\n setup(props, ctx) {\n const { lang } = useLocale()\n\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const elPopperOptions = inject('ElPopperOptions', {} as Options)\n\n const refPopper = ref<InstanceType<typeof ElTooltip>>()\n const inputRef = ref<HTMLElement | ComponentPublicInstance>()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const valueOnOpen = ref(null)\n\n watch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null\n nextTick(() => {\n emitChange(props.modelValue)\n })\n ctx.emit('blur')\n blurInput()\n props.validateEvent && elFormItem.validate?.('blur')\n } else {\n valueOnOpen.value = props.modelValue\n }\n })\n const emitChange = (val, isClear?: boolean) => {\n // determine user real change only\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n ctx.emit('change', val)\n props.validateEvent && elFormItem.validate?.('change')\n }\n }\n const emitInput = (val) => {\n if (!valueEquals(props.modelValue, val)) {\n let formatValue\n if (Array.isArray(val)) {\n formatValue = val.map((_) =>\n formatter(_, props.valueFormat, lang.value)\n )\n } else if (val) {\n formatValue = formatter(val, props.valueFormat, lang.value)\n }\n ctx.emit('update:modelValue', val ? formatValue : val, lang.value)\n }\n }\n const refInput = computed<HTMLInputElement[]>(() => {\n if (inputRef.value) {\n const _r = isRangeInput.value\n ? inputRef.value\n : (inputRef.value as any as ComponentPublicInstance).$el\n return Array.from<HTMLInputElement>(_r.querySelectorAll('input'))\n }\n return []\n })\n const refStartInput = computed(() => {\n return refInput?.value[0]\n })\n const refEndInput = computed(() => {\n return refInput?.value[1]\n })\n const setSelectionRange = (start, end, pos) => {\n const _inputs = refInput.value\n if (!_inputs.length) return\n if (!pos || pos === 'min') {\n _inputs[0].setSelectionRange(start, end)\n _inputs[0].focus()\n } else if (pos === 'max') {\n _inputs[1].setSelectionRange(start, end)\n _inputs[1].focus()\n }\n }\n const onPick = (date: any = '', visible = false) => {\n pickerVisible.value = visible\n let result\n if (Array.isArray(date)) {\n result = date.map((_) => _.toDate())\n } else {\n // clear btn emit null\n result = date ? date.toDate() : date\n }\n userInput.value = null\n emitInput(result)\n }\n\n const focus = (focusStartInput = true) => {\n let input = refStartInput.value\n if (!focusStartInput && isRangeInput.value) {\n input = refEndInput.value\n }\n if (input) {\n input.focus()\n }\n }\n\n const handleFocus = (e) => {\n if (props.readonly || pickerDisabled.value || pickerVisible.value) return\n pickerVisible.value = true\n ctx.emit('focus', e)\n }\n\n const handleBlur = () => {\n refPopper.value?.onClose()\n blurInput()\n }\n\n const pickerDisabled = computed(() => {\n return props.disabled || elForm.disabled\n })\n\n const parsedValue = computed(() => {\n let result\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n result = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (Array.isArray(props.modelValue)) {\n result = props.modelValue.map((_) =>\n parser(_, props.valueFormat, lang.value)\n )\n } else {\n result = parser(props.modelValue, props.valueFormat, lang.value)\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult =\n pickerOptions.value.getRangeAvailableTime(result)\n if (!isEqual(availableResult, result)) {\n result = availableResult\n emitInput(\n Array.isArray(result)\n ? result.map((_) => _.toDate())\n : result.toDate()\n )\n }\n }\n if (Array.isArray(result) && result.some((_) => !_)) {\n result = []\n }\n return result\n })\n\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady) return\n const formattedValue = formatDayjsToString(parsedValue.value)\n if (Array.isArray(userInput.value)) {\n return [\n userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n ]\n } else if (userInput.value !== null) {\n return userInput.value\n }\n if (!isTimePicker.value && valueIsEmpty.value) return\n if (!pickerVisible.value && valueIsEmpty.value) return\n if (formattedValue) {\n return isDatesPicker.value\n ? (formattedValue as Array<string>).join(', ')\n : formattedValue\n }\n return ''\n })\n\n const isTimeLikePicker = computed(() => props.type.includes('time'))\n\n const isTimePicker = computed(() => props.type.startsWith('time'))\n\n const isDatesPicker = computed(() => props.type === 'dates')\n\n const triggerIcon = computed(\n () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n )\n\n const showClose = ref(false)\n\n const onClearIconClick = (event) => {\n if (props.readonly || pickerDisabled.value) return\n if (showClose.value) {\n event.stopPropagation()\n emitInput(null)\n emitChange(null, true)\n showClose.value = false\n pickerVisible.value = false\n pickerOptions.value.handleClear && pickerOptions.value.handleClear()\n }\n }\n const valueIsEmpty = computed(() => {\n return (\n !props.modelValue ||\n (Array.isArray(props.modelValue) && !props.modelValue.length)\n )\n })\n const onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value) return\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true\n }\n }\n const onMouseLeave = () => {\n showClose.value = false\n }\n const isRangeInput = computed(() => {\n return props.type.indexOf('range') > -1\n })\n\n const pickerSize = useSize()\n\n const popperPaneRef = computed(() => {\n return refPopper.value?.popperRef?.contentRef\n })\n\n const popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n const actualInputRef = computed(() => {\n if (unref(isRangeInput)) {\n return unref(inputRef)\n }\n\n return (unref(inputRef) as ComponentPublicInstance)?.$el\n })\n\n onClickOutside(actualInputRef, (e: PointerEvent) => {\n const unrefedPopperEl = unref(popperEl)\n const inputEl = unref(actualInputRef)\n if (\n (unrefedPopperEl &&\n (e.target === unrefedPopperEl ||\n e.composedPath().includes(unrefedPopperEl))) ||\n e.target === inputEl ||\n e.composedPath().includes(inputEl)\n )\n return\n pickerVisible.value = false\n })\n\n const userInput = ref(null)\n\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value)\n if (value) {\n if (isValidValue(value)) {\n emitInput(\n Array.isArray(value)\n ? value.map((_) => _.toDate())\n : value.toDate()\n )\n userInput.value = null\n }\n }\n }\n if (userInput.value === '') {\n emitInput(null)\n emitChange(null)\n userInput.value = null\n }\n }\n\n const blurInput = () => {\n refInput.value.forEach((input) => input.blur())\n }\n\n const parseUserInputToDayjs = (value) => {\n if (!value) return null\n return pickerOptions.value.parseUserInput(value)\n }\n\n const formatDayjsToString = (value) => {\n if (!value) return null\n return pickerOptions.value.formatToString(value)\n }\n\n const isValidValue = (value) => {\n return pickerOptions.value.isValidValue(value)\n }\n\n const handleKeydown = (event) => {\n const code = event.code\n\n if (code === EVENT_CODE.esc) {\n pickerVisible.value = false\n event.stopPropagation()\n return\n }\n\n if (code === EVENT_CODE.tab) {\n if (!isRangeInput.value) {\n handleChange()\n pickerVisible.value = false\n event.stopPropagation()\n } else {\n // user may change focus between two input\n setTimeout(() => {\n if (refInput.value.indexOf(document.activeElement) === -1) {\n pickerVisible.value = false\n blurInput()\n }\n }, 0)\n }\n return\n }\n\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (\n userInput.value === null ||\n userInput.value === '' ||\n isValidValue(parseUserInputToDayjs(displayValue.value))\n ) {\n handleChange()\n pickerVisible.value = false\n }\n event.stopPropagation()\n return\n }\n\n // if user is typing, do not let picker handle key input\n if (userInput.value) {\n event.stopPropagation()\n return\n }\n\n if (pickerOptions.value.handleKeydown) {\n pickerOptions.value.handleKeydown(event)\n }\n }\n const onUserInput = (e) => {\n userInput.value = e\n }\n\n const handleStartInput = (event) => {\n if (userInput.value) {\n userInput.value = [event.target.value, userInput.value[1]]\n } else {\n userInput.value = [event.target.value, null]\n }\n }\n\n const handleEndInput = (event) => {\n if (userInput.value) {\n userInput.value = [userInput.value[0], event.target.value]\n } else {\n userInput.value = [null, event.target.value]\n }\n }\n\n const handleStartChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[0])\n if (value && value.isValid()) {\n userInput.value = [formatDayjsToString(value), displayValue.value[1]]\n const newValue = [value, parsedValue.value && parsedValue.value[1]]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const handleEndChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[1])\n if (value && value.isValid()) {\n userInput.value = [displayValue.value[0], formatDayjsToString(value)]\n const newValue = [parsedValue.value && parsedValue.value[0], value]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const pickerOptions = ref<Partial<PickerOptions>>({})\n const onSetPickerOption = <T extends keyof PickerOptions>(\n e: [T, PickerOptions[T]]\n ) => {\n pickerOptions.value[e[0]] = e[1]\n pickerOptions.value.panelReady = true\n }\n\n const onCalendarChange = (e) => {\n ctx.emit('calendar-change', e)\n }\n\n const onPanelChange = (value, mode, view) => {\n ctx.emit('panel-change', value, mode, view)\n }\n\n provide('EP_PICKER_BASE', {\n props,\n })\n\n return {\n // injected popper options\n elPopperOptions,\n\n isDatesPicker,\n handleEndChange,\n handleStartChange,\n handleStartInput,\n handleEndInput,\n onUserInput,\n handleChange,\n handleKeydown,\n popperPaneRef,\n onClickOutside,\n pickerSize,\n isRangeInput,\n onMouseLeave,\n onMouseEnter,\n onClearIconClick,\n showClose,\n triggerIcon,\n onPick,\n handleFocus,\n handleBlur,\n pickerVisible,\n pickerActualVisible,\n displayValue,\n parsedValue,\n setSelectionRange,\n refPopper,\n inputRef,\n pickerDisabled,\n onSetPickerOption,\n onCalendarChange,\n onPanelChange,\n focus,\n }\n },\n})\n</script>\n"],"names":["_normalizeStyle"],"mappings":";;;;0BAmGqB;;;;;;;;wBAlGnB;IACE;IACQ;;UACF;IACN;IACA;;IAEA,kBAAA;IACA;IACC;IACA;IACA;IACA;IACA,gCAA8B;IAC9B,cAAY,CAAC;IACd;IACC;;;;QAKU;;;YACN,EAAE;;yBAES;;;yCAGa;;iBAEpB;iBAEC;uBACM;;;uBAGF;YACT,QAAM;;uBAEI;;;YAGA;;;;wBAGF,EAAC;;;;;;;;;;;;;;;2BAUA;;;2EAEU;;;;;;;;;;eAMjBA;iBACE;;;;;;;iBAQC;mBACA;;;8DAGI;;aAGF;;;kBACN,OAAM;;;;;;;;;;;;mBAQC,aAAQ;+CACe;;;cAG7B,WAAW;;cAEX,OAAK;;qBAEA;;;;;;kBAMD,WAAM;;;;;;;mBAON;;;6DAGI;;aAGH;;;;;;;;;;;;;;;;;;QAaP;qBACc;QACd;;QAEA;;;;;;"}
@@ -29,7 +29,7 @@ declare const _default: import("vue").DefineComponent<{
29
29
  type: FunctionConstructor;
30
30
  };
31
31
  }, {
32
- getRefId: (item: any) => string;
32
+ setRef: (scrollbar: any, type: any) => void;
33
33
  spinnerItems: import("vue").ComputedRef<string[]>;
34
34
  currentScrollbar: Ref<null>;
35
35
  hours: import("vue").ComputedRef<number>;
@@ -154,13 +154,13 @@ var script = defineComponent({
154
154
  if (props.arrowControl)
155
155
  return;
156
156
  const el = listRefsMap[type];
157
- if (el.value) {
158
- el.value.$el.querySelector(".el-scrollbar__wrap").scrollTop = Math.max(0, value * typeItemHeight(type));
157
+ if (el && el.$el) {
158
+ el.$el.querySelector(".el-scrollbar__wrap").scrollTop = Math.max(0, value * typeItemHeight(type));
159
159
  }
160
160
  };
161
161
  const typeItemHeight = (type) => {
162
162
  const el = listRefsMap[type];
163
- return el.value.$el.querySelector("li").offsetHeight;
163
+ return el.$el.querySelector("li").offsetHeight;
164
164
  };
165
165
  const onIncreaseClick = () => {
166
166
  scrollDown(1);
@@ -207,16 +207,16 @@ var script = defineComponent({
207
207
  const handleScroll = (type) => {
208
208
  isScrolling = true;
209
209
  debouncedResetScroll(type);
210
- const value = Math.min(Math.round((listRefsMap[type].value.$el.querySelector(".el-scrollbar__wrap").scrollTop - (scrollBarHeight(type) * 0.5 - 10) / typeItemHeight(type) + 3) / typeItemHeight(type)), type === "hours" ? 23 : 59);
210
+ const value = Math.min(Math.round((listRefsMap[type].$el.querySelector(".el-scrollbar__wrap").scrollTop - (scrollBarHeight(type) * 0.5 - 10) / typeItemHeight(type) + 3) / typeItemHeight(type)), type === "hours" ? 23 : 59);
211
211
  modifyDateField(type, value);
212
212
  };
213
213
  const scrollBarHeight = (type) => {
214
- return listRefsMap[type].value.$el.offsetHeight;
214
+ return listRefsMap[type].$el.offsetHeight;
215
215
  };
216
216
  const bindScrollEvent = () => {
217
217
  const bindFuntion = (type) => {
218
- if (listRefsMap[type].value) {
219
- listRefsMap[type].value.$el.querySelector(".el-scrollbar__wrap").onscroll = () => {
218
+ if (listRefsMap[type] && listRefsMap[type].$el) {
219
+ listRefsMap[type].$el.querySelector(".el-scrollbar__wrap").onscroll = () => {
220
220
  handleScroll(type);
221
221
  };
222
222
  }
@@ -233,8 +233,8 @@ var script = defineComponent({
233
233
  emitSelectRange("hours");
234
234
  });
235
235
  });
236
- const getRefId = (item) => {
237
- return `list${item.charAt(0).toUpperCase() + item.slice(1)}Ref`;
236
+ const setRef = (scrollbar, type) => {
237
+ listRefsMap[type] = scrollbar;
238
238
  };
239
239
  ctx.emit("set-option", [`${props.role}_scrollDown`, scrollDown]);
240
240
  ctx.emit("set-option", [`${props.role}_emitSelectRange`, emitSelectRange]);
@@ -245,7 +245,7 @@ var script = defineComponent({
245
245
  adjustSpinners();
246
246
  });
247
247
  return {
248
- getRefId,
248
+ setRef,
249
249
  spinnerItems,
250
250
  currentScrollbar,
251
251
  hours,
@@ -1 +1 @@
1
- {"version":3,"file":"basic-time-spinner.vue_vue_type_script_lang.mjs","sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue"],"sourcesContent":["<template>\n <div class=\"el-time-spinner\" :class=\"{ 'has-seconds': showSeconds }\">\n <template v-if=\"!arrowControl\">\n <el-scrollbar\n v-for=\"item in spinnerItems\"\n :key=\"item\"\n :ref=\"getRefId(item)\"\n class=\"el-time-spinner__wrapper\"\n wrap-style=\"max-height: inherit;\"\n view-class=\"el-time-spinner__list\"\n noresize\n tag=\"ul\"\n @mouseenter=\"emitSelectRange(item)\"\n @mousemove=\"adjustCurrentSpinner(item)\"\n >\n <li\n v-for=\"(disabled, key) in listMap[item].value\"\n :key=\"key\"\n class=\"el-time-spinner__item\"\n :class=\"{ active: key === timePartsMap[item].value, disabled }\"\n @click=\"handleClick(item, { value: key, disabled })\"\n >\n <template v-if=\"item === 'hours'\">\n {{ ('0' + (amPmMode ? key % 12 || 12 : key)).slice(-2)\n }}{{ getAmPmFlag(key) }}\n </template>\n <template v-else>\n {{ ('0' + key).slice(-2) }}\n </template>\n </li>\n </el-scrollbar>\n </template>\n <template v-if=\"arrowControl\">\n <div\n v-for=\"item in spinnerItems\"\n :key=\"item\"\n class=\"el-time-spinner__wrapper is-arrow\"\n @mouseenter=\"emitSelectRange(item)\"\n >\n <el-icon\n v-repeat-click=\"onDecreaseClick\"\n class=\"el-time-spinner__arrow arrow-up\"\n >\n <arrow-up />\n </el-icon>\n <el-icon\n v-repeat-click=\"onIncreaseClick\"\n class=\"el-time-spinner__arrow arrow-down\"\n >\n <arrow-down />\n </el-icon>\n <ul class=\"el-time-spinner__list\">\n <li\n v-for=\"(time, key) in arrowListMap[item].value\"\n :key=\"key\"\n class=\"el-time-spinner__item\"\n :class=\"{\n active: time === timePartsMap[item].value,\n disabled: listMap[item].value[time],\n }\"\n >\n <template v-if=\"typeof time === 'number'\">\n <template v-if=\"item === 'hours'\">\n {{ ('0' + (amPmMode ? time % 12 || 12 : time)).slice(-2)\n }}{{ getAmPmFlag(time) }}\n </template>\n <template v-else>\n {{ ('0' + time).slice(-2) }}\n </template>\n </template>\n </li>\n </ul>\n </div>\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, ref, nextTick, computed, onMounted, watch } from 'vue'\nimport debounce from 'lodash/debounce'\nimport { RepeatClick } from '@element-plus/directives'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElIcon from '@element-plus/components/icon'\nimport { ArrowUp, ArrowDown } from '@element-plus/icons-vue'\nimport { getTimeLists } from './useTimePicker'\n\nimport type { PropType, Ref } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { Nullable } from '@element-plus/utils/types'\n\nexport default defineComponent({\n directives: {\n repeatClick: RepeatClick,\n },\n\n components: {\n ElScrollbar,\n ElIcon,\n ArrowUp,\n ArrowDown,\n },\n\n props: {\n role: {\n type: String,\n required: true,\n },\n spinnerDate: {\n type: Object as PropType<Dayjs>,\n required: true,\n },\n showSeconds: {\n type: Boolean,\n default: true,\n },\n arrowControl: Boolean,\n amPmMode: {\n type: String,\n default: '', // 'a': am/pm; 'A': AM/PM\n },\n disabledHours: {\n type: Function,\n },\n disabledMinutes: {\n type: Function,\n },\n disabledSeconds: {\n type: Function,\n },\n },\n\n emits: ['change', 'select-range', 'set-option'],\n\n setup(props, ctx) {\n // data\n let isScrolling = false\n const debouncedResetScroll = debounce((type) => {\n isScrolling = false\n adjustCurrentSpinner(type)\n }, 200)\n const currentScrollbar = ref(null)\n const listHoursRef: Ref<Nullable<HTMLElement>> = ref(null)\n const listMinutesRef: Ref<Nullable<HTMLElement>> = ref(null)\n const listSecondsRef: Ref<Nullable<HTMLElement>> = ref(null)\n const listRefsMap = {\n hours: listHoursRef,\n minutes: listMinutesRef,\n seconds: listSecondsRef,\n }\n\n // computed\n const spinnerItems = computed(() => {\n const arr = ['hours', 'minutes', 'seconds']\n return props.showSeconds ? arr : arr.slice(0, 2)\n })\n const hours = computed(() => {\n return props.spinnerDate.hour()\n })\n const minutes = computed(() => {\n return props.spinnerDate.minute()\n })\n const seconds = computed(() => {\n return props.spinnerDate.second()\n })\n const timePartsMap = computed(() => ({\n hours,\n minutes,\n seconds,\n }))\n const hoursList = computed(() => {\n return getHoursList(props.role)\n })\n const minutesList = computed(() => {\n return getMinutesList(hours.value, props.role)\n })\n const secondsList = computed(() => {\n return getSecondsList(hours.value, minutes.value, props.role)\n })\n const listMap = computed(() => ({\n hours: hoursList,\n minutes: minutesList,\n seconds: secondsList,\n }))\n const arrowHourList = computed(() => {\n const hour = hours.value\n return [\n hour > 0 ? hour - 1 : undefined,\n hour,\n hour < 23 ? hour + 1 : undefined,\n ]\n })\n const arrowMinuteList = computed(() => {\n const minute = minutes.value\n return [\n minute > 0 ? minute - 1 : undefined,\n minute,\n minute < 59 ? minute + 1 : undefined,\n ]\n })\n const arrowSecondList = computed(() => {\n const second = seconds.value\n return [\n second > 0 ? second - 1 : undefined,\n second,\n second < 59 ? second + 1 : undefined,\n ]\n })\n const arrowListMap = computed(() => ({\n hours: arrowHourList,\n minutes: arrowMinuteList,\n seconds: arrowSecondList,\n }))\n const getAmPmFlag = (hour) => {\n const shouldShowAmPm = !!props.amPmMode\n if (!shouldShowAmPm) return ''\n const isCapital = props.amPmMode === 'A'\n // todo locale\n let content = hour < 12 ? ' am' : ' pm'\n if (isCapital) content = content.toUpperCase()\n return content\n }\n\n const emitSelectRange = (type) => {\n if (type === 'hours') {\n ctx.emit('select-range', 0, 2)\n } else if (type === 'minutes') {\n ctx.emit('select-range', 3, 5)\n } else if (type === 'seconds') {\n ctx.emit('select-range', 6, 8)\n }\n currentScrollbar.value = type\n }\n\n const adjustCurrentSpinner = (type) => {\n adjustSpinner(type, timePartsMap.value[type].value)\n }\n\n // NOTE: used by datetime / date-range panel\n // renamed from adjustScrollTop\n // should try to refactory it\n const adjustSpinners = () => {\n adjustCurrentSpinner('hours')\n adjustCurrentSpinner('minutes')\n adjustCurrentSpinner('seconds')\n }\n\n const adjustSpinner = (type, value) => {\n if (props.arrowControl) return\n const el = listRefsMap[type]\n if (el.value) {\n el.value.$el.querySelector('.el-scrollbar__wrap').scrollTop = Math.max(\n 0,\n value * typeItemHeight(type)\n )\n }\n }\n\n const typeItemHeight = (type) => {\n const el = listRefsMap[type]\n return el.value.$el.querySelector('li').offsetHeight\n }\n\n const onIncreaseClick = () => {\n scrollDown(1)\n }\n\n const onDecreaseClick = () => {\n scrollDown(-1)\n }\n\n const scrollDown = (step) => {\n if (!currentScrollbar.value) {\n emitSelectRange('hours')\n }\n\n const label = currentScrollbar.value\n let now = timePartsMap.value[label].value\n const total = currentScrollbar.value === 'hours' ? 24 : 60\n now = (now + step + total) % total\n\n modifyDateField(label, now)\n adjustSpinner(label, now)\n nextTick(() => emitSelectRange(currentScrollbar.value))\n }\n\n const modifyDateField = (type, value) => {\n const list = listMap.value[type].value\n const isDisabled = list[value]\n if (isDisabled) return\n switch (type) {\n case 'hours':\n ctx.emit(\n 'change',\n props.spinnerDate\n .hour(value)\n .minute(minutes.value)\n .second(seconds.value)\n )\n break\n case 'minutes':\n ctx.emit(\n 'change',\n props.spinnerDate\n .hour(hours.value)\n .minute(value)\n .second(seconds.value)\n )\n break\n case 'seconds':\n ctx.emit(\n 'change',\n props.spinnerDate\n .hour(hours.value)\n .minute(minutes.value)\n .second(value)\n )\n break\n }\n }\n\n const handleClick = (type, { value, disabled }) => {\n if (!disabled) {\n modifyDateField(type, value)\n emitSelectRange(type)\n adjustSpinner(type, value)\n }\n }\n\n const handleScroll = (type) => {\n isScrolling = true\n debouncedResetScroll(type)\n const value = Math.min(\n Math.round(\n (listRefsMap[type].value.$el.querySelector('.el-scrollbar__wrap')\n .scrollTop -\n (scrollBarHeight(type) * 0.5 - 10) / typeItemHeight(type) +\n 3) /\n typeItemHeight(type)\n ),\n type === 'hours' ? 23 : 59\n )\n modifyDateField(type, value)\n }\n\n const scrollBarHeight = (type) => {\n return listRefsMap[type].value.$el.offsetHeight\n }\n\n const bindScrollEvent = () => {\n const bindFuntion = (type) => {\n if (listRefsMap[type].value) {\n listRefsMap[type].value.$el.querySelector(\n '.el-scrollbar__wrap'\n ).onscroll = () => {\n // TODO: scroll is emitted when set scrollTop programatically\n // should find better solutions in the future!\n handleScroll(type)\n }\n }\n }\n bindFuntion('hours')\n bindFuntion('minutes')\n bindFuntion('seconds')\n }\n\n onMounted(() => {\n nextTick(() => {\n !props.arrowControl && bindScrollEvent()\n adjustSpinners()\n // set selection on the first hour part\n if (props.role === 'start') emitSelectRange('hours')\n })\n })\n\n const getRefId = (item) => {\n return `list${item.charAt(0).toUpperCase() + item.slice(1)}Ref`\n }\n\n ctx.emit('set-option', [`${props.role}_scrollDown`, scrollDown])\n ctx.emit('set-option', [`${props.role}_emitSelectRange`, emitSelectRange])\n\n const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(\n props.disabledHours,\n props.disabledMinutes,\n props.disabledSeconds\n )\n\n watch(\n () => props.spinnerDate,\n () => {\n if (isScrolling) return\n adjustSpinners()\n }\n )\n\n return {\n getRefId,\n spinnerItems,\n currentScrollbar,\n hours,\n minutes,\n seconds,\n hoursList,\n minutesList,\n arrowHourList,\n arrowMinuteList,\n arrowSecondList,\n getAmPmFlag,\n emitSelectRange,\n adjustCurrentSpinner,\n typeItemHeight,\n listHoursRef,\n listMinutesRef,\n listSecondsRef,\n onIncreaseClick,\n onDecreaseClick,\n handleClick,\n secondsList,\n timePartsMap,\n arrowListMap,\n listMap,\n }\n },\n})\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basic-time-spinner.vue_vue_type_script_lang.mjs","sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue"],"sourcesContent":["<template>\n <div class=\"el-time-spinner\" :class=\"{ 'has-seconds': showSeconds }\">\n <template v-if=\"!arrowControl\">\n <el-scrollbar\n v-for=\"item in spinnerItems\"\n :key=\"item\"\n :ref=\"(scollbar) => setRef(scollbar, item)\"\n class=\"el-time-spinner__wrapper\"\n wrap-style=\"max-height: inherit;\"\n view-class=\"el-time-spinner__list\"\n noresize\n tag=\"ul\"\n @mouseenter=\"emitSelectRange(item)\"\n @mousemove=\"adjustCurrentSpinner(item)\"\n >\n <li\n v-for=\"(disabled, key) in listMap[item].value\"\n :key=\"key\"\n class=\"el-time-spinner__item\"\n :class=\"{ active: key === timePartsMap[item].value, disabled }\"\n @click=\"handleClick(item, { value: key, disabled })\"\n >\n <template v-if=\"item === 'hours'\">\n {{ ('0' + (amPmMode ? key % 12 || 12 : key)).slice(-2)\n }}{{ getAmPmFlag(key) }}\n </template>\n <template v-else>\n {{ ('0' + key).slice(-2) }}\n </template>\n </li>\n </el-scrollbar>\n </template>\n <template v-if=\"arrowControl\">\n <div\n v-for=\"item in spinnerItems\"\n :key=\"item\"\n class=\"el-time-spinner__wrapper is-arrow\"\n @mouseenter=\"emitSelectRange(item)\"\n >\n <el-icon\n v-repeat-click=\"onDecreaseClick\"\n class=\"el-time-spinner__arrow arrow-up\"\n >\n <arrow-up />\n </el-icon>\n <el-icon\n v-repeat-click=\"onIncreaseClick\"\n class=\"el-time-spinner__arrow arrow-down\"\n >\n <arrow-down />\n </el-icon>\n <ul class=\"el-time-spinner__list\">\n <li\n v-for=\"(time, key) in arrowListMap[item].value\"\n :key=\"key\"\n class=\"el-time-spinner__item\"\n :class=\"{\n active: time === timePartsMap[item].value,\n disabled: listMap[item].value[time],\n }\"\n >\n <template v-if=\"typeof time === 'number'\">\n <template v-if=\"item === 'hours'\">\n {{ ('0' + (amPmMode ? time % 12 || 12 : time)).slice(-2)\n }}{{ getAmPmFlag(time) }}\n </template>\n <template v-else>\n {{ ('0' + time).slice(-2) }}\n </template>\n </template>\n </li>\n </ul>\n </div>\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, ref, nextTick, computed, onMounted, watch } from 'vue'\nimport debounce from 'lodash/debounce'\nimport { RepeatClick } from '@element-plus/directives'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElIcon from '@element-plus/components/icon'\nimport { ArrowUp, ArrowDown } from '@element-plus/icons-vue'\nimport { getTimeLists } from './useTimePicker'\n\nimport type { PropType, Ref } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { Nullable } from '@element-plus/utils/types'\n\nexport default defineComponent({\n directives: {\n repeatClick: RepeatClick,\n },\n\n components: {\n ElScrollbar,\n ElIcon,\n ArrowUp,\n ArrowDown,\n },\n\n props: {\n role: {\n type: String,\n required: true,\n },\n spinnerDate: {\n type: Object as PropType<Dayjs>,\n required: true,\n },\n showSeconds: {\n type: Boolean,\n default: true,\n },\n arrowControl: Boolean,\n amPmMode: {\n type: String,\n default: '', // 'a': am/pm; 'A': AM/PM\n },\n disabledHours: {\n type: Function,\n },\n disabledMinutes: {\n type: Function,\n },\n disabledSeconds: {\n type: Function,\n },\n },\n\n emits: ['change', 'select-range', 'set-option'],\n\n setup(props, ctx) {\n // data\n let isScrolling = false\n const debouncedResetScroll = debounce((type) => {\n isScrolling = false\n adjustCurrentSpinner(type)\n }, 200)\n const currentScrollbar = ref(null)\n const listHoursRef: Ref<Nullable<HTMLElement>> = ref(null)\n const listMinutesRef: Ref<Nullable<HTMLElement>> = ref(null)\n const listSecondsRef: Ref<Nullable<HTMLElement>> = ref(null)\n const listRefsMap = {\n hours: listHoursRef,\n minutes: listMinutesRef,\n seconds: listSecondsRef,\n }\n\n // computed\n const spinnerItems = computed(() => {\n const arr = ['hours', 'minutes', 'seconds']\n return props.showSeconds ? arr : arr.slice(0, 2)\n })\n const hours = computed(() => {\n return props.spinnerDate.hour()\n })\n const minutes = computed(() => {\n return props.spinnerDate.minute()\n })\n const seconds = computed(() => {\n return props.spinnerDate.second()\n })\n const timePartsMap = computed(() => ({\n hours,\n minutes,\n seconds,\n }))\n const hoursList = computed(() => {\n return getHoursList(props.role)\n })\n const minutesList = computed(() => {\n return getMinutesList(hours.value, props.role)\n })\n const secondsList = computed(() => {\n return getSecondsList(hours.value, minutes.value, props.role)\n })\n const listMap = computed(() => ({\n hours: hoursList,\n minutes: minutesList,\n seconds: secondsList,\n }))\n const arrowHourList = computed(() => {\n const hour = hours.value\n return [\n hour > 0 ? hour - 1 : undefined,\n hour,\n hour < 23 ? hour + 1 : undefined,\n ]\n })\n const arrowMinuteList = computed(() => {\n const minute = minutes.value\n return [\n minute > 0 ? minute - 1 : undefined,\n minute,\n minute < 59 ? minute + 1 : undefined,\n ]\n })\n const arrowSecondList = computed(() => {\n const second = seconds.value\n return [\n second > 0 ? second - 1 : undefined,\n second,\n second < 59 ? second + 1 : undefined,\n ]\n })\n const arrowListMap = computed(() => ({\n hours: arrowHourList,\n minutes: arrowMinuteList,\n seconds: arrowSecondList,\n }))\n const getAmPmFlag = (hour) => {\n const shouldShowAmPm = !!props.amPmMode\n if (!shouldShowAmPm) return ''\n const isCapital = props.amPmMode === 'A'\n // todo locale\n let content = hour < 12 ? ' am' : ' pm'\n if (isCapital) content = content.toUpperCase()\n return content\n }\n\n const emitSelectRange = (type) => {\n if (type === 'hours') {\n ctx.emit('select-range', 0, 2)\n } else if (type === 'minutes') {\n ctx.emit('select-range', 3, 5)\n } else if (type === 'seconds') {\n ctx.emit('select-range', 6, 8)\n }\n currentScrollbar.value = type\n }\n\n const adjustCurrentSpinner = (type) => {\n adjustSpinner(type, timePartsMap.value[type].value)\n }\n\n // NOTE: used by datetime / date-range panel\n // renamed from adjustScrollTop\n // should try to refactory it\n const adjustSpinners = () => {\n adjustCurrentSpinner('hours')\n adjustCurrentSpinner('minutes')\n adjustCurrentSpinner('seconds')\n }\n\n const adjustSpinner = (type, value) => {\n if (props.arrowControl) return\n const el = listRefsMap[type]\n if (el && el.$el) {\n el.$el.querySelector('.el-scrollbar__wrap').scrollTop = Math.max(\n 0,\n value * typeItemHeight(type)\n )\n }\n }\n\n const typeItemHeight = (type) => {\n const el = listRefsMap[type]\n return el.$el.querySelector('li').offsetHeight\n }\n\n const onIncreaseClick = () => {\n scrollDown(1)\n }\n\n const onDecreaseClick = () => {\n scrollDown(-1)\n }\n\n const scrollDown = (step) => {\n if (!currentScrollbar.value) {\n emitSelectRange('hours')\n }\n\n const label = currentScrollbar.value\n let now = timePartsMap.value[label].value\n const total = currentScrollbar.value === 'hours' ? 24 : 60\n now = (now + step + total) % total\n\n modifyDateField(label, now)\n adjustSpinner(label, now)\n nextTick(() => emitSelectRange(currentScrollbar.value))\n }\n\n const modifyDateField = (type, value) => {\n const list = listMap.value[type].value\n const isDisabled = list[value]\n if (isDisabled) return\n switch (type) {\n case 'hours':\n ctx.emit(\n 'change',\n props.spinnerDate\n .hour(value)\n .minute(minutes.value)\n .second(seconds.value)\n )\n break\n case 'minutes':\n ctx.emit(\n 'change',\n props.spinnerDate\n .hour(hours.value)\n .minute(value)\n .second(seconds.value)\n )\n break\n case 'seconds':\n ctx.emit(\n 'change',\n props.spinnerDate\n .hour(hours.value)\n .minute(minutes.value)\n .second(value)\n )\n break\n }\n }\n\n const handleClick = (type, { value, disabled }) => {\n if (!disabled) {\n modifyDateField(type, value)\n emitSelectRange(type)\n adjustSpinner(type, value)\n }\n }\n\n const handleScroll = (type) => {\n isScrolling = true\n debouncedResetScroll(type)\n const value = Math.min(\n Math.round(\n (listRefsMap[type].$el.querySelector('.el-scrollbar__wrap')\n .scrollTop -\n (scrollBarHeight(type) * 0.5 - 10) / typeItemHeight(type) +\n 3) /\n typeItemHeight(type)\n ),\n type === 'hours' ? 23 : 59\n )\n modifyDateField(type, value)\n }\n\n const scrollBarHeight = (type) => {\n return listRefsMap[type].$el.offsetHeight\n }\n\n const bindScrollEvent = () => {\n const bindFuntion = (type) => {\n if (listRefsMap[type] && listRefsMap[type].$el) {\n listRefsMap[type].$el.querySelector('.el-scrollbar__wrap').onscroll =\n () => {\n // TODO: scroll is emitted when set scrollTop programatically\n // should find better solutions in the future!\n handleScroll(type)\n }\n }\n }\n bindFuntion('hours')\n bindFuntion('minutes')\n bindFuntion('seconds')\n }\n\n onMounted(() => {\n nextTick(() => {\n !props.arrowControl && bindScrollEvent()\n adjustSpinners()\n // set selection on the first hour part\n if (props.role === 'start') emitSelectRange('hours')\n })\n })\n\n const setRef = (scrollbar, type) => {\n listRefsMap[type] = scrollbar\n }\n\n ctx.emit('set-option', [`${props.role}_scrollDown`, scrollDown])\n ctx.emit('set-option', [`${props.role}_emitSelectRange`, emitSelectRange])\n\n const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(\n props.disabledHours,\n props.disabledMinutes,\n props.disabledSeconds\n )\n\n watch(\n () => props.spinnerDate,\n () => {\n if (isScrolling) return\n adjustSpinners()\n }\n )\n\n return {\n setRef,\n spinnerItems,\n currentScrollbar,\n hours,\n minutes,\n seconds,\n hoursList,\n minutesList,\n arrowHourList,\n arrowMinuteList,\n arrowSecondList,\n getAmPmFlag,\n emitSelectRange,\n adjustCurrentSpinner,\n typeItemHeight,\n listHoursRef,\n listMinutesRef,\n listSecondsRef,\n onIncreaseClick,\n onDecreaseClick,\n handleClick,\n secondsList,\n timePartsMap,\n arrowListMap,\n listMap,\n }\n },\n})\n</script>\n"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
16
16
  return openBlock(), createBlock(_component_el_scrollbar, {
17
17
  key: item,
18
18
  ref_for: true,
19
- ref: _ctx.getRefId(item),
19
+ ref: (scollbar) => _ctx.setRef(scollbar, item),
20
20
  class: "el-time-spinner__wrapper",
21
21
  "wrap-style": "max-height: inherit;",
22
22
  "view-class": "el-time-spinner__list",