@element-plus/nightly 0.0.20220219 → 0.0.20220220

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 (492) hide show
  1. package/dist/index.full.js +2 -2
  2. package/dist/index.full.min.js +1 -1
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +1 -1
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +2 -2
  7. package/dist/locale/af.js +1 -1
  8. package/dist/locale/af.min.js +1 -1
  9. package/dist/locale/af.min.mjs +1 -1
  10. package/dist/locale/af.mjs +1 -1
  11. package/dist/locale/ar.js +1 -1
  12. package/dist/locale/ar.min.js +1 -1
  13. package/dist/locale/ar.min.mjs +1 -1
  14. package/dist/locale/ar.mjs +1 -1
  15. package/dist/locale/bg.js +1 -1
  16. package/dist/locale/bg.min.js +1 -1
  17. package/dist/locale/bg.min.mjs +1 -1
  18. package/dist/locale/bg.mjs +1 -1
  19. package/dist/locale/bn.js +1 -1
  20. package/dist/locale/bn.min.js +1 -1
  21. package/dist/locale/bn.min.mjs +1 -1
  22. package/dist/locale/bn.mjs +1 -1
  23. package/dist/locale/ca.js +1 -1
  24. package/dist/locale/ca.min.js +1 -1
  25. package/dist/locale/ca.min.mjs +1 -1
  26. package/dist/locale/ca.mjs +1 -1
  27. package/dist/locale/cs.js +1 -1
  28. package/dist/locale/cs.min.js +1 -1
  29. package/dist/locale/cs.min.mjs +1 -1
  30. package/dist/locale/cs.mjs +1 -1
  31. package/dist/locale/da.js +1 -1
  32. package/dist/locale/da.min.js +1 -1
  33. package/dist/locale/da.min.mjs +1 -1
  34. package/dist/locale/da.mjs +1 -1
  35. package/dist/locale/de.js +1 -1
  36. package/dist/locale/de.min.js +1 -1
  37. package/dist/locale/de.min.mjs +1 -1
  38. package/dist/locale/de.mjs +1 -1
  39. package/dist/locale/el.js +1 -1
  40. package/dist/locale/el.min.js +1 -1
  41. package/dist/locale/el.min.mjs +1 -1
  42. package/dist/locale/el.mjs +1 -1
  43. package/dist/locale/en.js +1 -1
  44. package/dist/locale/en.min.js +1 -1
  45. package/dist/locale/en.min.mjs +1 -1
  46. package/dist/locale/en.mjs +1 -1
  47. package/dist/locale/eo.js +1 -1
  48. package/dist/locale/eo.min.js +1 -1
  49. package/dist/locale/eo.min.mjs +1 -1
  50. package/dist/locale/eo.mjs +1 -1
  51. package/dist/locale/es.js +1 -1
  52. package/dist/locale/es.min.js +1 -1
  53. package/dist/locale/es.min.mjs +1 -1
  54. package/dist/locale/es.mjs +1 -1
  55. package/dist/locale/et.js +1 -1
  56. package/dist/locale/et.min.js +1 -1
  57. package/dist/locale/et.min.mjs +1 -1
  58. package/dist/locale/et.mjs +1 -1
  59. package/dist/locale/eu.js +1 -1
  60. package/dist/locale/eu.min.js +1 -1
  61. package/dist/locale/eu.min.mjs +1 -1
  62. package/dist/locale/eu.mjs +1 -1
  63. package/dist/locale/fa.js +1 -1
  64. package/dist/locale/fa.min.js +1 -1
  65. package/dist/locale/fa.min.mjs +1 -1
  66. package/dist/locale/fa.mjs +1 -1
  67. package/dist/locale/fi.js +1 -1
  68. package/dist/locale/fi.min.js +1 -1
  69. package/dist/locale/fi.min.mjs +1 -1
  70. package/dist/locale/fi.mjs +1 -1
  71. package/dist/locale/fr.js +1 -1
  72. package/dist/locale/fr.min.js +1 -1
  73. package/dist/locale/fr.min.mjs +1 -1
  74. package/dist/locale/fr.mjs +1 -1
  75. package/dist/locale/he.js +1 -1
  76. package/dist/locale/he.min.js +1 -1
  77. package/dist/locale/he.min.mjs +1 -1
  78. package/dist/locale/he.mjs +1 -1
  79. package/dist/locale/hr.js +1 -1
  80. package/dist/locale/hr.min.js +1 -1
  81. package/dist/locale/hr.min.mjs +1 -1
  82. package/dist/locale/hr.mjs +1 -1
  83. package/dist/locale/hu.js +1 -1
  84. package/dist/locale/hu.min.js +1 -1
  85. package/dist/locale/hu.min.mjs +1 -1
  86. package/dist/locale/hu.mjs +1 -1
  87. package/dist/locale/hy-am.js +1 -1
  88. package/dist/locale/hy-am.min.js +1 -1
  89. package/dist/locale/hy-am.min.mjs +1 -1
  90. package/dist/locale/hy-am.mjs +1 -1
  91. package/dist/locale/id.js +1 -1
  92. package/dist/locale/id.min.js +1 -1
  93. package/dist/locale/id.min.mjs +1 -1
  94. package/dist/locale/id.mjs +1 -1
  95. package/dist/locale/it.js +1 -1
  96. package/dist/locale/it.min.js +1 -1
  97. package/dist/locale/it.min.mjs +1 -1
  98. package/dist/locale/it.mjs +1 -1
  99. package/dist/locale/ja.js +1 -1
  100. package/dist/locale/ja.min.js +1 -1
  101. package/dist/locale/ja.min.mjs +1 -1
  102. package/dist/locale/ja.mjs +1 -1
  103. package/dist/locale/kk.js +1 -1
  104. package/dist/locale/kk.min.js +1 -1
  105. package/dist/locale/kk.min.mjs +1 -1
  106. package/dist/locale/kk.mjs +1 -1
  107. package/dist/locale/km.js +1 -1
  108. package/dist/locale/km.min.js +1 -1
  109. package/dist/locale/km.min.mjs +1 -1
  110. package/dist/locale/km.mjs +1 -1
  111. package/dist/locale/ko.js +1 -1
  112. package/dist/locale/ko.min.js +1 -1
  113. package/dist/locale/ko.min.mjs +1 -1
  114. package/dist/locale/ko.mjs +1 -1
  115. package/dist/locale/ku.js +1 -1
  116. package/dist/locale/ku.min.js +1 -1
  117. package/dist/locale/ku.min.mjs +1 -1
  118. package/dist/locale/ku.mjs +1 -1
  119. package/dist/locale/ky.js +1 -1
  120. package/dist/locale/ky.min.js +1 -1
  121. package/dist/locale/ky.min.mjs +1 -1
  122. package/dist/locale/ky.mjs +1 -1
  123. package/dist/locale/lt.js +1 -1
  124. package/dist/locale/lt.min.js +1 -1
  125. package/dist/locale/lt.min.mjs +1 -1
  126. package/dist/locale/lt.mjs +1 -1
  127. package/dist/locale/lv.js +1 -1
  128. package/dist/locale/lv.min.js +1 -1
  129. package/dist/locale/lv.min.mjs +1 -1
  130. package/dist/locale/lv.mjs +1 -1
  131. package/dist/locale/mg.js +1 -1
  132. package/dist/locale/mg.min.js +1 -1
  133. package/dist/locale/mg.min.mjs +1 -1
  134. package/dist/locale/mg.mjs +1 -1
  135. package/dist/locale/mn.js +1 -1
  136. package/dist/locale/mn.min.js +1 -1
  137. package/dist/locale/mn.min.mjs +1 -1
  138. package/dist/locale/mn.mjs +1 -1
  139. package/dist/locale/nb-no.js +1 -1
  140. package/dist/locale/nb-no.min.js +1 -1
  141. package/dist/locale/nb-no.min.mjs +1 -1
  142. package/dist/locale/nb-no.mjs +1 -1
  143. package/dist/locale/nl.js +1 -1
  144. package/dist/locale/nl.min.js +1 -1
  145. package/dist/locale/nl.min.mjs +1 -1
  146. package/dist/locale/nl.mjs +1 -1
  147. package/dist/locale/pa.js +1 -1
  148. package/dist/locale/pa.min.js +1 -1
  149. package/dist/locale/pa.min.mjs +1 -1
  150. package/dist/locale/pa.mjs +1 -1
  151. package/dist/locale/pl.js +1 -1
  152. package/dist/locale/pl.min.js +1 -1
  153. package/dist/locale/pl.min.mjs +1 -1
  154. package/dist/locale/pl.mjs +1 -1
  155. package/dist/locale/pt-br.js +1 -1
  156. package/dist/locale/pt-br.min.js +1 -1
  157. package/dist/locale/pt-br.min.mjs +1 -1
  158. package/dist/locale/pt-br.mjs +1 -1
  159. package/dist/locale/pt.js +1 -1
  160. package/dist/locale/pt.min.js +1 -1
  161. package/dist/locale/pt.min.mjs +1 -1
  162. package/dist/locale/pt.mjs +1 -1
  163. package/dist/locale/ro.js +1 -1
  164. package/dist/locale/ro.min.js +1 -1
  165. package/dist/locale/ro.min.mjs +1 -1
  166. package/dist/locale/ro.mjs +1 -1
  167. package/dist/locale/ru.js +1 -1
  168. package/dist/locale/ru.min.js +1 -1
  169. package/dist/locale/ru.min.mjs +1 -1
  170. package/dist/locale/ru.mjs +1 -1
  171. package/dist/locale/sk.js +1 -1
  172. package/dist/locale/sk.min.js +1 -1
  173. package/dist/locale/sk.min.mjs +1 -1
  174. package/dist/locale/sk.mjs +1 -1
  175. package/dist/locale/sl.js +1 -1
  176. package/dist/locale/sl.min.js +1 -1
  177. package/dist/locale/sl.min.mjs +1 -1
  178. package/dist/locale/sl.mjs +1 -1
  179. package/dist/locale/sr.js +1 -1
  180. package/dist/locale/sr.min.js +1 -1
  181. package/dist/locale/sr.min.mjs +1 -1
  182. package/dist/locale/sr.mjs +1 -1
  183. package/dist/locale/sv.js +1 -1
  184. package/dist/locale/sv.min.js +1 -1
  185. package/dist/locale/sv.min.mjs +1 -1
  186. package/dist/locale/sv.mjs +1 -1
  187. package/dist/locale/ta.js +1 -1
  188. package/dist/locale/ta.min.js +1 -1
  189. package/dist/locale/ta.min.mjs +1 -1
  190. package/dist/locale/ta.mjs +1 -1
  191. package/dist/locale/th.js +1 -1
  192. package/dist/locale/th.min.js +1 -1
  193. package/dist/locale/th.min.mjs +1 -1
  194. package/dist/locale/th.mjs +1 -1
  195. package/dist/locale/tk.js +1 -1
  196. package/dist/locale/tk.min.js +1 -1
  197. package/dist/locale/tk.min.mjs +1 -1
  198. package/dist/locale/tk.mjs +1 -1
  199. package/dist/locale/tr.js +1 -1
  200. package/dist/locale/tr.min.js +1 -1
  201. package/dist/locale/tr.min.mjs +1 -1
  202. package/dist/locale/tr.mjs +1 -1
  203. package/dist/locale/ug-cn.js +1 -1
  204. package/dist/locale/ug-cn.min.js +1 -1
  205. package/dist/locale/ug-cn.min.mjs +1 -1
  206. package/dist/locale/ug-cn.mjs +1 -1
  207. package/dist/locale/uk.js +1 -1
  208. package/dist/locale/uk.min.js +1 -1
  209. package/dist/locale/uk.min.mjs +1 -1
  210. package/dist/locale/uk.mjs +1 -1
  211. package/dist/locale/uz-uz.js +1 -1
  212. package/dist/locale/uz-uz.min.js +1 -1
  213. package/dist/locale/uz-uz.min.mjs +1 -1
  214. package/dist/locale/uz-uz.mjs +1 -1
  215. package/dist/locale/vi.js +1 -1
  216. package/dist/locale/vi.min.js +1 -1
  217. package/dist/locale/vi.min.mjs +1 -1
  218. package/dist/locale/vi.mjs +1 -1
  219. package/dist/locale/zh-cn.js +1 -1
  220. package/dist/locale/zh-cn.min.js +1 -1
  221. package/dist/locale/zh-cn.min.mjs +1 -1
  222. package/dist/locale/zh-cn.mjs +1 -1
  223. package/dist/locale/zh-tw.js +1 -1
  224. package/dist/locale/zh-tw.min.js +1 -1
  225. package/dist/locale/zh-tw.min.mjs +1 -1
  226. package/dist/locale/zh-tw.mjs +1 -1
  227. package/es/components/autocomplete/src/index.mjs.map +1 -1
  228. package/es/components/avatar/src/avatar2.mjs.map +1 -1
  229. package/es/components/breadcrumb/src/breadcrumb-item2.mjs.map +1 -1
  230. package/es/components/breadcrumb/src/breadcrumb2.mjs.map +1 -1
  231. package/es/components/button/src/button-group2.mjs.map +1 -1
  232. package/es/components/calendar/src/calendar2.mjs.map +1 -1
  233. package/es/components/calendar/src/date-table2.mjs.map +1 -1
  234. package/es/components/card/src/card2.mjs.map +1 -1
  235. package/es/components/carousel/src/item.mjs.map +1 -1
  236. package/es/components/carousel/src/main.mjs.map +1 -1
  237. package/es/components/cascader/src/index.mjs.map +1 -1
  238. package/es/components/cascader-panel/src/index.mjs.map +1 -1
  239. package/es/components/cascader-panel/src/menu.mjs.map +1 -1
  240. package/es/components/cascader-panel/src/node2.mjs.map +1 -1
  241. package/es/components/check-tag/src/check-tag2.mjs.map +1 -1
  242. package/es/components/checkbox/src/checkbox-button.mjs.map +1 -1
  243. package/es/components/checkbox/src/checkbox.mjs.map +1 -1
  244. package/es/components/collapse/src/collapse-item.mjs.map +1 -1
  245. package/es/components/collapse/src/collapse.mjs.map +1 -1
  246. package/es/components/collapse-transition/src/collapse-transition.mjs.map +1 -1
  247. package/es/components/collection/src/collection-item.mjs.map +1 -1
  248. package/es/components/collection/src/collection2.mjs.map +1 -1
  249. package/es/components/color-picker/src/components/alpha-slider.mjs.map +1 -1
  250. package/es/components/color-picker/src/components/hue-slider.mjs.map +1 -1
  251. package/es/components/color-picker/src/components/predefine.mjs.map +1 -1
  252. package/es/components/color-picker/src/components/sv-panel.mjs.map +1 -1
  253. package/es/components/color-picker/src/index.mjs.map +1 -1
  254. package/es/components/container/src/aside.mjs.map +1 -1
  255. package/es/components/container/src/container.mjs.map +1 -1
  256. package/es/components/container/src/footer.mjs.map +1 -1
  257. package/es/components/container/src/header.mjs.map +1 -1
  258. package/es/components/container/src/main.mjs.map +1 -1
  259. package/es/components/date-picker/src/date-picker-com/basic-date-table.mjs.map +1 -1
  260. package/es/components/date-picker/src/date-picker-com/basic-month-table.mjs.map +1 -1
  261. package/es/components/date-picker/src/date-picker-com/basic-year-table.mjs.map +1 -1
  262. package/es/components/date-picker/src/date-picker-com/panel-date-pick.mjs.map +1 -1
  263. package/es/components/date-picker/src/date-picker-com/panel-date-range.mjs.map +1 -1
  264. package/es/components/date-picker/src/date-picker-com/panel-month-range.mjs.map +1 -1
  265. package/es/components/descriptions/src/descriptions-row.mjs.map +1 -1
  266. package/es/components/descriptions/src/index.mjs.map +1 -1
  267. package/es/components/dialog/src/dialog2.mjs.map +1 -1
  268. package/es/components/divider/src/divider2.mjs.map +1 -1
  269. package/es/components/drawer/src/drawer2.mjs.map +1 -1
  270. package/es/components/dropdown/src/dropdown-item-impl.mjs.map +1 -1
  271. package/es/components/dropdown/src/dropdown-item.mjs.map +1 -1
  272. package/es/components/dropdown/src/dropdown-menu.mjs.map +1 -1
  273. package/es/components/dropdown/src/dropdown2.mjs.map +1 -1
  274. package/es/components/empty/src/empty2.mjs.map +1 -1
  275. package/es/components/empty/src/img-empty.mjs.map +1 -1
  276. package/es/components/focus-trap/src/focus-trap.mjs.map +1 -1
  277. package/es/components/form/src/form-item.mjs.map +1 -1
  278. package/es/components/form/src/form.mjs.map +1 -1
  279. package/es/components/image/src/image2.mjs.map +1 -1
  280. package/es/components/image-viewer/src/image-viewer2.mjs.map +1 -1
  281. package/es/components/input/src/input2.mjs.map +1 -1
  282. package/es/components/input-number/src/input-number2.mjs.map +1 -1
  283. package/es/components/link/src/link2.mjs.map +1 -1
  284. package/es/components/menu/src/menu-collapse-transition.mjs.map +1 -1
  285. package/es/components/menu/src/menu-item-group2.mjs.map +1 -1
  286. package/es/components/menu/src/menu-item2.mjs.map +1 -1
  287. package/es/components/message/src/message2.mjs.map +1 -1
  288. package/es/components/message-box/src/index.mjs.map +1 -1
  289. package/es/components/notification/src/notification2.mjs.map +1 -1
  290. package/es/components/page-header/src/page-header2.mjs.map +1 -1
  291. package/es/components/pagination/src/components/jumper.mjs.map +1 -1
  292. package/es/components/pagination/src/components/next.mjs.map +1 -1
  293. package/es/components/pagination/src/components/pager.mjs.map +1 -1
  294. package/es/components/pagination/src/components/prev.mjs.map +1 -1
  295. package/es/components/pagination/src/components/sizes.mjs.map +1 -1
  296. package/es/components/pagination/src/components/total.mjs.map +1 -1
  297. package/es/components/popconfirm/src/popconfirm2.mjs.map +1 -1
  298. package/es/components/popover/src/index.mjs.map +1 -1
  299. package/es/components/popper/src/arrow.mjs.map +1 -1
  300. package/es/components/popper/src/content.mjs.map +1 -1
  301. package/es/components/popper/src/popper2.mjs.map +1 -1
  302. package/es/components/popper/src/trigger.mjs.map +1 -1
  303. package/es/components/progress/src/progress2.mjs.map +1 -1
  304. package/es/components/radio/src/radio-button2.mjs.map +1 -1
  305. package/es/components/radio/src/radio-group2.mjs.map +1 -1
  306. package/es/components/radio/src/radio2.mjs.map +1 -1
  307. package/es/components/rate/src/rate2.mjs.map +1 -1
  308. package/es/components/result/src/result2.mjs.map +1 -1
  309. package/es/components/roving-focus-group/src/roving-focus-group-impl.mjs.map +1 -1
  310. package/es/components/roving-focus-group/src/roving-focus-group2.mjs.map +1 -1
  311. package/es/components/roving-focus-group/src/roving-focus-item.mjs.map +1 -1
  312. package/es/components/scrollbar/src/bar2.mjs.map +1 -1
  313. package/es/components/scrollbar/src/scrollbar2.mjs.map +1 -1
  314. package/es/components/scrollbar/src/thumb2.mjs.map +1 -1
  315. package/es/components/select/src/option-group.mjs.map +1 -1
  316. package/es/components/select/src/option.mjs.map +1 -1
  317. package/es/components/select/src/select-dropdown.mjs.map +1 -1
  318. package/es/components/select/src/select.mjs.map +1 -1
  319. package/es/components/select-v2/src/group-item.mjs.map +1 -1
  320. package/es/components/select-v2/src/option-item.mjs.map +1 -1
  321. package/es/components/select-v2/src/select.mjs.map +1 -1
  322. package/es/components/skeleton/src/image-placeholder.mjs.map +1 -1
  323. package/es/components/skeleton/src/skeleton-item2.mjs.map +1 -1
  324. package/es/components/skeleton/src/skeleton2.mjs.map +1 -1
  325. package/es/components/slider/src/button.mjs.map +1 -1
  326. package/es/components/slider/src/index.mjs.map +1 -1
  327. package/es/components/space/src/item.mjs.map +1 -1
  328. package/es/components/steps/src/index.mjs.map +1 -1
  329. package/es/components/steps/src/item.mjs.map +1 -1
  330. package/es/components/switch/src/switch2.mjs.map +1 -1
  331. package/es/components/table/src/filter-panel.mjs.map +1 -1
  332. package/es/components/table/src/table.mjs.map +1 -1
  333. package/es/components/tabs/src/tab-bar2.mjs.map +1 -1
  334. package/es/components/tabs/src/tab-pane2.mjs.map +1 -1
  335. package/es/components/tag/src/tag2.mjs.map +1 -1
  336. package/es/components/teleport/src/teleport2.mjs.map +1 -1
  337. package/es/components/time-picker/src/common/picker.mjs.map +1 -1
  338. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.mjs.map +1 -1
  339. package/es/components/time-picker/src/time-picker-com/panel-time-pick.mjs.map +1 -1
  340. package/es/components/time-picker/src/time-picker-com/panel-time-range.mjs.map +1 -1
  341. package/es/components/time-select/src/time-select.mjs.map +1 -1
  342. package/es/components/timeline/src/timeline-item2.mjs.map +1 -1
  343. package/es/components/tooltip/src/content.mjs.map +1 -1
  344. package/es/components/tooltip/src/tooltip2.mjs.map +1 -1
  345. package/es/components/tooltip/src/trigger.mjs.map +1 -1
  346. package/es/components/transfer/src/index.mjs.map +1 -1
  347. package/es/components/transfer/src/transfer-panel.mjs.map +1 -1
  348. package/es/components/tree/src/tree-node.mjs.map +1 -1
  349. package/es/components/tree/src/tree.mjs.map +1 -1
  350. package/es/components/tree-v2/src/tree-node.mjs.map +1 -1
  351. package/es/components/tree-v2/src/tree.mjs.map +1 -1
  352. package/es/components/upload/src/upload-dragger.mjs.map +1 -1
  353. package/es/components/upload/src/upload-list.mjs.map +1 -1
  354. package/es/components/upload/src/upload.mjs.map +1 -1
  355. package/es/components/visual-hidden/src/visual-hidden.mjs.map +1 -1
  356. package/es/version.d.ts +1 -1
  357. package/es/version.mjs +1 -1
  358. package/es/version.mjs.map +1 -1
  359. package/lib/components/autocomplete/src/index.js.map +1 -1
  360. package/lib/components/avatar/src/avatar2.js.map +1 -1
  361. package/lib/components/breadcrumb/src/breadcrumb-item2.js.map +1 -1
  362. package/lib/components/breadcrumb/src/breadcrumb2.js.map +1 -1
  363. package/lib/components/button/src/button-group2.js.map +1 -1
  364. package/lib/components/calendar/src/calendar2.js.map +1 -1
  365. package/lib/components/calendar/src/date-table2.js.map +1 -1
  366. package/lib/components/card/src/card2.js.map +1 -1
  367. package/lib/components/carousel/src/item.js.map +1 -1
  368. package/lib/components/carousel/src/main.js.map +1 -1
  369. package/lib/components/cascader/src/index.js.map +1 -1
  370. package/lib/components/cascader-panel/src/index.js.map +1 -1
  371. package/lib/components/cascader-panel/src/menu.js.map +1 -1
  372. package/lib/components/cascader-panel/src/node2.js.map +1 -1
  373. package/lib/components/check-tag/src/check-tag2.js.map +1 -1
  374. package/lib/components/checkbox/src/checkbox-button.js.map +1 -1
  375. package/lib/components/checkbox/src/checkbox.js.map +1 -1
  376. package/lib/components/collapse/src/collapse-item.js.map +1 -1
  377. package/lib/components/collapse/src/collapse.js.map +1 -1
  378. package/lib/components/collapse-transition/src/collapse-transition.js.map +1 -1
  379. package/lib/components/collection/src/collection-item.js.map +1 -1
  380. package/lib/components/collection/src/collection2.js.map +1 -1
  381. package/lib/components/color-picker/src/components/alpha-slider.js.map +1 -1
  382. package/lib/components/color-picker/src/components/hue-slider.js.map +1 -1
  383. package/lib/components/color-picker/src/components/predefine.js.map +1 -1
  384. package/lib/components/color-picker/src/components/sv-panel.js.map +1 -1
  385. package/lib/components/color-picker/src/index.js.map +1 -1
  386. package/lib/components/container/src/aside.js.map +1 -1
  387. package/lib/components/container/src/container.js.map +1 -1
  388. package/lib/components/container/src/footer.js.map +1 -1
  389. package/lib/components/container/src/header.js.map +1 -1
  390. package/lib/components/container/src/main.js.map +1 -1
  391. package/lib/components/date-picker/src/date-picker-com/basic-date-table.js.map +1 -1
  392. package/lib/components/date-picker/src/date-picker-com/basic-month-table.js.map +1 -1
  393. package/lib/components/date-picker/src/date-picker-com/basic-year-table.js.map +1 -1
  394. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.js.map +1 -1
  395. package/lib/components/date-picker/src/date-picker-com/panel-date-range.js.map +1 -1
  396. package/lib/components/date-picker/src/date-picker-com/panel-month-range.js.map +1 -1
  397. package/lib/components/descriptions/src/descriptions-row.js.map +1 -1
  398. package/lib/components/descriptions/src/index.js.map +1 -1
  399. package/lib/components/dialog/src/dialog2.js.map +1 -1
  400. package/lib/components/divider/src/divider2.js.map +1 -1
  401. package/lib/components/drawer/src/drawer2.js.map +1 -1
  402. package/lib/components/dropdown/src/dropdown-item-impl.js.map +1 -1
  403. package/lib/components/dropdown/src/dropdown-item.js.map +1 -1
  404. package/lib/components/dropdown/src/dropdown-menu.js.map +1 -1
  405. package/lib/components/dropdown/src/dropdown2.js.map +1 -1
  406. package/lib/components/empty/src/empty2.js.map +1 -1
  407. package/lib/components/empty/src/img-empty.js.map +1 -1
  408. package/lib/components/focus-trap/src/focus-trap.js.map +1 -1
  409. package/lib/components/form/src/form-item.js.map +1 -1
  410. package/lib/components/form/src/form.js.map +1 -1
  411. package/lib/components/image/src/image2.js.map +1 -1
  412. package/lib/components/image-viewer/src/image-viewer2.js.map +1 -1
  413. package/lib/components/input/src/input2.js.map +1 -1
  414. package/lib/components/input-number/src/input-number2.js.map +1 -1
  415. package/lib/components/link/src/link2.js.map +1 -1
  416. package/lib/components/menu/src/menu-collapse-transition.js.map +1 -1
  417. package/lib/components/menu/src/menu-item-group2.js.map +1 -1
  418. package/lib/components/menu/src/menu-item2.js.map +1 -1
  419. package/lib/components/message/src/message2.js.map +1 -1
  420. package/lib/components/message-box/src/index.js.map +1 -1
  421. package/lib/components/notification/src/notification2.js.map +1 -1
  422. package/lib/components/page-header/src/page-header2.js.map +1 -1
  423. package/lib/components/pagination/src/components/jumper.js.map +1 -1
  424. package/lib/components/pagination/src/components/next.js.map +1 -1
  425. package/lib/components/pagination/src/components/pager.js.map +1 -1
  426. package/lib/components/pagination/src/components/prev.js.map +1 -1
  427. package/lib/components/pagination/src/components/sizes.js.map +1 -1
  428. package/lib/components/pagination/src/components/total.js.map +1 -1
  429. package/lib/components/popconfirm/src/popconfirm2.js.map +1 -1
  430. package/lib/components/popover/src/index.js.map +1 -1
  431. package/lib/components/popper/src/arrow.js.map +1 -1
  432. package/lib/components/popper/src/content.js.map +1 -1
  433. package/lib/components/popper/src/popper2.js.map +1 -1
  434. package/lib/components/popper/src/trigger.js.map +1 -1
  435. package/lib/components/progress/src/progress2.js.map +1 -1
  436. package/lib/components/radio/src/radio-button2.js.map +1 -1
  437. package/lib/components/radio/src/radio-group2.js.map +1 -1
  438. package/lib/components/radio/src/radio2.js.map +1 -1
  439. package/lib/components/rate/src/rate2.js.map +1 -1
  440. package/lib/components/result/src/result2.js.map +1 -1
  441. package/lib/components/roving-focus-group/src/roving-focus-group-impl.js.map +1 -1
  442. package/lib/components/roving-focus-group/src/roving-focus-group2.js.map +1 -1
  443. package/lib/components/roving-focus-group/src/roving-focus-item.js.map +1 -1
  444. package/lib/components/scrollbar/src/bar2.js.map +1 -1
  445. package/lib/components/scrollbar/src/scrollbar2.js.map +1 -1
  446. package/lib/components/scrollbar/src/thumb2.js.map +1 -1
  447. package/lib/components/select/src/option-group.js.map +1 -1
  448. package/lib/components/select/src/option.js.map +1 -1
  449. package/lib/components/select/src/select-dropdown.js.map +1 -1
  450. package/lib/components/select/src/select.js.map +1 -1
  451. package/lib/components/select-v2/src/group-item.js.map +1 -1
  452. package/lib/components/select-v2/src/option-item.js.map +1 -1
  453. package/lib/components/select-v2/src/select.js.map +1 -1
  454. package/lib/components/skeleton/src/image-placeholder.js.map +1 -1
  455. package/lib/components/skeleton/src/skeleton-item2.js.map +1 -1
  456. package/lib/components/skeleton/src/skeleton2.js.map +1 -1
  457. package/lib/components/slider/src/button.js.map +1 -1
  458. package/lib/components/slider/src/index.js.map +1 -1
  459. package/lib/components/space/src/item.js.map +1 -1
  460. package/lib/components/steps/src/index.js.map +1 -1
  461. package/lib/components/steps/src/item.js.map +1 -1
  462. package/lib/components/switch/src/switch2.js.map +1 -1
  463. package/lib/components/table/src/filter-panel.js.map +1 -1
  464. package/lib/components/table/src/table.js.map +1 -1
  465. package/lib/components/tabs/src/tab-bar2.js.map +1 -1
  466. package/lib/components/tabs/src/tab-pane2.js.map +1 -1
  467. package/lib/components/tag/src/tag2.js.map +1 -1
  468. package/lib/components/teleport/src/teleport2.js.map +1 -1
  469. package/lib/components/time-picker/src/common/picker.js.map +1 -1
  470. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.js.map +1 -1
  471. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.js.map +1 -1
  472. package/lib/components/time-picker/src/time-picker-com/panel-time-range.js.map +1 -1
  473. package/lib/components/time-select/src/time-select.js.map +1 -1
  474. package/lib/components/timeline/src/timeline-item2.js.map +1 -1
  475. package/lib/components/tooltip/src/content.js.map +1 -1
  476. package/lib/components/tooltip/src/tooltip2.js.map +1 -1
  477. package/lib/components/tooltip/src/trigger.js.map +1 -1
  478. package/lib/components/transfer/src/index.js.map +1 -1
  479. package/lib/components/transfer/src/transfer-panel.js.map +1 -1
  480. package/lib/components/tree/src/tree-node.js.map +1 -1
  481. package/lib/components/tree/src/tree.js.map +1 -1
  482. package/lib/components/tree-v2/src/tree-node.js.map +1 -1
  483. package/lib/components/tree-v2/src/tree.js.map +1 -1
  484. package/lib/components/upload/src/upload-dragger.js.map +1 -1
  485. package/lib/components/upload/src/upload-list.js.map +1 -1
  486. package/lib/components/upload/src/upload.js.map +1 -1
  487. package/lib/components/visual-hidden/src/visual-hidden.js.map +1 -1
  488. package/lib/version.d.ts +1 -1
  489. package/lib/version.js +1 -1
  490. package/lib/version.js.map +1 -1
  491. package/package.json +2 -2
  492. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"picker.js","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=\"onShow\"\n @hide=\"onHide\"\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-unified'\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 { isEmpty } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\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 'visible-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 onShow = () => {\n pickerActualVisible.value = true\n ctx.emit('visible-change', true)\n }\n\n const onHide = () => {\n pickerActualVisible.value = false\n ctx.emit('visible-change', false)\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 onShow,\n onHide,\n }\n },\n})\n</script>\n"],"names":["isEmpty","dayjs","defineComponent","ElInput","ElTooltip","ElIcon","timePickerDefaultProps","useLocale","inject","elFormKey","elFormItemKey","ref","computed","unref","onClickOutside","_createElementVNode"],"mappings":"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"}
1
+ {"version":3,"file":"picker.js","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=\"onShow\"\n @hide=\"onHide\"\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-unified'\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 { isEmpty } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\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 'visible-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 onShow = () => {\n pickerActualVisible.value = true\n ctx.emit('visible-change', true)\n }\n\n const onHide = () => {\n pickerActualVisible.value = false\n ctx.emit('visible-change', false)\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 onShow,\n onHide,\n }\n },\n})\n</script>\n"],"names":["isEmpty","dayjs","defineComponent","ElInput","ElTooltip","ElIcon","timePickerDefaultProps","useLocale","inject","elFormKey","elFormItemKey","ref","computed","unref","onClickOutside","_createElementVNode","_createBlock"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"basic-time-spinner.js","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-unified'\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'\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":["defineComponent","RepeatClick","ElScrollbar","ElIcon","ArrowUp","ArrowDown","debounce","ref","computed","getTimeLists","_openBlock","_Fragment","_createBlock","_createElementBlock","_normalizeClass","_createCommentVNode","_withCtx"],"mappings":"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"}
1
+ {"version":3,"file":"basic-time-spinner.js","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-unified'\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'\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":["defineComponent","RepeatClick","ElScrollbar","ElIcon","ArrowUp","ArrowDown","debounce","ref","computed","getTimeLists","_createElementBlock","_normalizeClass","_Fragment","_createBlock","_createVNode","_createElementVNode"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"panel-time-pick.js","sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-pick.vue"],"sourcesContent":["<template>\n <transition :name=\"transitionName\">\n <div v-if=\"actualVisible || visible\" class=\"el-time-panel\">\n <div\n class=\"el-time-panel__content\"\n :class=\"{ 'has-seconds': showSeconds }\"\n >\n <time-spinner\n ref=\"spinner\"\n :role=\"datetimeRole || 'start'\"\n :arrow-control=\"arrowControl\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :spinner-date=\"parsedValue\"\n :disabled-hours=\"disabledHours\"\n :disabled-minutes=\"disabledMinutes\"\n :disabled-seconds=\"disabledSeconds\"\n @change=\"handleChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setSelectionRange\"\n />\n </div>\n <div class=\"el-time-panel__footer\">\n <button\n type=\"button\"\n class=\"el-time-panel__btn cancel\"\n @click=\"handleCancel\"\n >\n {{ t('el.datepicker.cancel') }}\n </button>\n <button\n type=\"button\"\n class=\"el-time-panel__btn confirm\"\n @click=\"handleConfirm()\"\n >\n {{ t('el.datepicker.confirm') }}\n </button>\n </div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, inject } from 'vue'\nimport dayjs from 'dayjs'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { useLocale } from '@element-plus/hooks'\nimport TimeSpinner from './basic-time-spinner.vue'\nimport { getAvailableArrs, useOldValue } from './useTimePicker'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport default defineComponent({\n components: {\n TimeSpinner,\n },\n\n props: {\n visible: Boolean,\n actualVisible: {\n type: Boolean,\n default: undefined,\n },\n datetimeRole: {\n type: String,\n },\n parsedValue: {\n type: [Object, String] as PropType<string | Dayjs>,\n },\n format: {\n type: String,\n default: '',\n },\n },\n\n emits: ['pick', 'select-range', 'set-picker-option'],\n\n setup(props, ctx) {\n const { t, lang } = useLocale()\n // data\n const selectionRange = ref([0, 2])\n const oldValue = useOldValue(props)\n // computed\n const transitionName = computed(() => {\n return props.actualVisible === undefined ? 'el-zoom-in-top' : ''\n })\n const showSeconds = computed(() => {\n return props.format.includes('ss')\n })\n const amPmMode = computed(() => {\n if (props.format.includes('A')) return 'A'\n if (props.format.includes('a')) return 'a'\n return ''\n })\n // method\n const isValidValue = (_date: Dayjs) => {\n const parsedDate = dayjs(_date).locale(lang.value)\n const result = getRangeAvailableTime(parsedDate)\n return parsedDate.isSame(result)\n }\n const handleCancel = () => {\n ctx.emit('pick', oldValue.value, false)\n }\n const handleConfirm = (visible = false, first = false) => {\n if (first) return\n ctx.emit('pick', props.parsedValue, visible)\n }\n const handleChange = (_date: Dayjs) => {\n // visible avoids edge cases, when use scrolls during panel closing animation\n if (!props.visible) {\n return\n }\n const result = getRangeAvailableTime(_date).millisecond(0)\n ctx.emit('pick', result, true)\n }\n\n const setSelectionRange = (start, end) => {\n ctx.emit('select-range', start, end)\n selectionRange.value = [start, end]\n }\n\n const changeSelectionRange = (step: number) => {\n const list = [0, 3].concat(showSeconds.value ? [6] : [])\n const mapping = ['hours', 'minutes'].concat(\n showSeconds.value ? ['seconds'] : []\n )\n const index = list.indexOf(selectionRange.value[0])\n const next = (index + step + list.length) % list.length\n timePickerOptions['start_emitSelectRange'](mapping[next])\n }\n\n const handleKeydown = (event: KeyboardEvent) => {\n const code = event.code\n\n if (code === EVENT_CODE.left || code === EVENT_CODE.right) {\n const step = code === EVENT_CODE.left ? -1 : 1\n changeSelectionRange(step)\n event.preventDefault()\n return\n }\n\n if (code === EVENT_CODE.up || code === EVENT_CODE.down) {\n const step = code === EVENT_CODE.up ? -1 : 1\n timePickerOptions['start_scrollDown'](step)\n event.preventDefault()\n return\n }\n }\n\n const getRangeAvailableTime = (date: Dayjs) => {\n const availableMap = {\n hour: getAvailableHours,\n minute: getAvailableMinutes,\n second: getAvailableSeconds,\n }\n let result = date\n ;['hour', 'minute', 'second'].forEach((_) => {\n if (availableMap[_]) {\n let availableArr\n const method = availableMap[_]\n if (_ === 'minute') {\n availableArr = method(result.hour(), props.datetimeRole)\n } else if (_ === 'second') {\n availableArr = method(\n result.hour(),\n result.minute(),\n props.datetimeRole\n )\n } else {\n availableArr = method(props.datetimeRole)\n }\n if (\n availableArr &&\n availableArr.length &&\n !availableArr.includes(result[_]())\n ) {\n result = result[_](availableArr[0])\n }\n }\n })\n return result\n }\n\n const parseUserInput = (value: Dayjs) => {\n if (!value) return null\n return dayjs(value, props.format).locale(lang.value)\n }\n\n const formatToString = (value: Dayjs) => {\n if (!value) return null\n return value.format(props.format)\n }\n\n const getDefaultValue = () => {\n return dayjs(defaultValue).locale(lang.value)\n }\n\n ctx.emit('set-picker-option', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])\n ctx.emit('set-picker-option', ['handleKeydown', handleKeydown])\n ctx.emit('set-picker-option', [\n 'getRangeAvailableTime',\n getRangeAvailableTime,\n ])\n ctx.emit('set-picker-option', ['getDefaultValue', getDefaultValue])\n const timePickerOptions = {} as any\n const onSetOption = (e) => {\n timePickerOptions[e[0]] = e[1]\n }\n const pickerBase = inject('EP_PICKER_BASE') as any\n const {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue,\n } = pickerBase.props\n const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n getAvailableArrs(disabledHours, disabledMinutes, disabledSeconds)\n\n return {\n transitionName,\n arrowControl,\n onSetOption,\n t,\n handleConfirm,\n handleChange,\n setSelectionRange,\n amPmMode,\n showSeconds,\n handleCancel,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n }\n },\n})\n</script>\n"],"names":["defineComponent","TimeSpinner","useLocale","ref","useOldValue","computed","dayjs","EVENT_CODE","inject","getAvailableArrs","_createBlock","_withCtx","_createElementBlock","_toDisplayString"],"mappings":"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"}
1
+ {"version":3,"file":"panel-time-pick.js","sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-pick.vue"],"sourcesContent":["<template>\n <transition :name=\"transitionName\">\n <div v-if=\"actualVisible || visible\" class=\"el-time-panel\">\n <div\n class=\"el-time-panel__content\"\n :class=\"{ 'has-seconds': showSeconds }\"\n >\n <time-spinner\n ref=\"spinner\"\n :role=\"datetimeRole || 'start'\"\n :arrow-control=\"arrowControl\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :spinner-date=\"parsedValue\"\n :disabled-hours=\"disabledHours\"\n :disabled-minutes=\"disabledMinutes\"\n :disabled-seconds=\"disabledSeconds\"\n @change=\"handleChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setSelectionRange\"\n />\n </div>\n <div class=\"el-time-panel__footer\">\n <button\n type=\"button\"\n class=\"el-time-panel__btn cancel\"\n @click=\"handleCancel\"\n >\n {{ t('el.datepicker.cancel') }}\n </button>\n <button\n type=\"button\"\n class=\"el-time-panel__btn confirm\"\n @click=\"handleConfirm()\"\n >\n {{ t('el.datepicker.confirm') }}\n </button>\n </div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, inject } from 'vue'\nimport dayjs from 'dayjs'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { useLocale } from '@element-plus/hooks'\nimport TimeSpinner from './basic-time-spinner.vue'\nimport { getAvailableArrs, useOldValue } from './useTimePicker'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport default defineComponent({\n components: {\n TimeSpinner,\n },\n\n props: {\n visible: Boolean,\n actualVisible: {\n type: Boolean,\n default: undefined,\n },\n datetimeRole: {\n type: String,\n },\n parsedValue: {\n type: [Object, String] as PropType<string | Dayjs>,\n },\n format: {\n type: String,\n default: '',\n },\n },\n\n emits: ['pick', 'select-range', 'set-picker-option'],\n\n setup(props, ctx) {\n const { t, lang } = useLocale()\n // data\n const selectionRange = ref([0, 2])\n const oldValue = useOldValue(props)\n // computed\n const transitionName = computed(() => {\n return props.actualVisible === undefined ? 'el-zoom-in-top' : ''\n })\n const showSeconds = computed(() => {\n return props.format.includes('ss')\n })\n const amPmMode = computed(() => {\n if (props.format.includes('A')) return 'A'\n if (props.format.includes('a')) return 'a'\n return ''\n })\n // method\n const isValidValue = (_date: Dayjs) => {\n const parsedDate = dayjs(_date).locale(lang.value)\n const result = getRangeAvailableTime(parsedDate)\n return parsedDate.isSame(result)\n }\n const handleCancel = () => {\n ctx.emit('pick', oldValue.value, false)\n }\n const handleConfirm = (visible = false, first = false) => {\n if (first) return\n ctx.emit('pick', props.parsedValue, visible)\n }\n const handleChange = (_date: Dayjs) => {\n // visible avoids edge cases, when use scrolls during panel closing animation\n if (!props.visible) {\n return\n }\n const result = getRangeAvailableTime(_date).millisecond(0)\n ctx.emit('pick', result, true)\n }\n\n const setSelectionRange = (start, end) => {\n ctx.emit('select-range', start, end)\n selectionRange.value = [start, end]\n }\n\n const changeSelectionRange = (step: number) => {\n const list = [0, 3].concat(showSeconds.value ? [6] : [])\n const mapping = ['hours', 'minutes'].concat(\n showSeconds.value ? ['seconds'] : []\n )\n const index = list.indexOf(selectionRange.value[0])\n const next = (index + step + list.length) % list.length\n timePickerOptions['start_emitSelectRange'](mapping[next])\n }\n\n const handleKeydown = (event: KeyboardEvent) => {\n const code = event.code\n\n if (code === EVENT_CODE.left || code === EVENT_CODE.right) {\n const step = code === EVENT_CODE.left ? -1 : 1\n changeSelectionRange(step)\n event.preventDefault()\n return\n }\n\n if (code === EVENT_CODE.up || code === EVENT_CODE.down) {\n const step = code === EVENT_CODE.up ? -1 : 1\n timePickerOptions['start_scrollDown'](step)\n event.preventDefault()\n return\n }\n }\n\n const getRangeAvailableTime = (date: Dayjs) => {\n const availableMap = {\n hour: getAvailableHours,\n minute: getAvailableMinutes,\n second: getAvailableSeconds,\n }\n let result = date\n ;['hour', 'minute', 'second'].forEach((_) => {\n if (availableMap[_]) {\n let availableArr\n const method = availableMap[_]\n if (_ === 'minute') {\n availableArr = method(result.hour(), props.datetimeRole)\n } else if (_ === 'second') {\n availableArr = method(\n result.hour(),\n result.minute(),\n props.datetimeRole\n )\n } else {\n availableArr = method(props.datetimeRole)\n }\n if (\n availableArr &&\n availableArr.length &&\n !availableArr.includes(result[_]())\n ) {\n result = result[_](availableArr[0])\n }\n }\n })\n return result\n }\n\n const parseUserInput = (value: Dayjs) => {\n if (!value) return null\n return dayjs(value, props.format).locale(lang.value)\n }\n\n const formatToString = (value: Dayjs) => {\n if (!value) return null\n return value.format(props.format)\n }\n\n const getDefaultValue = () => {\n return dayjs(defaultValue).locale(lang.value)\n }\n\n ctx.emit('set-picker-option', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])\n ctx.emit('set-picker-option', ['handleKeydown', handleKeydown])\n ctx.emit('set-picker-option', [\n 'getRangeAvailableTime',\n getRangeAvailableTime,\n ])\n ctx.emit('set-picker-option', ['getDefaultValue', getDefaultValue])\n const timePickerOptions = {} as any\n const onSetOption = (e) => {\n timePickerOptions[e[0]] = e[1]\n }\n const pickerBase = inject('EP_PICKER_BASE') as any\n const {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue,\n } = pickerBase.props\n const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n getAvailableArrs(disabledHours, disabledMinutes, disabledSeconds)\n\n return {\n transitionName,\n arrowControl,\n onSetOption,\n t,\n handleConfirm,\n handleChange,\n setSelectionRange,\n amPmMode,\n showSeconds,\n handleCancel,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n }\n },\n})\n</script>\n"],"names":["defineComponent","TimeSpinner","useLocale","ref","useOldValue","computed","dayjs","EVENT_CODE","inject","getAvailableArrs","_createBlock","_Transition","_createElementBlock","_createElementVNode","_normalizeClass","_createVNode"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"panel-time-range.js","sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue"],"sourcesContent":["<template>\n <div v-if=\"actualVisible\" class=\"el-time-range-picker el-picker-panel\">\n <div class=\"el-time-range-picker__content\">\n <div class=\"el-time-range-picker__cell\">\n <div class=\"el-time-range-picker__header\">\n {{ t('el.datepicker.startTime') }}\n </div>\n <div\n :class=\"{ 'has-seconds': showSeconds, 'is-arrow': arrowControl }\"\n class=\"el-time-range-picker__body el-time-panel__content\"\n >\n <time-spinner\n ref=\"minSpinner\"\n role=\"start\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"minDate\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMinChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMinSelectionRange\"\n />\n </div>\n </div>\n <div class=\"el-time-range-picker__cell\">\n <div class=\"el-time-range-picker__header\">\n {{ t('el.datepicker.endTime') }}\n </div>\n <div\n :class=\"{ 'has-seconds': showSeconds, 'is-arrow': arrowControl }\"\n class=\"el-time-range-picker__body el-time-panel__content\"\n >\n <time-spinner\n ref=\"maxSpinner\"\n role=\"end\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"maxDate\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMaxChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMaxSelectionRange\"\n />\n </div>\n </div>\n </div>\n <div class=\"el-time-panel__footer\">\n <button\n type=\"button\"\n class=\"el-time-panel__btn cancel\"\n @click=\"handleCancel()\"\n >\n {{ t('el.datepicker.cancel') }}\n </button>\n <button\n type=\"button\"\n class=\"el-time-panel__btn confirm\"\n :disabled=\"btnConfirmDisabled\"\n @click=\"handleConfirm()\"\n >\n {{ t('el.datepicker.confirm') }}\n </button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, inject } from 'vue'\nimport dayjs from 'dayjs'\nimport { union } from 'lodash-unified'\nimport { useLocale } from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport TimeSpinner from './basic-time-spinner.vue'\nimport { getAvailableArrs, useOldValue } from './useTimePicker'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nconst makeSelectRange = (start: number, end: number) => {\n const result = []\n for (let i = start; i <= end; i++) {\n result.push(i)\n }\n return result\n}\nexport default defineComponent({\n components: { TimeSpinner },\n\n props: {\n visible: Boolean,\n actualVisible: Boolean,\n parsedValue: {\n type: [Array] as PropType<Array<Dayjs>>,\n },\n format: {\n type: String,\n default: '',\n },\n },\n\n emits: ['pick', 'select-range', 'set-picker-option'],\n\n setup(props, ctx) {\n const { t, lang } = useLocale()\n const minDate = computed(() => props.parsedValue[0])\n const maxDate = computed(() => props.parsedValue[1])\n const oldValue = useOldValue(props)\n const handleCancel = () => {\n ctx.emit('pick', oldValue.value, null)\n }\n const showSeconds = computed(() => {\n return props.format.includes('ss')\n })\n const amPmMode = computed(() => {\n if (props.format.includes('A')) return 'A'\n if (props.format.includes('a')) return 'a'\n return ''\n })\n\n const minSelectableRange = ref([])\n const maxSelectableRange = ref([])\n\n const handleConfirm = (visible = false) => {\n ctx.emit('pick', [minDate.value, maxDate.value], visible)\n }\n\n const handleMinChange = (date) => {\n handleChange(date.millisecond(0), maxDate.value)\n }\n const handleMaxChange = (date) => {\n handleChange(minDate.value, date.millisecond(0))\n }\n\n const isValidValue = (_date: Dayjs[]) => {\n const parsedDate = _date.map((_) => dayjs(_).locale(lang.value))\n const result = getRangeAvailableTime(parsedDate)\n return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1])\n }\n\n const handleChange = (_minDate, _maxDate) => {\n // todo getRangeAvailableTime(_date).millisecond(0)\n ctx.emit('pick', [_minDate, _maxDate], true)\n }\n const btnConfirmDisabled = computed(() => {\n return minDate.value > maxDate.value\n })\n\n const selectionRange = ref([0, 2])\n const setMinSelectionRange = (start, end) => {\n ctx.emit('select-range', start, end, 'min')\n selectionRange.value = [start, end]\n }\n\n const offset = computed(() => (showSeconds.value ? 11 : 8))\n const setMaxSelectionRange = (start, end) => {\n ctx.emit('select-range', start, end, 'max')\n selectionRange.value = [start + offset.value, end + offset.value]\n }\n\n const changeSelectionRange = (step) => {\n const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11]\n const mapping = ['hours', 'minutes'].concat(\n showSeconds.value ? ['seconds'] : []\n )\n const index = list.indexOf(selectionRange.value[0])\n const next = (index + step + list.length) % list.length\n const half = list.length / 2\n if (next < half) {\n timePickerOptions['start_emitSelectRange'](mapping[next])\n } else {\n timePickerOptions['end_emitSelectRange'](mapping[next - half])\n }\n }\n\n const handleKeydown = (event: KeyboardEvent) => {\n const code = event.code\n\n if (code === EVENT_CODE.left || code === EVENT_CODE.right) {\n const step = code === EVENT_CODE.left ? -1 : 1\n changeSelectionRange(step)\n event.preventDefault()\n return\n }\n\n if (code === EVENT_CODE.up || code === EVENT_CODE.down) {\n const step = code === EVENT_CODE.up ? -1 : 1\n const role = selectionRange.value[0] < offset.value ? 'start' : 'end'\n timePickerOptions[`${role}_scrollDown`](step)\n event.preventDefault()\n return\n }\n }\n\n const disabledHours_ = (role, compare) => {\n const defaultDisable = disabledHours ? disabledHours(role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? maxDate.value : minDate.value)\n const compareHour = compareDate.hour()\n const nextDisable = isStart\n ? makeSelectRange(compareHour + 1, 23)\n : makeSelectRange(0, compareHour - 1)\n return union(defaultDisable, nextDisable)\n }\n const disabledMinutes_ = (hour, role, compare) => {\n const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? maxDate.value : minDate.value)\n const compareHour = compareDate.hour()\n if (hour !== compareHour) {\n return defaultDisable\n }\n const compareMinute = compareDate.minute()\n const nextDisable = isStart\n ? makeSelectRange(compareMinute + 1, 59)\n : makeSelectRange(0, compareMinute - 1)\n return union(defaultDisable, nextDisable)\n }\n const disabledSeconds_ = (hour, minute, role, compare) => {\n const defaultDisable = disabledSeconds\n ? disabledSeconds(hour, minute, role)\n : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? maxDate.value : minDate.value)\n const compareHour = compareDate.hour()\n const compareMinute = compareDate.minute()\n if (hour !== compareHour || minute !== compareMinute) {\n return defaultDisable\n }\n const compareSecond = compareDate.second()\n const nextDisable = isStart\n ? makeSelectRange(compareSecond + 1, 59)\n : makeSelectRange(0, compareSecond - 1)\n return union(defaultDisable, nextDisable)\n }\n\n const getRangeAvailableTime = (dates: Array<Dayjs>) => {\n return dates.map((_, index) =>\n getRangeAvailableTimeEach(\n dates[0],\n dates[1],\n index === 0 ? 'start' : 'end'\n )\n )\n }\n\n const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n getAvailableArrs(disabledHours_, disabledMinutes_, disabledSeconds_)\n\n const getRangeAvailableTimeEach = (\n startDate: Dayjs,\n endDate: Dayjs,\n role\n ) => {\n const availableMap = {\n hour: getAvailableHours,\n minute: getAvailableMinutes,\n second: getAvailableSeconds,\n }\n const isStart = role === 'start'\n let result = isStart ? startDate : endDate\n const compareDate = isStart ? endDate : startDate\n ;['hour', 'minute', 'second'].forEach((_) => {\n if (availableMap[_]) {\n let availableArr\n const method = availableMap[_]\n if (_ === 'minute') {\n availableArr = method(result.hour(), role, compareDate)\n } else if (_ === 'second') {\n availableArr = method(\n result.hour(),\n result.minute(),\n role,\n compareDate\n )\n } else {\n availableArr = method(role, compareDate)\n }\n if (\n availableArr &&\n availableArr.length &&\n !availableArr.includes(result[_]())\n ) {\n const pos = isStart ? 0 : availableArr.length - 1\n result = result[_](availableArr[pos])\n }\n }\n })\n return result\n }\n\n const parseUserInput = (value: Dayjs[] | Dayjs) => {\n if (!value) return null\n if (Array.isArray(value)) {\n return value.map((_) => dayjs(_, props.format).locale(lang.value))\n }\n return dayjs(value, props.format).locale(lang.value)\n }\n\n const formatToString = (value: Dayjs[] | Dayjs) => {\n if (!value) return null\n if (Array.isArray(value)) {\n return value.map((_) => _.format(props.format))\n }\n return value.format(props.format)\n }\n\n const getDefaultValue = () => {\n if (Array.isArray(defaultValue)) {\n return defaultValue.map((_) => dayjs(_).locale(lang.value))\n }\n const defaultDay = dayjs(defaultValue).locale(lang.value)\n return [defaultDay, defaultDay.add(60, 'm')]\n }\n\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])\n ctx.emit('set-picker-option', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['handleKeydown', handleKeydown])\n ctx.emit('set-picker-option', ['getDefaultValue', getDefaultValue])\n ctx.emit('set-picker-option', [\n 'getRangeAvailableTime',\n getRangeAvailableTime,\n ])\n\n const timePickerOptions = {} as any\n const onSetOption = (e) => {\n timePickerOptions[e[0]] = e[1]\n }\n\n const pickerBase = inject('EP_PICKER_BASE') as any\n const {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue,\n } = pickerBase.props\n\n return {\n arrowControl,\n onSetOption,\n setMaxSelectionRange,\n setMinSelectionRange,\n btnConfirmDisabled,\n handleCancel,\n handleConfirm,\n t,\n showSeconds,\n minDate,\n maxDate,\n amPmMode,\n handleMinChange,\n handleMaxChange,\n minSelectableRange,\n maxSelectableRange,\n disabledHours_,\n disabledMinutes_,\n disabledSeconds_,\n }\n },\n})\n</script>\n"],"names":["defineComponent","TimeSpinner","useLocale","computed","useOldValue","ref","dayjs","EVENT_CODE","union","getAvailableArrs","inject","_createElementBlock","_createElementVNode","_toDisplayString"],"mappings":"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"}
1
+ {"version":3,"file":"panel-time-range.js","sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue"],"sourcesContent":["<template>\n <div v-if=\"actualVisible\" class=\"el-time-range-picker el-picker-panel\">\n <div class=\"el-time-range-picker__content\">\n <div class=\"el-time-range-picker__cell\">\n <div class=\"el-time-range-picker__header\">\n {{ t('el.datepicker.startTime') }}\n </div>\n <div\n :class=\"{ 'has-seconds': showSeconds, 'is-arrow': arrowControl }\"\n class=\"el-time-range-picker__body el-time-panel__content\"\n >\n <time-spinner\n ref=\"minSpinner\"\n role=\"start\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"minDate\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMinChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMinSelectionRange\"\n />\n </div>\n </div>\n <div class=\"el-time-range-picker__cell\">\n <div class=\"el-time-range-picker__header\">\n {{ t('el.datepicker.endTime') }}\n </div>\n <div\n :class=\"{ 'has-seconds': showSeconds, 'is-arrow': arrowControl }\"\n class=\"el-time-range-picker__body el-time-panel__content\"\n >\n <time-spinner\n ref=\"maxSpinner\"\n role=\"end\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :arrow-control=\"arrowControl\"\n :spinner-date=\"maxDate\"\n :disabled-hours=\"disabledHours_\"\n :disabled-minutes=\"disabledMinutes_\"\n :disabled-seconds=\"disabledSeconds_\"\n @change=\"handleMaxChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setMaxSelectionRange\"\n />\n </div>\n </div>\n </div>\n <div class=\"el-time-panel__footer\">\n <button\n type=\"button\"\n class=\"el-time-panel__btn cancel\"\n @click=\"handleCancel()\"\n >\n {{ t('el.datepicker.cancel') }}\n </button>\n <button\n type=\"button\"\n class=\"el-time-panel__btn confirm\"\n :disabled=\"btnConfirmDisabled\"\n @click=\"handleConfirm()\"\n >\n {{ t('el.datepicker.confirm') }}\n </button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, inject } from 'vue'\nimport dayjs from 'dayjs'\nimport { union } from 'lodash-unified'\nimport { useLocale } from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport TimeSpinner from './basic-time-spinner.vue'\nimport { getAvailableArrs, useOldValue } from './useTimePicker'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nconst makeSelectRange = (start: number, end: number) => {\n const result = []\n for (let i = start; i <= end; i++) {\n result.push(i)\n }\n return result\n}\nexport default defineComponent({\n components: { TimeSpinner },\n\n props: {\n visible: Boolean,\n actualVisible: Boolean,\n parsedValue: {\n type: [Array] as PropType<Array<Dayjs>>,\n },\n format: {\n type: String,\n default: '',\n },\n },\n\n emits: ['pick', 'select-range', 'set-picker-option'],\n\n setup(props, ctx) {\n const { t, lang } = useLocale()\n const minDate = computed(() => props.parsedValue[0])\n const maxDate = computed(() => props.parsedValue[1])\n const oldValue = useOldValue(props)\n const handleCancel = () => {\n ctx.emit('pick', oldValue.value, null)\n }\n const showSeconds = computed(() => {\n return props.format.includes('ss')\n })\n const amPmMode = computed(() => {\n if (props.format.includes('A')) return 'A'\n if (props.format.includes('a')) return 'a'\n return ''\n })\n\n const minSelectableRange = ref([])\n const maxSelectableRange = ref([])\n\n const handleConfirm = (visible = false) => {\n ctx.emit('pick', [minDate.value, maxDate.value], visible)\n }\n\n const handleMinChange = (date) => {\n handleChange(date.millisecond(0), maxDate.value)\n }\n const handleMaxChange = (date) => {\n handleChange(minDate.value, date.millisecond(0))\n }\n\n const isValidValue = (_date: Dayjs[]) => {\n const parsedDate = _date.map((_) => dayjs(_).locale(lang.value))\n const result = getRangeAvailableTime(parsedDate)\n return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1])\n }\n\n const handleChange = (_minDate, _maxDate) => {\n // todo getRangeAvailableTime(_date).millisecond(0)\n ctx.emit('pick', [_minDate, _maxDate], true)\n }\n const btnConfirmDisabled = computed(() => {\n return minDate.value > maxDate.value\n })\n\n const selectionRange = ref([0, 2])\n const setMinSelectionRange = (start, end) => {\n ctx.emit('select-range', start, end, 'min')\n selectionRange.value = [start, end]\n }\n\n const offset = computed(() => (showSeconds.value ? 11 : 8))\n const setMaxSelectionRange = (start, end) => {\n ctx.emit('select-range', start, end, 'max')\n selectionRange.value = [start + offset.value, end + offset.value]\n }\n\n const changeSelectionRange = (step) => {\n const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11]\n const mapping = ['hours', 'minutes'].concat(\n showSeconds.value ? ['seconds'] : []\n )\n const index = list.indexOf(selectionRange.value[0])\n const next = (index + step + list.length) % list.length\n const half = list.length / 2\n if (next < half) {\n timePickerOptions['start_emitSelectRange'](mapping[next])\n } else {\n timePickerOptions['end_emitSelectRange'](mapping[next - half])\n }\n }\n\n const handleKeydown = (event: KeyboardEvent) => {\n const code = event.code\n\n if (code === EVENT_CODE.left || code === EVENT_CODE.right) {\n const step = code === EVENT_CODE.left ? -1 : 1\n changeSelectionRange(step)\n event.preventDefault()\n return\n }\n\n if (code === EVENT_CODE.up || code === EVENT_CODE.down) {\n const step = code === EVENT_CODE.up ? -1 : 1\n const role = selectionRange.value[0] < offset.value ? 'start' : 'end'\n timePickerOptions[`${role}_scrollDown`](step)\n event.preventDefault()\n return\n }\n }\n\n const disabledHours_ = (role, compare) => {\n const defaultDisable = disabledHours ? disabledHours(role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? maxDate.value : minDate.value)\n const compareHour = compareDate.hour()\n const nextDisable = isStart\n ? makeSelectRange(compareHour + 1, 23)\n : makeSelectRange(0, compareHour - 1)\n return union(defaultDisable, nextDisable)\n }\n const disabledMinutes_ = (hour, role, compare) => {\n const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? maxDate.value : minDate.value)\n const compareHour = compareDate.hour()\n if (hour !== compareHour) {\n return defaultDisable\n }\n const compareMinute = compareDate.minute()\n const nextDisable = isStart\n ? makeSelectRange(compareMinute + 1, 59)\n : makeSelectRange(0, compareMinute - 1)\n return union(defaultDisable, nextDisable)\n }\n const disabledSeconds_ = (hour, minute, role, compare) => {\n const defaultDisable = disabledSeconds\n ? disabledSeconds(hour, minute, role)\n : []\n const isStart = role === 'start'\n const compareDate = compare || (isStart ? maxDate.value : minDate.value)\n const compareHour = compareDate.hour()\n const compareMinute = compareDate.minute()\n if (hour !== compareHour || minute !== compareMinute) {\n return defaultDisable\n }\n const compareSecond = compareDate.second()\n const nextDisable = isStart\n ? makeSelectRange(compareSecond + 1, 59)\n : makeSelectRange(0, compareSecond - 1)\n return union(defaultDisable, nextDisable)\n }\n\n const getRangeAvailableTime = (dates: Array<Dayjs>) => {\n return dates.map((_, index) =>\n getRangeAvailableTimeEach(\n dates[0],\n dates[1],\n index === 0 ? 'start' : 'end'\n )\n )\n }\n\n const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n getAvailableArrs(disabledHours_, disabledMinutes_, disabledSeconds_)\n\n const getRangeAvailableTimeEach = (\n startDate: Dayjs,\n endDate: Dayjs,\n role\n ) => {\n const availableMap = {\n hour: getAvailableHours,\n minute: getAvailableMinutes,\n second: getAvailableSeconds,\n }\n const isStart = role === 'start'\n let result = isStart ? startDate : endDate\n const compareDate = isStart ? endDate : startDate\n ;['hour', 'minute', 'second'].forEach((_) => {\n if (availableMap[_]) {\n let availableArr\n const method = availableMap[_]\n if (_ === 'minute') {\n availableArr = method(result.hour(), role, compareDate)\n } else if (_ === 'second') {\n availableArr = method(\n result.hour(),\n result.minute(),\n role,\n compareDate\n )\n } else {\n availableArr = method(role, compareDate)\n }\n if (\n availableArr &&\n availableArr.length &&\n !availableArr.includes(result[_]())\n ) {\n const pos = isStart ? 0 : availableArr.length - 1\n result = result[_](availableArr[pos])\n }\n }\n })\n return result\n }\n\n const parseUserInput = (value: Dayjs[] | Dayjs) => {\n if (!value) return null\n if (Array.isArray(value)) {\n return value.map((_) => dayjs(_, props.format).locale(lang.value))\n }\n return dayjs(value, props.format).locale(lang.value)\n }\n\n const formatToString = (value: Dayjs[] | Dayjs) => {\n if (!value) return null\n if (Array.isArray(value)) {\n return value.map((_) => _.format(props.format))\n }\n return value.format(props.format)\n }\n\n const getDefaultValue = () => {\n if (Array.isArray(defaultValue)) {\n return defaultValue.map((_) => dayjs(_).locale(lang.value))\n }\n const defaultDay = dayjs(defaultValue).locale(lang.value)\n return [defaultDay, defaultDay.add(60, 'm')]\n }\n\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])\n ctx.emit('set-picker-option', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['handleKeydown', handleKeydown])\n ctx.emit('set-picker-option', ['getDefaultValue', getDefaultValue])\n ctx.emit('set-picker-option', [\n 'getRangeAvailableTime',\n getRangeAvailableTime,\n ])\n\n const timePickerOptions = {} as any\n const onSetOption = (e) => {\n timePickerOptions[e[0]] = e[1]\n }\n\n const pickerBase = inject('EP_PICKER_BASE') as any\n const {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue,\n } = pickerBase.props\n\n return {\n arrowControl,\n onSetOption,\n setMaxSelectionRange,\n setMinSelectionRange,\n btnConfirmDisabled,\n handleCancel,\n handleConfirm,\n t,\n showSeconds,\n minDate,\n maxDate,\n amPmMode,\n handleMinChange,\n handleMaxChange,\n minSelectableRange,\n maxSelectableRange,\n disabledHours_,\n disabledMinutes_,\n disabledSeconds_,\n }\n },\n})\n</script>\n"],"names":["defineComponent","TimeSpinner","useLocale","computed","useOldValue","ref","dayjs","EVENT_CODE","union","getAvailableArrs","inject","_createElementBlock","_createElementVNode","_toDisplayString","_normalizeClass","_createVNode"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"time-select.js","sources":["../../../../../../packages/components/time-select/src/time-select.vue"],"sourcesContent":["<template>\n <el-select\n ref=\"select\"\n :model-value=\"value\"\n :disabled=\"disabled\"\n :clearable=\"clearable\"\n :clear-icon=\"clearIcon\"\n :size=\"size\"\n :effect=\"effect\"\n :placeholder=\"placeholder\"\n default-first-option\n :filterable=\"editable\"\n @update:model-value=\"(event) => $emit('update:modelValue', event)\"\n @change=\"(event) => $emit('change', event)\"\n @blur=\"(event) => $emit('blur', event)\"\n @focus=\"(event) => $emit('focus', event)\"\n >\n <el-option\n v-for=\"item in items\"\n :key=\"item.value\"\n :label=\"item.value\"\n :value=\"item.value\"\n :disabled=\"item.disabled\"\n />\n <template #prefix>\n <el-icon v-if=\"prefixIcon\" class=\"el-input__prefix-icon\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </template>\n </el-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport ElSelect from '@element-plus/components/select'\nimport ElIcon from '@element-plus/components/icon'\nimport { CircleClose, Clock } from '@element-plus/icons-vue'\n\nimport type { PropType, Component } from 'vue'\nimport type { ComponentSize } from '@element-plus/constants'\ndayjs.extend(customParseFormat)\n\nconst { Option: ElOption } = ElSelect\n\ninterface Time {\n hours: number\n minutes: number\n}\n\nconst parseTime = (time: string): null | Time => {\n const values = (time || '').split(':')\n if (values.length >= 2) {\n let hours = parseInt(values[0], 10)\n const minutes = parseInt(values[1], 10)\n const timeUpper = time.toUpperCase()\n if (timeUpper.includes('AM') && hours === 12) {\n hours = 0\n } else if (timeUpper.includes('PM') && hours !== 12) {\n hours += 12\n }\n return {\n hours,\n minutes,\n }\n }\n return null\n}\nconst compareTime = (time1: string, time2: string): number => {\n const value1 = parseTime(time1)\n const value2 = parseTime(time2)\n const minutes1 = value1.minutes + value1.hours * 60\n const minutes2 = value2.minutes + value2.hours * 60\n if (minutes1 === minutes2) {\n return 0\n }\n return minutes1 > minutes2 ? 1 : -1\n}\nconst padTime = (time: number | string) => {\n return `${time}`.padStart(2, '0')\n}\nconst formatTime = (time: Time): string => {\n return `${padTime(time.hours)}:${padTime(time.minutes)}`\n}\nconst nextTime = (time: string, step: string): string => {\n const timeValue = parseTime(time)\n const stepValue = parseTime(step)\n const next = {\n hours: timeValue.hours,\n minutes: timeValue.minutes,\n }\n next.minutes += stepValue.minutes\n next.hours += stepValue.hours\n next.hours += Math.floor(next.minutes / 60)\n next.minutes = next.minutes % 60\n return formatTime(next)\n}\n\nexport default defineComponent({\n name: 'ElTimeSelect',\n components: { ElSelect, ElOption, ElIcon },\n model: {\n prop: 'value',\n event: 'change',\n },\n props: {\n format: {\n type: String,\n default: 'HH:mm',\n },\n modelValue: String,\n disabled: {\n type: Boolean,\n default: false,\n },\n editable: {\n type: Boolean,\n default: true,\n },\n effect: {\n type: String as PropType<'light' | 'dark' | string>,\n default: 'light',\n },\n clearable: {\n type: Boolean,\n default: true,\n },\n size: {\n type: String as PropType<ComponentSize>,\n default: 'default',\n validator: (value: string) =>\n !value || ['large', 'default', 'small'].indexOf(value) !== -1,\n },\n placeholder: {\n type: String,\n default: '',\n },\n start: {\n type: String,\n default: '09:00',\n },\n end: {\n type: String,\n default: '18:00',\n },\n step: {\n type: String,\n default: '00:30',\n },\n minTime: {\n type: String,\n default: '',\n },\n maxTime: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: '',\n },\n prefixIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Clock,\n },\n clearIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: CircleClose,\n },\n },\n emits: ['change', 'blur', 'focus', 'update:modelValue'],\n setup(props) {\n // computed\n const select = ref(null)\n const value = computed(() => props.modelValue)\n const start = computed(() => {\n const time = parseTime(props.start)\n return formatTime(time)\n })\n const end = computed(() => {\n const time = parseTime(props.end)\n return formatTime(time)\n })\n const step = computed(() => {\n const time = parseTime(props.step)\n return formatTime(time)\n })\n const minTime = computed(() => {\n const time = parseTime(props.minTime)\n return time ? formatTime(time) : null\n })\n const maxTime = computed(() => {\n const time = parseTime(props.maxTime)\n return time ? formatTime(time) : null\n })\n const items = computed(() => {\n const result = []\n if (props.start && props.end && props.step) {\n let current = start.value\n let currentTime\n while (compareTime(current, end.value) <= 0) {\n currentTime = dayjs(current, 'HH:mm').format(props.format)\n result.push({\n value: currentTime,\n disabled:\n compareTime(current, minTime.value || '-1:-1') <= 0 ||\n compareTime(current, maxTime.value || '100:100') >= 0,\n })\n current = nextTime(current, step.value)\n }\n }\n return result\n })\n const blur = () => {\n select.value?.blur?.()\n }\n const focus = () => {\n select.value?.focus?.()\n }\n\n return {\n select,\n value,\n items,\n blur,\n focus,\n }\n },\n})\n</script>\n"],"names":["dayjs","customParseFormat","ElSelect","defineComponent","ElIcon","Clock","CircleClose","ref","computed"],"mappings":"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"}
1
+ {"version":3,"file":"time-select.js","sources":["../../../../../../packages/components/time-select/src/time-select.vue"],"sourcesContent":["<template>\n <el-select\n ref=\"select\"\n :model-value=\"value\"\n :disabled=\"disabled\"\n :clearable=\"clearable\"\n :clear-icon=\"clearIcon\"\n :size=\"size\"\n :effect=\"effect\"\n :placeholder=\"placeholder\"\n default-first-option\n :filterable=\"editable\"\n @update:model-value=\"(event) => $emit('update:modelValue', event)\"\n @change=\"(event) => $emit('change', event)\"\n @blur=\"(event) => $emit('blur', event)\"\n @focus=\"(event) => $emit('focus', event)\"\n >\n <el-option\n v-for=\"item in items\"\n :key=\"item.value\"\n :label=\"item.value\"\n :value=\"item.value\"\n :disabled=\"item.disabled\"\n />\n <template #prefix>\n <el-icon v-if=\"prefixIcon\" class=\"el-input__prefix-icon\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </template>\n </el-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport ElSelect from '@element-plus/components/select'\nimport ElIcon from '@element-plus/components/icon'\nimport { CircleClose, Clock } from '@element-plus/icons-vue'\n\nimport type { PropType, Component } from 'vue'\nimport type { ComponentSize } from '@element-plus/constants'\ndayjs.extend(customParseFormat)\n\nconst { Option: ElOption } = ElSelect\n\ninterface Time {\n hours: number\n minutes: number\n}\n\nconst parseTime = (time: string): null | Time => {\n const values = (time || '').split(':')\n if (values.length >= 2) {\n let hours = parseInt(values[0], 10)\n const minutes = parseInt(values[1], 10)\n const timeUpper = time.toUpperCase()\n if (timeUpper.includes('AM') && hours === 12) {\n hours = 0\n } else if (timeUpper.includes('PM') && hours !== 12) {\n hours += 12\n }\n return {\n hours,\n minutes,\n }\n }\n return null\n}\nconst compareTime = (time1: string, time2: string): number => {\n const value1 = parseTime(time1)\n const value2 = parseTime(time2)\n const minutes1 = value1.minutes + value1.hours * 60\n const minutes2 = value2.minutes + value2.hours * 60\n if (minutes1 === minutes2) {\n return 0\n }\n return minutes1 > minutes2 ? 1 : -1\n}\nconst padTime = (time: number | string) => {\n return `${time}`.padStart(2, '0')\n}\nconst formatTime = (time: Time): string => {\n return `${padTime(time.hours)}:${padTime(time.minutes)}`\n}\nconst nextTime = (time: string, step: string): string => {\n const timeValue = parseTime(time)\n const stepValue = parseTime(step)\n const next = {\n hours: timeValue.hours,\n minutes: timeValue.minutes,\n }\n next.minutes += stepValue.minutes\n next.hours += stepValue.hours\n next.hours += Math.floor(next.minutes / 60)\n next.minutes = next.minutes % 60\n return formatTime(next)\n}\n\nexport default defineComponent({\n name: 'ElTimeSelect',\n components: { ElSelect, ElOption, ElIcon },\n model: {\n prop: 'value',\n event: 'change',\n },\n props: {\n format: {\n type: String,\n default: 'HH:mm',\n },\n modelValue: String,\n disabled: {\n type: Boolean,\n default: false,\n },\n editable: {\n type: Boolean,\n default: true,\n },\n effect: {\n type: String as PropType<'light' | 'dark' | string>,\n default: 'light',\n },\n clearable: {\n type: Boolean,\n default: true,\n },\n size: {\n type: String as PropType<ComponentSize>,\n default: 'default',\n validator: (value: string) =>\n !value || ['large', 'default', 'small'].indexOf(value) !== -1,\n },\n placeholder: {\n type: String,\n default: '',\n },\n start: {\n type: String,\n default: '09:00',\n },\n end: {\n type: String,\n default: '18:00',\n },\n step: {\n type: String,\n default: '00:30',\n },\n minTime: {\n type: String,\n default: '',\n },\n maxTime: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: '',\n },\n prefixIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Clock,\n },\n clearIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: CircleClose,\n },\n },\n emits: ['change', 'blur', 'focus', 'update:modelValue'],\n setup(props) {\n // computed\n const select = ref(null)\n const value = computed(() => props.modelValue)\n const start = computed(() => {\n const time = parseTime(props.start)\n return formatTime(time)\n })\n const end = computed(() => {\n const time = parseTime(props.end)\n return formatTime(time)\n })\n const step = computed(() => {\n const time = parseTime(props.step)\n return formatTime(time)\n })\n const minTime = computed(() => {\n const time = parseTime(props.minTime)\n return time ? formatTime(time) : null\n })\n const maxTime = computed(() => {\n const time = parseTime(props.maxTime)\n return time ? formatTime(time) : null\n })\n const items = computed(() => {\n const result = []\n if (props.start && props.end && props.step) {\n let current = start.value\n let currentTime\n while (compareTime(current, end.value) <= 0) {\n currentTime = dayjs(current, 'HH:mm').format(props.format)\n result.push({\n value: currentTime,\n disabled:\n compareTime(current, minTime.value || '-1:-1') <= 0 ||\n compareTime(current, maxTime.value || '100:100') >= 0,\n })\n current = nextTime(current, step.value)\n }\n }\n return result\n })\n const blur = () => {\n select.value?.blur?.()\n }\n const focus = () => {\n select.value?.focus?.()\n }\n\n return {\n select,\n value,\n items,\n blur,\n focus,\n }\n },\n})\n</script>\n"],"names":["dayjs","customParseFormat","ElSelect","defineComponent","ElIcon","Clock","CircleClose","ref","computed"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"timeline-item2.js","sources":["../../../../../../packages/components/timeline/src/timeline-item.vue"],"sourcesContent":["<template>\n <li :class=\"[ns.b(), { [ns.e('center')]: center }]\">\n <div :class=\"ns.e('tail')\"></div>\n <div\n v-if=\"!$slots.dot\"\n :class=\"[\n ns.e('node'),\n ns.em('node', size || ''),\n ns.em('node', type || ''),\n ns.is('hollow', hollow),\n ]\"\n :style=\"{\n backgroundColor: color,\n }\"\n >\n <el-icon v-if=\"icon\" :class=\"ns.e('icon')\">\n <component :is=\"icon\" />\n </el-icon>\n </div>\n <div v-if=\"$slots.dot\" :class=\"ns.e('dot')\">\n <slot name=\"dot\"></slot>\n </div>\n\n <div :class=\"ns.e('wrapper')\">\n <div\n v-if=\"!hideTimestamp && placement === 'top'\"\n :class=\"[ns.e('timestamp'), ns.is('top')]\"\n >\n {{ timestamp }}\n </div>\n\n <div :class=\"ns.e('content')\">\n <slot></slot>\n </div>\n\n <div\n v-if=\"!hideTimestamp && placement === 'bottom'\"\n :class=\"[ns.e('timestamp'), ns.is('bottom')]\"\n >\n {{ timestamp }}\n </div>\n </div>\n </li>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { useNamespace } from '@element-plus/hooks'\nimport { timelineItemProps } from './timeline-item'\n\nexport default defineComponent({\n name: 'ElTimelineItem',\n components: {\n ElIcon,\n },\n props: timelineItemProps,\n setup() {\n const ns = useNamespace('timeline-item')\n return {\n ns,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ElIcon","timelineItemProps","useNamespace","_openBlock","_normalizeClass","_createCommentVNode"],"mappings":";;;;;;;;;;;AAmDA,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,YACVC;AAAA;AAAA,EAEF,OAAOC;AAAA,EACP,QAAQ;AACN,UAAM,KAAKC,qBAAa;AACxB,WAAO;AAAA,MACL;AAAA;AAAA;AAAA;;;SA3DMC,wCAAc;AAAA;KACtB;AAAA,2BAAW,OAAE;AAAA;OAEJ;AAAA;MACN,KAAK;AAAA,MAAY,OAAIC;AAAA,QAAkB,QAAG,EAAE;AAAA,QAA8B,QAAG,GAAE,QAAS,aAAI;AAAA,QAAiB,QAAG,GAAE,aAAW,QAAM;AAAA;;gCAMjG;AAAA;;OAIpB;AAAA;QAAO,KAAK;AAAA;;6BACzB;AAAA;;;;aAGOC,uBAAU;AAAA;MAAG,KAAK;AAAA;OAC3B;AAAA;aAGFA,uBAkBM;AAAA,2BAlBK,OAAE;AAAA;;6BACX,mBAKM;QAHH,KAAK;AAAA,kCAEH,SAAS;AAAA,oDAGdA,uBAEM;AAAA,6BAFK,OAAE;AAAA;SACX;AAAA;SAIO;AAAA,6BADT,mBAKM;QAHH,KAAK;AAAA,kCAEH,SAAS;AAAA;;;;;;;;"}
1
+ {"version":3,"file":"timeline-item2.js","sources":["../../../../../../packages/components/timeline/src/timeline-item.vue"],"sourcesContent":["<template>\n <li :class=\"[ns.b(), { [ns.e('center')]: center }]\">\n <div :class=\"ns.e('tail')\"></div>\n <div\n v-if=\"!$slots.dot\"\n :class=\"[\n ns.e('node'),\n ns.em('node', size || ''),\n ns.em('node', type || ''),\n ns.is('hollow', hollow),\n ]\"\n :style=\"{\n backgroundColor: color,\n }\"\n >\n <el-icon v-if=\"icon\" :class=\"ns.e('icon')\">\n <component :is=\"icon\" />\n </el-icon>\n </div>\n <div v-if=\"$slots.dot\" :class=\"ns.e('dot')\">\n <slot name=\"dot\"></slot>\n </div>\n\n <div :class=\"ns.e('wrapper')\">\n <div\n v-if=\"!hideTimestamp && placement === 'top'\"\n :class=\"[ns.e('timestamp'), ns.is('top')]\"\n >\n {{ timestamp }}\n </div>\n\n <div :class=\"ns.e('content')\">\n <slot></slot>\n </div>\n\n <div\n v-if=\"!hideTimestamp && placement === 'bottom'\"\n :class=\"[ns.e('timestamp'), ns.is('bottom')]\"\n >\n {{ timestamp }}\n </div>\n </div>\n </li>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { useNamespace } from '@element-plus/hooks'\nimport { timelineItemProps } from './timeline-item'\n\nexport default defineComponent({\n name: 'ElTimelineItem',\n components: {\n ElIcon,\n },\n props: timelineItemProps,\n setup() {\n const ns = useNamespace('timeline-item')\n return {\n ns,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ElIcon","timelineItemProps","useNamespace","_createElementBlock","_normalizeClass","_createElementVNode","_normalizeStyle","_createBlock","_resolveDynamicComponent","_renderSlot"],"mappings":";;;;;;;;;;;AAmDA,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,YACVC;AAAA;AAAA,EAEF,OAAOC;AAAA,EACP,QAAQ;AACN,UAAM,KAAKC,qBAAa;AACxB,WAAO;AAAA,MACL;AAAA;AAAA;AAAA;;;0BA3DJC,uBAyCK;AAAA,IAzCA,OAAKC,oBAAG,QAAG,KAAC,GAAO,QAAG,EAAC,YAAa;AAAA;IACvCC,uBAAiC;AAAA,MAA3B,OAAKD,mBAAE,QAAG,EAAC;AAAA;KAER,YAAO,wBADhBD,uBAeM;AAAA;MAbH,OAAKC;AAAA,QAAY,QAAG,EAAC;AAAA,QAAkB,QAAG,GAAE,QAAS,aAAI;AAAA,QAAiB,QAAG,GAAE,QAAS,aAAI;AAAA,QAAiB,QAAG,GAAE,UAAW;AAAA;AAAA,MAM7H,OAAKE;AAAA,yBAA6B;AAAA;AAAA;MAIpB,8BAAfC,gBAEU;AAAA;QAFY,OAAKH,mBAAE,QAAG,EAAC;AAAA;6BAC/B,MAAwB;AAAA,4BAAxBG,gBAAwBC,4BAAR;AAAA;AAAA;;;IAGT,YAAO,wBAAlBL,uBAEM;AAAA;MAFkB,OAAKC,mBAAE,QAAG,EAAC;AAAA;MACjCK,eAAwB;AAAA;IAG1BJ,uBAkBM;AAAA,MAlBA,OAAKD,mBAAE,QAAG,EAAC;AAAA;OAEN,sBAAiB,mBAAS,0BADnCD,uBAKM;AAAA;QAHH,OAAKC,oBAAG,QAAG,EAAC,cAAe,QAAG,GAAE;AAAA,6BAE9B,iBAAS;MAGdC,uBAEM;AAAA,QAFA,OAAKD,mBAAE,QAAG,EAAC;AAAA;QACfK,eAAa;AAAA;OAIN,sBAAiB,mBAAS,6BADnCN,uBAKM;AAAA;QAHH,OAAKC,oBAAG,QAAG,EAAC,cAAe,QAAG,GAAE;AAAA,6BAE9B,iBAAS;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sources":["../../../../../../packages/components/tooltip/src/content.vue"],"sourcesContent":["<template>\n <teleport :disabled=\"!teleported\" :to=\"appendTo\">\n <transition\n :name=\"transition\"\n @after-leave=\"onTransitionLeave\"\n @before-enter=\"onBeforeEnter\"\n @after-enter=\"onAfterShow\"\n >\n <el-popper-content\n v-if=\"shouldRender\"\n v-show=\"shouldShow\"\n ref=\"contentRef\"\n v-bind=\"$attrs\"\n :aria-hidden=\"ariaHidden\"\n :boundaries-padding=\"boundariesPadding\"\n :fallback-placements=\"fallbackPlacements\"\n :gpu-acceleration=\"gpuAcceleration\"\n :offset=\"offset\"\n :placement=\"placement\"\n :popper-options=\"popperOptions\"\n :strategy=\"strategy\"\n :effect=\"effect\"\n :enterable=\"enterable\"\n :pure=\"pure\"\n :popper-class=\"popperClass\"\n :popper-style=\"[popperStyle, contentStyle]\"\n :reference-el=\"referenceEl\"\n :z-index=\"zIndex\"\n @mouseenter=\"onContentEnter\"\n @mouseleave=\"onContentLeave\"\n >\n <slot />\n <el-visually-hidden :id=\"id\" role=\"tooltip\">\n {{ ariaLabel }}\n </el-visually-hidden>\n </el-popper-content>\n </transition>\n </teleport>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, unref, watch } from 'vue'\nimport { onClickOutside } from '@vueuse/core'\nimport { ElPopperContent } from '@element-plus/components/popper'\nimport { ElVisuallyHidden } from '@element-plus/components/visual-hidden'\nimport { composeEventHandlers } from '@element-plus/utils'\nimport { useEscapeKeydown } from '@element-plus/hooks'\n\nimport { useTooltipContentProps } from './tooltip'\nimport { TOOLTIP_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n name: 'ElTooltipContent',\n components: {\n ElPopperContent,\n ElVisuallyHidden,\n },\n inheritAttrs: false,\n props: useTooltipContentProps,\n setup(props) {\n const contentRef = ref<InstanceType<typeof ElPopperContent> | null>(null)\n const intermediateOpen = ref(false)\n const entering = ref(false)\n const leaving = ref(false)\n const { controlled, id, open, trigger, onClose, onOpen, onShow, onHide } =\n inject(TOOLTIP_INJECTION_KEY, undefined)!\n const persistentRef = computed(() => {\n // For testing, we would always want the content to be rendered\n // to the DOM, so we need to return true here.\n if (process.env.NODE_ENV === 'test') {\n return true\n }\n return props.persistent\n })\n\n const shouldRender = computed(() => {\n return unref(persistentRef) ? true : unref(open)\n })\n\n const shouldShow = computed(() => {\n return props.disabled ? false : unref(open)\n })\n\n const contentStyle = computed(() => (props.style ?? {}) as any)\n\n const ariaHidden = computed(() => !unref(open))\n\n useEscapeKeydown(onClose)\n\n const onTransitionLeave = () => {\n onHide()\n }\n\n const stopWhenControlled = () => {\n if (unref(controlled)) return true\n }\n\n const onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n if (props.enterable && unref(trigger) === 'hover') {\n onOpen()\n }\n })\n\n const onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n if (unref(trigger) === 'hover') {\n onClose()\n }\n })\n\n const onBeforeEnter = () => {\n contentRef.value?.updatePopper?.()\n }\n\n const onAfterShow = () => {\n onShow()\n }\n\n let stopHandle: ReturnType<typeof onClickOutside>\n\n watch(\n () => unref(open),\n (val) => {\n if (val) {\n stopHandle = onClickOutside(\n computed(() => {\n return contentRef.value?.popperContentRef\n }),\n () => {\n if (unref(controlled)) return\n const $trigger = unref(trigger)\n if ($trigger !== 'hover') {\n onClose()\n }\n }\n )\n } else {\n stopHandle?.()\n }\n },\n {\n flush: 'post',\n }\n )\n\n return {\n ariaHidden,\n entering,\n leaving,\n id,\n intermediateOpen,\n contentStyle,\n contentRef,\n shouldRender,\n shouldShow,\n open,\n onAfterShow,\n onBeforeEnter,\n onContentEnter,\n onContentLeave,\n onTransitionLeave,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ElPopperContent","ElVisuallyHidden","useTooltipContentProps","ref","inject","TOOLTIP_INJECTION_KEY","computed","unref"],"mappings":";;;;;;;;;;;;;;;;;;AAmDA,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,qBACVC;AAAA,sBACAC;AAAA;AAAA,EAEF,cAAc;AAAA,EACd,OAAOC;AAAA,EACP,MAAM,OAAO;AACX,UAAM,aAAaC,QAAiD;AACpE,UAAM,mBAAmBA,QAAI;AAC7B,UAAM,WAAWA,QAAI;AACrB,UAAM,UAAUA,QAAI;AACpB,UAAM,EAAE,YAAY,IAAI,MAAM,SAAS,SAAS,QAAQ,QAAQ,WAC9DC,WAAOC,8BAAuB;AAChC,UAAM,gBAAgBC,aAAS,MAAM;AAGnC,UAAI,QAAQ,IAAI,aAAa,QAAQ;AACnC,eAAO;AAAA;AAET,aAAO,MAAM;AAAA;AAGf,UAAM,eAAeA,aAAS,MAAM;AAClC,aAAOC,UAAM,iBAAiB,OAAOA,UAAM;AAAA;AAG7C,UAAM,aAAaD,aAAS,MAAM;AAChC,aAAO,MAAM,WAAW,QAAQC,UAAM;AAAA;AAGxC,UAAM,eAAeD,aAAS,MAAO;AAErC,UAAM;AAEN;AAEA;AACE;AAAA;AAGF,UAAM;AACJ;AAAuB;AAAO;AAGhC,UAAMC,qBAAiB;AACrB;AACE;AAAA;AAAA;AAIJ;AACE;AACE;AAAA;AAAA;AAIJ;AACE;AAAkB;AAGpB,UAAM;AACJ;AAAA;AAGF;AAEA,UACE,oBACC;AACC,eAAS;AACP;AAEI;AAAyB;AAGzB;AAAuB;AACvB,gBAAM;AACN;AACE;AAAA;AAAA;AAAA;AAKN;AAAA;AAAA;AAGJ;AACS;AAIX;AAAO;AACL;AACA,MACA;AAAA,MACA;AAAA;AACA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;;AA9JmC;;AACrC;AACmB;AAChB,oBACY;AAAE,MACd,eAAa;AAAA;;;AAGM;;AAEd;AACI;AACI,iCACO;AAAA;AACG,UACrB;AAAkB,UAClB;AAAc;AACH,UACX;AAAc,UACd;AAAkB,UAClB;AAAQ,UACR;AAAW,UACX;AAAU,UACV;AAAA,UACA,gBAAY;AAAG,UACf;AAAyB,UACzB;AAAS,UACT,gBAAY;AAAA,UACZ;AAAY;;;AAEL;AAGa;AAFM;AAAO;;;;;;;;;eAtB1B;AAAU;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"content.js","sources":["../../../../../../packages/components/tooltip/src/content.vue"],"sourcesContent":["<template>\n <teleport :disabled=\"!teleported\" :to=\"appendTo\">\n <transition\n :name=\"transition\"\n @after-leave=\"onTransitionLeave\"\n @before-enter=\"onBeforeEnter\"\n @after-enter=\"onAfterShow\"\n >\n <el-popper-content\n v-if=\"shouldRender\"\n v-show=\"shouldShow\"\n ref=\"contentRef\"\n v-bind=\"$attrs\"\n :aria-hidden=\"ariaHidden\"\n :boundaries-padding=\"boundariesPadding\"\n :fallback-placements=\"fallbackPlacements\"\n :gpu-acceleration=\"gpuAcceleration\"\n :offset=\"offset\"\n :placement=\"placement\"\n :popper-options=\"popperOptions\"\n :strategy=\"strategy\"\n :effect=\"effect\"\n :enterable=\"enterable\"\n :pure=\"pure\"\n :popper-class=\"popperClass\"\n :popper-style=\"[popperStyle, contentStyle]\"\n :reference-el=\"referenceEl\"\n :z-index=\"zIndex\"\n @mouseenter=\"onContentEnter\"\n @mouseleave=\"onContentLeave\"\n >\n <slot />\n <el-visually-hidden :id=\"id\" role=\"tooltip\">\n {{ ariaLabel }}\n </el-visually-hidden>\n </el-popper-content>\n </transition>\n </teleport>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, unref, watch } from 'vue'\nimport { onClickOutside } from '@vueuse/core'\nimport { ElPopperContent } from '@element-plus/components/popper'\nimport { ElVisuallyHidden } from '@element-plus/components/visual-hidden'\nimport { composeEventHandlers } from '@element-plus/utils'\nimport { useEscapeKeydown } from '@element-plus/hooks'\n\nimport { useTooltipContentProps } from './tooltip'\nimport { TOOLTIP_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n name: 'ElTooltipContent',\n components: {\n ElPopperContent,\n ElVisuallyHidden,\n },\n inheritAttrs: false,\n props: useTooltipContentProps,\n setup(props) {\n const contentRef = ref<InstanceType<typeof ElPopperContent> | null>(null)\n const intermediateOpen = ref(false)\n const entering = ref(false)\n const leaving = ref(false)\n const { controlled, id, open, trigger, onClose, onOpen, onShow, onHide } =\n inject(TOOLTIP_INJECTION_KEY, undefined)!\n const persistentRef = computed(() => {\n // For testing, we would always want the content to be rendered\n // to the DOM, so we need to return true here.\n if (process.env.NODE_ENV === 'test') {\n return true\n }\n return props.persistent\n })\n\n const shouldRender = computed(() => {\n return unref(persistentRef) ? true : unref(open)\n })\n\n const shouldShow = computed(() => {\n return props.disabled ? false : unref(open)\n })\n\n const contentStyle = computed(() => (props.style ?? {}) as any)\n\n const ariaHidden = computed(() => !unref(open))\n\n useEscapeKeydown(onClose)\n\n const onTransitionLeave = () => {\n onHide()\n }\n\n const stopWhenControlled = () => {\n if (unref(controlled)) return true\n }\n\n const onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n if (props.enterable && unref(trigger) === 'hover') {\n onOpen()\n }\n })\n\n const onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n if (unref(trigger) === 'hover') {\n onClose()\n }\n })\n\n const onBeforeEnter = () => {\n contentRef.value?.updatePopper?.()\n }\n\n const onAfterShow = () => {\n onShow()\n }\n\n let stopHandle: ReturnType<typeof onClickOutside>\n\n watch(\n () => unref(open),\n (val) => {\n if (val) {\n stopHandle = onClickOutside(\n computed(() => {\n return contentRef.value?.popperContentRef\n }),\n () => {\n if (unref(controlled)) return\n const $trigger = unref(trigger)\n if ($trigger !== 'hover') {\n onClose()\n }\n }\n )\n } else {\n stopHandle?.()\n }\n },\n {\n flush: 'post',\n }\n )\n\n return {\n ariaHidden,\n entering,\n leaving,\n id,\n intermediateOpen,\n contentStyle,\n contentRef,\n shouldRender,\n shouldShow,\n open,\n onAfterShow,\n onBeforeEnter,\n onContentEnter,\n onContentLeave,\n onTransitionLeave,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ElPopperContent","ElVisuallyHidden","useTooltipContentProps","ref","inject","TOOLTIP_INJECTION_KEY","computed","unref"],"mappings":";;;;;;;;;;;;;;;;;;AAmDA,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,qBACVC;AAAA,sBACAC;AAAA;AAAA,EAEF,cAAc;AAAA,EACd,OAAOC;AAAA,EACP,MAAM,OAAO;AACX,UAAM,aAAaC,QAAiD;AACpE,UAAM,mBAAmBA,QAAI;AAC7B,UAAM,WAAWA,QAAI;AACrB,UAAM,UAAUA,QAAI;AACpB,UAAM,EAAE,YAAY,IAAI,MAAM,SAAS,SAAS,QAAQ,QAAQ,WAC9DC,WAAOC,8BAAuB;AAChC,UAAM,gBAAgBC,aAAS,MAAM;AAGnC,UAAI,QAAQ,IAAI,aAAa,QAAQ;AACnC,eAAO;AAAA;AAET,aAAO,MAAM;AAAA;AAGf,UAAM,eAAeA,aAAS,MAAM;AAClC,aAAOC,UAAM,iBAAiB,OAAOA,UAAM;AAAA;AAG7C,UAAM,aAAaD,aAAS,MAAM;AAChC,aAAO,MAAM,WAAW,QAAQC,UAAM;AAAA;AAGxC,UAAM,eAAeD,aAAS,MAAO;AAErC,UAAM;AAEN;AAEA;AACE;AAAA;AAGF,UAAM;AACJ;AAAuB;AAAO;AAGhC,UAAMC,qBAAiB;AACrB;AACE;AAAA;AAAA;AAIJ;AACE;AACE;AAAA;AAAA;AAIJ;AACE;AAAkB;AAGpB,UAAM;AACJ;AAAA;AAGF;AAEA,UACE,oBACC;AACC,eAAS;AACP;AAEI;AAAyB;AAGzB;AAAuB;AACvB,gBAAM;AACN;AACE;AAAA;AAAA;AAAA;AAKN;AAAA;AAAA;AAGJ;AACS;AAIX;AAAO;AACL;AACA,MACA;AAAA,MACA;AAAA;AACA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;;AA9JkB;AAAiB;;AAmCxB;AAjCJ,oBACO;AAAA,MACb,eAAc;AAAA;AACD;;AA6BM;AAAA;;AAxBd;AACU;AACA;AACO,UACpB;AAAqB,UACrB;AAAkB;AACV,UACR;AAAW,UACX;AAAgB,UAChB;AAAU,UACV;AAAQ,UACR;AAAW,UACX;AAAM,UACN,gBAAc;AAAA,UACd;AAA4B,UAC5B;AAAc,UACd,WAAS;AAAA,UACT;AAAY,UACZ,cAAY;AAAA;;AAEL;AAAA;AAGa;AAFI;AAAS;;AACjB;AAAH;AAAA;;;;;;AAvBN;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip2.js","sources":["../../../../../../packages/components/tooltip/src/tooltip.vue"],"sourcesContent":["<template>\n <el-popper ref=\"popperRef\">\n <el-tooltip-trigger\n :disabled=\"disabled\"\n :trigger=\"trigger\"\n :virtual-ref=\"virtualRef\"\n :virtual-triggering=\"virtualTriggering\"\n >\n <slot v-if=\"$slots.default\" />\n </el-tooltip-trigger>\n <el-tooltip-content\n :aria-label=\"ariaLabel\"\n :boundaries-padding=\"boundariesPadding\"\n :content=\"content\"\n :disabled=\"disabled\"\n :effect=\"effect\"\n :enterable=\"enterable\"\n :fallback-placements=\"fallbackPlacements\"\n :hide-after=\"hideAfter\"\n :gpu-acceleration=\"gpuAcceleration\"\n :offset=\"offset\"\n :persistent=\"persistent\"\n :popper-class=\"popperClass\"\n :popper-style=\"popperStyle\"\n :placement=\"placement\"\n :popper-options=\"popperOptions\"\n :pure=\"pure\"\n :raw-content=\"rawContent\"\n :reference-el=\"referenceEl\"\n :show-after=\"compatShowAfter\"\n :strategy=\"strategy\"\n :teleported=\"teleported\"\n :transition=\"transition\"\n :z-index=\"zIndex\"\n :append-to=\"appendTo\"\n >\n <slot name=\"content\">\n <span v-if=\"rawContent\" v-html=\"content\"></span>\n <span v-else>{{ content }}</span>\n </slot>\n <el-popper-arrow v-if=\"compatShowArrow\" :arrow-offset=\"arrowOffset\" />\n </el-tooltip-content>\n </el-popper>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n provide,\n toRef,\n readonly,\n unref,\n} from 'vue'\nimport {\n ElPopper,\n ElPopperArrow,\n usePopperArrowProps,\n} from '@element-plus/components/popper'\n\nimport { debugWarn, isBoolean, isUndefined } from '@element-plus/utils'\nimport {\n usePopperContainer,\n useId,\n createModelToggleComposable,\n useDelayedToggle,\n} from '@element-plus/hooks'\nimport ElTooltipContent from './content.vue'\nimport ElTooltipTrigger from './trigger.vue'\nimport {\n useTooltipContentProps,\n useTooltipTriggerProps,\n useTooltipProps,\n} from './tooltip'\nimport { TOOLTIP_INJECTION_KEY } from './tokens'\n\nconst { useModelToggleProps, useModelToggle, useModelToggleEmits } =\n createModelToggleComposable('visible' as const)\n\nexport default defineComponent({\n name: 'ElTooltip',\n components: {\n ElPopper,\n ElPopperArrow,\n ElTooltipContent,\n ElTooltipTrigger,\n },\n props: {\n ...useModelToggleProps,\n ...useTooltipContentProps,\n ...useTooltipTriggerProps,\n ...usePopperArrowProps,\n ...useTooltipProps,\n },\n emits: [...useModelToggleEmits, 'show', 'hide'],\n setup(props, { emit }) {\n usePopperContainer()\n const compatShowAfter = computed(() => {\n if (!isUndefined(props.openDelay)) {\n debugWarn(\n 'ElTooltip',\n 'open-delay is about to be deprecated in the next major version, please use `show-after` instead'\n )\n }\n return props.openDelay || (props.showAfter as number)\n })\n const compatShowArrow = computed(() => {\n if (!isUndefined(props.visibleArrow)) {\n debugWarn(\n 'ElTooltip',\n '`visible-arrow` is about to be deprecated in the next major version, please use `show-arrow` instead'\n )\n }\n return isBoolean(props.visibleArrow)\n ? props.visibleArrow\n : props.showArrow\n })\n\n const id = useId()\n const popperRef = ref<InstanceType<typeof ElPopper> | null>(null)\n\n const updatePopper = () => {\n const popperComponent = unref(popperRef)\n if (popperComponent) {\n popperComponent.popperInstanceRef?.update()\n }\n }\n const open = ref(false)\n\n const { show, hide } = useModelToggle({\n indicator: open,\n })\n\n const { onOpen, onClose } = useDelayedToggle({\n showAfter: compatShowAfter,\n hideAfter: toRef(props, 'hideAfter'),\n open: show,\n close: hide,\n })\n\n const controlled = computed(() => isBoolean(props.visible))\n\n provide(TOOLTIP_INJECTION_KEY, {\n controlled,\n id,\n open: readonly(open),\n trigger: toRef(props, 'trigger'),\n onOpen,\n onClose,\n onToggle: () => {\n if (unref(open)) {\n onClose()\n } else {\n onOpen()\n }\n },\n onShow: () => {\n emit('show')\n },\n onHide: () => {\n emit('hide')\n },\n updatePopper,\n })\n\n return {\n compatShowAfter,\n compatShowArrow,\n popperRef,\n open,\n hide,\n updatePopper,\n onOpen,\n onClose,\n }\n },\n})\n</script>\n"],"names":["createModelToggleComposable","defineComponent","ElPopper","ElPopperArrow","ElTooltipContent","ElTooltipTrigger","useTooltipContentProps","useTooltipTriggerProps","usePopperArrowProps","useTooltipProps","computed","isUndefined","isBoolean","useId","ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA6EA,MAAM,EAAE,qBAAqB,gBAAgB,wBAC3CA,kCAA4B;AAE9B,MAAK,YAAaC,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,cACVC;AAAA,mBACAC;AAAA,sBACAC;AAAA,sBACAC;AAAA;AAAA,EAEF,OAAO;AAAA,OACF;AAAA,OACAC;AAAA,OACAC;AAAA,OACAC;AAAA,OACAC;AAAA;AAAA,EAEL,OAAO,CAAC,GAAG,qBAAqB,QAAQ;AAAA,EACxC,MAAM,OAAO,EAAE,QAAQ;AACrB;AACA,UAAM,kBAAkBC,aAAS,MAAM;AACrC,UAAI,CAACC,kBAAY,MAAM,YAAY;AACjC,wBACE,aACA;AAAA;AAGJ,aAAO,MAAM,aAAc,MAAM;AAAA;AAEnC,UAAM,kBAAkBD,aAAS,MAAM;AACrC,UAAI,CAACC,kBAAY,MAAM,eAAe;AACpC,wBACE,aACA;AAAA;AAGJ,aAAOC,eAAU,MAAM,gBACnB,MAAM,eACN,MAAM;AAAA;AAGZ,UAAM,KAAKC;AACX,UAAM,YAAYC,QAA0C;AAE5D,UAAM,eAAe,MAAM;AACzB,YAAM;AACN,2BAAqB;AACnB;AAAmC;AAAA;AAGvC;AAEA,UAAM,qBAAiB;AAAe;AACzB;AAGb;AAA6C;AAChC,MACX,WAAW;AAAa,MACxB;AAAM,MACN;AAAO;AAGT;AAEA;AAA+B;AAC7B,MACA;AAAA,MACA;AAAe,MACf,mBAAe;AAAO,MACtB;AAAA,MACA;AAAA,MACA;AACE;AACE;AAAA;AAEA;AAAA;AAAA;AAAA;AAIF;AAAK;AAAA;AAGL;AAAK;AAAA;AAEP;AAGF;AAAO;AACL,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;;;;;AArKmB;AAAA;AANA,qBACT;AAAA,QACT,cAAW;AAAA,QACX;AAAkB;;;AAEO,eAA1B;;;SAEF,GA+BqB;AAAA;AA9BG;AACrB,QACA;AAAgB,QAChB;AAAU,QACV;AAAQ,QACR;AAAW,QACX;AAAA,QACA;AAAqB,QACrB;AAAgB,QAChB;AAAc,QACd;AAAY,QACZ;AAAc,QACd,gBAAc;AAAA,QACd,gBAAW;AAAA,QACX,gBAAc;AAAA,QACd;AAAU,QACV;AAAA,QACA,eAAY;AAAE,QACd;AAAY,QACZ,cAAU;AAAA,QACV;AAAY,QACZ;AAAY,QACZ,YAAS;AAAA,QACT,gBAAW;AAAA;;;AAKL;AAFiB;;AAAE;;;;;AAGe;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"tooltip2.js","sources":["../../../../../../packages/components/tooltip/src/tooltip.vue"],"sourcesContent":["<template>\n <el-popper ref=\"popperRef\">\n <el-tooltip-trigger\n :disabled=\"disabled\"\n :trigger=\"trigger\"\n :virtual-ref=\"virtualRef\"\n :virtual-triggering=\"virtualTriggering\"\n >\n <slot v-if=\"$slots.default\" />\n </el-tooltip-trigger>\n <el-tooltip-content\n :aria-label=\"ariaLabel\"\n :boundaries-padding=\"boundariesPadding\"\n :content=\"content\"\n :disabled=\"disabled\"\n :effect=\"effect\"\n :enterable=\"enterable\"\n :fallback-placements=\"fallbackPlacements\"\n :hide-after=\"hideAfter\"\n :gpu-acceleration=\"gpuAcceleration\"\n :offset=\"offset\"\n :persistent=\"persistent\"\n :popper-class=\"popperClass\"\n :popper-style=\"popperStyle\"\n :placement=\"placement\"\n :popper-options=\"popperOptions\"\n :pure=\"pure\"\n :raw-content=\"rawContent\"\n :reference-el=\"referenceEl\"\n :show-after=\"compatShowAfter\"\n :strategy=\"strategy\"\n :teleported=\"teleported\"\n :transition=\"transition\"\n :z-index=\"zIndex\"\n :append-to=\"appendTo\"\n >\n <slot name=\"content\">\n <span v-if=\"rawContent\" v-html=\"content\"></span>\n <span v-else>{{ content }}</span>\n </slot>\n <el-popper-arrow v-if=\"compatShowArrow\" :arrow-offset=\"arrowOffset\" />\n </el-tooltip-content>\n </el-popper>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n provide,\n toRef,\n readonly,\n unref,\n} from 'vue'\nimport {\n ElPopper,\n ElPopperArrow,\n usePopperArrowProps,\n} from '@element-plus/components/popper'\n\nimport { debugWarn, isBoolean, isUndefined } from '@element-plus/utils'\nimport {\n usePopperContainer,\n useId,\n createModelToggleComposable,\n useDelayedToggle,\n} from '@element-plus/hooks'\nimport ElTooltipContent from './content.vue'\nimport ElTooltipTrigger from './trigger.vue'\nimport {\n useTooltipContentProps,\n useTooltipTriggerProps,\n useTooltipProps,\n} from './tooltip'\nimport { TOOLTIP_INJECTION_KEY } from './tokens'\n\nconst { useModelToggleProps, useModelToggle, useModelToggleEmits } =\n createModelToggleComposable('visible' as const)\n\nexport default defineComponent({\n name: 'ElTooltip',\n components: {\n ElPopper,\n ElPopperArrow,\n ElTooltipContent,\n ElTooltipTrigger,\n },\n props: {\n ...useModelToggleProps,\n ...useTooltipContentProps,\n ...useTooltipTriggerProps,\n ...usePopperArrowProps,\n ...useTooltipProps,\n },\n emits: [...useModelToggleEmits, 'show', 'hide'],\n setup(props, { emit }) {\n usePopperContainer()\n const compatShowAfter = computed(() => {\n if (!isUndefined(props.openDelay)) {\n debugWarn(\n 'ElTooltip',\n 'open-delay is about to be deprecated in the next major version, please use `show-after` instead'\n )\n }\n return props.openDelay || (props.showAfter as number)\n })\n const compatShowArrow = computed(() => {\n if (!isUndefined(props.visibleArrow)) {\n debugWarn(\n 'ElTooltip',\n '`visible-arrow` is about to be deprecated in the next major version, please use `show-arrow` instead'\n )\n }\n return isBoolean(props.visibleArrow)\n ? props.visibleArrow\n : props.showArrow\n })\n\n const id = useId()\n const popperRef = ref<InstanceType<typeof ElPopper> | null>(null)\n\n const updatePopper = () => {\n const popperComponent = unref(popperRef)\n if (popperComponent) {\n popperComponent.popperInstanceRef?.update()\n }\n }\n const open = ref(false)\n\n const { show, hide } = useModelToggle({\n indicator: open,\n })\n\n const { onOpen, onClose } = useDelayedToggle({\n showAfter: compatShowAfter,\n hideAfter: toRef(props, 'hideAfter'),\n open: show,\n close: hide,\n })\n\n const controlled = computed(() => isBoolean(props.visible))\n\n provide(TOOLTIP_INJECTION_KEY, {\n controlled,\n id,\n open: readonly(open),\n trigger: toRef(props, 'trigger'),\n onOpen,\n onClose,\n onToggle: () => {\n if (unref(open)) {\n onClose()\n } else {\n onOpen()\n }\n },\n onShow: () => {\n emit('show')\n },\n onHide: () => {\n emit('hide')\n },\n updatePopper,\n })\n\n return {\n compatShowAfter,\n compatShowArrow,\n popperRef,\n open,\n hide,\n updatePopper,\n onOpen,\n onClose,\n }\n },\n})\n</script>\n"],"names":["createModelToggleComposable","defineComponent","ElPopper","ElPopperArrow","ElTooltipContent","ElTooltipTrigger","useTooltipContentProps","useTooltipTriggerProps","usePopperArrowProps","useTooltipProps","computed","isUndefined","isBoolean","useId","ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA6EA,MAAM,EAAE,qBAAqB,gBAAgB,wBAC3CA,kCAA4B;AAE9B,MAAK,YAAaC,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,cACVC;AAAA,mBACAC;AAAA,sBACAC;AAAA,sBACAC;AAAA;AAAA,EAEF,OAAO;AAAA,OACF;AAAA,OACAC;AAAA,OACAC;AAAA,OACAC;AAAA,OACAC;AAAA;AAAA,EAEL,OAAO,CAAC,GAAG,qBAAqB,QAAQ;AAAA,EACxC,MAAM,OAAO,EAAE,QAAQ;AACrB;AACA,UAAM,kBAAkBC,aAAS,MAAM;AACrC,UAAI,CAACC,kBAAY,MAAM,YAAY;AACjC,wBACE,aACA;AAAA;AAGJ,aAAO,MAAM,aAAc,MAAM;AAAA;AAEnC,UAAM,kBAAkBD,aAAS,MAAM;AACrC,UAAI,CAACC,kBAAY,MAAM,eAAe;AACpC,wBACE,aACA;AAAA;AAGJ,aAAOC,eAAU,MAAM,gBACnB,MAAM,eACN,MAAM;AAAA;AAGZ,UAAM,KAAKC;AACX,UAAM,YAAYC,QAA0C;AAE5D,UAAM,eAAe,MAAM;AACzB,YAAM;AACN,2BAAqB;AACnB;AAAmC;AAAA;AAGvC;AAEA,UAAM,qBAAiB;AAAe;AACzB;AAGb;AAA6C;AAChC,MACX,WAAW;AAAa,MACxB;AAAM,MACN;AAAO;AAGT;AAEA;AAA+B;AAC7B,MACA;AAAA,MACA;AAAe,MACf,mBAAe;AAAO,MACtB;AAAA,MACA;AAAA,MACA;AACE;AACE;AAAA;AAEA;AAAA;AAAA;AAAA;AAIF;AAAK;AAAA;AAGL;AAAK;AAAA;AAEP;AAGF;AAAO;AACL,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;;;;+DA7KO;AAAe;AAQH;AAAA,qBANR;AAAA,QACV;AAAS,QACT;AAAa,QACb;AAAoB;;AAES,mCAA9B;;;;;AAiCmB;AA9BN,QACZ;AAAoB,QACpB;AAAS,QACT;AAAU,QACV,QAAQ;AAAA,QACR;AAAW,QACX;AAAqB,QACrB;AAAY,QACZ;AAAkB,QAClB;AAAQ,QACR,YAAY;AAAA,QACZ,gBAAc;AAAA,QACd,gBAAc;AAAA,QACd;AAAW,QACX;AAAgB,QAChB;AAAM,QACN,eAAa;AAAA,QACb;AAAc,QACd,cAAY;AAAA,QACZ;AAAU,QACV;AAAY,QACZ,YAAY;AAAA,QACZ;AAAS,QACT;AAAW;;AAKL;AAAA;AAF2C;cAAxB;AAAQ;AACT;AAAA;AAE6C;YAA7B;AAAc;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"trigger.js","sources":["../../../../../../packages/components/tooltip/src/trigger.vue"],"sourcesContent":["<template>\n <el-popper-trigger\n :id=\"id\"\n :virtual-ref=\"virtualRef\"\n :open=\"open\"\n :virtual-triggering=\"virtualTriggering\"\n :class=\"ns.e('trigger')\"\n @blur=\"onBlur\"\n @click=\"onClick\"\n @contextmenu=\"onContextMenu\"\n @focus=\"onFocus\"\n @mouseenter=\"onMouseenter\"\n @mouseleave=\"onMouseleave\"\n @keydown=\"onKeydown\"\n >\n <slot />\n </el-popper-trigger>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, ref, unref, toRef } from 'vue'\nimport { ElPopperTrigger } from '@element-plus/components/popper'\nimport { composeEventHandlers } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { useNamespace } from '@element-plus/hooks'\nimport { TOOLTIP_INJECTION_KEY } from './tokens'\nimport { useTooltipTriggerProps } from './tooltip'\nimport { whenTrigger } from './utils'\n\nimport type { ElOnlyChildExpose } from '@element-plus/components/slot'\n\nexport default defineComponent({\n name: 'ElTooltipTrigger',\n components: {\n ElPopperTrigger,\n },\n props: useTooltipTriggerProps,\n setup(props) {\n const ns = useNamespace('tooltip')\n const { controlled, id, open, onOpen, onClose, onToggle } = inject(\n TOOLTIP_INJECTION_KEY,\n undefined\n )!\n const triggerRef = ref<ElOnlyChildExpose | null>(null)\n\n const stopWhenControlledOrDisabled = () => {\n if (unref(controlled) || props.disabled) {\n return true\n }\n }\n const trigger = toRef(props, 'trigger')\n const onMouseenter = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'hover', onOpen)\n )\n const onMouseleave = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'hover', onClose)\n )\n const onClick = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'click', (e) => {\n // distinguish left click\n if ((e as MouseEvent).button === 0) {\n onToggle(e)\n }\n })\n )\n\n const onFocus = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'focus', onOpen)\n )\n\n const onBlur = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'focus', onClose)\n )\n\n const onContextMenu = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'contextmenu', (e: Event) => {\n e.preventDefault()\n onToggle(e)\n })\n )\n\n const onKeydown = composeEventHandlers(\n stopWhenControlledOrDisabled,\n (e: KeyboardEvent) => {\n const { code } = e\n if (code === EVENT_CODE.enter || code === EVENT_CODE.space) {\n onToggle(e)\n }\n }\n )\n\n return {\n onBlur,\n onContextMenu,\n onFocus,\n onMouseenter,\n onMouseleave,\n onClick,\n onKeydown,\n open,\n id,\n triggerRef,\n ns,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ElPopperTrigger","useTooltipTriggerProps","useNamespace","inject","TOOLTIP_INJECTION_KEY","ref","unref","toRef","composeEventHandlers","whenTrigger","EVENT_CODE","_openBlock","_createBlock","_normalizeClass","_withCtx"],"mappings":";;;;;;;;;;;;;;;;;;AA+BA,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,qBACVC;AAAA;AAAA,EAEF,OAAOC;AAAA,EACP,MAAM,OAAO;AACX,UAAM,KAAKC,mBAAa;AACxB,UAAM,EAAE,YAAY,IAAI,MAAM,QAAQ,SAAS,aAAaC,WAC1DC,8BACA;AAEF,UAAM,aAAaC,QAA8B;AAEjD,UAAM,+BAA+B,MAAM;AACzC,UAAIC,UAAM,eAAe,MAAM,UAAU;AACvC,eAAO;AAAA;AAAA;AAGX,UAAM,UAAUC,UAAM,OAAO;AAC7B,UAAM,eAAeC,2BACnB,8BACAC,kBAAY,SAAS,SAAS;AAEhC,UAAM,eAAeD,2BACnB,8BACAC,kBAAY,SAAS,SAAS;AAEhC,UAAM,UAAUD,2BACd,8BACAC,kBAAY,SAAS,SAAS,CAAC,MAAM;AAEnC,UAAK,EAAiB,WAAW,GAAG;AAClC,iBAAS;AAAA;AAAA;AAKf,UAAM,UAAUD,2BACd,8BACAC,kBAAY,SAAS,SAAS;AAGhC,UAAM,SAASD,2BACb,8BACAC,kBAAY,SAAS,SAAS;AAGhC,UAAM,gBAAgBD,2BACpB,8BACAC,kBAAY,SAAS,eAAe,CAAC,MAAa;AAChD,QAAE;AACF,eAAS;AAAA;AAIb,UAAM,YAAYD,2BAChB,8BACA,CAAC,MAAqB;AACpB,YAAM,EAAE,SAAS;AACjB,UAAI,SAASE,gBAAW,SAAS,SAASA,gBAAW,OAAO;AAC1D,iBAAS;AAAA;AAAA;AAKf,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;SA1GGC,iBAAEC;AAAA,IACN;AAAA,IACA,eAAU;AAAA,IACV;AAAA,IACA,sBAAK,KAAE;AAAA,IACP,OAAIC,mBAAQ;AAAA,IACZ,QAAK,KAAE;AAAA,IACP,cAAW;AAAA,IACX,eAAO;AAAA,IACP,cAAY;AAAA,IACZ,cAAY;AAAA,IACZ,cAAS;AAAA;;aAEVC,YAAQ;AAAA;;;;;;;;;"}
1
+ {"version":3,"file":"trigger.js","sources":["../../../../../../packages/components/tooltip/src/trigger.vue"],"sourcesContent":["<template>\n <el-popper-trigger\n :id=\"id\"\n :virtual-ref=\"virtualRef\"\n :open=\"open\"\n :virtual-triggering=\"virtualTriggering\"\n :class=\"ns.e('trigger')\"\n @blur=\"onBlur\"\n @click=\"onClick\"\n @contextmenu=\"onContextMenu\"\n @focus=\"onFocus\"\n @mouseenter=\"onMouseenter\"\n @mouseleave=\"onMouseleave\"\n @keydown=\"onKeydown\"\n >\n <slot />\n </el-popper-trigger>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, ref, unref, toRef } from 'vue'\nimport { ElPopperTrigger } from '@element-plus/components/popper'\nimport { composeEventHandlers } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { useNamespace } from '@element-plus/hooks'\nimport { TOOLTIP_INJECTION_KEY } from './tokens'\nimport { useTooltipTriggerProps } from './tooltip'\nimport { whenTrigger } from './utils'\n\nimport type { ElOnlyChildExpose } from '@element-plus/components/slot'\n\nexport default defineComponent({\n name: 'ElTooltipTrigger',\n components: {\n ElPopperTrigger,\n },\n props: useTooltipTriggerProps,\n setup(props) {\n const ns = useNamespace('tooltip')\n const { controlled, id, open, onOpen, onClose, onToggle } = inject(\n TOOLTIP_INJECTION_KEY,\n undefined\n )!\n const triggerRef = ref<ElOnlyChildExpose | null>(null)\n\n const stopWhenControlledOrDisabled = () => {\n if (unref(controlled) || props.disabled) {\n return true\n }\n }\n const trigger = toRef(props, 'trigger')\n const onMouseenter = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'hover', onOpen)\n )\n const onMouseleave = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'hover', onClose)\n )\n const onClick = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'click', (e) => {\n // distinguish left click\n if ((e as MouseEvent).button === 0) {\n onToggle(e)\n }\n })\n )\n\n const onFocus = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'focus', onOpen)\n )\n\n const onBlur = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'focus', onClose)\n )\n\n const onContextMenu = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'contextmenu', (e: Event) => {\n e.preventDefault()\n onToggle(e)\n })\n )\n\n const onKeydown = composeEventHandlers(\n stopWhenControlledOrDisabled,\n (e: KeyboardEvent) => {\n const { code } = e\n if (code === EVENT_CODE.enter || code === EVENT_CODE.space) {\n onToggle(e)\n }\n }\n )\n\n return {\n onBlur,\n onContextMenu,\n onFocus,\n onMouseenter,\n onMouseleave,\n onClick,\n onKeydown,\n open,\n id,\n triggerRef,\n ns,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ElPopperTrigger","useTooltipTriggerProps","useNamespace","inject","TOOLTIP_INJECTION_KEY","ref","unref","toRef","composeEventHandlers","whenTrigger","EVENT_CODE","_createBlock","_normalizeClass","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;;AA+BA,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,qBACVC;AAAA;AAAA,EAEF,OAAOC;AAAA,EACP,MAAM,OAAO;AACX,UAAM,KAAKC,mBAAa;AACxB,UAAM,EAAE,YAAY,IAAI,MAAM,QAAQ,SAAS,aAAaC,WAC1DC,8BACA;AAEF,UAAM,aAAaC,QAA8B;AAEjD,UAAM,+BAA+B,MAAM;AACzC,UAAIC,UAAM,eAAe,MAAM,UAAU;AACvC,eAAO;AAAA;AAAA;AAGX,UAAM,UAAUC,UAAM,OAAO;AAC7B,UAAM,eAAeC,2BACnB,8BACAC,kBAAY,SAAS,SAAS;AAEhC,UAAM,eAAeD,2BACnB,8BACAC,kBAAY,SAAS,SAAS;AAEhC,UAAM,UAAUD,2BACd,8BACAC,kBAAY,SAAS,SAAS,CAAC,MAAM;AAEnC,UAAK,EAAiB,WAAW,GAAG;AAClC,iBAAS;AAAA;AAAA;AAKf,UAAM,UAAUD,2BACd,8BACAC,kBAAY,SAAS,SAAS;AAGhC,UAAM,SAASD,2BACb,8BACAC,kBAAY,SAAS,SAAS;AAGhC,UAAM,gBAAgBD,2BACpB,8BACAC,kBAAY,SAAS,eAAe,CAAC,MAAa;AAChD,QAAE;AACF,eAAS;AAAA;AAIb,UAAM,YAAYD,2BAChB,8BACA,CAAC,MAAqB;AACpB,YAAM,EAAE,SAAS;AACjB,UAAI,SAASE,gBAAW,SAAS,SAASA,gBAAW,OAAO;AAC1D,iBAAS;AAAA;AAAA;AAKf,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;0BA3GJC,gBAeoB;AAAA,IAdjB,IAAI;AAAA,IACJ,eAAa;AAAA,IACb,MAAM;AAAA,IACN,sBAAoB;AAAA,IACpB,OAAKC,mBAAE,QAAG,EAAC;AAAA,IACX,QAAM;AAAA,IACN,SAAO;AAAA,IACP,eAAa;AAAA,IACb,SAAO;AAAA,IACP,cAAY;AAAA,IACZ,cAAY;AAAA,IACZ,WAAS;AAAA;yBAEV,MAAQ;AAAA,MAARC,eAAQ;AAAA;AAAA;;;;;;;"}