@element-plus/nightly 0.0.20260319 → 0.0.20260321

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 (294) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.full.js +4 -4
  3. package/dist/index.full.min.js +4 -4
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +4 -4
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +4 -4
  8. package/dist/locale/af.js +1 -1
  9. package/dist/locale/af.min.js +1 -1
  10. package/dist/locale/af.min.mjs +1 -1
  11. package/dist/locale/af.mjs +1 -1
  12. package/dist/locale/ar-eg.js +1 -1
  13. package/dist/locale/ar-eg.min.js +1 -1
  14. package/dist/locale/ar-eg.min.mjs +1 -1
  15. package/dist/locale/ar-eg.mjs +1 -1
  16. package/dist/locale/ar.js +1 -1
  17. package/dist/locale/ar.min.js +1 -1
  18. package/dist/locale/ar.min.mjs +1 -1
  19. package/dist/locale/ar.mjs +1 -1
  20. package/dist/locale/az.js +1 -1
  21. package/dist/locale/az.min.js +1 -1
  22. package/dist/locale/az.min.mjs +1 -1
  23. package/dist/locale/az.mjs +1 -1
  24. package/dist/locale/bg.js +1 -1
  25. package/dist/locale/bg.min.js +1 -1
  26. package/dist/locale/bg.min.mjs +1 -1
  27. package/dist/locale/bg.mjs +1 -1
  28. package/dist/locale/bn.js +1 -1
  29. package/dist/locale/bn.min.js +1 -1
  30. package/dist/locale/bn.min.mjs +1 -1
  31. package/dist/locale/bn.mjs +1 -1
  32. package/dist/locale/ca.js +1 -1
  33. package/dist/locale/ca.min.js +1 -1
  34. package/dist/locale/ca.min.mjs +1 -1
  35. package/dist/locale/ca.mjs +1 -1
  36. package/dist/locale/ckb.js +1 -1
  37. package/dist/locale/ckb.min.js +1 -1
  38. package/dist/locale/ckb.min.mjs +1 -1
  39. package/dist/locale/ckb.mjs +1 -1
  40. package/dist/locale/cs.js +1 -1
  41. package/dist/locale/cs.min.js +1 -1
  42. package/dist/locale/cs.min.mjs +1 -1
  43. package/dist/locale/cs.mjs +1 -1
  44. package/dist/locale/da.js +1 -1
  45. package/dist/locale/da.min.js +1 -1
  46. package/dist/locale/da.min.mjs +1 -1
  47. package/dist/locale/da.mjs +1 -1
  48. package/dist/locale/de.js +1 -1
  49. package/dist/locale/de.min.js +1 -1
  50. package/dist/locale/de.min.mjs +1 -1
  51. package/dist/locale/de.mjs +1 -1
  52. package/dist/locale/el.js +1 -1
  53. package/dist/locale/el.min.js +1 -1
  54. package/dist/locale/el.min.mjs +1 -1
  55. package/dist/locale/el.mjs +1 -1
  56. package/dist/locale/en.js +1 -1
  57. package/dist/locale/en.min.js +1 -1
  58. package/dist/locale/en.min.mjs +1 -1
  59. package/dist/locale/en.mjs +1 -1
  60. package/dist/locale/eo.js +1 -1
  61. package/dist/locale/eo.min.js +1 -1
  62. package/dist/locale/eo.min.mjs +1 -1
  63. package/dist/locale/eo.mjs +1 -1
  64. package/dist/locale/es.js +1 -1
  65. package/dist/locale/es.min.js +1 -1
  66. package/dist/locale/es.min.mjs +1 -1
  67. package/dist/locale/es.mjs +1 -1
  68. package/dist/locale/et.js +1 -1
  69. package/dist/locale/et.min.js +1 -1
  70. package/dist/locale/et.min.mjs +1 -1
  71. package/dist/locale/et.mjs +1 -1
  72. package/dist/locale/eu.js +1 -1
  73. package/dist/locale/eu.min.js +1 -1
  74. package/dist/locale/eu.min.mjs +1 -1
  75. package/dist/locale/eu.mjs +1 -1
  76. package/dist/locale/fa.js +1 -1
  77. package/dist/locale/fa.min.js +1 -1
  78. package/dist/locale/fa.min.mjs +1 -1
  79. package/dist/locale/fa.mjs +1 -1
  80. package/dist/locale/fi.js +1 -1
  81. package/dist/locale/fi.min.js +1 -1
  82. package/dist/locale/fi.min.mjs +1 -1
  83. package/dist/locale/fi.mjs +1 -1
  84. package/dist/locale/fr.js +1 -1
  85. package/dist/locale/fr.min.js +1 -1
  86. package/dist/locale/fr.min.mjs +1 -1
  87. package/dist/locale/fr.mjs +1 -1
  88. package/dist/locale/he.js +1 -1
  89. package/dist/locale/he.min.js +1 -1
  90. package/dist/locale/he.min.mjs +1 -1
  91. package/dist/locale/he.mjs +1 -1
  92. package/dist/locale/hi.js +1 -1
  93. package/dist/locale/hi.min.js +1 -1
  94. package/dist/locale/hi.min.mjs +1 -1
  95. package/dist/locale/hi.mjs +1 -1
  96. package/dist/locale/hr.js +1 -1
  97. package/dist/locale/hr.min.js +1 -1
  98. package/dist/locale/hr.min.mjs +1 -1
  99. package/dist/locale/hr.mjs +1 -1
  100. package/dist/locale/hu.js +1 -1
  101. package/dist/locale/hu.min.js +1 -1
  102. package/dist/locale/hu.min.mjs +1 -1
  103. package/dist/locale/hu.mjs +1 -1
  104. package/dist/locale/hy-am.js +1 -1
  105. package/dist/locale/hy-am.min.js +1 -1
  106. package/dist/locale/hy-am.min.mjs +1 -1
  107. package/dist/locale/hy-am.mjs +1 -1
  108. package/dist/locale/id.js +1 -1
  109. package/dist/locale/id.min.js +1 -1
  110. package/dist/locale/id.min.mjs +1 -1
  111. package/dist/locale/id.mjs +1 -1
  112. package/dist/locale/it.js +1 -1
  113. package/dist/locale/it.min.js +1 -1
  114. package/dist/locale/it.min.mjs +1 -1
  115. package/dist/locale/it.mjs +1 -1
  116. package/dist/locale/ja.js +1 -1
  117. package/dist/locale/ja.min.js +1 -1
  118. package/dist/locale/ja.min.mjs +1 -1
  119. package/dist/locale/ja.mjs +1 -1
  120. package/dist/locale/kk.js +1 -1
  121. package/dist/locale/kk.min.js +1 -1
  122. package/dist/locale/kk.min.mjs +1 -1
  123. package/dist/locale/kk.mjs +1 -1
  124. package/dist/locale/km.js +1 -1
  125. package/dist/locale/km.min.js +1 -1
  126. package/dist/locale/km.min.mjs +1 -1
  127. package/dist/locale/km.mjs +1 -1
  128. package/dist/locale/ko.js +1 -1
  129. package/dist/locale/ko.min.js +1 -1
  130. package/dist/locale/ko.min.mjs +1 -1
  131. package/dist/locale/ko.mjs +1 -1
  132. package/dist/locale/ku.js +1 -1
  133. package/dist/locale/ku.min.js +1 -1
  134. package/dist/locale/ku.min.mjs +1 -1
  135. package/dist/locale/ku.mjs +1 -1
  136. package/dist/locale/ky.js +1 -1
  137. package/dist/locale/ky.min.js +1 -1
  138. package/dist/locale/ky.min.mjs +1 -1
  139. package/dist/locale/ky.mjs +1 -1
  140. package/dist/locale/lo.js +1 -1
  141. package/dist/locale/lo.min.js +1 -1
  142. package/dist/locale/lo.min.mjs +1 -1
  143. package/dist/locale/lo.mjs +1 -1
  144. package/dist/locale/lt.js +1 -1
  145. package/dist/locale/lt.min.js +1 -1
  146. package/dist/locale/lt.min.mjs +1 -1
  147. package/dist/locale/lt.mjs +1 -1
  148. package/dist/locale/lv.js +1 -1
  149. package/dist/locale/lv.min.js +1 -1
  150. package/dist/locale/lv.min.mjs +1 -1
  151. package/dist/locale/lv.mjs +1 -1
  152. package/dist/locale/mg.js +1 -1
  153. package/dist/locale/mg.min.js +1 -1
  154. package/dist/locale/mg.min.mjs +1 -1
  155. package/dist/locale/mg.mjs +1 -1
  156. package/dist/locale/mn.js +1 -1
  157. package/dist/locale/mn.min.js +1 -1
  158. package/dist/locale/mn.min.mjs +1 -1
  159. package/dist/locale/mn.mjs +1 -1
  160. package/dist/locale/ms.js +1 -1
  161. package/dist/locale/ms.min.js +1 -1
  162. package/dist/locale/ms.min.mjs +1 -1
  163. package/dist/locale/ms.mjs +1 -1
  164. package/dist/locale/my.js +1 -1
  165. package/dist/locale/my.min.js +1 -1
  166. package/dist/locale/my.min.mjs +1 -1
  167. package/dist/locale/my.mjs +1 -1
  168. package/dist/locale/nb-no.js +1 -1
  169. package/dist/locale/nb-no.min.js +1 -1
  170. package/dist/locale/nb-no.min.mjs +1 -1
  171. package/dist/locale/nb-no.mjs +1 -1
  172. package/dist/locale/nl.js +1 -1
  173. package/dist/locale/nl.min.js +1 -1
  174. package/dist/locale/nl.min.mjs +1 -1
  175. package/dist/locale/nl.mjs +1 -1
  176. package/dist/locale/no.js +1 -1
  177. package/dist/locale/no.min.js +1 -1
  178. package/dist/locale/no.min.mjs +1 -1
  179. package/dist/locale/no.mjs +1 -1
  180. package/dist/locale/pa.js +1 -1
  181. package/dist/locale/pa.min.js +1 -1
  182. package/dist/locale/pa.min.mjs +1 -1
  183. package/dist/locale/pa.mjs +1 -1
  184. package/dist/locale/pl.js +1 -1
  185. package/dist/locale/pl.min.js +1 -1
  186. package/dist/locale/pl.min.mjs +1 -1
  187. package/dist/locale/pl.mjs +1 -1
  188. package/dist/locale/pt-br.js +1 -1
  189. package/dist/locale/pt-br.min.js +1 -1
  190. package/dist/locale/pt-br.min.mjs +1 -1
  191. package/dist/locale/pt-br.mjs +1 -1
  192. package/dist/locale/pt.js +1 -1
  193. package/dist/locale/pt.min.js +1 -1
  194. package/dist/locale/pt.min.mjs +1 -1
  195. package/dist/locale/pt.mjs +1 -1
  196. package/dist/locale/ro.js +1 -1
  197. package/dist/locale/ro.min.js +1 -1
  198. package/dist/locale/ro.min.mjs +1 -1
  199. package/dist/locale/ro.mjs +1 -1
  200. package/dist/locale/ru.js +1 -1
  201. package/dist/locale/ru.min.js +1 -1
  202. package/dist/locale/ru.min.mjs +1 -1
  203. package/dist/locale/ru.mjs +1 -1
  204. package/dist/locale/sk.js +1 -1
  205. package/dist/locale/sk.min.js +1 -1
  206. package/dist/locale/sk.min.mjs +1 -1
  207. package/dist/locale/sk.mjs +1 -1
  208. package/dist/locale/sl.js +1 -1
  209. package/dist/locale/sl.min.js +1 -1
  210. package/dist/locale/sl.min.mjs +1 -1
  211. package/dist/locale/sl.mjs +1 -1
  212. package/dist/locale/sr.js +1 -1
  213. package/dist/locale/sr.min.js +1 -1
  214. package/dist/locale/sr.min.mjs +1 -1
  215. package/dist/locale/sr.mjs +1 -1
  216. package/dist/locale/sv.js +1 -1
  217. package/dist/locale/sv.min.js +1 -1
  218. package/dist/locale/sv.min.mjs +1 -1
  219. package/dist/locale/sv.mjs +1 -1
  220. package/dist/locale/sw.js +1 -1
  221. package/dist/locale/sw.min.js +1 -1
  222. package/dist/locale/sw.min.mjs +1 -1
  223. package/dist/locale/sw.mjs +1 -1
  224. package/dist/locale/ta.js +1 -1
  225. package/dist/locale/ta.min.js +1 -1
  226. package/dist/locale/ta.min.mjs +1 -1
  227. package/dist/locale/ta.mjs +1 -1
  228. package/dist/locale/te.js +1 -1
  229. package/dist/locale/te.min.js +1 -1
  230. package/dist/locale/te.min.mjs +1 -1
  231. package/dist/locale/te.mjs +1 -1
  232. package/dist/locale/th.js +1 -1
  233. package/dist/locale/th.min.js +1 -1
  234. package/dist/locale/th.min.mjs +1 -1
  235. package/dist/locale/th.mjs +1 -1
  236. package/dist/locale/tk.js +1 -1
  237. package/dist/locale/tk.min.js +1 -1
  238. package/dist/locale/tk.min.mjs +1 -1
  239. package/dist/locale/tk.mjs +1 -1
  240. package/dist/locale/tr.js +1 -1
  241. package/dist/locale/tr.min.js +1 -1
  242. package/dist/locale/tr.min.mjs +1 -1
  243. package/dist/locale/tr.mjs +1 -1
  244. package/dist/locale/ug-cn.js +1 -1
  245. package/dist/locale/ug-cn.min.js +1 -1
  246. package/dist/locale/ug-cn.min.mjs +1 -1
  247. package/dist/locale/ug-cn.mjs +1 -1
  248. package/dist/locale/uk.js +1 -1
  249. package/dist/locale/uk.min.js +1 -1
  250. package/dist/locale/uk.min.mjs +1 -1
  251. package/dist/locale/uk.mjs +1 -1
  252. package/dist/locale/uz-uz.js +1 -1
  253. package/dist/locale/uz-uz.min.js +1 -1
  254. package/dist/locale/uz-uz.min.mjs +1 -1
  255. package/dist/locale/uz-uz.mjs +1 -1
  256. package/dist/locale/vi.js +1 -1
  257. package/dist/locale/vi.min.js +1 -1
  258. package/dist/locale/vi.min.mjs +1 -1
  259. package/dist/locale/vi.mjs +1 -1
  260. package/dist/locale/zh-cn.js +1 -1
  261. package/dist/locale/zh-cn.min.js +1 -1
  262. package/dist/locale/zh-cn.min.mjs +1 -1
  263. package/dist/locale/zh-cn.mjs +1 -1
  264. package/dist/locale/zh-hk.js +1 -1
  265. package/dist/locale/zh-hk.min.js +1 -1
  266. package/dist/locale/zh-hk.min.mjs +1 -1
  267. package/dist/locale/zh-hk.mjs +1 -1
  268. package/dist/locale/zh-mo.js +1 -1
  269. package/dist/locale/zh-mo.min.js +1 -1
  270. package/dist/locale/zh-mo.min.mjs +1 -1
  271. package/dist/locale/zh-mo.mjs +1 -1
  272. package/dist/locale/zh-tw.js +1 -1
  273. package/dist/locale/zh-tw.min.js +1 -1
  274. package/dist/locale/zh-tw.min.mjs +1 -1
  275. package/dist/locale/zh-tw.mjs +1 -1
  276. package/es/components/calendar/src/use-date-table.mjs +2 -1
  277. package/es/components/calendar/src/use-date-table.mjs.map +1 -1
  278. package/es/components/date-picker-panel/src/date-picker-com/panel-date-pick.mjs.map +1 -1
  279. package/es/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue_vue_type_script_setup_true_lang.mjs +1 -1
  280. package/es/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  281. package/es/components/select-v2/src/defaults.mjs.map +1 -1
  282. package/es/version.mjs +1 -1
  283. package/es/version.mjs.map +1 -1
  284. package/lib/components/calendar/src/use-date-table.js +2 -1
  285. package/lib/components/calendar/src/use-date-table.js.map +1 -1
  286. package/lib/components/date-picker-panel/src/date-picker-com/panel-date-pick.js.map +1 -1
  287. package/lib/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue_vue_type_script_setup_true_lang.js +1 -1
  288. package/lib/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue_vue_type_script_setup_true_lang.js.map +1 -1
  289. package/lib/components/select-v2/src/defaults.js.map +1 -1
  290. package/lib/version.js +1 -1
  291. package/lib/version.js.map +1 -1
  292. package/package.json +2 -2
  293. package/tags.json +1 -1
  294. package/web-types.json +1 -1
@@ -1,3 +1,3 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
  var e={name:`zh-cn`,el:{breadcrumb:{label:`面包屑`},colorpicker:{confirm:`确定`,clear:`清空`,defaultLabel:`颜色选择器`,description:`当前颜色 {color},按 Enter 键选择新颜色`,alphaLabel:`选择透明度的值`,alphaDescription:`透明度 {alpha}, 当前颜色 {color}`,hueLabel:`选择色相值`,hueDescription:`色相 {hue}, 当前颜色 {color}`,svLabel:`选择饱和度与明度的值`,svDescription:`饱和度 {saturation}, 明度 {brightness}, 当前颜色 {color}`,predefineDescription:`选择 {value} 作为颜色`},datepicker:{now:`此刻`,today:`今天`,cancel:`取消`,clear:`清空`,confirm:`确定`,dateTablePrompt:`使用方向键与 Enter 键可选择日期`,monthTablePrompt:`使用方向键与 Enter 键可选择月份`,yearTablePrompt:`使用方向键与 Enter 键可选择年份`,selectedDate:`已选日期`,selectDate:`选择日期`,selectTime:`选择时间`,startDate:`开始日期`,startTime:`开始时间`,endDate:`结束日期`,endTime:`结束时间`,prevYear:`前一年`,nextYear:`后一年`,prevMonth:`上个月`,nextMonth:`下个月`,year:`年`,month1:`1 月`,month2:`2 月`,month3:`3 月`,month4:`4 月`,month5:`5 月`,month6:`6 月`,month7:`7 月`,month8:`8 月`,month9:`9 月`,month10:`10 月`,month11:`11 月`,month12:`12 月`,weeks:{sun:`日`,mon:`一`,tue:`二`,wed:`三`,thu:`四`,fri:`五`,sat:`六`},weeksFull:{sun:`星期日`,mon:`星期一`,tue:`星期二`,wed:`星期三`,thu:`星期四`,fri:`星期五`,sat:`星期六`},months:{jan:`一月`,feb:`二月`,mar:`三月`,apr:`四月`,may:`五月`,jun:`六月`,jul:`七月`,aug:`八月`,sep:`九月`,oct:`十月`,nov:`十一月`,dec:`十二月`}},inputNumber:{decrease:`减少数值`,increase:`增加数值`},select:{loading:`加载中`,noMatch:`无匹配数据`,noData:`无数据`,placeholder:`请选择`},mention:{loading:`加载中`},dropdown:{toggleDropdown:`切换下拉选项`},cascader:{noMatch:`无匹配数据`,loading:`加载中`,placeholder:`请选择`,noData:`暂无数据`},pagination:{goto:`前往`,pagesize:`条/页`,total:`共 {total} 条`,pageClassifier:`页`,page:`页`,prev:`上一页`,next:`下一页`,currentPage:`第 {pager} 页`,prevPages:`向前 {pager} 页`,nextPages:`向后 {pager} 页`,deprecationWarning:`你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档`},dialog:{close:`关闭此对话框`},drawer:{close:`关闭此对话框`},messagebox:{title:`提示`,confirm:`确定`,cancel:`取消`,error:`输入的数据不合法!`,close:`关闭此对话框`},upload:{deleteTip:`按 Delete 键可删除`,delete:`删除`,preview:`查看图片`,continue:`继续上传`},slider:{defaultLabel:`滑块介于 {min} 至 {max}`,defaultRangeStartLabel:`选择起始值`,defaultRangeEndLabel:`选择结束值`},table:{emptyText:`暂无数据`,confirmFilter:`筛选`,resetFilter:`重置`,clearFilter:`全部`,sumText:`合计`,selectAllLabel:`选择所有行`,selectRowLabel:`选择当前行`,expandRowLabel:`展开当前行`,collapseRowLabel:`收起当前行`,sortLabel:`按 {column} 排序`,filterLabel:`按 {column} 过滤`},tag:{close:`关闭此标签`},tour:{next:`下一步`,previous:`上一步`,finish:`结束导览`,close:`关闭此对话框`},tree:{emptyText:`暂无数据`},transfer:{noMatch:`无匹配数据`,noData:`无数据`,titles:[`列表 1`,`列表 2`],filterPlaceholder:`请输入搜索内容`,noCheckedFormat:`共 {total} 项`,hasCheckedFormat:`已选 {checked}/{total} 项`},image:{error:`加载失败`},pageHeader:{title:`返回`},popconfirm:{confirmButtonText:`确定`,cancelButtonText:`取消`},carousel:{leftArrow:`上一张幻灯片`,rightArrow:`下一张幻灯片`,indicator:`幻灯片切换至索引 {index}`}}};export{e as default};
3
3
  //# sourceMappingURL=zh-cn.min.mjs.map
@@ -1,4 +1,4 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
 
3
3
  //#region ../../packages/locale/lang/zh-cn.ts
4
4
  var zh_cn_default = {
@@ -1,4 +1,4 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
 
3
3
  (function(global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -1,3 +1,3 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
  (function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t():typeof define==`function`&&define.amd?define([],t):(e=typeof globalThis<`u`?globalThis:e||self,e.ElementPlusLocaleZhHk=t())})(this,function(){return{name:`zh-hk`,el:{breadcrumb:{label:`麵包屑`},colorpicker:{confirm:`確認`,clear:`清空`,defaultLabel:`顏色選擇器`,description:`當前顏色為 {color}。按 Enter 鍵選擇新顏色。`,alphaLabel:`選擇透明度的值`,alphaDescription:`alpha {alpha}, current color is {color}`,hueLabel:`pick hue value`,hueDescription:`hue {hue}, current color is {color}`,svLabel:`pick saturation and brightness value`,svDescription:`saturation {saturation}, brightness {brightness}, current color is {color}`,predefineDescription:`select {value} as the color`},datepicker:{now:`現在`,today:`今天`,cancel:`取消`,clear:`清空`,confirm:`確認`,dateTablePrompt:`使用方向鍵與 Enter 鍵以選擇日期`,monthTablePrompt:`使用方向鍵與 Enter 鍵以選擇月份`,yearTablePrompt:`使用方向鍵與 Enter 鍵以選擇年份`,selectedDate:`已選日期`,selectDate:`選擇日期`,selectTime:`選擇時間`,startDate:`開始日期`,startTime:`開始時間`,endDate:`結束日期`,endTime:`結束時間`,prevYear:`前一年`,nextYear:`後一年`,prevMonth:`上個月`,nextMonth:`下個月`,year:`年`,month1:`1 月`,month2:`2 月`,month3:`3 月`,month4:`4 月`,month5:`5 月`,month6:`6 月`,month7:`7 月`,month8:`8 月`,month9:`9 月`,month10:`10 月`,month11:`11 月`,month12:`12 月`,weeks:{sun:`日`,mon:`一`,tue:`二`,wed:`三`,thu:`四`,fri:`五`,sat:`六`},weeksFull:{sun:`星期日`,mon:`星期一`,tue:`星期二`,wed:`星期三`,thu:`星期四`,fri:`星期五`,sat:`星期六`},months:{jan:`一月`,feb:`二月`,mar:`三月`,apr:`四月`,may:`五月`,jun:`六月`,jul:`七月`,aug:`八月`,sep:`九月`,oct:`十月`,nov:`十一月`,dec:`十二月`}},inputNumber:{decrease:`減少數值`,increase:`增加數值`},select:{loading:`載入中`,noMatch:`無匹配資料`,noData:`無資料`,placeholder:`請選擇`},mention:{loading:`載入中`},dropdown:{toggleDropdown:`切換下拉選單`},cascader:{noMatch:`無匹配資料`,loading:`載入中`,placeholder:`請選擇`,noData:`無資料`},pagination:{goto:`前往`,pagesize:`項/頁`,total:`共 {total} 項`,pageClassifier:`頁`,page:`頁`,prev:`上一頁`,next:`下一頁`,currentPage:`第 {pager} 頁`,prevPages:`向前 {pager} 頁`,nextPages:`向後 {pager} 頁`,deprecationWarning:`檢測到已過時的使用方式,請參閱 el-pagination 說明文件以了解更多資訊`},dialog:{close:`關閉此對話框`},drawer:{close:`關閉此對話框`},messagebox:{title:`提示`,confirm:`確定`,cancel:`取消`,error:`輸入的資料不符合規定!`,close:`關閉此對話框`},upload:{deleteTip:`按 Delete 鍵以刪除`,delete:`刪除`,preview:`查看圖片`,continue:`繼續上傳`},slider:{defaultLabel:`滑桿介於 {min} 至 {max}`,defaultRangeStartLabel:`選擇起始值`,defaultRangeEndLabel:`選擇結束值`},table:{emptyText:`暫無資料`,confirmFilter:`篩選`,resetFilter:`重置`,clearFilter:`全部`,sumText:`合計`,selectAllLabel:`Select all rows`,selectRowLabel:`Select this row`,expandRowLabel:`Expand this row`,collapseRowLabel:`Collapse this row`,sortLabel:`Sort by {column}`,filterLabel:`Filter by {column}`},tag:{close:`關閉此標籤`},tour:{next:`下一步`,previous:`上一步`,finish:`結束導覽`,close:`關閉此對話框`},tree:{emptyText:`暫無資料`},transfer:{noMatch:`無匹配資料`,noData:`無資料`,titles:[`列表 1`,`列表 2`],filterPlaceholder:`請輸入搜尋內容`,noCheckedFormat:`共 {total} 項`,hasCheckedFormat:`已選 {checked}/{total} 項`},image:{error:`載入失敗`},pageHeader:{title:`返回`},popconfirm:{confirmButtonText:`確認`,cancelButtonText:`取消`},carousel:{leftArrow:`上一張幻燈片`,rightArrow:`下一張幻燈片`,indicator:`幻燈片切換至索引 {index}`}}}});
3
3
  //# sourceMappingURL=zh-hk.min.js.map
@@ -1,3 +1,3 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
  var e={name:`zh-hk`,el:{breadcrumb:{label:`麵包屑`},colorpicker:{confirm:`確認`,clear:`清空`,defaultLabel:`顏色選擇器`,description:`當前顏色為 {color}。按 Enter 鍵選擇新顏色。`,alphaLabel:`選擇透明度的值`,alphaDescription:`alpha {alpha}, current color is {color}`,hueLabel:`pick hue value`,hueDescription:`hue {hue}, current color is {color}`,svLabel:`pick saturation and brightness value`,svDescription:`saturation {saturation}, brightness {brightness}, current color is {color}`,predefineDescription:`select {value} as the color`},datepicker:{now:`現在`,today:`今天`,cancel:`取消`,clear:`清空`,confirm:`確認`,dateTablePrompt:`使用方向鍵與 Enter 鍵以選擇日期`,monthTablePrompt:`使用方向鍵與 Enter 鍵以選擇月份`,yearTablePrompt:`使用方向鍵與 Enter 鍵以選擇年份`,selectedDate:`已選日期`,selectDate:`選擇日期`,selectTime:`選擇時間`,startDate:`開始日期`,startTime:`開始時間`,endDate:`結束日期`,endTime:`結束時間`,prevYear:`前一年`,nextYear:`後一年`,prevMonth:`上個月`,nextMonth:`下個月`,year:`年`,month1:`1 月`,month2:`2 月`,month3:`3 月`,month4:`4 月`,month5:`5 月`,month6:`6 月`,month7:`7 月`,month8:`8 月`,month9:`9 月`,month10:`10 月`,month11:`11 月`,month12:`12 月`,weeks:{sun:`日`,mon:`一`,tue:`二`,wed:`三`,thu:`四`,fri:`五`,sat:`六`},weeksFull:{sun:`星期日`,mon:`星期一`,tue:`星期二`,wed:`星期三`,thu:`星期四`,fri:`星期五`,sat:`星期六`},months:{jan:`一月`,feb:`二月`,mar:`三月`,apr:`四月`,may:`五月`,jun:`六月`,jul:`七月`,aug:`八月`,sep:`九月`,oct:`十月`,nov:`十一月`,dec:`十二月`}},inputNumber:{decrease:`減少數值`,increase:`增加數值`},select:{loading:`載入中`,noMatch:`無匹配資料`,noData:`無資料`,placeholder:`請選擇`},mention:{loading:`載入中`},dropdown:{toggleDropdown:`切換下拉選單`},cascader:{noMatch:`無匹配資料`,loading:`載入中`,placeholder:`請選擇`,noData:`無資料`},pagination:{goto:`前往`,pagesize:`項/頁`,total:`共 {total} 項`,pageClassifier:`頁`,page:`頁`,prev:`上一頁`,next:`下一頁`,currentPage:`第 {pager} 頁`,prevPages:`向前 {pager} 頁`,nextPages:`向後 {pager} 頁`,deprecationWarning:`檢測到已過時的使用方式,請參閱 el-pagination 說明文件以了解更多資訊`},dialog:{close:`關閉此對話框`},drawer:{close:`關閉此對話框`},messagebox:{title:`提示`,confirm:`確定`,cancel:`取消`,error:`輸入的資料不符合規定!`,close:`關閉此對話框`},upload:{deleteTip:`按 Delete 鍵以刪除`,delete:`刪除`,preview:`查看圖片`,continue:`繼續上傳`},slider:{defaultLabel:`滑桿介於 {min} 至 {max}`,defaultRangeStartLabel:`選擇起始值`,defaultRangeEndLabel:`選擇結束值`},table:{emptyText:`暫無資料`,confirmFilter:`篩選`,resetFilter:`重置`,clearFilter:`全部`,sumText:`合計`,selectAllLabel:`Select all rows`,selectRowLabel:`Select this row`,expandRowLabel:`Expand this row`,collapseRowLabel:`Collapse this row`,sortLabel:`Sort by {column}`,filterLabel:`Filter by {column}`},tag:{close:`關閉此標籤`},tour:{next:`下一步`,previous:`上一步`,finish:`結束導覽`,close:`關閉此對話框`},tree:{emptyText:`暫無資料`},transfer:{noMatch:`無匹配資料`,noData:`無資料`,titles:[`列表 1`,`列表 2`],filterPlaceholder:`請輸入搜尋內容`,noCheckedFormat:`共 {total} 項`,hasCheckedFormat:`已選 {checked}/{total} 項`},image:{error:`載入失敗`},pageHeader:{title:`返回`},popconfirm:{confirmButtonText:`確認`,cancelButtonText:`取消`},carousel:{leftArrow:`上一張幻燈片`,rightArrow:`下一張幻燈片`,indicator:`幻燈片切換至索引 {index}`}}};export{e as default};
3
3
  //# sourceMappingURL=zh-hk.min.mjs.map
@@ -1,4 +1,4 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
 
3
3
  //#region ../../packages/locale/lang/zh-hk.ts
4
4
  var zh_hk_default = {
@@ -1,4 +1,4 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
 
3
3
  (function(global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -1,3 +1,3 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
  (function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t():typeof define==`function`&&define.amd?define([],t):(e=typeof globalThis<`u`?globalThis:e||self,e.ElementPlusLocaleZhMo=t())})(this,function(){return{name:`zh-mo`,el:{breadcrumb:{label:`麵包屑`},colorpicker:{confirm:`確認`,clear:`清空`,defaultLabel:`顏色選擇器`,description:`當前顏色為 {color}。按 Enter 鍵選擇新顏色。`,alphaLabel:`選擇透明度的值`,alphaDescription:`alpha {alpha}, current color is {color}`,hueLabel:`pick hue value`,hueDescription:`hue {hue}, current color is {color}`,svLabel:`pick saturation and brightness value`,svDescription:`saturation {saturation}, brightness {brightness}, current color is {color}`,predefineDescription:`select {value} as the color`},datepicker:{now:`現在`,today:`今天`,cancel:`取消`,clear:`清空`,confirm:`確認`,dateTablePrompt:`使用方向鍵與 Enter 鍵以選擇日期`,monthTablePrompt:`使用方向鍵與 Enter 鍵以選擇月份`,yearTablePrompt:`使用方向鍵與 Enter 鍵以選擇年份`,selectedDate:`已選日期`,selectDate:`選擇日期`,selectTime:`選擇時間`,startDate:`開始日期`,startTime:`開始時間`,endDate:`結束日期`,endTime:`結束時間`,prevYear:`前一年`,nextYear:`後一年`,prevMonth:`上個月`,nextMonth:`下個月`,year:`年`,month1:`1 月`,month2:`2 月`,month3:`3 月`,month4:`4 月`,month5:`5 月`,month6:`6 月`,month7:`7 月`,month8:`8 月`,month9:`9 月`,month10:`10 月`,month11:`11 月`,month12:`12 月`,weeks:{sun:`日`,mon:`一`,tue:`二`,wed:`三`,thu:`四`,fri:`五`,sat:`六`},weeksFull:{sun:`星期日`,mon:`星期一`,tue:`星期二`,wed:`星期三`,thu:`星期四`,fri:`星期五`,sat:`星期六`},months:{jan:`一月`,feb:`二月`,mar:`三月`,apr:`四月`,may:`五月`,jun:`六月`,jul:`七月`,aug:`八月`,sep:`九月`,oct:`十月`,nov:`十一月`,dec:`十二月`}},inputNumber:{decrease:`減少數值`,increase:`增加數值`},select:{loading:`載入中`,noMatch:`無匹配資料`,noData:`無資料`,placeholder:`請選擇`},mention:{loading:`載入中`},dropdown:{toggleDropdown:`切換下拉選單`},cascader:{noMatch:`無匹配資料`,loading:`載入中`,placeholder:`請選擇`,noData:`無資料`},pagination:{goto:`前往`,pagesize:`項/頁`,total:`共 {total} 項`,pageClassifier:`頁`,page:`頁`,prev:`上一頁`,next:`下一頁`,currentPage:`第 {pager} 頁`,prevPages:`向前 {pager} 頁`,nextPages:`向後 {pager} 頁`,deprecationWarning:`檢測到已過時的使用方式,請參閱 el-pagination 說明文件以了解更多資訊`},dialog:{close:`關閉此對話框`},drawer:{close:`關閉此對話框`},messagebox:{title:`提示`,confirm:`確定`,cancel:`取消`,error:`輸入的資料不符合規定!`,close:`關閉此對話框`},upload:{deleteTip:`按 Delete 鍵以刪除`,delete:`刪除`,preview:`查看圖片`,continue:`繼續上傳`},slider:{defaultLabel:`滑桿介於 {min} 至 {max}`,defaultRangeStartLabel:`選擇起始值`,defaultRangeEndLabel:`選擇結束值`},table:{emptyText:`暫無資料`,confirmFilter:`篩選`,resetFilter:`重置`,clearFilter:`全部`,sumText:`合計`,selectAllLabel:`Select all rows`,selectRowLabel:`Select this row`,expandRowLabel:`Expand this row`,collapseRowLabel:`Collapse this row`,sortLabel:`Sort by {column}`,filterLabel:`Filter by {column}`},tag:{close:`關閉此標籤`},tour:{next:`下一步`,previous:`上一步`,finish:`結束導覽`,close:`關閉此對話框`},tree:{emptyText:`暫無資料`},transfer:{noMatch:`無匹配資料`,noData:`無資料`,titles:[`列表 1`,`列表 2`],filterPlaceholder:`請輸入搜尋內容`,noCheckedFormat:`共 {total} 項`,hasCheckedFormat:`已選 {checked}/{total} 項`},image:{error:`載入失敗`},pageHeader:{title:`返回`},popconfirm:{confirmButtonText:`確認`,cancelButtonText:`取消`},carousel:{leftArrow:`上一張幻燈片`,rightArrow:`下一張幻燈片`,indicator:`幻燈片切換至索引 {index}`}}}});
3
3
  //# sourceMappingURL=zh-mo.min.js.map
@@ -1,3 +1,3 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
  var e={name:`zh-mo`,el:{breadcrumb:{label:`麵包屑`},colorpicker:{confirm:`確認`,clear:`清空`,defaultLabel:`顏色選擇器`,description:`當前顏色為 {color}。按 Enter 鍵選擇新顏色。`,alphaLabel:`選擇透明度的值`,alphaDescription:`alpha {alpha}, current color is {color}`,hueLabel:`pick hue value`,hueDescription:`hue {hue}, current color is {color}`,svLabel:`pick saturation and brightness value`,svDescription:`saturation {saturation}, brightness {brightness}, current color is {color}`,predefineDescription:`select {value} as the color`},datepicker:{now:`現在`,today:`今天`,cancel:`取消`,clear:`清空`,confirm:`確認`,dateTablePrompt:`使用方向鍵與 Enter 鍵以選擇日期`,monthTablePrompt:`使用方向鍵與 Enter 鍵以選擇月份`,yearTablePrompt:`使用方向鍵與 Enter 鍵以選擇年份`,selectedDate:`已選日期`,selectDate:`選擇日期`,selectTime:`選擇時間`,startDate:`開始日期`,startTime:`開始時間`,endDate:`結束日期`,endTime:`結束時間`,prevYear:`前一年`,nextYear:`後一年`,prevMonth:`上個月`,nextMonth:`下個月`,year:`年`,month1:`1 月`,month2:`2 月`,month3:`3 月`,month4:`4 月`,month5:`5 月`,month6:`6 月`,month7:`7 月`,month8:`8 月`,month9:`9 月`,month10:`10 月`,month11:`11 月`,month12:`12 月`,weeks:{sun:`日`,mon:`一`,tue:`二`,wed:`三`,thu:`四`,fri:`五`,sat:`六`},weeksFull:{sun:`星期日`,mon:`星期一`,tue:`星期二`,wed:`星期三`,thu:`星期四`,fri:`星期五`,sat:`星期六`},months:{jan:`一月`,feb:`二月`,mar:`三月`,apr:`四月`,may:`五月`,jun:`六月`,jul:`七月`,aug:`八月`,sep:`九月`,oct:`十月`,nov:`十一月`,dec:`十二月`}},inputNumber:{decrease:`減少數值`,increase:`增加數值`},select:{loading:`載入中`,noMatch:`無匹配資料`,noData:`無資料`,placeholder:`請選擇`},mention:{loading:`載入中`},dropdown:{toggleDropdown:`切換下拉選單`},cascader:{noMatch:`無匹配資料`,loading:`載入中`,placeholder:`請選擇`,noData:`無資料`},pagination:{goto:`前往`,pagesize:`項/頁`,total:`共 {total} 項`,pageClassifier:`頁`,page:`頁`,prev:`上一頁`,next:`下一頁`,currentPage:`第 {pager} 頁`,prevPages:`向前 {pager} 頁`,nextPages:`向後 {pager} 頁`,deprecationWarning:`檢測到已過時的使用方式,請參閱 el-pagination 說明文件以了解更多資訊`},dialog:{close:`關閉此對話框`},drawer:{close:`關閉此對話框`},messagebox:{title:`提示`,confirm:`確定`,cancel:`取消`,error:`輸入的資料不符合規定!`,close:`關閉此對話框`},upload:{deleteTip:`按 Delete 鍵以刪除`,delete:`刪除`,preview:`查看圖片`,continue:`繼續上傳`},slider:{defaultLabel:`滑桿介於 {min} 至 {max}`,defaultRangeStartLabel:`選擇起始值`,defaultRangeEndLabel:`選擇結束值`},table:{emptyText:`暫無資料`,confirmFilter:`篩選`,resetFilter:`重置`,clearFilter:`全部`,sumText:`合計`,selectAllLabel:`Select all rows`,selectRowLabel:`Select this row`,expandRowLabel:`Expand this row`,collapseRowLabel:`Collapse this row`,sortLabel:`Sort by {column}`,filterLabel:`Filter by {column}`},tag:{close:`關閉此標籤`},tour:{next:`下一步`,previous:`上一步`,finish:`結束導覽`,close:`關閉此對話框`},tree:{emptyText:`暫無資料`},transfer:{noMatch:`無匹配資料`,noData:`無資料`,titles:[`列表 1`,`列表 2`],filterPlaceholder:`請輸入搜尋內容`,noCheckedFormat:`共 {total} 項`,hasCheckedFormat:`已選 {checked}/{total} 項`},image:{error:`載入失敗`},pageHeader:{title:`返回`},popconfirm:{confirmButtonText:`確認`,cancelButtonText:`取消`},carousel:{leftArrow:`上一張幻燈片`,rightArrow:`下一張幻燈片`,indicator:`幻燈片切換至索引 {index}`}}};export{e as default};
3
3
  //# sourceMappingURL=zh-mo.min.mjs.map
@@ -1,4 +1,4 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
 
3
3
  //#region ../../packages/locale/lang/zh-mo.ts
4
4
  var zh_mo_default = {
@@ -1,4 +1,4 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
 
3
3
  (function(global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -1,3 +1,3 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
  (function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t():typeof define==`function`&&define.amd?define([],t):(e=typeof globalThis<`u`?globalThis:e||self,e.ElementPlusLocaleZhTw=t())})(this,function(){return{name:`zh-tw`,el:{breadcrumb:{label:`面包屑`},colorpicker:{confirm:`確認`,clear:`清空`,defaultLabel:`色彩選擇器`,description:`目前色彩為 {color}。按一下 Enter 以選擇新色彩。`,alphaLabel:`選擇透明度的值`,alphaDescription:`alpha {alpha}, current color is {color}`,hueLabel:`pick hue value`,hueDescription:`hue {hue}, current color is {color}`,svLabel:`pick saturation and brightness value`,svDescription:`saturation {saturation}, brightness {brightness}, current color is {color}`,predefineDescription:`select {value} as the color`},datepicker:{now:`現在`,today:`今天`,cancel:`取消`,clear:`清空`,confirm:`確認`,dateTablePrompt:`使用方向鍵與 Enter 鍵以選擇日期`,monthTablePrompt:`使用方向鍵與 Enter 鍵以選擇月份`,yearTablePrompt:`使用方向鍵與 Enter 鍵以選擇年份`,selectedDate:`已選日期`,selectDate:`選擇日期`,selectTime:`選擇時間`,startDate:`開始日期`,startTime:`開始時間`,endDate:`結束日期`,endTime:`結束時間`,prevYear:`前一年`,nextYear:`後一年`,prevMonth:`上個月`,nextMonth:`下個月`,year:`年`,month1:`1 月`,month2:`2 月`,month3:`3 月`,month4:`4 月`,month5:`5 月`,month6:`6 月`,month7:`7 月`,month8:`8 月`,month9:`9 月`,month10:`10 月`,month11:`11 月`,month12:`12 月`,weeks:{sun:`日`,mon:`一`,tue:`二`,wed:`三`,thu:`四`,fri:`五`,sat:`六`},weeksFull:{sun:`星期日`,mon:`星期一`,tue:`星期二`,wed:`星期三`,thu:`星期四`,fri:`星期五`,sat:`星期六`},months:{jan:`一月`,feb:`二月`,mar:`三月`,apr:`四月`,may:`五月`,jun:`六月`,jul:`七月`,aug:`八月`,sep:`九月`,oct:`十月`,nov:`十一月`,dec:`十二月`}},inputNumber:{decrease:`減少數值`,increase:`增加數值`},select:{loading:`載入中`,noMatch:`無相符資料`,noData:`無資料`,placeholder:`請選擇`},mention:{loading:`載入中`},dropdown:{toggleDropdown:`切換下拉選單`},cascader:{noMatch:`無相符資料`,loading:`載入中`,placeholder:`請選擇`,noData:`無資料`},pagination:{goto:`前往`,pagesize:`項/頁`,total:`共 {total} 項`,pageClassifier:`頁`,page:`頁`,prev:`上一頁`,next:`下一頁`,currentPage:`第 {pager} 頁`,prevPages:`向前 {pager} 頁`,nextPages:`向後 {pager} 頁`,deprecationWarning:`偵測到已過時的使用方式,請參閱 el-pagination 說明文件以了解更多資訊`},dialog:{close:`關閉此對話框`},drawer:{close:`關閉此對話框`},messagebox:{title:`提示`,confirm:`確定`,cancel:`取消`,error:`輸入的資料不符合規定!`,close:`關閉此對話框`},upload:{deleteTip:`按 Delete 鍵以刪除`,delete:`刪除`,preview:`查看圖片`,continue:`繼續上傳`},slider:{defaultLabel:`滑桿介於 {min} 至 {max}`,defaultRangeStartLabel:`選擇起始值`,defaultRangeEndLabel:`選擇結束值`},table:{emptyText:`暫無資料`,confirmFilter:`篩選`,resetFilter:`重置`,clearFilter:`全部`,sumText:`合計`,selectAllLabel:`Select all rows`,selectRowLabel:`Select this row`,expandRowLabel:`Expand this row`,collapseRowLabel:`Collapse this row`,sortLabel:`Sort by {column}`,filterLabel:`Filter by {column}`},tag:{close:`關閉此標籤`},tour:{next:`下一步`,previous:`上一步`,finish:`結束導覽`,close:`關閉此對話框`},tree:{emptyText:`暫無資料`},transfer:{noMatch:`無相符資料`,noData:`無資料`,titles:[`列表 1`,`列表 2`],filterPlaceholder:`請輸入搜尋內容`,noCheckedFormat:`共 {total} 項`,hasCheckedFormat:`已選 {checked}/{total} 項`},image:{error:`載入失敗`},pageHeader:{title:`返回`},popconfirm:{confirmButtonText:`確認`,cancelButtonText:`取消`},carousel:{leftArrow:`上一張投影片`,rightArrow:`下一張投影片`,indicator:`投影片切換至索引 {index}`}}}});
3
3
  //# sourceMappingURL=zh-tw.min.js.map
@@ -1,3 +1,3 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
  var e={name:`zh-tw`,el:{breadcrumb:{label:`面包屑`},colorpicker:{confirm:`確認`,clear:`清空`,defaultLabel:`色彩選擇器`,description:`目前色彩為 {color}。按一下 Enter 以選擇新色彩。`,alphaLabel:`選擇透明度的值`,alphaDescription:`alpha {alpha}, current color is {color}`,hueLabel:`pick hue value`,hueDescription:`hue {hue}, current color is {color}`,svLabel:`pick saturation and brightness value`,svDescription:`saturation {saturation}, brightness {brightness}, current color is {color}`,predefineDescription:`select {value} as the color`},datepicker:{now:`現在`,today:`今天`,cancel:`取消`,clear:`清空`,confirm:`確認`,dateTablePrompt:`使用方向鍵與 Enter 鍵以選擇日期`,monthTablePrompt:`使用方向鍵與 Enter 鍵以選擇月份`,yearTablePrompt:`使用方向鍵與 Enter 鍵以選擇年份`,selectedDate:`已選日期`,selectDate:`選擇日期`,selectTime:`選擇時間`,startDate:`開始日期`,startTime:`開始時間`,endDate:`結束日期`,endTime:`結束時間`,prevYear:`前一年`,nextYear:`後一年`,prevMonth:`上個月`,nextMonth:`下個月`,year:`年`,month1:`1 月`,month2:`2 月`,month3:`3 月`,month4:`4 月`,month5:`5 月`,month6:`6 月`,month7:`7 月`,month8:`8 月`,month9:`9 月`,month10:`10 月`,month11:`11 月`,month12:`12 月`,weeks:{sun:`日`,mon:`一`,tue:`二`,wed:`三`,thu:`四`,fri:`五`,sat:`六`},weeksFull:{sun:`星期日`,mon:`星期一`,tue:`星期二`,wed:`星期三`,thu:`星期四`,fri:`星期五`,sat:`星期六`},months:{jan:`一月`,feb:`二月`,mar:`三月`,apr:`四月`,may:`五月`,jun:`六月`,jul:`七月`,aug:`八月`,sep:`九月`,oct:`十月`,nov:`十一月`,dec:`十二月`}},inputNumber:{decrease:`減少數值`,increase:`增加數值`},select:{loading:`載入中`,noMatch:`無相符資料`,noData:`無資料`,placeholder:`請選擇`},mention:{loading:`載入中`},dropdown:{toggleDropdown:`切換下拉選單`},cascader:{noMatch:`無相符資料`,loading:`載入中`,placeholder:`請選擇`,noData:`無資料`},pagination:{goto:`前往`,pagesize:`項/頁`,total:`共 {total} 項`,pageClassifier:`頁`,page:`頁`,prev:`上一頁`,next:`下一頁`,currentPage:`第 {pager} 頁`,prevPages:`向前 {pager} 頁`,nextPages:`向後 {pager} 頁`,deprecationWarning:`偵測到已過時的使用方式,請參閱 el-pagination 說明文件以了解更多資訊`},dialog:{close:`關閉此對話框`},drawer:{close:`關閉此對話框`},messagebox:{title:`提示`,confirm:`確定`,cancel:`取消`,error:`輸入的資料不符合規定!`,close:`關閉此對話框`},upload:{deleteTip:`按 Delete 鍵以刪除`,delete:`刪除`,preview:`查看圖片`,continue:`繼續上傳`},slider:{defaultLabel:`滑桿介於 {min} 至 {max}`,defaultRangeStartLabel:`選擇起始值`,defaultRangeEndLabel:`選擇結束值`},table:{emptyText:`暫無資料`,confirmFilter:`篩選`,resetFilter:`重置`,clearFilter:`全部`,sumText:`合計`,selectAllLabel:`Select all rows`,selectRowLabel:`Select this row`,expandRowLabel:`Expand this row`,collapseRowLabel:`Collapse this row`,sortLabel:`Sort by {column}`,filterLabel:`Filter by {column}`},tag:{close:`關閉此標籤`},tour:{next:`下一步`,previous:`上一步`,finish:`結束導覽`,close:`關閉此對話框`},tree:{emptyText:`暫無資料`},transfer:{noMatch:`無相符資料`,noData:`無資料`,titles:[`列表 1`,`列表 2`],filterPlaceholder:`請輸入搜尋內容`,noCheckedFormat:`共 {total} 項`,hasCheckedFormat:`已選 {checked}/{total} 項`},image:{error:`載入失敗`},pageHeader:{title:`返回`},popconfirm:{confirmButtonText:`確認`,cancelButtonText:`取消`},carousel:{leftArrow:`上一張投影片`,rightArrow:`下一張投影片`,indicator:`投影片切換至索引 {index}`}}};export{e as default};
3
3
  //# sourceMappingURL=zh-tw.min.mjs.map
@@ -1,4 +1,4 @@
1
- /*! Element Plus v0.0.20260319 */
1
+ /*! Element Plus v0.0.20260321 */
2
2
 
3
3
  //#region ../../packages/locale/lang/zh-tw.ts
4
4
  var zh_tw_default = {
@@ -1,5 +1,6 @@
1
1
  import { WEEK_DAYS } from "../../../constants/date.mjs";
2
2
  import { useLocale } from "../../../hooks/use-locale/index.mjs";
3
+ import { DEFAULT_FORMATS_DATE } from "../../time-picker/src/constants.mjs";
3
4
  import { rangeArr } from "../../time-picker/src/utils.mjs";
4
5
  import { getMonthDays, getPrevMonthLastDays, toNestedArr } from "./date-table.mjs";
5
6
  import { computed } from "vue";
@@ -67,7 +68,7 @@ const useDateTable = (props, emit) => {
67
68
  return {
68
69
  isSelected: day.isSame(props.selectedDay),
69
70
  type: `${type}-month`,
70
- day: day.format("YYYY-MM-DD"),
71
+ day: day.format(DEFAULT_FORMATS_DATE),
71
72
  date: day.toDate()
72
73
  };
73
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-date-table.mjs","names":[],"sources":["../../../../../../packages/components/calendar/src/use-date-table.ts"],"sourcesContent":["import { computed } from 'vue'\nimport dayjs from 'dayjs'\nimport localeData from 'dayjs/plugin/localeData.js'\nimport { useLocale } from '@element-plus/hooks'\nimport { rangeArr } from '@element-plus/components/time-picker'\nimport { WEEK_DAYS } from '@element-plus/constants'\nimport { getMonthDays, getPrevMonthLastDays, toNestedArr } from './date-table'\n\nimport type { SetupContext } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type {\n CalendarDateCell,\n CalendarDateCellType,\n DateTableEmits,\n DateTableProps,\n} from './date-table'\n\nexport const useDateTable = (\n props: DateTableProps,\n emit: SetupContext<DateTableEmits>['emit']\n) => {\n dayjs.extend(localeData)\n // https://day.js.org/docs/en/i18n/locale-data\n const firstDayOfWeek: number = dayjs.localeData().firstDayOfWeek()\n\n const { t, lang } = useLocale()\n const now = dayjs().locale(lang.value)\n\n const isInRange = computed(() => !!props.range && !!props.range.length)\n\n const rows = computed(() => {\n let days: CalendarDateCell[] = []\n if (isInRange.value) {\n const [start, end] = props.range!\n const currentMonthRange: CalendarDateCell[] = rangeArr(\n end.date() - start.date() + 1\n ).map((index) => ({\n text: start.date() + index,\n type: 'current',\n }))\n\n let remaining = currentMonthRange.length % 7\n remaining = remaining === 0 ? 0 : 7 - remaining\n const nextMonthRange: CalendarDateCell[] = rangeArr(remaining).map(\n (_, index) => ({\n text: index + 1,\n type: 'next',\n })\n )\n days = currentMonthRange.concat(nextMonthRange)\n } else {\n const firstDay = props.date.startOf('month').day()\n const prevMonthDays: CalendarDateCell[] = getPrevMonthLastDays(\n props.date,\n (firstDay - firstDayOfWeek + 7) % 7\n ).map((day) => ({\n text: day,\n type: 'prev',\n }))\n const currentMonthDays: CalendarDateCell[] = getMonthDays(props.date).map(\n (day) => ({\n text: day,\n type: 'current',\n })\n )\n days = [...prevMonthDays, ...currentMonthDays]\n const remaining = 7 - (days.length % 7 || 7)\n const nextMonthDays: CalendarDateCell[] = rangeArr(remaining).map(\n (_, index) => ({\n text: index + 1,\n type: 'next',\n })\n )\n days = days.concat(nextMonthDays)\n }\n return toNestedArr(days)\n })\n\n const weekDays = computed(() => {\n const start = firstDayOfWeek\n if (start === 0) {\n return WEEK_DAYS.map((_) => t(`el.datepicker.weeks.${_}`))\n } else {\n return WEEK_DAYS.slice(start)\n .concat(WEEK_DAYS.slice(0, start))\n .map((_) => t(`el.datepicker.weeks.${_}`))\n }\n })\n\n const getFormattedDate = (day: number, type: CalendarDateCellType): Dayjs => {\n switch (type) {\n case 'prev':\n return props.date.startOf('month').subtract(1, 'month').date(day)\n case 'next':\n return props.date.startOf('month').add(1, 'month').date(day)\n case 'current':\n return props.date.date(day)\n }\n }\n\n const handlePickDay = ({ text, type }: CalendarDateCell) => {\n const date = getFormattedDate(text, type)\n emit('pick', date)\n }\n\n const getSlotData = ({ text, type }: CalendarDateCell) => {\n const day = getFormattedDate(text, type)\n return {\n isSelected: day.isSame(props.selectedDay),\n type: `${type}-month`,\n day: day.format('YYYY-MM-DD'),\n date: day.toDate(),\n }\n }\n\n return {\n now,\n isInRange,\n rows,\n weekDays,\n getFormattedDate,\n handlePickDay,\n getSlotData,\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,MAAa,gBACX,OACA,SACG;AACH,OAAM,OAAO,WAAW;CAExB,MAAM,iBAAyB,MAAM,YAAY,CAAC,gBAAgB;CAElE,MAAM,EAAE,GAAG,SAAS,WAAW;CAC/B,MAAM,MAAM,OAAO,CAAC,OAAO,KAAK,MAAM;CAEtC,MAAM,YAAY,eAAe,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,MAAM,MAAM,OAAO;CAEvE,MAAM,OAAO,eAAe;EAC1B,IAAI,OAA2B,EAAE;AACjC,MAAI,UAAU,OAAO;GACnB,MAAM,CAAC,OAAO,OAAO,MAAM;GAC3B,MAAM,oBAAwC,SAC5C,IAAI,MAAM,GAAG,MAAM,MAAM,GAAG,EAC7B,CAAC,KAAK,WAAW;IAChB,MAAM,MAAM,MAAM,GAAG;IACrB,MAAM;IACP,EAAE;GAEH,IAAI,YAAY,kBAAkB,SAAS;AAC3C,eAAY,cAAc,IAAI,IAAI,IAAI;GACtC,MAAM,iBAAqC,SAAS,UAAU,CAAC,KAC5D,GAAG,WAAW;IACb,MAAM,QAAQ;IACd,MAAM;IACP,EACF;AACD,UAAO,kBAAkB,OAAO,eAAe;SAC1C;GACL,MAAM,WAAW,MAAM,KAAK,QAAQ,QAAQ,CAAC,KAAK;GAClD,MAAM,gBAAoC,qBACxC,MAAM,OACL,WAAW,iBAAiB,KAAK,EACnC,CAAC,KAAK,SAAS;IACd,MAAM;IACN,MAAM;IACP,EAAE;GACH,MAAM,mBAAuC,aAAa,MAAM,KAAK,CAAC,KACnE,SAAS;IACR,MAAM;IACN,MAAM;IACP,EACF;AACD,UAAO,CAAC,GAAG,eAAe,GAAG,iBAAiB;GAE9C,MAAM,gBAAoC,SADxB,KAAK,KAAK,SAAS,KAAK,GACmB,CAAC,KAC3D,GAAG,WAAW;IACb,MAAM,QAAQ;IACd,MAAM;IACP,EACF;AACD,UAAO,KAAK,OAAO,cAAc;;AAEnC,SAAO,YAAY,KAAK;GACxB;CAEF,MAAM,WAAW,eAAe;EAC9B,MAAM,QAAQ;AACd,MAAI,UAAU,EACZ,QAAO,UAAU,KAAK,MAAM,EAAE,uBAAuB,IAAI,CAAC;MAE1D,QAAO,UAAU,MAAM,MAAM,CAC1B,OAAO,UAAU,MAAM,GAAG,MAAM,CAAC,CACjC,KAAK,MAAM,EAAE,uBAAuB,IAAI,CAAC;GAE9C;CAEF,MAAM,oBAAoB,KAAa,SAAsC;AAC3E,UAAQ,MAAR;GACE,KAAK,OACH,QAAO,MAAM,KAAK,QAAQ,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,IAAI;GACnE,KAAK,OACH,QAAO,MAAM,KAAK,QAAQ,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,IAAI;GAC9D,KAAK,UACH,QAAO,MAAM,KAAK,KAAK,IAAI;;;CAIjC,MAAM,iBAAiB,EAAE,MAAM,WAA6B;AAE1D,OAAK,QADQ,iBAAiB,MAAM,KAAK,CACvB;;CAGpB,MAAM,eAAe,EAAE,MAAM,WAA6B;EACxD,MAAM,MAAM,iBAAiB,MAAM,KAAK;AACxC,SAAO;GACL,YAAY,IAAI,OAAO,MAAM,YAAY;GACzC,MAAM,GAAG,KAAK;GACd,KAAK,IAAI,OAAO,aAAa;GAC7B,MAAM,IAAI,QAAQ;GACnB;;AAGH,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
1
+ {"version":3,"file":"use-date-table.mjs","names":[],"sources":["../../../../../../packages/components/calendar/src/use-date-table.ts"],"sourcesContent":["import { computed } from 'vue'\nimport dayjs from 'dayjs'\nimport localeData from 'dayjs/plugin/localeData.js'\nimport { useLocale } from '@element-plus/hooks'\nimport {\n DEFAULT_FORMATS_DATE,\n rangeArr,\n} from '@element-plus/components/time-picker'\nimport { WEEK_DAYS } from '@element-plus/constants'\nimport { getMonthDays, getPrevMonthLastDays, toNestedArr } from './date-table'\n\nimport type { SetupContext } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type {\n CalendarDateCell,\n CalendarDateCellType,\n DateTableEmits,\n DateTableProps,\n} from './date-table'\n\nexport const useDateTable = (\n props: DateTableProps,\n emit: SetupContext<DateTableEmits>['emit']\n) => {\n dayjs.extend(localeData)\n // https://day.js.org/docs/en/i18n/locale-data\n const firstDayOfWeek: number = dayjs.localeData().firstDayOfWeek()\n\n const { t, lang } = useLocale()\n const now = dayjs().locale(lang.value)\n\n const isInRange = computed(() => !!props.range && !!props.range.length)\n\n const rows = computed(() => {\n let days: CalendarDateCell[] = []\n if (isInRange.value) {\n const [start, end] = props.range!\n const currentMonthRange: CalendarDateCell[] = rangeArr(\n end.date() - start.date() + 1\n ).map((index) => ({\n text: start.date() + index,\n type: 'current',\n }))\n\n let remaining = currentMonthRange.length % 7\n remaining = remaining === 0 ? 0 : 7 - remaining\n const nextMonthRange: CalendarDateCell[] = rangeArr(remaining).map(\n (_, index) => ({\n text: index + 1,\n type: 'next',\n })\n )\n days = currentMonthRange.concat(nextMonthRange)\n } else {\n const firstDay = props.date.startOf('month').day()\n const prevMonthDays: CalendarDateCell[] = getPrevMonthLastDays(\n props.date,\n (firstDay - firstDayOfWeek + 7) % 7\n ).map((day) => ({\n text: day,\n type: 'prev',\n }))\n const currentMonthDays: CalendarDateCell[] = getMonthDays(props.date).map(\n (day) => ({\n text: day,\n type: 'current',\n })\n )\n days = [...prevMonthDays, ...currentMonthDays]\n const remaining = 7 - (days.length % 7 || 7)\n const nextMonthDays: CalendarDateCell[] = rangeArr(remaining).map(\n (_, index) => ({\n text: index + 1,\n type: 'next',\n })\n )\n days = days.concat(nextMonthDays)\n }\n return toNestedArr(days)\n })\n\n const weekDays = computed(() => {\n const start = firstDayOfWeek\n if (start === 0) {\n return WEEK_DAYS.map((_) => t(`el.datepicker.weeks.${_}`))\n } else {\n return WEEK_DAYS.slice(start)\n .concat(WEEK_DAYS.slice(0, start))\n .map((_) => t(`el.datepicker.weeks.${_}`))\n }\n })\n\n const getFormattedDate = (day: number, type: CalendarDateCellType): Dayjs => {\n switch (type) {\n case 'prev':\n return props.date.startOf('month').subtract(1, 'month').date(day)\n case 'next':\n return props.date.startOf('month').add(1, 'month').date(day)\n case 'current':\n return props.date.date(day)\n }\n }\n\n const handlePickDay = ({ text, type }: CalendarDateCell) => {\n const date = getFormattedDate(text, type)\n emit('pick', date)\n }\n\n const getSlotData = ({ text, type }: CalendarDateCell) => {\n const day = getFormattedDate(text, type)\n return {\n isSelected: day.isSame(props.selectedDay),\n type: `${type}-month`,\n day: day.format(DEFAULT_FORMATS_DATE),\n date: day.toDate(),\n }\n }\n\n return {\n now,\n isInRange,\n rows,\n weekDays,\n getFormattedDate,\n handlePickDay,\n getSlotData,\n }\n}\n"],"mappings":";;;;;;;;;;AAoBA,MAAa,gBACX,OACA,SACG;AACH,OAAM,OAAO,WAAW;CAExB,MAAM,iBAAyB,MAAM,YAAY,CAAC,gBAAgB;CAElE,MAAM,EAAE,GAAG,SAAS,WAAW;CAC/B,MAAM,MAAM,OAAO,CAAC,OAAO,KAAK,MAAM;CAEtC,MAAM,YAAY,eAAe,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,MAAM,MAAM,OAAO;CAEvE,MAAM,OAAO,eAAe;EAC1B,IAAI,OAA2B,EAAE;AACjC,MAAI,UAAU,OAAO;GACnB,MAAM,CAAC,OAAO,OAAO,MAAM;GAC3B,MAAM,oBAAwC,SAC5C,IAAI,MAAM,GAAG,MAAM,MAAM,GAAG,EAC7B,CAAC,KAAK,WAAW;IAChB,MAAM,MAAM,MAAM,GAAG;IACrB,MAAM;IACP,EAAE;GAEH,IAAI,YAAY,kBAAkB,SAAS;AAC3C,eAAY,cAAc,IAAI,IAAI,IAAI;GACtC,MAAM,iBAAqC,SAAS,UAAU,CAAC,KAC5D,GAAG,WAAW;IACb,MAAM,QAAQ;IACd,MAAM;IACP,EACF;AACD,UAAO,kBAAkB,OAAO,eAAe;SAC1C;GACL,MAAM,WAAW,MAAM,KAAK,QAAQ,QAAQ,CAAC,KAAK;GAClD,MAAM,gBAAoC,qBACxC,MAAM,OACL,WAAW,iBAAiB,KAAK,EACnC,CAAC,KAAK,SAAS;IACd,MAAM;IACN,MAAM;IACP,EAAE;GACH,MAAM,mBAAuC,aAAa,MAAM,KAAK,CAAC,KACnE,SAAS;IACR,MAAM;IACN,MAAM;IACP,EACF;AACD,UAAO,CAAC,GAAG,eAAe,GAAG,iBAAiB;GAE9C,MAAM,gBAAoC,SADxB,KAAK,KAAK,SAAS,KAAK,GACmB,CAAC,KAC3D,GAAG,WAAW;IACb,MAAM,QAAQ;IACd,MAAM;IACP,EACF;AACD,UAAO,KAAK,OAAO,cAAc;;AAEnC,SAAO,YAAY,KAAK;GACxB;CAEF,MAAM,WAAW,eAAe;EAC9B,MAAM,QAAQ;AACd,MAAI,UAAU,EACZ,QAAO,UAAU,KAAK,MAAM,EAAE,uBAAuB,IAAI,CAAC;MAE1D,QAAO,UAAU,MAAM,MAAM,CAC1B,OAAO,UAAU,MAAM,GAAG,MAAM,CAAC,CACjC,KAAK,MAAM,EAAE,uBAAuB,IAAI,CAAC;GAE9C;CAEF,MAAM,oBAAoB,KAAa,SAAsC;AAC3E,UAAQ,MAAR;GACE,KAAK,OACH,QAAO,MAAM,KAAK,QAAQ,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,IAAI;GACnE,KAAK,OACH,QAAO,MAAM,KAAK,QAAQ,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,IAAI;GAC9D,KAAK,UACH,QAAO,MAAM,KAAK,KAAK,IAAI;;;CAIjC,MAAM,iBAAiB,EAAE,MAAM,WAA6B;AAE1D,OAAK,QADQ,iBAAiB,MAAM,KAAK,CACvB;;CAGpB,MAAM,eAAe,EAAE,MAAM,WAA6B;EACxD,MAAM,MAAM,iBAAiB,MAAM,KAAK;AACxC,SAAO;GACL,YAAY,IAAI,OAAO,MAAM,YAAY;GACzC,MAAM,GAAG,KAAK;GACd,KAAK,IAAI,OAAO,qBAAqB;GACrC,MAAM,IAAI,QAAQ;GACnB;;AAGH,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"panel-date-pick.mjs","names":[],"sources":["../../../../../../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n ppNs.b(),\n dpNs.b(),\n ppNs.is('border', border),\n ppNs.is('disabled', dateDisabled),\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n 'has-time': showTime,\n },\n ]\"\n >\n <div :class=\"ppNs.e('body-wrapper')\">\n <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n :disabled=\"dateDisabled\"\n :class=\"ppNs.e('shortcut')\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div :class=\"ppNs.e('body')\">\n <div v-if=\"showTime\" :class=\"dpNs.e('time-header')\">\n <span :class=\"dpNs.e('editor-wrap')\">\n <el-input\n :placeholder=\"t('el.datepicker.selectDate')\"\n :model-value=\"visibleDate\"\n size=\"small\"\n :validate-event=\"false\"\n :disabled=\"dateDisabled\"\n :readonly=\"!editable\"\n @input=\"(val) => (userInputDate = val)\"\n @change=\"handleVisibleDateChange\"\n />\n </span>\n <span\n v-click-outside=\"handleTimePickClose\"\n :class=\"dpNs.e('editor-wrap')\"\n >\n <el-input\n :placeholder=\"t('el.datepicker.selectTime')\"\n :model-value=\"visibleTime\"\n size=\"small\"\n :validate-event=\"false\"\n :disabled=\"dateDisabled\"\n :readonly=\"!editable\"\n @focus=\"onTimePickerInputFocus\"\n @input=\"(val) => (userInputTime = val)\"\n @change=\"handleVisibleTimeChange\"\n />\n <time-pick-panel\n :visible=\"timePickerVisible\"\n :format=\"timeFormat\"\n :parsed-value=\"innerDate\"\n @pick=\"handleTimePick\"\n />\n </span>\n </div>\n <div\n v-show=\"currentView !== 'time'\"\n :class=\"[\n dpNs.e('header'),\n (currentView === 'year' || currentView === 'month') &&\n dpNs.em('header', 'bordered'),\n ]\"\n >\n <span :class=\"dpNs.e('prev-btn')\">\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevYear`)\"\n class=\"d-arrow-left\"\n :class=\"ppNs.e('icon-btn')\"\n :disabled=\"dateDisabled\"\n @click=\"moveByYear(false)\"\n >\n <slot name=\"prev-year\">\n <el-icon><d-arrow-left /></el-icon>\n </slot>\n </button>\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevMonth`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"arrow-left\"\n :disabled=\"dateDisabled\"\n @click=\"moveByMonth(false)\"\n >\n <slot name=\"prev-month\">\n <el-icon><arrow-left /></el-icon>\n </slot>\n </button>\n </span>\n <span\n role=\"button\"\n :class=\"dpNs.e('header-label')\"\n aria-live=\"polite\"\n :tabindex=\"disabled ? undefined : 0\"\n :aria-disabled=\"disabled\"\n @keydown.enter=\"showPicker('year')\"\n @click=\"showPicker('year')\"\n >{{ yearLabel }}</span\n >\n <span\n v-show=\"currentView === 'date'\"\n role=\"button\"\n aria-live=\"polite\"\n :tabindex=\"disabled ? undefined : 0\"\n :aria-disabled=\"disabled\"\n :class=\"[\n dpNs.e('header-label'),\n { active: currentView === 'month' },\n ]\"\n @keydown.enter=\"showPicker('month')\"\n @click=\"showPicker('month')\"\n >{{ t(`el.datepicker.month${month + 1}`) }}</span\n >\n <span :class=\"dpNs.e('next-btn')\">\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextMonth`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"arrow-right\"\n :disabled=\"dateDisabled\"\n @click=\"moveByMonth(true)\"\n >\n <slot name=\"next-month\">\n <el-icon><arrow-right /></el-icon>\n </slot>\n </button>\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextYear`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"d-arrow-right\"\n :disabled=\"dateDisabled\"\n @click=\"moveByYear(true)\"\n >\n <slot name=\"next-year\">\n <el-icon><d-arrow-right /></el-icon>\n </slot>\n </button>\n </span>\n </div>\n <div :class=\"ppNs.e('content')\" @keydown=\"handleKeydownTable\">\n <date-table\n v-if=\"currentView === 'date'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :cell-class-name=\"cellClassName\"\n :show-week-number=\"showWeekNumber\"\n @pick=\"handleDatePick\"\n />\n <year-table\n v-if=\"currentView === 'year'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :parsed-value=\"parsedValue\"\n :cell-class-name=\"cellClassName\"\n @pick=\"handleYearPick\"\n />\n <month-table\n v-if=\"currentView === 'month'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :cell-class-name=\"cellClassName\"\n @pick=\"handleMonthPick\"\n />\n </div>\n </div>\n </div>\n <div\n v-if=\"showFooter && footerVisible && footerFilled\"\n :class=\"ppNs.e('footer')\"\n >\n <el-button\n v-show=\"!isMultipleType && showNow\"\n text\n size=\"small\"\n :class=\"ppNs.e('link-btn')\"\n :disabled=\"disabledNow\"\n @click=\"changeToNow\"\n >\n {{ t('el.datepicker.now') }}\n </el-button>\n <el-button\n v-if=\"showConfirm\"\n plain\n size=\"small\"\n :class=\"ppNs.e('link-btn')\"\n :disabled=\"disabledConfirm\"\n @click=\"onConfirm\"\n >\n {{ t('el.datepicker.confirm') }}\n </el-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n inject,\n nextTick,\n ref,\n toRef,\n useAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@element-plus/components/button'\nimport { ClickOutside as vClickOutside } from '@element-plus/directives'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport {\n DEFAULT_FORMATS_DATE,\n DEFAULT_FORMATS_TIME,\n PICKER_BASE_INJECTION_KEY,\n TimePickPanel,\n extractDateFormat,\n extractTimeFormat,\n} from '@element-plus/components/time-picker'\nimport { ElIcon } from '@element-plus/components/icon'\nimport {\n extractFirst,\n getEventCode,\n isArray,\n isFunction,\n} from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport {\n ArrowLeft,\n ArrowRight,\n DArrowLeft,\n DArrowRight,\n} from '@element-plus/icons-vue'\nimport { panelDatePickProps } from '../props/panel-date-pick'\nimport {\n correctlyParseUserInput,\n getValidDateOfMonth,\n getValidDateOfYear,\n} from '../utils'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport DateTable from './basic-date-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport YearTable from './basic-year-table.vue'\nimport { useFormDisabled } from '@element-plus/components/form'\n\nimport type { SetupContext } from 'vue'\nimport type { ConfigType, Dayjs } from 'dayjs'\nimport type { PanelDatePickProps } from '../props/panel-date-pick'\nimport type {\n DateTableEmits,\n DatesPickerEmits,\n MonthsPickerEmits,\n WeekPickerEmits,\n YearsPickerEmits,\n} from '../props/basic-date-table'\n\ntype DatePickType = PanelDatePickProps['type']\n// todo\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst timeWithinRange = (_: ConfigType, __: any, ___: string) => true\nconst props = defineProps(panelDatePickProps)\nconst contextEmit = defineEmits(['pick', 'set-picker-option', 'panel-change'])\nconst ppNs = useNamespace('picker-panel')\nconst dpNs = useNamespace('date-picker')\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst { t, lang } = useLocale()\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n undefined\n) as any\nconst { shortcuts, disabledDate, cellClassName, defaultTime } = pickerBase.props\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\n\nconst currentViewRef = ref<{ focus: () => void }>()\n\nconst innerDate = ref(dayjs().locale(lang.value))\n\nconst isChangeToNow = ref(false)\n\nlet isShortcut = false\n\nconst defaultTimeD = computed(() => {\n return dayjs(defaultTime).locale(lang.value)\n})\n\nconst month = computed(() => {\n return innerDate.value.month()\n})\n\nconst year = computed(() => {\n return innerDate.value.year()\n})\n\nconst selectableRange = ref([])\nconst userInputDate = ref<string | null>(null)\nconst userInputTime = ref<string | null>(null)\n// todo update to disableHour\nconst checkDateWithinRange = (date: ConfigType) => {\n return selectableRange.value.length > 0\n ? timeWithinRange(date, selectableRange.value, props.format || 'HH:mm:ss')\n : true\n}\nconst formatEmit = (emitDayjs: Dayjs) => {\n if (\n defaultTime &&\n !visibleTime.value &&\n !isChangeToNow.value &&\n !isShortcut\n ) {\n return defaultTimeD.value\n .year(emitDayjs.year())\n .month(emitDayjs.month())\n .date(emitDayjs.date())\n }\n if (showTime.value) return emitDayjs.millisecond(0)\n return emitDayjs.startOf('day')\n}\nconst emit = (value: Dayjs | Dayjs[], ...args: any[]) => {\n if (!value) {\n contextEmit('pick', value, ...args)\n } else if (isArray(value)) {\n const dates = value.map(formatEmit)\n contextEmit('pick', dates, ...args)\n } else {\n contextEmit('pick', formatEmit(value), ...args)\n }\n userInputDate.value = null\n userInputTime.value = null\n isChangeToNow.value = false\n isShortcut = false\n}\nconst handleDatePick = async (value: DateTableEmits, keepOpen?: boolean) => {\n if (selectionMode.value === 'date' && dayjs.isDayjs(value)) {\n const parsedDateValue = extractFirst(props.parsedValue)\n let newDate = parsedDateValue\n ? parsedDateValue\n .year(value.year())\n .month(value.month())\n .date(value.date())\n : value\n // change default time while out of selectableRange\n if (!checkDateWithinRange(newDate)) {\n newDate = (selectableRange.value[0][0] as Dayjs)\n .year(value.year())\n .month(value.month())\n .date(value.date())\n }\n innerDate.value = newDate\n emit(newDate, showTime.value || keepOpen)\n } else if (selectionMode.value === 'week') {\n emit((value as WeekPickerEmits).date)\n } else if (selectionMode.value === 'dates') {\n emit(value as DatesPickerEmits, true) // set true to keep panel open\n }\n}\n\nconst moveByMonth = (forward: boolean) => {\n const action = forward ? 'add' : 'subtract'\n innerDate.value = innerDate.value[action](1, 'month')\n handlePanelChange('month')\n}\n\nconst moveByYear = (forward: boolean) => {\n const currentDate = innerDate.value\n const action = forward ? 'add' : 'subtract'\n\n innerDate.value =\n currentView.value === 'year'\n ? currentDate[action](10, 'year')\n : currentDate[action](1, 'year')\n\n handlePanelChange('year')\n}\n\nconst currentView = ref('date')\n\nconst yearLabel = computed(() => {\n const yearTranslation = t('el.datepicker.year')\n if (currentView.value === 'year') {\n const startYear = Math.floor(year.value / 10) * 10\n if (yearTranslation) {\n return `${startYear} ${yearTranslation} - ${\n startYear + 9\n } ${yearTranslation}`\n }\n return `${startYear} - ${startYear + 9}`\n }\n return `${year.value} ${yearTranslation}`\n})\n\ntype Shortcut = {\n value: (() => Dayjs) | Dayjs\n onClick?: (ctx: Omit<SetupContext, 'expose'>) => void\n}\n\nconst handleShortcutClick = (shortcut: Shortcut) => {\n const shortcutValue = isFunction(shortcut.value)\n ? shortcut.value()\n : shortcut.value\n if (shortcutValue) {\n isShortcut = true\n emit(dayjs(shortcutValue).locale(lang.value))\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick({\n attrs,\n slots,\n emit: contextEmit as SetupContext['emit'],\n })\n }\n}\n\nconst selectionMode = computed<DatePickType>(() => {\n const { type } = props\n if (['week', 'month', 'months', 'year', 'years', 'dates'].includes(type))\n return type\n return 'date'\n})\n\nconst isMultipleType = computed(() => {\n return (\n selectionMode.value === 'dates' ||\n selectionMode.value === 'months' ||\n selectionMode.value === 'years'\n )\n})\n\nconst keyboardMode = computed<string>(() => {\n return selectionMode.value === 'date'\n ? currentView.value\n : selectionMode.value\n})\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst handleMonthPick = async (\n month: number | MonthsPickerEmits,\n keepOpen?: boolean\n) => {\n if (selectionMode.value === 'month') {\n innerDate.value = getValidDateOfMonth(\n innerDate.value,\n innerDate.value.year(),\n month as number,\n lang.value,\n disabledDate\n )\n emit(innerDate.value, false)\n } else if (selectionMode.value === 'months') {\n emit(month as MonthsPickerEmits, keepOpen ?? true)\n } else {\n innerDate.value = getValidDateOfMonth(\n innerDate.value,\n innerDate.value.year(),\n month as number,\n lang.value,\n disabledDate\n )\n currentView.value = 'date'\n if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n emit(innerDate.value, true)\n await nextTick()\n handleFocusPicker()\n }\n }\n handlePanelChange('month')\n}\n\nconst handleYearPick = async (\n year: number | YearsPickerEmits,\n keepOpen?: boolean\n) => {\n if (selectionMode.value === 'year') {\n const data = innerDate.value.startOf('year').year(year as number)\n innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n emit(innerDate.value, false)\n } else if (selectionMode.value === 'years') {\n emit(year as YearsPickerEmits, keepOpen ?? true)\n } else {\n const data = innerDate.value.year(year as number)\n innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n currentView.value = 'month'\n if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n emit(innerDate.value, true)\n await nextTick()\n handleFocusPicker()\n }\n }\n handlePanelChange('year')\n}\n\nconst dateDisabled = useFormDisabled()\n\nconst showPicker = async (view: 'month' | 'year') => {\n if (dateDisabled.value) return\n currentView.value = view\n await nextTick()\n handleFocusPicker()\n}\n\nconst showTime = computed(\n () => props.type === 'datetime' || props.type === 'datetimerange'\n)\n\nconst footerVisible = computed(() => {\n const showDateFooter = showTime.value || selectionMode.value === 'dates'\n const showYearFooter = selectionMode.value === 'years'\n const showMonthFooter = selectionMode.value === 'months'\n const isDateView = currentView.value === 'date'\n const isYearView = currentView.value === 'year'\n const isMonthView = currentView.value === 'month'\n return (\n (showDateFooter && isDateView) ||\n (showYearFooter && isYearView) ||\n (showMonthFooter && isMonthView)\n )\n})\n\nconst footerFilled = computed(\n () => (!isMultipleType.value && props.showNow) || props.showConfirm\n)\n\nconst disabledConfirm = computed(() => {\n if (!disabledDate) return false\n if (!props.parsedValue) return true\n if (isArray(props.parsedValue)) {\n return disabledDate(props.parsedValue[0].toDate())\n }\n return disabledDate(props.parsedValue.toDate())\n})\nconst onConfirm = () => {\n if (isMultipleType.value) {\n emit(props.parsedValue as Dayjs[])\n } else {\n // deal with the scenario where: user opens the date time picker, then confirm without doing anything\n let result = extractFirst(props.parsedValue)\n if (!result) {\n const defaultTimeD = dayjs(defaultTime).locale(lang.value)\n const defaultValueD = getDefaultValue()\n result = defaultTimeD\n .year(defaultValueD.year())\n .month(defaultValueD.month())\n .date(defaultValueD.date())\n }\n innerDate.value = result\n emit(result)\n }\n}\n\nconst disabledNow = computed(() => {\n if (!disabledDate) return false\n return disabledDate(dayjs().locale(lang.value).toDate())\n})\nconst changeToNow = () => {\n // NOTE: not a permanent solution\n // consider disable \"now\" button in the future\n const now = dayjs().locale(lang.value)\n const nowDate = now.toDate()\n isChangeToNow.value = true\n if (\n (!disabledDate || !disabledDate(nowDate)) &&\n checkDateWithinRange(nowDate)\n ) {\n innerDate.value = dayjs().locale(lang.value)\n emit(innerDate.value)\n }\n}\n\nconst timeFormat = computed(() => {\n return (\n props.timeFormat || extractTimeFormat(props.format) || DEFAULT_FORMATS_TIME\n )\n})\n\nconst dateFormat = computed(() => {\n return (\n props.dateFormat || extractDateFormat(props.format) || DEFAULT_FORMATS_DATE\n )\n})\n\nconst visibleTime = computed(() => {\n if (userInputTime.value) return userInputTime.value\n if (!props.parsedValue && !defaultValue.value) return\n const dateValue = extractFirst(props.parsedValue) || innerDate.value\n return dateValue.format(timeFormat.value)\n})\n\nconst visibleDate = computed(() => {\n if (userInputDate.value) return userInputDate.value\n if (!props.parsedValue && !defaultValue.value) return\n const dateValue = extractFirst(props.parsedValue) || innerDate.value\n return dateValue.format(dateFormat.value)\n})\n\nconst timePickerVisible = ref(false)\nconst onTimePickerInputFocus = () => {\n timePickerVisible.value = true\n}\nconst handleTimePickClose = () => {\n timePickerVisible.value = false\n}\n\nconst getUnits = (date: Dayjs) => {\n return {\n hour: date.hour(),\n minute: date.minute(),\n second: date.second(),\n year: date.year(),\n month: date.month(),\n date: date.date(),\n }\n}\n\nconst handleTimePick = (value: Dayjs, visible: boolean, first: boolean) => {\n const { hour, minute, second } = getUnits(value)\n const parsedDateValue = extractFirst(props.parsedValue)\n const newDate = parsedDateValue\n ? parsedDateValue.hour(hour).minute(minute).second(second)\n : value\n innerDate.value = newDate\n emit(innerDate.value, true)\n if (!first) {\n timePickerVisible.value = visible\n }\n}\n\nconst handleVisibleTimeChange = (value: string) => {\n const newDate = dayjs(value, timeFormat.value).locale(lang.value)\n if (newDate.isValid() && checkDateWithinRange(newDate)) {\n const { year, month, date } = getUnits(innerDate.value)\n innerDate.value = newDate.year(year).month(month).date(date)\n userInputTime.value = null\n timePickerVisible.value = false\n emit(innerDate.value, true)\n }\n}\n\nconst handleVisibleDateChange = (value: string) => {\n const newDate = correctlyParseUserInput(\n value,\n dateFormat.value,\n lang.value,\n isDefaultFormat\n ) as Dayjs\n if (newDate.isValid()) {\n if (disabledDate && disabledDate(newDate.toDate())) {\n return\n }\n const { hour, minute, second } = getUnits(innerDate.value)\n innerDate.value = newDate.hour(hour).minute(minute).second(second)\n userInputDate.value = null\n emit(innerDate.value, true)\n }\n}\n\nconst isValidValue = (date: unknown) => {\n return (\n dayjs.isDayjs(date) &&\n date.isValid() &&\n (disabledDate ? !disabledDate(date.toDate()) : true)\n )\n}\n\nconst parseUserInput = (value: Dayjs) => {\n return correctlyParseUserInput(\n value,\n props.format,\n lang.value,\n isDefaultFormat\n )\n}\n\nconst getDefaultValue = () => {\n const parseDate = dayjs(defaultValue.value).locale(lang.value)\n if (!defaultValue.value) {\n const defaultTimeDValue = defaultTimeD.value\n return dayjs()\n .hour(defaultTimeDValue.hour())\n .minute(defaultTimeDValue.minute())\n .second(defaultTimeDValue.second())\n .locale(lang.value)\n }\n return parseDate\n}\n\nconst handleFocusPicker = () => {\n if (['week', 'month', 'year', 'date'].includes(selectionMode.value)) {\n currentViewRef.value?.focus()\n }\n}\n\nconst _handleFocusPicker = () => {\n handleFocusPicker()\n // TODO: After focus the date input, the first time you use the ArrowDown keys, you cannot focus on the date cell\n if (selectionMode.value === 'week') {\n handleKeyControl(EVENT_CODE.down)\n }\n}\n\nconst handleKeydownTable = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n\n const validCode = [\n EVENT_CODE.up,\n EVENT_CODE.down,\n EVENT_CODE.left,\n EVENT_CODE.right,\n EVENT_CODE.home,\n EVENT_CODE.end,\n EVENT_CODE.pageUp,\n EVENT_CODE.pageDown,\n ]\n if (validCode.includes(code)) {\n handleKeyControl(code)\n event.stopPropagation()\n event.preventDefault()\n }\n if (\n [EVENT_CODE.enter, EVENT_CODE.space, EVENT_CODE.numpadEnter].includes(\n code\n ) &&\n userInputDate.value === null &&\n userInputTime.value === null\n ) {\n event.preventDefault()\n emit(innerDate.value, false)\n }\n}\n\nconst handleKeyControl = (code: string) => {\n type KeyControlMappingCallableOffset = (date: Date, step?: number) => number\n type KeyControl = {\n [key: string]:\n | number\n | KeyControlMappingCallableOffset\n | ((date: Date, step: number) => any)\n offset: (date: Date, step: number) => any\n }\n interface KeyControlMapping {\n [key: string]: KeyControl\n }\n\n const { up, down, left, right, home, end, pageUp, pageDown } = EVENT_CODE\n const mapping: KeyControlMapping = {\n year: {\n [up]: -4,\n [down]: 4,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setFullYear(date.getFullYear() + step),\n },\n month: {\n [up]: -4,\n [down]: 4,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setMonth(date.getMonth() + step),\n },\n week: {\n [up]: -1,\n [down]: 1,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setDate(date.getDate() + step * 7),\n },\n date: {\n [up]: -7,\n [down]: 7,\n [left]: -1,\n [right]: 1,\n [home]: (date: Date) => -date.getDay(),\n [end]: (date: Date) => -date.getDay() + 6,\n [pageUp]: (date: Date) =>\n -new Date(date.getFullYear(), date.getMonth(), 0).getDate(),\n [pageDown]: (date: Date) =>\n new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(),\n offset: (date: Date, step: number) => date.setDate(date.getDate() + step),\n },\n }\n\n const newDate = innerDate.value.toDate()\n while (Math.abs(innerDate.value.diff(newDate, 'year', true)) < 1) {\n const map = mapping[keyboardMode.value]\n if (!map) return\n map.offset(\n newDate,\n isFunction(map[code])\n ? (map[code] as unknown as KeyControlMappingCallableOffset)(newDate)\n : ((map[code] as number) ?? 0)\n )\n if (disabledDate && disabledDate(newDate)) {\n break\n }\n const result = dayjs(newDate).locale(lang.value)\n innerDate.value = result\n contextEmit('pick', result, true)\n break\n }\n}\n\nconst handlePanelChange = (mode: 'month' | 'year') => {\n contextEmit('panel-change', innerDate.value.toDate(), mode, currentView.value)\n}\n\nwatch(\n () => selectionMode.value,\n (val) => {\n if (['month', 'year'].includes(val)) {\n currentView.value = val\n return\n } else if (val === 'years') {\n currentView.value = 'year'\n return\n } else if (val === 'months') {\n currentView.value = 'month'\n return\n }\n currentView.value = 'date'\n },\n { immediate: true }\n)\n\nwatch(\n () => defaultValue.value,\n (val) => {\n if (val) {\n innerDate.value = getDefaultValue()\n }\n },\n { immediate: true }\n)\n\nwatch(\n () => props.parsedValue,\n (val) => {\n if (val) {\n if (isMultipleType.value) return\n if (isArray(val)) return\n innerDate.value = val\n } else {\n innerDate.value = getDefaultValue()\n }\n },\n { immediate: true }\n)\n\ncontextEmit('set-picker-option', ['isValidValue', isValidValue])\ncontextEmit('set-picker-option', ['parseUserInput', parseUserInput])\ncontextEmit('set-picker-option', ['handleFocusPicker', _handleFocusPicker])\n</script>\n"],"mappings":""}
1
+ {"version":3,"file":"panel-date-pick.mjs","names":[],"sources":["../../../../../../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n ppNs.b(),\n dpNs.b(),\n ppNs.is('border', border),\n ppNs.is('disabled', dateDisabled),\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n 'has-time': showTime,\n },\n ]\"\n >\n <div :class=\"ppNs.e('body-wrapper')\">\n <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n :disabled=\"dateDisabled\"\n :class=\"ppNs.e('shortcut')\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div :class=\"ppNs.e('body')\">\n <div v-if=\"showTime\" :class=\"dpNs.e('time-header')\">\n <span :class=\"dpNs.e('editor-wrap')\">\n <el-input\n :placeholder=\"t('el.datepicker.selectDate')\"\n :model-value=\"visibleDate\"\n size=\"small\"\n :validate-event=\"false\"\n :disabled=\"dateDisabled\"\n :readonly=\"!editable\"\n @input=\"(val) => (userInputDate = val)\"\n @change=\"handleVisibleDateChange\"\n />\n </span>\n <span\n v-click-outside=\"handleTimePickClose\"\n :class=\"dpNs.e('editor-wrap')\"\n >\n <el-input\n :placeholder=\"t('el.datepicker.selectTime')\"\n :model-value=\"visibleTime\"\n size=\"small\"\n :validate-event=\"false\"\n :disabled=\"dateDisabled\"\n :readonly=\"!editable\"\n @focus=\"onTimePickerInputFocus\"\n @input=\"(val) => (userInputTime = val)\"\n @change=\"handleVisibleTimeChange\"\n />\n <time-pick-panel\n :visible=\"timePickerVisible\"\n :format=\"timeFormat\"\n :parsed-value=\"innerDate\"\n @pick=\"handleTimePick\"\n />\n </span>\n </div>\n <div\n v-show=\"currentView !== 'time'\"\n :class=\"[\n dpNs.e('header'),\n (currentView === 'year' || currentView === 'month') &&\n dpNs.em('header', 'bordered'),\n ]\"\n >\n <span :class=\"dpNs.e('prev-btn')\">\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevYear`)\"\n class=\"d-arrow-left\"\n :class=\"ppNs.e('icon-btn')\"\n :disabled=\"dateDisabled\"\n @click=\"moveByYear(false)\"\n >\n <slot name=\"prev-year\">\n <el-icon><d-arrow-left /></el-icon>\n </slot>\n </button>\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevMonth`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"arrow-left\"\n :disabled=\"dateDisabled\"\n @click=\"moveByMonth(false)\"\n >\n <slot name=\"prev-month\">\n <el-icon><arrow-left /></el-icon>\n </slot>\n </button>\n </span>\n <span\n role=\"button\"\n :class=\"dpNs.e('header-label')\"\n aria-live=\"polite\"\n :tabindex=\"disabled ? undefined : 0\"\n :aria-disabled=\"disabled\"\n @keydown.enter=\"showPicker('year')\"\n @click=\"showPicker('year')\"\n >{{ yearLabel }}</span\n >\n <span\n v-show=\"currentView === 'date'\"\n role=\"button\"\n aria-live=\"polite\"\n :tabindex=\"disabled ? undefined : 0\"\n :aria-disabled=\"disabled\"\n :class=\"[\n dpNs.e('header-label'),\n { active: currentView === 'month' },\n ]\"\n @keydown.enter=\"showPicker('month')\"\n @click=\"showPicker('month')\"\n >{{ t(`el.datepicker.month${month + 1}`) }}</span\n >\n <span :class=\"dpNs.e('next-btn')\">\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextMonth`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"arrow-right\"\n :disabled=\"dateDisabled\"\n @click=\"moveByMonth(true)\"\n >\n <slot name=\"next-month\">\n <el-icon><arrow-right /></el-icon>\n </slot>\n </button>\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextYear`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"d-arrow-right\"\n :disabled=\"dateDisabled\"\n @click=\"moveByYear(true)\"\n >\n <slot name=\"next-year\">\n <el-icon><d-arrow-right /></el-icon>\n </slot>\n </button>\n </span>\n </div>\n <div :class=\"ppNs.e('content')\" @keydown=\"handleKeydownTable\">\n <date-table\n v-if=\"currentView === 'date'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :cell-class-name=\"cellClassName\"\n :show-week-number=\"showWeekNumber\"\n @pick=\"handleDatePick\"\n />\n <year-table\n v-if=\"currentView === 'year'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :parsed-value=\"parsedValue\"\n :cell-class-name=\"cellClassName\"\n @pick=\"handleYearPick\"\n />\n <month-table\n v-if=\"currentView === 'month'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :cell-class-name=\"cellClassName\"\n @pick=\"handleMonthPick\"\n />\n </div>\n </div>\n </div>\n <div\n v-if=\"showFooter && footerVisible && footerFilled\"\n :class=\"ppNs.e('footer')\"\n >\n <el-button\n v-show=\"!isMultipleType && showNow\"\n text\n size=\"small\"\n :class=\"ppNs.e('link-btn')\"\n :disabled=\"disabledNow\"\n @click=\"changeToNow\"\n >\n {{ t('el.datepicker.now') }}\n </el-button>\n <el-button\n v-if=\"showConfirm\"\n plain\n size=\"small\"\n :class=\"ppNs.e('link-btn')\"\n :disabled=\"disabledConfirm\"\n @click=\"onConfirm\"\n >\n {{ t('el.datepicker.confirm') }}\n </el-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n inject,\n nextTick,\n ref,\n toRef,\n useAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@element-plus/components/button'\nimport { ClickOutside as vClickOutside } from '@element-plus/directives'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport {\n DEFAULT_FORMATS_DATE,\n DEFAULT_FORMATS_TIME,\n PICKER_BASE_INJECTION_KEY,\n TimePickPanel,\n extractDateFormat,\n extractTimeFormat,\n} from '@element-plus/components/time-picker'\nimport { ElIcon } from '@element-plus/components/icon'\nimport {\n extractFirst,\n getEventCode,\n isArray,\n isFunction,\n} from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport {\n ArrowLeft,\n ArrowRight,\n DArrowLeft,\n DArrowRight,\n} from '@element-plus/icons-vue'\nimport { panelDatePickProps } from '../props/panel-date-pick'\nimport {\n correctlyParseUserInput,\n getValidDateOfMonth,\n getValidDateOfYear,\n} from '../utils'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport DateTable from './basic-date-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport YearTable from './basic-year-table.vue'\nimport { useFormDisabled } from '@element-plus/components/form'\n\nimport type { SetupContext } from 'vue'\nimport type { ConfigType, Dayjs } from 'dayjs'\nimport type { PanelDatePickProps } from '../props/panel-date-pick'\nimport type {\n DateTableEmits,\n DatesPickerEmits,\n MonthsPickerEmits,\n WeekPickerEmits,\n YearsPickerEmits,\n} from '../props/basic-date-table'\n\ntype DatePickType = PanelDatePickProps['type']\n// todo\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst timeWithinRange = (_: ConfigType, __: any, ___: string) => true\nconst props = defineProps(panelDatePickProps)\nconst contextEmit = defineEmits(['pick', 'set-picker-option', 'panel-change'])\nconst ppNs = useNamespace('picker-panel')\nconst dpNs = useNamespace('date-picker')\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst { t, lang } = useLocale()\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n undefined\n) as any\nconst { shortcuts, disabledDate, cellClassName, defaultTime } = pickerBase.props\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\n\nconst currentViewRef = ref<{ focus: () => void }>()\n\nconst innerDate = ref(dayjs().locale(lang.value))\n\nconst isChangeToNow = ref(false)\n\nlet isShortcut = false\n\nconst defaultTimeD = computed(() => {\n return dayjs(defaultTime).locale(lang.value)\n})\n\nconst month = computed(() => {\n return innerDate.value.month()\n})\n\nconst year = computed(() => {\n return innerDate.value.year()\n})\n\nconst selectableRange = ref([])\nconst userInputDate = ref<string | null>(null)\nconst userInputTime = ref<string | null>(null)\n// todo update to disableHour\nconst checkDateWithinRange = (date: ConfigType) => {\n return selectableRange.value.length > 0\n ? timeWithinRange(\n date,\n selectableRange.value,\n props.format || DEFAULT_FORMATS_TIME\n )\n : true\n}\nconst formatEmit = (emitDayjs: Dayjs) => {\n if (\n defaultTime &&\n !visibleTime.value &&\n !isChangeToNow.value &&\n !isShortcut\n ) {\n return defaultTimeD.value\n .year(emitDayjs.year())\n .month(emitDayjs.month())\n .date(emitDayjs.date())\n }\n if (showTime.value) return emitDayjs.millisecond(0)\n return emitDayjs.startOf('day')\n}\nconst emit = (value: Dayjs | Dayjs[], ...args: any[]) => {\n if (!value) {\n contextEmit('pick', value, ...args)\n } else if (isArray(value)) {\n const dates = value.map(formatEmit)\n contextEmit('pick', dates, ...args)\n } else {\n contextEmit('pick', formatEmit(value), ...args)\n }\n userInputDate.value = null\n userInputTime.value = null\n isChangeToNow.value = false\n isShortcut = false\n}\nconst handleDatePick = async (value: DateTableEmits, keepOpen?: boolean) => {\n if (selectionMode.value === 'date' && dayjs.isDayjs(value)) {\n const parsedDateValue = extractFirst(props.parsedValue)\n let newDate = parsedDateValue\n ? parsedDateValue\n .year(value.year())\n .month(value.month())\n .date(value.date())\n : value\n // change default time while out of selectableRange\n if (!checkDateWithinRange(newDate)) {\n newDate = (selectableRange.value[0][0] as Dayjs)\n .year(value.year())\n .month(value.month())\n .date(value.date())\n }\n innerDate.value = newDate\n emit(newDate, showTime.value || keepOpen)\n } else if (selectionMode.value === 'week') {\n emit((value as WeekPickerEmits).date)\n } else if (selectionMode.value === 'dates') {\n emit(value as DatesPickerEmits, true) // set true to keep panel open\n }\n}\n\nconst moveByMonth = (forward: boolean) => {\n const action = forward ? 'add' : 'subtract'\n innerDate.value = innerDate.value[action](1, 'month')\n handlePanelChange('month')\n}\n\nconst moveByYear = (forward: boolean) => {\n const currentDate = innerDate.value\n const action = forward ? 'add' : 'subtract'\n\n innerDate.value =\n currentView.value === 'year'\n ? currentDate[action](10, 'year')\n : currentDate[action](1, 'year')\n\n handlePanelChange('year')\n}\n\nconst currentView = ref('date')\n\nconst yearLabel = computed(() => {\n const yearTranslation = t('el.datepicker.year')\n if (currentView.value === 'year') {\n const startYear = Math.floor(year.value / 10) * 10\n if (yearTranslation) {\n return `${startYear} ${yearTranslation} - ${\n startYear + 9\n } ${yearTranslation}`\n }\n return `${startYear} - ${startYear + 9}`\n }\n return `${year.value} ${yearTranslation}`\n})\n\ntype Shortcut = {\n value: (() => Dayjs) | Dayjs\n onClick?: (ctx: Omit<SetupContext, 'expose'>) => void\n}\n\nconst handleShortcutClick = (shortcut: Shortcut) => {\n const shortcutValue = isFunction(shortcut.value)\n ? shortcut.value()\n : shortcut.value\n if (shortcutValue) {\n isShortcut = true\n emit(dayjs(shortcutValue).locale(lang.value))\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick({\n attrs,\n slots,\n emit: contextEmit as SetupContext['emit'],\n })\n }\n}\n\nconst selectionMode = computed<DatePickType>(() => {\n const { type } = props\n if (['week', 'month', 'months', 'year', 'years', 'dates'].includes(type))\n return type\n return 'date'\n})\n\nconst isMultipleType = computed(() => {\n return (\n selectionMode.value === 'dates' ||\n selectionMode.value === 'months' ||\n selectionMode.value === 'years'\n )\n})\n\nconst keyboardMode = computed<string>(() => {\n return selectionMode.value === 'date'\n ? currentView.value\n : selectionMode.value\n})\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst handleMonthPick = async (\n month: number | MonthsPickerEmits,\n keepOpen?: boolean\n) => {\n if (selectionMode.value === 'month') {\n innerDate.value = getValidDateOfMonth(\n innerDate.value,\n innerDate.value.year(),\n month as number,\n lang.value,\n disabledDate\n )\n emit(innerDate.value, false)\n } else if (selectionMode.value === 'months') {\n emit(month as MonthsPickerEmits, keepOpen ?? true)\n } else {\n innerDate.value = getValidDateOfMonth(\n innerDate.value,\n innerDate.value.year(),\n month as number,\n lang.value,\n disabledDate\n )\n currentView.value = 'date'\n if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n emit(innerDate.value, true)\n await nextTick()\n handleFocusPicker()\n }\n }\n handlePanelChange('month')\n}\n\nconst handleYearPick = async (\n year: number | YearsPickerEmits,\n keepOpen?: boolean\n) => {\n if (selectionMode.value === 'year') {\n const data = innerDate.value.startOf('year').year(year as number)\n innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n emit(innerDate.value, false)\n } else if (selectionMode.value === 'years') {\n emit(year as YearsPickerEmits, keepOpen ?? true)\n } else {\n const data = innerDate.value.year(year as number)\n innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n currentView.value = 'month'\n if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n emit(innerDate.value, true)\n await nextTick()\n handleFocusPicker()\n }\n }\n handlePanelChange('year')\n}\n\nconst dateDisabled = useFormDisabled()\n\nconst showPicker = async (view: 'month' | 'year') => {\n if (dateDisabled.value) return\n currentView.value = view\n await nextTick()\n handleFocusPicker()\n}\n\nconst showTime = computed(\n () => props.type === 'datetime' || props.type === 'datetimerange'\n)\n\nconst footerVisible = computed(() => {\n const showDateFooter = showTime.value || selectionMode.value === 'dates'\n const showYearFooter = selectionMode.value === 'years'\n const showMonthFooter = selectionMode.value === 'months'\n const isDateView = currentView.value === 'date'\n const isYearView = currentView.value === 'year'\n const isMonthView = currentView.value === 'month'\n return (\n (showDateFooter && isDateView) ||\n (showYearFooter && isYearView) ||\n (showMonthFooter && isMonthView)\n )\n})\n\nconst footerFilled = computed(\n () => (!isMultipleType.value && props.showNow) || props.showConfirm\n)\n\nconst disabledConfirm = computed(() => {\n if (!disabledDate) return false\n if (!props.parsedValue) return true\n if (isArray(props.parsedValue)) {\n return disabledDate(props.parsedValue[0].toDate())\n }\n return disabledDate(props.parsedValue.toDate())\n})\nconst onConfirm = () => {\n if (isMultipleType.value) {\n emit(props.parsedValue as Dayjs[])\n } else {\n // deal with the scenario where: user opens the date time picker, then confirm without doing anything\n let result = extractFirst(props.parsedValue)\n if (!result) {\n const defaultTimeD = dayjs(defaultTime).locale(lang.value)\n const defaultValueD = getDefaultValue()\n result = defaultTimeD\n .year(defaultValueD.year())\n .month(defaultValueD.month())\n .date(defaultValueD.date())\n }\n innerDate.value = result\n emit(result)\n }\n}\n\nconst disabledNow = computed(() => {\n if (!disabledDate) return false\n return disabledDate(dayjs().locale(lang.value).toDate())\n})\nconst changeToNow = () => {\n // NOTE: not a permanent solution\n // consider disable \"now\" button in the future\n const now = dayjs().locale(lang.value)\n const nowDate = now.toDate()\n isChangeToNow.value = true\n if (\n (!disabledDate || !disabledDate(nowDate)) &&\n checkDateWithinRange(nowDate)\n ) {\n innerDate.value = dayjs().locale(lang.value)\n emit(innerDate.value)\n }\n}\n\nconst timeFormat = computed(() => {\n return (\n props.timeFormat || extractTimeFormat(props.format) || DEFAULT_FORMATS_TIME\n )\n})\n\nconst dateFormat = computed(() => {\n return (\n props.dateFormat || extractDateFormat(props.format) || DEFAULT_FORMATS_DATE\n )\n})\n\nconst visibleTime = computed(() => {\n if (userInputTime.value) return userInputTime.value\n if (!props.parsedValue && !defaultValue.value) return\n const dateValue = extractFirst(props.parsedValue) || innerDate.value\n return dateValue.format(timeFormat.value)\n})\n\nconst visibleDate = computed(() => {\n if (userInputDate.value) return userInputDate.value\n if (!props.parsedValue && !defaultValue.value) return\n const dateValue = extractFirst(props.parsedValue) || innerDate.value\n return dateValue.format(dateFormat.value)\n})\n\nconst timePickerVisible = ref(false)\nconst onTimePickerInputFocus = () => {\n timePickerVisible.value = true\n}\nconst handleTimePickClose = () => {\n timePickerVisible.value = false\n}\n\nconst getUnits = (date: Dayjs) => {\n return {\n hour: date.hour(),\n minute: date.minute(),\n second: date.second(),\n year: date.year(),\n month: date.month(),\n date: date.date(),\n }\n}\n\nconst handleTimePick = (value: Dayjs, visible: boolean, first: boolean) => {\n const { hour, minute, second } = getUnits(value)\n const parsedDateValue = extractFirst(props.parsedValue)\n const newDate = parsedDateValue\n ? parsedDateValue.hour(hour).minute(minute).second(second)\n : value\n innerDate.value = newDate\n emit(innerDate.value, true)\n if (!first) {\n timePickerVisible.value = visible\n }\n}\n\nconst handleVisibleTimeChange = (value: string) => {\n const newDate = dayjs(value, timeFormat.value).locale(lang.value)\n if (newDate.isValid() && checkDateWithinRange(newDate)) {\n const { year, month, date } = getUnits(innerDate.value)\n innerDate.value = newDate.year(year).month(month).date(date)\n userInputTime.value = null\n timePickerVisible.value = false\n emit(innerDate.value, true)\n }\n}\n\nconst handleVisibleDateChange = (value: string) => {\n const newDate = correctlyParseUserInput(\n value,\n dateFormat.value,\n lang.value,\n isDefaultFormat\n ) as Dayjs\n if (newDate.isValid()) {\n if (disabledDate && disabledDate(newDate.toDate())) {\n return\n }\n const { hour, minute, second } = getUnits(innerDate.value)\n innerDate.value = newDate.hour(hour).minute(minute).second(second)\n userInputDate.value = null\n emit(innerDate.value, true)\n }\n}\n\nconst isValidValue = (date: unknown) => {\n return (\n dayjs.isDayjs(date) &&\n date.isValid() &&\n (disabledDate ? !disabledDate(date.toDate()) : true)\n )\n}\n\nconst parseUserInput = (value: Dayjs) => {\n return correctlyParseUserInput(\n value,\n props.format,\n lang.value,\n isDefaultFormat\n )\n}\n\nconst getDefaultValue = () => {\n const parseDate = dayjs(defaultValue.value).locale(lang.value)\n if (!defaultValue.value) {\n const defaultTimeDValue = defaultTimeD.value\n return dayjs()\n .hour(defaultTimeDValue.hour())\n .minute(defaultTimeDValue.minute())\n .second(defaultTimeDValue.second())\n .locale(lang.value)\n }\n return parseDate\n}\n\nconst handleFocusPicker = () => {\n if (['week', 'month', 'year', 'date'].includes(selectionMode.value)) {\n currentViewRef.value?.focus()\n }\n}\n\nconst _handleFocusPicker = () => {\n handleFocusPicker()\n // TODO: After focus the date input, the first time you use the ArrowDown keys, you cannot focus on the date cell\n if (selectionMode.value === 'week') {\n handleKeyControl(EVENT_CODE.down)\n }\n}\n\nconst handleKeydownTable = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n\n const validCode = [\n EVENT_CODE.up,\n EVENT_CODE.down,\n EVENT_CODE.left,\n EVENT_CODE.right,\n EVENT_CODE.home,\n EVENT_CODE.end,\n EVENT_CODE.pageUp,\n EVENT_CODE.pageDown,\n ]\n if (validCode.includes(code)) {\n handleKeyControl(code)\n event.stopPropagation()\n event.preventDefault()\n }\n if (\n [EVENT_CODE.enter, EVENT_CODE.space, EVENT_CODE.numpadEnter].includes(\n code\n ) &&\n userInputDate.value === null &&\n userInputTime.value === null\n ) {\n event.preventDefault()\n emit(innerDate.value, false)\n }\n}\n\nconst handleKeyControl = (code: string) => {\n type KeyControlMappingCallableOffset = (date: Date, step?: number) => number\n type KeyControl = {\n [key: string]:\n | number\n | KeyControlMappingCallableOffset\n | ((date: Date, step: number) => any)\n offset: (date: Date, step: number) => any\n }\n interface KeyControlMapping {\n [key: string]: KeyControl\n }\n\n const { up, down, left, right, home, end, pageUp, pageDown } = EVENT_CODE\n const mapping: KeyControlMapping = {\n year: {\n [up]: -4,\n [down]: 4,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setFullYear(date.getFullYear() + step),\n },\n month: {\n [up]: -4,\n [down]: 4,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setMonth(date.getMonth() + step),\n },\n week: {\n [up]: -1,\n [down]: 1,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setDate(date.getDate() + step * 7),\n },\n date: {\n [up]: -7,\n [down]: 7,\n [left]: -1,\n [right]: 1,\n [home]: (date: Date) => -date.getDay(),\n [end]: (date: Date) => -date.getDay() + 6,\n [pageUp]: (date: Date) =>\n -new Date(date.getFullYear(), date.getMonth(), 0).getDate(),\n [pageDown]: (date: Date) =>\n new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(),\n offset: (date: Date, step: number) => date.setDate(date.getDate() + step),\n },\n }\n\n const newDate = innerDate.value.toDate()\n while (Math.abs(innerDate.value.diff(newDate, 'year', true)) < 1) {\n const map = mapping[keyboardMode.value]\n if (!map) return\n map.offset(\n newDate,\n isFunction(map[code])\n ? (map[code] as unknown as KeyControlMappingCallableOffset)(newDate)\n : ((map[code] as number) ?? 0)\n )\n if (disabledDate && disabledDate(newDate)) {\n break\n }\n const result = dayjs(newDate).locale(lang.value)\n innerDate.value = result\n contextEmit('pick', result, true)\n break\n }\n}\n\nconst handlePanelChange = (mode: 'month' | 'year') => {\n contextEmit('panel-change', innerDate.value.toDate(), mode, currentView.value)\n}\n\nwatch(\n () => selectionMode.value,\n (val) => {\n if (['month', 'year'].includes(val)) {\n currentView.value = val\n return\n } else if (val === 'years') {\n currentView.value = 'year'\n return\n } else if (val === 'months') {\n currentView.value = 'month'\n return\n }\n currentView.value = 'date'\n },\n { immediate: true }\n)\n\nwatch(\n () => defaultValue.value,\n (val) => {\n if (val) {\n innerDate.value = getDefaultValue()\n }\n },\n { immediate: true }\n)\n\nwatch(\n () => props.parsedValue,\n (val) => {\n if (val) {\n if (isMultipleType.value) return\n if (isArray(val)) return\n innerDate.value = val\n } else {\n innerDate.value = getDefaultValue()\n }\n },\n { immediate: true }\n)\n\ncontextEmit('set-picker-option', ['isValidValue', isValidValue])\ncontextEmit('set-picker-option', ['parseUserInput', parseUserInput])\ncontextEmit('set-picker-option', ['handleFocusPicker', _handleFocusPicker])\n</script>\n"],"mappings":""}
@@ -68,7 +68,7 @@ var panel_date_pick_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
68
68
  const userInputDate = ref(null);
69
69
  const userInputTime = ref(null);
70
70
  const checkDateWithinRange = (date) => {
71
- return selectableRange.value.length > 0 ? timeWithinRange(date, selectableRange.value, props.format || "HH:mm:ss") : true;
71
+ return selectableRange.value.length > 0 ? timeWithinRange(date, selectableRange.value, props.format || DEFAULT_FORMATS_TIME) : true;
72
72
  };
73
73
  const formatEmit = (emitDayjs) => {
74
74
  if (defaultTime && !visibleTime.value && !isChangeToNow.value && !isShortcut) return defaultTimeD.value.year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date());
@@ -1 +1 @@
1
- {"version":3,"file":"panel-date-pick.vue_vue_type_script_setup_true_lang.mjs","names":["border","$slots","editable","disabled","parsedValue","showWeekNumber","showFooter","showNow","showConfirm"],"sources":["../../../../../../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n ppNs.b(),\n dpNs.b(),\n ppNs.is('border', border),\n ppNs.is('disabled', dateDisabled),\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n 'has-time': showTime,\n },\n ]\"\n >\n <div :class=\"ppNs.e('body-wrapper')\">\n <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n :disabled=\"dateDisabled\"\n :class=\"ppNs.e('shortcut')\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div :class=\"ppNs.e('body')\">\n <div v-if=\"showTime\" :class=\"dpNs.e('time-header')\">\n <span :class=\"dpNs.e('editor-wrap')\">\n <el-input\n :placeholder=\"t('el.datepicker.selectDate')\"\n :model-value=\"visibleDate\"\n size=\"small\"\n :validate-event=\"false\"\n :disabled=\"dateDisabled\"\n :readonly=\"!editable\"\n @input=\"(val) => (userInputDate = val)\"\n @change=\"handleVisibleDateChange\"\n />\n </span>\n <span\n v-click-outside=\"handleTimePickClose\"\n :class=\"dpNs.e('editor-wrap')\"\n >\n <el-input\n :placeholder=\"t('el.datepicker.selectTime')\"\n :model-value=\"visibleTime\"\n size=\"small\"\n :validate-event=\"false\"\n :disabled=\"dateDisabled\"\n :readonly=\"!editable\"\n @focus=\"onTimePickerInputFocus\"\n @input=\"(val) => (userInputTime = val)\"\n @change=\"handleVisibleTimeChange\"\n />\n <time-pick-panel\n :visible=\"timePickerVisible\"\n :format=\"timeFormat\"\n :parsed-value=\"innerDate\"\n @pick=\"handleTimePick\"\n />\n </span>\n </div>\n <div\n v-show=\"currentView !== 'time'\"\n :class=\"[\n dpNs.e('header'),\n (currentView === 'year' || currentView === 'month') &&\n dpNs.em('header', 'bordered'),\n ]\"\n >\n <span :class=\"dpNs.e('prev-btn')\">\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevYear`)\"\n class=\"d-arrow-left\"\n :class=\"ppNs.e('icon-btn')\"\n :disabled=\"dateDisabled\"\n @click=\"moveByYear(false)\"\n >\n <slot name=\"prev-year\">\n <el-icon><d-arrow-left /></el-icon>\n </slot>\n </button>\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevMonth`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"arrow-left\"\n :disabled=\"dateDisabled\"\n @click=\"moveByMonth(false)\"\n >\n <slot name=\"prev-month\">\n <el-icon><arrow-left /></el-icon>\n </slot>\n </button>\n </span>\n <span\n role=\"button\"\n :class=\"dpNs.e('header-label')\"\n aria-live=\"polite\"\n :tabindex=\"disabled ? undefined : 0\"\n :aria-disabled=\"disabled\"\n @keydown.enter=\"showPicker('year')\"\n @click=\"showPicker('year')\"\n >{{ yearLabel }}</span\n >\n <span\n v-show=\"currentView === 'date'\"\n role=\"button\"\n aria-live=\"polite\"\n :tabindex=\"disabled ? undefined : 0\"\n :aria-disabled=\"disabled\"\n :class=\"[\n dpNs.e('header-label'),\n { active: currentView === 'month' },\n ]\"\n @keydown.enter=\"showPicker('month')\"\n @click=\"showPicker('month')\"\n >{{ t(`el.datepicker.month${month + 1}`) }}</span\n >\n <span :class=\"dpNs.e('next-btn')\">\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextMonth`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"arrow-right\"\n :disabled=\"dateDisabled\"\n @click=\"moveByMonth(true)\"\n >\n <slot name=\"next-month\">\n <el-icon><arrow-right /></el-icon>\n </slot>\n </button>\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextYear`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"d-arrow-right\"\n :disabled=\"dateDisabled\"\n @click=\"moveByYear(true)\"\n >\n <slot name=\"next-year\">\n <el-icon><d-arrow-right /></el-icon>\n </slot>\n </button>\n </span>\n </div>\n <div :class=\"ppNs.e('content')\" @keydown=\"handleKeydownTable\">\n <date-table\n v-if=\"currentView === 'date'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :cell-class-name=\"cellClassName\"\n :show-week-number=\"showWeekNumber\"\n @pick=\"handleDatePick\"\n />\n <year-table\n v-if=\"currentView === 'year'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :parsed-value=\"parsedValue\"\n :cell-class-name=\"cellClassName\"\n @pick=\"handleYearPick\"\n />\n <month-table\n v-if=\"currentView === 'month'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :cell-class-name=\"cellClassName\"\n @pick=\"handleMonthPick\"\n />\n </div>\n </div>\n </div>\n <div\n v-if=\"showFooter && footerVisible && footerFilled\"\n :class=\"ppNs.e('footer')\"\n >\n <el-button\n v-show=\"!isMultipleType && showNow\"\n text\n size=\"small\"\n :class=\"ppNs.e('link-btn')\"\n :disabled=\"disabledNow\"\n @click=\"changeToNow\"\n >\n {{ t('el.datepicker.now') }}\n </el-button>\n <el-button\n v-if=\"showConfirm\"\n plain\n size=\"small\"\n :class=\"ppNs.e('link-btn')\"\n :disabled=\"disabledConfirm\"\n @click=\"onConfirm\"\n >\n {{ t('el.datepicker.confirm') }}\n </el-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n inject,\n nextTick,\n ref,\n toRef,\n useAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@element-plus/components/button'\nimport { ClickOutside as vClickOutside } from '@element-plus/directives'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport {\n DEFAULT_FORMATS_DATE,\n DEFAULT_FORMATS_TIME,\n PICKER_BASE_INJECTION_KEY,\n TimePickPanel,\n extractDateFormat,\n extractTimeFormat,\n} from '@element-plus/components/time-picker'\nimport { ElIcon } from '@element-plus/components/icon'\nimport {\n extractFirst,\n getEventCode,\n isArray,\n isFunction,\n} from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport {\n ArrowLeft,\n ArrowRight,\n DArrowLeft,\n DArrowRight,\n} from '@element-plus/icons-vue'\nimport { panelDatePickProps } from '../props/panel-date-pick'\nimport {\n correctlyParseUserInput,\n getValidDateOfMonth,\n getValidDateOfYear,\n} from '../utils'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport DateTable from './basic-date-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport YearTable from './basic-year-table.vue'\nimport { useFormDisabled } from '@element-plus/components/form'\n\nimport type { SetupContext } from 'vue'\nimport type { ConfigType, Dayjs } from 'dayjs'\nimport type { PanelDatePickProps } from '../props/panel-date-pick'\nimport type {\n DateTableEmits,\n DatesPickerEmits,\n MonthsPickerEmits,\n WeekPickerEmits,\n YearsPickerEmits,\n} from '../props/basic-date-table'\n\ntype DatePickType = PanelDatePickProps['type']\n// todo\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst timeWithinRange = (_: ConfigType, __: any, ___: string) => true\nconst props = defineProps(panelDatePickProps)\nconst contextEmit = defineEmits(['pick', 'set-picker-option', 'panel-change'])\nconst ppNs = useNamespace('picker-panel')\nconst dpNs = useNamespace('date-picker')\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst { t, lang } = useLocale()\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n undefined\n) as any\nconst { shortcuts, disabledDate, cellClassName, defaultTime } = pickerBase.props\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\n\nconst currentViewRef = ref<{ focus: () => void }>()\n\nconst innerDate = ref(dayjs().locale(lang.value))\n\nconst isChangeToNow = ref(false)\n\nlet isShortcut = false\n\nconst defaultTimeD = computed(() => {\n return dayjs(defaultTime).locale(lang.value)\n})\n\nconst month = computed(() => {\n return innerDate.value.month()\n})\n\nconst year = computed(() => {\n return innerDate.value.year()\n})\n\nconst selectableRange = ref([])\nconst userInputDate = ref<string | null>(null)\nconst userInputTime = ref<string | null>(null)\n// todo update to disableHour\nconst checkDateWithinRange = (date: ConfigType) => {\n return selectableRange.value.length > 0\n ? timeWithinRange(date, selectableRange.value, props.format || 'HH:mm:ss')\n : true\n}\nconst formatEmit = (emitDayjs: Dayjs) => {\n if (\n defaultTime &&\n !visibleTime.value &&\n !isChangeToNow.value &&\n !isShortcut\n ) {\n return defaultTimeD.value\n .year(emitDayjs.year())\n .month(emitDayjs.month())\n .date(emitDayjs.date())\n }\n if (showTime.value) return emitDayjs.millisecond(0)\n return emitDayjs.startOf('day')\n}\nconst emit = (value: Dayjs | Dayjs[], ...args: any[]) => {\n if (!value) {\n contextEmit('pick', value, ...args)\n } else if (isArray(value)) {\n const dates = value.map(formatEmit)\n contextEmit('pick', dates, ...args)\n } else {\n contextEmit('pick', formatEmit(value), ...args)\n }\n userInputDate.value = null\n userInputTime.value = null\n isChangeToNow.value = false\n isShortcut = false\n}\nconst handleDatePick = async (value: DateTableEmits, keepOpen?: boolean) => {\n if (selectionMode.value === 'date' && dayjs.isDayjs(value)) {\n const parsedDateValue = extractFirst(props.parsedValue)\n let newDate = parsedDateValue\n ? parsedDateValue\n .year(value.year())\n .month(value.month())\n .date(value.date())\n : value\n // change default time while out of selectableRange\n if (!checkDateWithinRange(newDate)) {\n newDate = (selectableRange.value[0][0] as Dayjs)\n .year(value.year())\n .month(value.month())\n .date(value.date())\n }\n innerDate.value = newDate\n emit(newDate, showTime.value || keepOpen)\n } else if (selectionMode.value === 'week') {\n emit((value as WeekPickerEmits).date)\n } else if (selectionMode.value === 'dates') {\n emit(value as DatesPickerEmits, true) // set true to keep panel open\n }\n}\n\nconst moveByMonth = (forward: boolean) => {\n const action = forward ? 'add' : 'subtract'\n innerDate.value = innerDate.value[action](1, 'month')\n handlePanelChange('month')\n}\n\nconst moveByYear = (forward: boolean) => {\n const currentDate = innerDate.value\n const action = forward ? 'add' : 'subtract'\n\n innerDate.value =\n currentView.value === 'year'\n ? currentDate[action](10, 'year')\n : currentDate[action](1, 'year')\n\n handlePanelChange('year')\n}\n\nconst currentView = ref('date')\n\nconst yearLabel = computed(() => {\n const yearTranslation = t('el.datepicker.year')\n if (currentView.value === 'year') {\n const startYear = Math.floor(year.value / 10) * 10\n if (yearTranslation) {\n return `${startYear} ${yearTranslation} - ${\n startYear + 9\n } ${yearTranslation}`\n }\n return `${startYear} - ${startYear + 9}`\n }\n return `${year.value} ${yearTranslation}`\n})\n\ntype Shortcut = {\n value: (() => Dayjs) | Dayjs\n onClick?: (ctx: Omit<SetupContext, 'expose'>) => void\n}\n\nconst handleShortcutClick = (shortcut: Shortcut) => {\n const shortcutValue = isFunction(shortcut.value)\n ? shortcut.value()\n : shortcut.value\n if (shortcutValue) {\n isShortcut = true\n emit(dayjs(shortcutValue).locale(lang.value))\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick({\n attrs,\n slots,\n emit: contextEmit as SetupContext['emit'],\n })\n }\n}\n\nconst selectionMode = computed<DatePickType>(() => {\n const { type } = props\n if (['week', 'month', 'months', 'year', 'years', 'dates'].includes(type))\n return type\n return 'date'\n})\n\nconst isMultipleType = computed(() => {\n return (\n selectionMode.value === 'dates' ||\n selectionMode.value === 'months' ||\n selectionMode.value === 'years'\n )\n})\n\nconst keyboardMode = computed<string>(() => {\n return selectionMode.value === 'date'\n ? currentView.value\n : selectionMode.value\n})\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst handleMonthPick = async (\n month: number | MonthsPickerEmits,\n keepOpen?: boolean\n) => {\n if (selectionMode.value === 'month') {\n innerDate.value = getValidDateOfMonth(\n innerDate.value,\n innerDate.value.year(),\n month as number,\n lang.value,\n disabledDate\n )\n emit(innerDate.value, false)\n } else if (selectionMode.value === 'months') {\n emit(month as MonthsPickerEmits, keepOpen ?? true)\n } else {\n innerDate.value = getValidDateOfMonth(\n innerDate.value,\n innerDate.value.year(),\n month as number,\n lang.value,\n disabledDate\n )\n currentView.value = 'date'\n if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n emit(innerDate.value, true)\n await nextTick()\n handleFocusPicker()\n }\n }\n handlePanelChange('month')\n}\n\nconst handleYearPick = async (\n year: number | YearsPickerEmits,\n keepOpen?: boolean\n) => {\n if (selectionMode.value === 'year') {\n const data = innerDate.value.startOf('year').year(year as number)\n innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n emit(innerDate.value, false)\n } else if (selectionMode.value === 'years') {\n emit(year as YearsPickerEmits, keepOpen ?? true)\n } else {\n const data = innerDate.value.year(year as number)\n innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n currentView.value = 'month'\n if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n emit(innerDate.value, true)\n await nextTick()\n handleFocusPicker()\n }\n }\n handlePanelChange('year')\n}\n\nconst dateDisabled = useFormDisabled()\n\nconst showPicker = async (view: 'month' | 'year') => {\n if (dateDisabled.value) return\n currentView.value = view\n await nextTick()\n handleFocusPicker()\n}\n\nconst showTime = computed(\n () => props.type === 'datetime' || props.type === 'datetimerange'\n)\n\nconst footerVisible = computed(() => {\n const showDateFooter = showTime.value || selectionMode.value === 'dates'\n const showYearFooter = selectionMode.value === 'years'\n const showMonthFooter = selectionMode.value === 'months'\n const isDateView = currentView.value === 'date'\n const isYearView = currentView.value === 'year'\n const isMonthView = currentView.value === 'month'\n return (\n (showDateFooter && isDateView) ||\n (showYearFooter && isYearView) ||\n (showMonthFooter && isMonthView)\n )\n})\n\nconst footerFilled = computed(\n () => (!isMultipleType.value && props.showNow) || props.showConfirm\n)\n\nconst disabledConfirm = computed(() => {\n if (!disabledDate) return false\n if (!props.parsedValue) return true\n if (isArray(props.parsedValue)) {\n return disabledDate(props.parsedValue[0].toDate())\n }\n return disabledDate(props.parsedValue.toDate())\n})\nconst onConfirm = () => {\n if (isMultipleType.value) {\n emit(props.parsedValue as Dayjs[])\n } else {\n // deal with the scenario where: user opens the date time picker, then confirm without doing anything\n let result = extractFirst(props.parsedValue)\n if (!result) {\n const defaultTimeD = dayjs(defaultTime).locale(lang.value)\n const defaultValueD = getDefaultValue()\n result = defaultTimeD\n .year(defaultValueD.year())\n .month(defaultValueD.month())\n .date(defaultValueD.date())\n }\n innerDate.value = result\n emit(result)\n }\n}\n\nconst disabledNow = computed(() => {\n if (!disabledDate) return false\n return disabledDate(dayjs().locale(lang.value).toDate())\n})\nconst changeToNow = () => {\n // NOTE: not a permanent solution\n // consider disable \"now\" button in the future\n const now = dayjs().locale(lang.value)\n const nowDate = now.toDate()\n isChangeToNow.value = true\n if (\n (!disabledDate || !disabledDate(nowDate)) &&\n checkDateWithinRange(nowDate)\n ) {\n innerDate.value = dayjs().locale(lang.value)\n emit(innerDate.value)\n }\n}\n\nconst timeFormat = computed(() => {\n return (\n props.timeFormat || extractTimeFormat(props.format) || DEFAULT_FORMATS_TIME\n )\n})\n\nconst dateFormat = computed(() => {\n return (\n props.dateFormat || extractDateFormat(props.format) || DEFAULT_FORMATS_DATE\n )\n})\n\nconst visibleTime = computed(() => {\n if (userInputTime.value) return userInputTime.value\n if (!props.parsedValue && !defaultValue.value) return\n const dateValue = extractFirst(props.parsedValue) || innerDate.value\n return dateValue.format(timeFormat.value)\n})\n\nconst visibleDate = computed(() => {\n if (userInputDate.value) return userInputDate.value\n if (!props.parsedValue && !defaultValue.value) return\n const dateValue = extractFirst(props.parsedValue) || innerDate.value\n return dateValue.format(dateFormat.value)\n})\n\nconst timePickerVisible = ref(false)\nconst onTimePickerInputFocus = () => {\n timePickerVisible.value = true\n}\nconst handleTimePickClose = () => {\n timePickerVisible.value = false\n}\n\nconst getUnits = (date: Dayjs) => {\n return {\n hour: date.hour(),\n minute: date.minute(),\n second: date.second(),\n year: date.year(),\n month: date.month(),\n date: date.date(),\n }\n}\n\nconst handleTimePick = (value: Dayjs, visible: boolean, first: boolean) => {\n const { hour, minute, second } = getUnits(value)\n const parsedDateValue = extractFirst(props.parsedValue)\n const newDate = parsedDateValue\n ? parsedDateValue.hour(hour).minute(minute).second(second)\n : value\n innerDate.value = newDate\n emit(innerDate.value, true)\n if (!first) {\n timePickerVisible.value = visible\n }\n}\n\nconst handleVisibleTimeChange = (value: string) => {\n const newDate = dayjs(value, timeFormat.value).locale(lang.value)\n if (newDate.isValid() && checkDateWithinRange(newDate)) {\n const { year, month, date } = getUnits(innerDate.value)\n innerDate.value = newDate.year(year).month(month).date(date)\n userInputTime.value = null\n timePickerVisible.value = false\n emit(innerDate.value, true)\n }\n}\n\nconst handleVisibleDateChange = (value: string) => {\n const newDate = correctlyParseUserInput(\n value,\n dateFormat.value,\n lang.value,\n isDefaultFormat\n ) as Dayjs\n if (newDate.isValid()) {\n if (disabledDate && disabledDate(newDate.toDate())) {\n return\n }\n const { hour, minute, second } = getUnits(innerDate.value)\n innerDate.value = newDate.hour(hour).minute(minute).second(second)\n userInputDate.value = null\n emit(innerDate.value, true)\n }\n}\n\nconst isValidValue = (date: unknown) => {\n return (\n dayjs.isDayjs(date) &&\n date.isValid() &&\n (disabledDate ? !disabledDate(date.toDate()) : true)\n )\n}\n\nconst parseUserInput = (value: Dayjs) => {\n return correctlyParseUserInput(\n value,\n props.format,\n lang.value,\n isDefaultFormat\n )\n}\n\nconst getDefaultValue = () => {\n const parseDate = dayjs(defaultValue.value).locale(lang.value)\n if (!defaultValue.value) {\n const defaultTimeDValue = defaultTimeD.value\n return dayjs()\n .hour(defaultTimeDValue.hour())\n .minute(defaultTimeDValue.minute())\n .second(defaultTimeDValue.second())\n .locale(lang.value)\n }\n return parseDate\n}\n\nconst handleFocusPicker = () => {\n if (['week', 'month', 'year', 'date'].includes(selectionMode.value)) {\n currentViewRef.value?.focus()\n }\n}\n\nconst _handleFocusPicker = () => {\n handleFocusPicker()\n // TODO: After focus the date input, the first time you use the ArrowDown keys, you cannot focus on the date cell\n if (selectionMode.value === 'week') {\n handleKeyControl(EVENT_CODE.down)\n }\n}\n\nconst handleKeydownTable = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n\n const validCode = [\n EVENT_CODE.up,\n EVENT_CODE.down,\n EVENT_CODE.left,\n EVENT_CODE.right,\n EVENT_CODE.home,\n EVENT_CODE.end,\n EVENT_CODE.pageUp,\n EVENT_CODE.pageDown,\n ]\n if (validCode.includes(code)) {\n handleKeyControl(code)\n event.stopPropagation()\n event.preventDefault()\n }\n if (\n [EVENT_CODE.enter, EVENT_CODE.space, EVENT_CODE.numpadEnter].includes(\n code\n ) &&\n userInputDate.value === null &&\n userInputTime.value === null\n ) {\n event.preventDefault()\n emit(innerDate.value, false)\n }\n}\n\nconst handleKeyControl = (code: string) => {\n type KeyControlMappingCallableOffset = (date: Date, step?: number) => number\n type KeyControl = {\n [key: string]:\n | number\n | KeyControlMappingCallableOffset\n | ((date: Date, step: number) => any)\n offset: (date: Date, step: number) => any\n }\n interface KeyControlMapping {\n [key: string]: KeyControl\n }\n\n const { up, down, left, right, home, end, pageUp, pageDown } = EVENT_CODE\n const mapping: KeyControlMapping = {\n year: {\n [up]: -4,\n [down]: 4,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setFullYear(date.getFullYear() + step),\n },\n month: {\n [up]: -4,\n [down]: 4,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setMonth(date.getMonth() + step),\n },\n week: {\n [up]: -1,\n [down]: 1,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setDate(date.getDate() + step * 7),\n },\n date: {\n [up]: -7,\n [down]: 7,\n [left]: -1,\n [right]: 1,\n [home]: (date: Date) => -date.getDay(),\n [end]: (date: Date) => -date.getDay() + 6,\n [pageUp]: (date: Date) =>\n -new Date(date.getFullYear(), date.getMonth(), 0).getDate(),\n [pageDown]: (date: Date) =>\n new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(),\n offset: (date: Date, step: number) => date.setDate(date.getDate() + step),\n },\n }\n\n const newDate = innerDate.value.toDate()\n while (Math.abs(innerDate.value.diff(newDate, 'year', true)) < 1) {\n const map = mapping[keyboardMode.value]\n if (!map) return\n map.offset(\n newDate,\n isFunction(map[code])\n ? (map[code] as unknown as KeyControlMappingCallableOffset)(newDate)\n : ((map[code] as number) ?? 0)\n )\n if (disabledDate && disabledDate(newDate)) {\n break\n }\n const result = dayjs(newDate).locale(lang.value)\n innerDate.value = result\n contextEmit('pick', result, true)\n break\n }\n}\n\nconst handlePanelChange = (mode: 'month' | 'year') => {\n contextEmit('panel-change', innerDate.value.toDate(), mode, currentView.value)\n}\n\nwatch(\n () => selectionMode.value,\n (val) => {\n if (['month', 'year'].includes(val)) {\n currentView.value = val\n return\n } else if (val === 'years') {\n currentView.value = 'year'\n return\n } else if (val === 'months') {\n currentView.value = 'month'\n return\n }\n currentView.value = 'date'\n },\n { immediate: true }\n)\n\nwatch(\n () => defaultValue.value,\n (val) => {\n if (val) {\n innerDate.value = getDefaultValue()\n }\n },\n { immediate: true }\n)\n\nwatch(\n () => props.parsedValue,\n (val) => {\n if (val) {\n if (isMultipleType.value) return\n if (isArray(val)) return\n innerDate.value = val\n } else {\n innerDate.value = getDefaultValue()\n }\n },\n { immediate: true }\n)\n\ncontextEmit('set-picker-option', ['isValidValue', isValidValue])\ncontextEmit('set-picker-option', ['parseUserInput', parseUserInput])\ncontextEmit('set-picker-option', ['handleFocusPicker', _handleFocusPicker])\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"panel-date-pick.vue_vue_type_script_setup_true_lang.mjs","names":["border","$slots","editable","disabled","parsedValue","showWeekNumber","showFooter","showNow","showConfirm"],"sources":["../../../../../../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n ppNs.b(),\n dpNs.b(),\n ppNs.is('border', border),\n ppNs.is('disabled', dateDisabled),\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n 'has-time': showTime,\n },\n ]\"\n >\n <div :class=\"ppNs.e('body-wrapper')\">\n <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n :disabled=\"dateDisabled\"\n :class=\"ppNs.e('shortcut')\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div :class=\"ppNs.e('body')\">\n <div v-if=\"showTime\" :class=\"dpNs.e('time-header')\">\n <span :class=\"dpNs.e('editor-wrap')\">\n <el-input\n :placeholder=\"t('el.datepicker.selectDate')\"\n :model-value=\"visibleDate\"\n size=\"small\"\n :validate-event=\"false\"\n :disabled=\"dateDisabled\"\n :readonly=\"!editable\"\n @input=\"(val) => (userInputDate = val)\"\n @change=\"handleVisibleDateChange\"\n />\n </span>\n <span\n v-click-outside=\"handleTimePickClose\"\n :class=\"dpNs.e('editor-wrap')\"\n >\n <el-input\n :placeholder=\"t('el.datepicker.selectTime')\"\n :model-value=\"visibleTime\"\n size=\"small\"\n :validate-event=\"false\"\n :disabled=\"dateDisabled\"\n :readonly=\"!editable\"\n @focus=\"onTimePickerInputFocus\"\n @input=\"(val) => (userInputTime = val)\"\n @change=\"handleVisibleTimeChange\"\n />\n <time-pick-panel\n :visible=\"timePickerVisible\"\n :format=\"timeFormat\"\n :parsed-value=\"innerDate\"\n @pick=\"handleTimePick\"\n />\n </span>\n </div>\n <div\n v-show=\"currentView !== 'time'\"\n :class=\"[\n dpNs.e('header'),\n (currentView === 'year' || currentView === 'month') &&\n dpNs.em('header', 'bordered'),\n ]\"\n >\n <span :class=\"dpNs.e('prev-btn')\">\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevYear`)\"\n class=\"d-arrow-left\"\n :class=\"ppNs.e('icon-btn')\"\n :disabled=\"dateDisabled\"\n @click=\"moveByYear(false)\"\n >\n <slot name=\"prev-year\">\n <el-icon><d-arrow-left /></el-icon>\n </slot>\n </button>\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevMonth`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"arrow-left\"\n :disabled=\"dateDisabled\"\n @click=\"moveByMonth(false)\"\n >\n <slot name=\"prev-month\">\n <el-icon><arrow-left /></el-icon>\n </slot>\n </button>\n </span>\n <span\n role=\"button\"\n :class=\"dpNs.e('header-label')\"\n aria-live=\"polite\"\n :tabindex=\"disabled ? undefined : 0\"\n :aria-disabled=\"disabled\"\n @keydown.enter=\"showPicker('year')\"\n @click=\"showPicker('year')\"\n >{{ yearLabel }}</span\n >\n <span\n v-show=\"currentView === 'date'\"\n role=\"button\"\n aria-live=\"polite\"\n :tabindex=\"disabled ? undefined : 0\"\n :aria-disabled=\"disabled\"\n :class=\"[\n dpNs.e('header-label'),\n { active: currentView === 'month' },\n ]\"\n @keydown.enter=\"showPicker('month')\"\n @click=\"showPicker('month')\"\n >{{ t(`el.datepicker.month${month + 1}`) }}</span\n >\n <span :class=\"dpNs.e('next-btn')\">\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextMonth`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"arrow-right\"\n :disabled=\"dateDisabled\"\n @click=\"moveByMonth(true)\"\n >\n <slot name=\"next-month\">\n <el-icon><arrow-right /></el-icon>\n </slot>\n </button>\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextYear`)\"\n :class=\"ppNs.e('icon-btn')\"\n class=\"d-arrow-right\"\n :disabled=\"dateDisabled\"\n @click=\"moveByYear(true)\"\n >\n <slot name=\"next-year\">\n <el-icon><d-arrow-right /></el-icon>\n </slot>\n </button>\n </span>\n </div>\n <div :class=\"ppNs.e('content')\" @keydown=\"handleKeydownTable\">\n <date-table\n v-if=\"currentView === 'date'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :cell-class-name=\"cellClassName\"\n :show-week-number=\"showWeekNumber\"\n @pick=\"handleDatePick\"\n />\n <year-table\n v-if=\"currentView === 'year'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :parsed-value=\"parsedValue\"\n :cell-class-name=\"cellClassName\"\n @pick=\"handleYearPick\"\n />\n <month-table\n v-if=\"currentView === 'month'\"\n ref=\"currentViewRef\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n :disabled=\"dateDisabled\"\n :cell-class-name=\"cellClassName\"\n @pick=\"handleMonthPick\"\n />\n </div>\n </div>\n </div>\n <div\n v-if=\"showFooter && footerVisible && footerFilled\"\n :class=\"ppNs.e('footer')\"\n >\n <el-button\n v-show=\"!isMultipleType && showNow\"\n text\n size=\"small\"\n :class=\"ppNs.e('link-btn')\"\n :disabled=\"disabledNow\"\n @click=\"changeToNow\"\n >\n {{ t('el.datepicker.now') }}\n </el-button>\n <el-button\n v-if=\"showConfirm\"\n plain\n size=\"small\"\n :class=\"ppNs.e('link-btn')\"\n :disabled=\"disabledConfirm\"\n @click=\"onConfirm\"\n >\n {{ t('el.datepicker.confirm') }}\n </el-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n inject,\n nextTick,\n ref,\n toRef,\n useAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@element-plus/components/button'\nimport { ClickOutside as vClickOutside } from '@element-plus/directives'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport {\n DEFAULT_FORMATS_DATE,\n DEFAULT_FORMATS_TIME,\n PICKER_BASE_INJECTION_KEY,\n TimePickPanel,\n extractDateFormat,\n extractTimeFormat,\n} from '@element-plus/components/time-picker'\nimport { ElIcon } from '@element-plus/components/icon'\nimport {\n extractFirst,\n getEventCode,\n isArray,\n isFunction,\n} from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport {\n ArrowLeft,\n ArrowRight,\n DArrowLeft,\n DArrowRight,\n} from '@element-plus/icons-vue'\nimport { panelDatePickProps } from '../props/panel-date-pick'\nimport {\n correctlyParseUserInput,\n getValidDateOfMonth,\n getValidDateOfYear,\n} from '../utils'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport DateTable from './basic-date-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport YearTable from './basic-year-table.vue'\nimport { useFormDisabled } from '@element-plus/components/form'\n\nimport type { SetupContext } from 'vue'\nimport type { ConfigType, Dayjs } from 'dayjs'\nimport type { PanelDatePickProps } from '../props/panel-date-pick'\nimport type {\n DateTableEmits,\n DatesPickerEmits,\n MonthsPickerEmits,\n WeekPickerEmits,\n YearsPickerEmits,\n} from '../props/basic-date-table'\n\ntype DatePickType = PanelDatePickProps['type']\n// todo\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst timeWithinRange = (_: ConfigType, __: any, ___: string) => true\nconst props = defineProps(panelDatePickProps)\nconst contextEmit = defineEmits(['pick', 'set-picker-option', 'panel-change'])\nconst ppNs = useNamespace('picker-panel')\nconst dpNs = useNamespace('date-picker')\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst { t, lang } = useLocale()\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n undefined\n) as any\nconst { shortcuts, disabledDate, cellClassName, defaultTime } = pickerBase.props\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\n\nconst currentViewRef = ref<{ focus: () => void }>()\n\nconst innerDate = ref(dayjs().locale(lang.value))\n\nconst isChangeToNow = ref(false)\n\nlet isShortcut = false\n\nconst defaultTimeD = computed(() => {\n return dayjs(defaultTime).locale(lang.value)\n})\n\nconst month = computed(() => {\n return innerDate.value.month()\n})\n\nconst year = computed(() => {\n return innerDate.value.year()\n})\n\nconst selectableRange = ref([])\nconst userInputDate = ref<string | null>(null)\nconst userInputTime = ref<string | null>(null)\n// todo update to disableHour\nconst checkDateWithinRange = (date: ConfigType) => {\n return selectableRange.value.length > 0\n ? timeWithinRange(\n date,\n selectableRange.value,\n props.format || DEFAULT_FORMATS_TIME\n )\n : true\n}\nconst formatEmit = (emitDayjs: Dayjs) => {\n if (\n defaultTime &&\n !visibleTime.value &&\n !isChangeToNow.value &&\n !isShortcut\n ) {\n return defaultTimeD.value\n .year(emitDayjs.year())\n .month(emitDayjs.month())\n .date(emitDayjs.date())\n }\n if (showTime.value) return emitDayjs.millisecond(0)\n return emitDayjs.startOf('day')\n}\nconst emit = (value: Dayjs | Dayjs[], ...args: any[]) => {\n if (!value) {\n contextEmit('pick', value, ...args)\n } else if (isArray(value)) {\n const dates = value.map(formatEmit)\n contextEmit('pick', dates, ...args)\n } else {\n contextEmit('pick', formatEmit(value), ...args)\n }\n userInputDate.value = null\n userInputTime.value = null\n isChangeToNow.value = false\n isShortcut = false\n}\nconst handleDatePick = async (value: DateTableEmits, keepOpen?: boolean) => {\n if (selectionMode.value === 'date' && dayjs.isDayjs(value)) {\n const parsedDateValue = extractFirst(props.parsedValue)\n let newDate = parsedDateValue\n ? parsedDateValue\n .year(value.year())\n .month(value.month())\n .date(value.date())\n : value\n // change default time while out of selectableRange\n if (!checkDateWithinRange(newDate)) {\n newDate = (selectableRange.value[0][0] as Dayjs)\n .year(value.year())\n .month(value.month())\n .date(value.date())\n }\n innerDate.value = newDate\n emit(newDate, showTime.value || keepOpen)\n } else if (selectionMode.value === 'week') {\n emit((value as WeekPickerEmits).date)\n } else if (selectionMode.value === 'dates') {\n emit(value as DatesPickerEmits, true) // set true to keep panel open\n }\n}\n\nconst moveByMonth = (forward: boolean) => {\n const action = forward ? 'add' : 'subtract'\n innerDate.value = innerDate.value[action](1, 'month')\n handlePanelChange('month')\n}\n\nconst moveByYear = (forward: boolean) => {\n const currentDate = innerDate.value\n const action = forward ? 'add' : 'subtract'\n\n innerDate.value =\n currentView.value === 'year'\n ? currentDate[action](10, 'year')\n : currentDate[action](1, 'year')\n\n handlePanelChange('year')\n}\n\nconst currentView = ref('date')\n\nconst yearLabel = computed(() => {\n const yearTranslation = t('el.datepicker.year')\n if (currentView.value === 'year') {\n const startYear = Math.floor(year.value / 10) * 10\n if (yearTranslation) {\n return `${startYear} ${yearTranslation} - ${\n startYear + 9\n } ${yearTranslation}`\n }\n return `${startYear} - ${startYear + 9}`\n }\n return `${year.value} ${yearTranslation}`\n})\n\ntype Shortcut = {\n value: (() => Dayjs) | Dayjs\n onClick?: (ctx: Omit<SetupContext, 'expose'>) => void\n}\n\nconst handleShortcutClick = (shortcut: Shortcut) => {\n const shortcutValue = isFunction(shortcut.value)\n ? shortcut.value()\n : shortcut.value\n if (shortcutValue) {\n isShortcut = true\n emit(dayjs(shortcutValue).locale(lang.value))\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick({\n attrs,\n slots,\n emit: contextEmit as SetupContext['emit'],\n })\n }\n}\n\nconst selectionMode = computed<DatePickType>(() => {\n const { type } = props\n if (['week', 'month', 'months', 'year', 'years', 'dates'].includes(type))\n return type\n return 'date'\n})\n\nconst isMultipleType = computed(() => {\n return (\n selectionMode.value === 'dates' ||\n selectionMode.value === 'months' ||\n selectionMode.value === 'years'\n )\n})\n\nconst keyboardMode = computed<string>(() => {\n return selectionMode.value === 'date'\n ? currentView.value\n : selectionMode.value\n})\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst handleMonthPick = async (\n month: number | MonthsPickerEmits,\n keepOpen?: boolean\n) => {\n if (selectionMode.value === 'month') {\n innerDate.value = getValidDateOfMonth(\n innerDate.value,\n innerDate.value.year(),\n month as number,\n lang.value,\n disabledDate\n )\n emit(innerDate.value, false)\n } else if (selectionMode.value === 'months') {\n emit(month as MonthsPickerEmits, keepOpen ?? true)\n } else {\n innerDate.value = getValidDateOfMonth(\n innerDate.value,\n innerDate.value.year(),\n month as number,\n lang.value,\n disabledDate\n )\n currentView.value = 'date'\n if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n emit(innerDate.value, true)\n await nextTick()\n handleFocusPicker()\n }\n }\n handlePanelChange('month')\n}\n\nconst handleYearPick = async (\n year: number | YearsPickerEmits,\n keepOpen?: boolean\n) => {\n if (selectionMode.value === 'year') {\n const data = innerDate.value.startOf('year').year(year as number)\n innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n emit(innerDate.value, false)\n } else if (selectionMode.value === 'years') {\n emit(year as YearsPickerEmits, keepOpen ?? true)\n } else {\n const data = innerDate.value.year(year as number)\n innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n currentView.value = 'month'\n if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n emit(innerDate.value, true)\n await nextTick()\n handleFocusPicker()\n }\n }\n handlePanelChange('year')\n}\n\nconst dateDisabled = useFormDisabled()\n\nconst showPicker = async (view: 'month' | 'year') => {\n if (dateDisabled.value) return\n currentView.value = view\n await nextTick()\n handleFocusPicker()\n}\n\nconst showTime = computed(\n () => props.type === 'datetime' || props.type === 'datetimerange'\n)\n\nconst footerVisible = computed(() => {\n const showDateFooter = showTime.value || selectionMode.value === 'dates'\n const showYearFooter = selectionMode.value === 'years'\n const showMonthFooter = selectionMode.value === 'months'\n const isDateView = currentView.value === 'date'\n const isYearView = currentView.value === 'year'\n const isMonthView = currentView.value === 'month'\n return (\n (showDateFooter && isDateView) ||\n (showYearFooter && isYearView) ||\n (showMonthFooter && isMonthView)\n )\n})\n\nconst footerFilled = computed(\n () => (!isMultipleType.value && props.showNow) || props.showConfirm\n)\n\nconst disabledConfirm = computed(() => {\n if (!disabledDate) return false\n if (!props.parsedValue) return true\n if (isArray(props.parsedValue)) {\n return disabledDate(props.parsedValue[0].toDate())\n }\n return disabledDate(props.parsedValue.toDate())\n})\nconst onConfirm = () => {\n if (isMultipleType.value) {\n emit(props.parsedValue as Dayjs[])\n } else {\n // deal with the scenario where: user opens the date time picker, then confirm without doing anything\n let result = extractFirst(props.parsedValue)\n if (!result) {\n const defaultTimeD = dayjs(defaultTime).locale(lang.value)\n const defaultValueD = getDefaultValue()\n result = defaultTimeD\n .year(defaultValueD.year())\n .month(defaultValueD.month())\n .date(defaultValueD.date())\n }\n innerDate.value = result\n emit(result)\n }\n}\n\nconst disabledNow = computed(() => {\n if (!disabledDate) return false\n return disabledDate(dayjs().locale(lang.value).toDate())\n})\nconst changeToNow = () => {\n // NOTE: not a permanent solution\n // consider disable \"now\" button in the future\n const now = dayjs().locale(lang.value)\n const nowDate = now.toDate()\n isChangeToNow.value = true\n if (\n (!disabledDate || !disabledDate(nowDate)) &&\n checkDateWithinRange(nowDate)\n ) {\n innerDate.value = dayjs().locale(lang.value)\n emit(innerDate.value)\n }\n}\n\nconst timeFormat = computed(() => {\n return (\n props.timeFormat || extractTimeFormat(props.format) || DEFAULT_FORMATS_TIME\n )\n})\n\nconst dateFormat = computed(() => {\n return (\n props.dateFormat || extractDateFormat(props.format) || DEFAULT_FORMATS_DATE\n )\n})\n\nconst visibleTime = computed(() => {\n if (userInputTime.value) return userInputTime.value\n if (!props.parsedValue && !defaultValue.value) return\n const dateValue = extractFirst(props.parsedValue) || innerDate.value\n return dateValue.format(timeFormat.value)\n})\n\nconst visibleDate = computed(() => {\n if (userInputDate.value) return userInputDate.value\n if (!props.parsedValue && !defaultValue.value) return\n const dateValue = extractFirst(props.parsedValue) || innerDate.value\n return dateValue.format(dateFormat.value)\n})\n\nconst timePickerVisible = ref(false)\nconst onTimePickerInputFocus = () => {\n timePickerVisible.value = true\n}\nconst handleTimePickClose = () => {\n timePickerVisible.value = false\n}\n\nconst getUnits = (date: Dayjs) => {\n return {\n hour: date.hour(),\n minute: date.minute(),\n second: date.second(),\n year: date.year(),\n month: date.month(),\n date: date.date(),\n }\n}\n\nconst handleTimePick = (value: Dayjs, visible: boolean, first: boolean) => {\n const { hour, minute, second } = getUnits(value)\n const parsedDateValue = extractFirst(props.parsedValue)\n const newDate = parsedDateValue\n ? parsedDateValue.hour(hour).minute(minute).second(second)\n : value\n innerDate.value = newDate\n emit(innerDate.value, true)\n if (!first) {\n timePickerVisible.value = visible\n }\n}\n\nconst handleVisibleTimeChange = (value: string) => {\n const newDate = dayjs(value, timeFormat.value).locale(lang.value)\n if (newDate.isValid() && checkDateWithinRange(newDate)) {\n const { year, month, date } = getUnits(innerDate.value)\n innerDate.value = newDate.year(year).month(month).date(date)\n userInputTime.value = null\n timePickerVisible.value = false\n emit(innerDate.value, true)\n }\n}\n\nconst handleVisibleDateChange = (value: string) => {\n const newDate = correctlyParseUserInput(\n value,\n dateFormat.value,\n lang.value,\n isDefaultFormat\n ) as Dayjs\n if (newDate.isValid()) {\n if (disabledDate && disabledDate(newDate.toDate())) {\n return\n }\n const { hour, minute, second } = getUnits(innerDate.value)\n innerDate.value = newDate.hour(hour).minute(minute).second(second)\n userInputDate.value = null\n emit(innerDate.value, true)\n }\n}\n\nconst isValidValue = (date: unknown) => {\n return (\n dayjs.isDayjs(date) &&\n date.isValid() &&\n (disabledDate ? !disabledDate(date.toDate()) : true)\n )\n}\n\nconst parseUserInput = (value: Dayjs) => {\n return correctlyParseUserInput(\n value,\n props.format,\n lang.value,\n isDefaultFormat\n )\n}\n\nconst getDefaultValue = () => {\n const parseDate = dayjs(defaultValue.value).locale(lang.value)\n if (!defaultValue.value) {\n const defaultTimeDValue = defaultTimeD.value\n return dayjs()\n .hour(defaultTimeDValue.hour())\n .minute(defaultTimeDValue.minute())\n .second(defaultTimeDValue.second())\n .locale(lang.value)\n }\n return parseDate\n}\n\nconst handleFocusPicker = () => {\n if (['week', 'month', 'year', 'date'].includes(selectionMode.value)) {\n currentViewRef.value?.focus()\n }\n}\n\nconst _handleFocusPicker = () => {\n handleFocusPicker()\n // TODO: After focus the date input, the first time you use the ArrowDown keys, you cannot focus on the date cell\n if (selectionMode.value === 'week') {\n handleKeyControl(EVENT_CODE.down)\n }\n}\n\nconst handleKeydownTable = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n\n const validCode = [\n EVENT_CODE.up,\n EVENT_CODE.down,\n EVENT_CODE.left,\n EVENT_CODE.right,\n EVENT_CODE.home,\n EVENT_CODE.end,\n EVENT_CODE.pageUp,\n EVENT_CODE.pageDown,\n ]\n if (validCode.includes(code)) {\n handleKeyControl(code)\n event.stopPropagation()\n event.preventDefault()\n }\n if (\n [EVENT_CODE.enter, EVENT_CODE.space, EVENT_CODE.numpadEnter].includes(\n code\n ) &&\n userInputDate.value === null &&\n userInputTime.value === null\n ) {\n event.preventDefault()\n emit(innerDate.value, false)\n }\n}\n\nconst handleKeyControl = (code: string) => {\n type KeyControlMappingCallableOffset = (date: Date, step?: number) => number\n type KeyControl = {\n [key: string]:\n | number\n | KeyControlMappingCallableOffset\n | ((date: Date, step: number) => any)\n offset: (date: Date, step: number) => any\n }\n interface KeyControlMapping {\n [key: string]: KeyControl\n }\n\n const { up, down, left, right, home, end, pageUp, pageDown } = EVENT_CODE\n const mapping: KeyControlMapping = {\n year: {\n [up]: -4,\n [down]: 4,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setFullYear(date.getFullYear() + step),\n },\n month: {\n [up]: -4,\n [down]: 4,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setMonth(date.getMonth() + step),\n },\n week: {\n [up]: -1,\n [down]: 1,\n [left]: -1,\n [right]: 1,\n offset: (date: Date, step: number) =>\n date.setDate(date.getDate() + step * 7),\n },\n date: {\n [up]: -7,\n [down]: 7,\n [left]: -1,\n [right]: 1,\n [home]: (date: Date) => -date.getDay(),\n [end]: (date: Date) => -date.getDay() + 6,\n [pageUp]: (date: Date) =>\n -new Date(date.getFullYear(), date.getMonth(), 0).getDate(),\n [pageDown]: (date: Date) =>\n new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(),\n offset: (date: Date, step: number) => date.setDate(date.getDate() + step),\n },\n }\n\n const newDate = innerDate.value.toDate()\n while (Math.abs(innerDate.value.diff(newDate, 'year', true)) < 1) {\n const map = mapping[keyboardMode.value]\n if (!map) return\n map.offset(\n newDate,\n isFunction(map[code])\n ? (map[code] as unknown as KeyControlMappingCallableOffset)(newDate)\n : ((map[code] as number) ?? 0)\n )\n if (disabledDate && disabledDate(newDate)) {\n break\n }\n const result = dayjs(newDate).locale(lang.value)\n innerDate.value = result\n contextEmit('pick', result, true)\n break\n }\n}\n\nconst handlePanelChange = (mode: 'month' | 'year') => {\n contextEmit('panel-change', innerDate.value.toDate(), mode, currentView.value)\n}\n\nwatch(\n () => selectionMode.value,\n (val) => {\n if (['month', 'year'].includes(val)) {\n currentView.value = val\n return\n } else if (val === 'years') {\n currentView.value = 'year'\n return\n } else if (val === 'months') {\n currentView.value = 'month'\n return\n }\n currentView.value = 'date'\n },\n { immediate: true }\n)\n\nwatch(\n () => defaultValue.value,\n (val) => {\n if (val) {\n innerDate.value = getDefaultValue()\n }\n },\n { immediate: true }\n)\n\nwatch(\n () => props.parsedValue,\n (val) => {\n if (val) {\n if (isMultipleType.value) return\n if (isArray(val)) return\n innerDate.value = val\n } else {\n innerDate.value = getDefaultValue()\n }\n },\n { immediate: true }\n)\n\ncontextEmit('set-picker-option', ['isValidValue', isValidValue])\ncontextEmit('set-picker-option', ['parseUserInput', parseUserInput])\ncontextEmit('set-picker-option', ['handleFocusPicker', _handleFocusPicker])\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyRA,MAAM,mBAAmB,GAAe,IAAS,QAAgB;EACjE,MAAM,QAAQ;EACd,MAAM,cAAc;EACpB,MAAM,OAAO,aAAa,eAAc;EACxC,MAAM,OAAO,aAAa,cAAa;EACvC,MAAM,QAAQ,UAAS;EACvB,MAAM,QAAQ,UAAS;EAEvB,MAAM,EAAE,GAAG,SAAS,WAAU;EAC9B,MAAM,aAAa,OAAO,0BAA0B;EACpD,MAAM,kBAAkB,OACtB,6CACA,OACD;EACD,MAAM,EAAE,WAAW,cAAc,eAAe,gBAAgB,WAAW;EAC3E,MAAM,eAAe,MAAM,WAAW,OAAO,eAAc;EAE3D,MAAM,iBAAiB,KAA2B;EAElD,MAAM,YAAY,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,CAAA;EAEhD,MAAM,gBAAgB,IAAI,MAAK;EAE/B,IAAI,aAAa;EAEjB,MAAM,eAAe,eAAe;AAClC,UAAO,MAAM,YAAY,CAAC,OAAO,KAAK,MAAK;IAC5C;EAED,MAAM,QAAQ,eAAe;AAC3B,UAAO,UAAU,MAAM,OAAM;IAC9B;EAED,MAAM,OAAO,eAAe;AAC1B,UAAO,UAAU,MAAM,MAAK;IAC7B;EAED,MAAM,kBAAkB,IAAI,EAAE,CAAA;EAC9B,MAAM,gBAAgB,IAAmB,KAAI;EAC7C,MAAM,gBAAgB,IAAmB,KAAI;EAE7C,MAAM,wBAAwB,SAAqB;AACjD,UAAO,gBAAgB,MAAM,SAAS,IAClC,gBACE,MACA,gBAAgB,OAChB,MAAM,UAAU,qBAClB,GACA;;EAEN,MAAM,cAAc,cAAqB;AACvC,OACE,eACA,CAAC,YAAY,SACb,CAAC,cAAc,SACf,CAAC,WAED,QAAO,aAAa,MACjB,KAAK,UAAU,MAAM,CAAA,CACrB,MAAM,UAAU,OAAO,CAAA,CACvB,KAAK,UAAU,MAAM,CAAA;AAE1B,OAAI,SAAS,MAAO,QAAO,UAAU,YAAY,EAAC;AAClD,UAAO,UAAU,QAAQ,MAAK;;EAEhC,MAAM,QAAQ,OAAwB,GAAG,SAAgB;AACvD,OAAI,CAAC,MACH,aAAY,QAAQ,OAAO,GAAG,KAAI;YACzB,QAAQ,MAAM,CAEvB,aAAY,QADE,MAAM,IAAI,WAAU,EACP,GAAG,KAAI;OAElC,aAAY,QAAQ,WAAW,MAAM,EAAE,GAAG,KAAI;AAEhD,iBAAc,QAAQ;AACtB,iBAAc,QAAQ;AACtB,iBAAc,QAAQ;AACtB,gBAAa;;EAEf,MAAM,iBAAiB,OAAO,OAAuB,aAAuB;AAC1E,OAAI,cAAc,UAAU,UAAU,MAAM,QAAQ,MAAM,EAAE;IAC1D,MAAM,kBAAkB,aAAa,MAAM,YAAW;IACtD,IAAI,UAAU,kBACV,gBACG,KAAK,MAAM,MAAM,CAAA,CACjB,MAAM,MAAM,OAAO,CAAA,CACnB,KAAK,MAAM,MAAM,CAAA,GACpB;AAEJ,QAAI,CAAC,qBAAqB,QAAQ,CAChC,WAAW,gBAAgB,MAAM,GAAG,GACjC,KAAK,MAAM,MAAM,CAAA,CACjB,MAAM,MAAM,OAAO,CAAA,CACnB,KAAK,MAAM,MAAM,CAAA;AAEtB,cAAU,QAAQ;AAClB,SAAK,SAAS,SAAS,SAAS,SAAQ;cAC/B,cAAc,UAAU,OACjC,MAAM,MAA0B,KAAI;YAC3B,cAAc,UAAU,QACjC,MAAK,OAA2B,KAAK;;EAIzC,MAAM,eAAe,YAAqB;GACxC,MAAM,SAAS,UAAU,QAAQ;AACjC,aAAU,QAAQ,UAAU,MAAM,QAAQ,GAAG,QAAO;AACpD,qBAAkB,QAAO;;EAG3B,MAAM,cAAc,YAAqB;GACvC,MAAM,cAAc,UAAU;GAC9B,MAAM,SAAS,UAAU,QAAQ;AAEjC,aAAU,QACR,YAAY,UAAU,SAClB,YAAY,QAAQ,IAAI,OAAM,GAC9B,YAAY,QAAQ,GAAG,OAAM;AAEnC,qBAAkB,OAAM;;EAG1B,MAAM,cAAc,IAAI,OAAM;EAE9B,MAAM,YAAY,eAAe;GAC/B,MAAM,kBAAkB,EAAE,qBAAoB;AAC9C,OAAI,YAAY,UAAU,QAAQ;IAChC,MAAM,YAAY,KAAK,MAAM,KAAK,QAAQ,GAAG,GAAG;AAChD,QAAI,gBACF,QAAO,GAAG,UAAU,GAAG,gBAAgB,KACrC,YAAY,EACb,GAAG;AAEN,WAAO,GAAG,UAAU,KAAK,YAAY;;AAEvC,UAAO,GAAG,KAAK,MAAM,GAAG;IACzB;EAOD,MAAM,uBAAuB,aAAuB;GAClD,MAAM,gBAAgB,WAAW,SAAS,MAAK,GAC3C,SAAS,OAAM,GACf,SAAS;AACb,OAAI,eAAe;AACjB,iBAAa;AACb,SAAK,MAAM,cAAc,CAAC,OAAO,KAAK,MAAM,CAAA;AAC5C;;AAEF,OAAI,SAAS,QACX,UAAS,QAAQ;IACf;IACA;IACA,MAAM;IACP,CAAA;;EAIL,MAAM,gBAAgB,eAA6B;GACjD,MAAM,EAAE,SAAS;AACjB,OAAI;IAAC;IAAQ;IAAS;IAAU;IAAQ;IAAS;IAAQ,CAAC,SAAS,KAAK,CACtE,QAAO;AACT,UAAO;IACR;EAED,MAAM,iBAAiB,eAAe;AACpC,UACE,cAAc,UAAU,WACxB,cAAc,UAAU,YACxB,cAAc,UAAU;IAE3B;EAED,MAAM,eAAe,eAAuB;AAC1C,UAAO,cAAc,UAAU,SAC3B,YAAY,QACZ,cAAc;IACnB;EAED,MAAM,eAAe,eAAe,CAAC,CAAC,UAAU,OAAM;EAEtD,MAAM,kBAAkB,OACtB,OACA,aACG;AACH,OAAI,cAAc,UAAU,SAAS;AACnC,cAAU,QAAQ,oBAChB,UAAU,OACV,UAAU,MAAM,MAAM,EACtB,OACA,KAAK,OACL,aACF;AACA,SAAK,UAAU,OAAO,MAAK;cAClB,cAAc,UAAU,SACjC,MAAK,OAA4B,YAAY,KAAI;QAC5C;AACL,cAAU,QAAQ,oBAChB,UAAU,OACV,UAAU,MAAM,MAAM,EACtB,OACA,KAAK,OACL,aACF;AACA,gBAAY,QAAQ;AACpB,QAAI;KAAC;KAAS;KAAQ;KAAQ;KAAO,CAAC,SAAS,cAAc,MAAM,EAAE;AACnE,UAAK,UAAU,OAAO,KAAI;AAC1B,WAAM,UAAS;AACf,wBAAkB;;;AAGtB,qBAAkB,QAAO;;EAG3B,MAAM,iBAAiB,OACrB,MACA,aACG;AACH,OAAI,cAAc,UAAU,QAAQ;AAElC,cAAU,QAAQ,mBADL,UAAU,MAAM,QAAQ,OAAO,CAAC,KAAK,KAAc,EACrB,KAAK,OAAO,aAAY;AACnE,SAAK,UAAU,OAAO,MAAK;cAClB,cAAc,UAAU,QACjC,MAAK,MAA0B,YAAY,KAAI;QAC1C;AAEL,cAAU,QAAQ,mBADL,UAAU,MAAM,KAAK,KAAc,EACL,KAAK,OAAO,aAAY;AACnE,gBAAY,QAAQ;AACpB,QAAI;KAAC;KAAS;KAAQ;KAAQ;KAAO,CAAC,SAAS,cAAc,MAAM,EAAE;AACnE,UAAK,UAAU,OAAO,KAAI;AAC1B,WAAM,UAAS;AACf,wBAAkB;;;AAGtB,qBAAkB,OAAM;;EAG1B,MAAM,eAAe,iBAAgB;EAErC,MAAM,aAAa,OAAO,SAA2B;AACnD,OAAI,aAAa,MAAO;AACxB,eAAY,QAAQ;AACpB,SAAM,UAAS;AACf,sBAAkB;;EAGpB,MAAM,WAAW,eACT,MAAM,SAAS,cAAc,MAAM,SAAS,gBACpD;EAEA,MAAM,gBAAgB,eAAe;GACnC,MAAM,iBAAiB,SAAS,SAAS,cAAc,UAAU;GACjE,MAAM,iBAAiB,cAAc,UAAU;GAC/C,MAAM,kBAAkB,cAAc,UAAU;GAChD,MAAM,aAAa,YAAY,UAAU;GACzC,MAAM,aAAa,YAAY,UAAU;GACzC,MAAM,cAAc,YAAY,UAAU;AAC1C,UACG,kBAAkB,cAClB,kBAAkB,cAClB,mBAAmB;IAEvB;EAED,MAAM,eAAe,eACZ,CAAC,eAAe,SAAS,MAAM,WAAY,MAAM,YAC1D;EAEA,MAAM,kBAAkB,eAAe;AACrC,OAAI,CAAC,aAAc,QAAO;AAC1B,OAAI,CAAC,MAAM,YAAa,QAAO;AAC/B,OAAI,QAAQ,MAAM,YAAY,CAC5B,QAAO,aAAa,MAAM,YAAY,GAAG,QAAQ,CAAA;AAEnD,UAAO,aAAa,MAAM,YAAY,QAAQ,CAAA;IAC/C;EACD,MAAM,kBAAkB;AACtB,OAAI,eAAe,MACjB,MAAK,MAAM,YAAsB;QAC5B;IAEL,IAAI,SAAS,aAAa,MAAM,YAAW;AAC3C,QAAI,CAAC,QAAQ;KACX,MAAM,eAAe,MAAM,YAAY,CAAC,OAAO,KAAK,MAAK;KACzD,MAAM,gBAAgB,iBAAgB;AACtC,cAAS,aACN,KAAK,cAAc,MAAM,CAAA,CACzB,MAAM,cAAc,OAAO,CAAA,CAC3B,KAAK,cAAc,MAAM,CAAA;;AAE9B,cAAU,QAAQ;AAClB,SAAK,OAAM;;;EAIf,MAAM,cAAc,eAAe;AACjC,OAAI,CAAC,aAAc,QAAO;AAC1B,UAAO,aAAa,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,QAAQ,CAAA;IACxD;EACD,MAAM,oBAAoB;GAIxB,MAAM,UADM,OAAO,CAAC,OAAO,KAAK,MAAK,CACjB,QAAO;AAC3B,iBAAc,QAAQ;AACtB,QACG,CAAC,gBAAgB,CAAC,aAAa,QAAQ,KACxC,qBAAqB,QAAO,EAC5B;AACA,cAAU,QAAQ,OAAO,CAAC,OAAO,KAAK,MAAK;AAC3C,SAAK,UAAU,MAAK;;;EAIxB,MAAM,aAAa,eAAe;AAChC,UACE,MAAM,cAAc,kBAAkB,MAAM,OAAO,IAAI;IAE1D;EAED,MAAM,aAAa,eAAe;AAChC,UACE,MAAM,cAAc,kBAAkB,MAAM,OAAO,IAAI;IAE1D;EAED,MAAM,cAAc,eAAe;AACjC,OAAI,cAAc,MAAO,QAAO,cAAc;AAC9C,OAAI,CAAC,MAAM,eAAe,CAAC,aAAa,MAAO;AAE/C,WADkB,aAAa,MAAM,YAAY,IAAI,UAAU,OAC9C,OAAO,WAAW,MAAK;IACzC;EAED,MAAM,cAAc,eAAe;AACjC,OAAI,cAAc,MAAO,QAAO,cAAc;AAC9C,OAAI,CAAC,MAAM,eAAe,CAAC,aAAa,MAAO;AAE/C,WADkB,aAAa,MAAM,YAAY,IAAI,UAAU,OAC9C,OAAO,WAAW,MAAK;IACzC;EAED,MAAM,oBAAoB,IAAI,MAAK;EACnC,MAAM,+BAA+B;AACnC,qBAAkB,QAAQ;;EAE5B,MAAM,4BAA4B;AAChC,qBAAkB,QAAQ;;EAG5B,MAAM,YAAY,SAAgB;AAChC,UAAO;IACL,MAAM,KAAK,MAAM;IACjB,QAAQ,KAAK,QAAQ;IACrB,QAAQ,KAAK,QAAQ;IACrB,MAAM,KAAK,MAAM;IACjB,OAAO,KAAK,OAAO;IACnB,MAAM,KAAK,MAAM;IACnB;;EAGF,MAAM,kBAAkB,OAAc,SAAkB,UAAmB;GACzE,MAAM,EAAE,MAAM,QAAQ,WAAW,SAAS,MAAK;GAC/C,MAAM,kBAAkB,aAAa,MAAM,YAAW;AAItD,aAAU,QAHM,kBACZ,gBAAgB,KAAK,KAAK,CAAC,OAAO,OAAO,CAAC,OAAO,OAAM,GACvD;AAEJ,QAAK,UAAU,OAAO,KAAI;AAC1B,OAAI,CAAC,MACH,mBAAkB,QAAQ;;EAI9B,MAAM,2BAA2B,UAAkB;GACjD,MAAM,UAAU,MAAM,OAAO,WAAW,MAAM,CAAC,OAAO,KAAK,MAAK;AAChE,OAAI,QAAQ,SAAS,IAAI,qBAAqB,QAAQ,EAAE;IACtD,MAAM,EAAE,MAAM,OAAO,SAAS,SAAS,UAAU,MAAK;AACtD,cAAU,QAAQ,QAAQ,KAAK,KAAK,CAAC,MAAM,MAAM,CAAC,KAAK,KAAI;AAC3D,kBAAc,QAAQ;AACtB,sBAAkB,QAAQ;AAC1B,SAAK,UAAU,OAAO,KAAI;;;EAI9B,MAAM,2BAA2B,UAAkB;GACjD,MAAM,UAAU,wBACd,OACA,WAAW,OACX,KAAK,OACL,gBACD;AACD,OAAI,QAAQ,SAAS,EAAE;AACrB,QAAI,gBAAgB,aAAa,QAAQ,QAAQ,CAAC,CAChD;IAEF,MAAM,EAAE,MAAM,QAAQ,WAAW,SAAS,UAAU,MAAK;AACzD,cAAU,QAAQ,QAAQ,KAAK,KAAK,CAAC,OAAO,OAAO,CAAC,OAAO,OAAM;AACjE,kBAAc,QAAQ;AACtB,SAAK,UAAU,OAAO,KAAI;;;EAI9B,MAAM,gBAAgB,SAAkB;AACtC,UACE,MAAM,QAAQ,KAAK,IACnB,KAAK,SAAS,KACb,eAAe,CAAC,aAAa,KAAK,QAAQ,CAAC,GAAG;;EAInD,MAAM,kBAAkB,UAAiB;AACvC,UAAO,wBACL,OACA,MAAM,QACN,KAAK,OACL,gBACF;;EAGF,MAAM,wBAAwB;GAC5B,MAAM,YAAY,MAAM,aAAa,MAAM,CAAC,OAAO,KAAK,MAAK;AAC7D,OAAI,CAAC,aAAa,OAAO;IACvB,MAAM,oBAAoB,aAAa;AACvC,WAAO,OAAM,CACV,KAAK,kBAAkB,MAAM,CAAA,CAC7B,OAAO,kBAAkB,QAAQ,CAAA,CACjC,OAAO,kBAAkB,QAAQ,CAAA,CACjC,OAAO,KAAK,MAAK;;AAEtB,UAAO;;EAGT,MAAM,0BAA0B;AAC9B,OAAI;IAAC;IAAQ;IAAS;IAAQ;IAAO,CAAC,SAAS,cAAc,MAAM,CACjE,gBAAe,OAAO,OAAM;;EAIhC,MAAM,2BAA2B;AAC/B,sBAAkB;AAElB,OAAI,cAAc,UAAU,OAC1B,kBAAiB,WAAW,KAAI;;EAIpC,MAAM,sBAAsB,UAAyB;GACnD,MAAM,OAAO,aAAa,MAAK;AAY/B,OAVkB;IAChB,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACb,CACc,SAAS,KAAK,EAAE;AAC5B,qBAAiB,KAAI;AACrB,UAAM,iBAAgB;AACtB,UAAM,gBAAe;;AAEvB,OACE;IAAC,WAAW;IAAO,WAAW;IAAO,WAAW;IAAY,CAAC,SAC3D,KACD,IACD,cAAc,UAAU,QACxB,cAAc,UAAU,MACxB;AACA,UAAM,gBAAe;AACrB,SAAK,UAAU,OAAO,MAAK;;;EAI/B,MAAM,oBAAoB,SAAiB;GAazC,MAAM,EAAE,IAAI,MAAM,MAAM,OAAO,MAAM,KAAK,QAAQ,aAAa;GAC/D,MAAM,UAA6B;IACjC,MAAM;MACH,KAAK;MACL,OAAO;MACP,OAAO;MACP,QAAQ;KACT,SAAS,MAAY,SACnB,KAAK,YAAY,KAAK,aAAa,GAAG,KAAK;KAC9C;IACD,OAAO;MACJ,KAAK;MACL,OAAO;MACP,OAAO;MACP,QAAQ;KACT,SAAS,MAAY,SACnB,KAAK,SAAS,KAAK,UAAU,GAAG,KAAK;KACxC;IACD,MAAM;MACH,KAAK;MACL,OAAO;MACP,OAAO;MACP,QAAQ;KACT,SAAS,MAAY,SACnB,KAAK,QAAQ,KAAK,SAAS,GAAG,OAAO,EAAE;KAC1C;IACD,MAAM;MACH,KAAK;MACL,OAAO;MACP,OAAO;MACP,QAAQ;MACR,QAAQ,SAAe,CAAC,KAAK,QAAQ;MACrC,OAAO,SAAe,CAAC,KAAK,QAAQ,GAAG;MACvC,UAAU,SACT,CAAC,IAAI,KAAK,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,EAAE,CAAC,SAAS;MAC5D,YAAY,SACX,IAAI,KAAK,KAAK,aAAa,EAAE,KAAK,UAAU,GAAG,GAAG,EAAE,CAAC,SAAS;KAChE,SAAS,MAAY,SAAiB,KAAK,QAAQ,KAAK,SAAS,GAAG,KAAK;KAC1E;IACH;GAEA,MAAM,UAAU,UAAU,MAAM,QAAO;AACvC,UAAO,KAAK,IAAI,UAAU,MAAM,KAAK,SAAS,QAAQ,KAAK,CAAC,GAAG,GAAG;IAChE,MAAM,MAAM,QAAQ,aAAa;AACjC,QAAI,CAAC,IAAK;AACV,QAAI,OACF,SACA,WAAW,IAAI,MAAK,GACf,IAAI,MAAqD,QAAO,GAC/D,IAAI,SAAoB,EAChC;AACA,QAAI,gBAAgB,aAAa,QAAQ,CACvC;IAEF,MAAM,SAAS,MAAM,QAAQ,CAAC,OAAO,KAAK,MAAK;AAC/C,cAAU,QAAQ;AAClB,gBAAY,QAAQ,QAAQ,KAAI;AAChC;;;EAIJ,MAAM,qBAAqB,SAA2B;AACpD,eAAY,gBAAgB,UAAU,MAAM,QAAQ,EAAE,MAAM,YAAY,MAAK;;AAG/E,cACQ,cAAc,QACnB,QAAQ;AACP,OAAI,CAAC,SAAS,OAAO,CAAC,SAAS,IAAI,EAAE;AACnC,gBAAY,QAAQ;AACpB;cACS,QAAQ,SAAS;AAC1B,gBAAY,QAAQ;AACpB;cACS,QAAQ,UAAU;AAC3B,gBAAY,QAAQ;AACpB;;AAEF,eAAY,QAAQ;KAEtB,EAAE,WAAW,MAAK,CACpB;AAEA,cACQ,aAAa,QAClB,QAAQ;AACP,OAAI,IACF,WAAU,QAAQ,iBAAgB;KAGtC,EAAE,WAAW,MAAK,CACpB;AAEA,cACQ,MAAM,cACX,QAAQ;AACP,OAAI,KAAK;AACP,QAAI,eAAe,MAAO;AAC1B,QAAI,QAAQ,IAAI,CAAE;AAClB,cAAU,QAAQ;SAElB,WAAU,QAAQ,iBAAgB;KAGtC,EAAE,WAAW,MAAK,CACpB;AAEA,cAAY,qBAAqB,CAAC,gBAAgB,aAAa,CAAA;AAC/D,cAAY,qBAAqB,CAAC,kBAAkB,eAAe,CAAA;AACnE,cAAY,qBAAqB,CAAC,qBAAqB,mBAAmB,CAAA;;uBAh3BxE,mBAqNM,OAAA,EApNH,OAAK,eAAA;IAAU,MAAA,KAAI,CAAC,GAAC;IAAU,MAAA,KAAI,CAAC,GAAC;IAAU,MAAA,KAAI,CAAC,GAAE,UAAWA,KAAAA,OAAM;IAAS,MAAA,KAAI,CAAC,GAAE,YAAa,MAAA,aAAY,CAAA;;oBAAkCC,KAAAA,OAAO,WAAW,aAAA;iBAAkC,SAAA;;UAWvM,mBA+KM,OAAA,EA/KA,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,eAAA,CAAA;IACjB,WAAkD,KAAA,QAAA,WAAA,EAA5B,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,UAAA,CAAA;IACxB,aAAA,sBAAX,mBAWM,OAAA;;KAXoB,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,UAAA,CAAA;0BACrC,mBASS,UAAA,MAAA,WARmB,MAAA,UAAS,GAA3B,UAAU,QAAG;yBADvB,mBASS,UAAA;MAPD;MACN,MAAK;MACJ,UAAU,MAAA,aAAY;MACtB,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,WAAA,CAAA;MACb,UAAK,WAAE,oBAAoB,SAAQ;wBAEjC,SAAS,KAAI,EAAA,IAAA,WAAA;;IAGpB,mBAgKM,OAAA,EAhKA,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,OAAA,CAAA;KACN,SAAA,sBAAX,mBAmCM,OAAA;;MAnCgB,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,cAAA,CAAA;SACjC,mBAWO,QAAA,EAXA,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,cAAA,CAAA,KAClB,YASE,MAAA,QAAA,EAAA;MARC,aAAa,MAAA,EAAC,CAAA,2BAAA;MACd,eAAa,YAAA;MACd,MAAK;MACJ,kBAAgB;MAChB,UAAU,MAAA,aAAY;MACtB,UAAQ,CAAGC,KAAAA;MACX,SAAK,OAAA,OAAA,OAAA,MAAG,QAAS,cAAA,QAAgB;MACjC,UAAQ;;;;;;2CAGb,mBAqBO,QAAA,EAnBJ,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,cAAA,CAAA,KAEd,YAUE,MAAA,QAAA,EAAA;MATC,aAAa,MAAA,EAAC,CAAA,2BAAA;MACd,eAAa,YAAA;MACd,MAAK;MACJ,kBAAgB;MAChB,UAAU,MAAA,aAAY;MACtB,UAAQ,CAAGA,KAAAA;MACX,SAAO;MACP,SAAK,OAAA,OAAA,OAAA,MAAG,QAAS,cAAA,QAAgB;MACjC,UAAQ;;;;;;SAEX,YAKE,MAAA,wBAAA,EAAA;MAJC,SAAS,kBAAA;MACT,QAAQ,WAAA;MACR,gBAAc,UAAA;MACd,QAAM;;;;;sCAlBQ,oBAAmB;oBAsBxC,mBAsFM,OAAA,EApFH,OAAK,eAAA,CAAgB,MAAA,KAAI,CAAC,EAAC,SAAA,GAAyB,YAAA,UAAW,UAAe,YAAA,UAAW,YAA+B,MAAA,KAAI,CAAC,GAAE,UAAA,WAAA;MAMhI,mBA0BO,QAAA,EA1BA,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,WAAA,CAAA,KAClB,mBAWS,UAAA;OAVP,MAAK;OACJ,cAAY,MAAA,EAAC,CAAA,yBAAA;OACd,OAAK,eAAA,CAAC,gBACE,MAAA,KAAI,CAAC,EAAC,WAAA,CAAA,CAAA;OACb,UAAU,MAAA,aAAY;OACtB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,WAAU,MAAA;UAElB,WAEO,KAAA,QAAA,aAAA,EAAA,QAAA,CADL,YAAmC,MAAA,OAAA,EAAA,MAAA;8BAAV,CAAhB,YAAgB,MAAA,WAAA,CAAA;;6CAG7B,mBAYS,UAAA;OAVP,MAAK;OACJ,cAAY,MAAA,EAAC,CAAA,0BAAA;OACb,OAAK,eAAA,CAAE,MAAA,KAAI,CAAC,EAAC,WAAA,EACR,aAAY,CAAA;OACjB,UAAU,MAAA,aAAY;OACtB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,YAAW,MAAA;UAEnB,WAEO,KAAA,QAAA,cAAA,EAAA,QAAA,CADL,YAAiC,MAAA,OAAA,EAAA,MAAA;8BAAV,CAAd,YAAc,MAAA,UAAA,CAAA;;uCATjB,YAAA,UAAW,OAAA;MAavB,mBASC,QAAA;OARC,MAAK;OACJ,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,eAAA,CAAA;OACd,aAAU;OACT,UAAUC,KAAAA,WAAW,SAAS;OAC9B,iBAAeA,KAAAA;OACf,WAAO,OAAA,OAAA,OAAA,KAAA,UAAA,WAAQ,WAAU,OAAA,EAAA,CAAA,QAAA,CAAA;OACzB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,WAAU,OAAA;yBACd,UAAA,MAAS,EAAA,IAAA,WAAA;qBAEf,mBAaC,QAAA;OAXC,MAAK;OACL,aAAU;OACT,UAAUA,KAAAA,WAAW,SAAS;OAC9B,iBAAeA,KAAAA;OACf,OAAK,eAAA,CAAkB,MAAA,KAAI,CAAC,EAAC,eAAA,YAA0C,YAAA,UAAW,SAAA;OAIlF,WAAO,OAAA,OAAA,OAAA,KAAA,UAAA,WAAQ,WAAU,QAAA,EAAA,CAAA,QAAA,CAAA;OACzB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,WAAU,QAAA;yBACd,MAAA,EAAC,CAAA,sBAAuB,MAAA,QAAK,IAAA,CAAA,EAAA,IAAA,WAAA,EAAA,SAXzB,YAAA,UAAW,OAAA;MAarB,mBA0BO,QAAA,EA1BA,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,WAAA,CAAA,oBAClB,mBAYS,UAAA;OAVP,MAAK;OACJ,cAAY,MAAA,EAAC,CAAA,0BAAA;OACb,OAAK,eAAA,CAAE,MAAA,KAAI,CAAC,EAAC,WAAA,EACR,cAAa,CAAA;OAClB,UAAU,MAAA,aAAY;OACtB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,YAAW,KAAA;UAEnB,WAEO,KAAA,QAAA,cAAA,EAAA,QAAA,CADL,YAAkC,MAAA,OAAA,EAAA,MAAA;8BAAV,CAAf,YAAe,MAAA,WAAA,CAAA;;uCATlB,YAAA,UAAW,OAAA,IAYrB,mBAWS,UAAA;OAVP,MAAK;OACJ,cAAY,MAAA,EAAC,CAAA,yBAAA;OACb,OAAK,eAAA,CAAE,MAAA,KAAI,CAAC,EAAC,WAAA,EACR,gBAAe,CAAA;OACpB,UAAU,MAAA,aAAY;OACtB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,WAAU,KAAA;UAElB,WAEO,KAAA,QAAA,aAAA,EAAA,QAAA,CADL,YAAoC,MAAA,OAAA,EAAA,MAAA;8BAAV,CAAjB,YAAiB,MAAA,YAAA,CAAA;;;qBAjFxB,YAAA,UAAW,OAAA;KAsFrB,mBAmCM,OAAA;MAnCA,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,UAAA,CAAA;MAAc,WAAS;;MAEhC,YAAA,UAAW,uBADnB,YAWE,0BAAA;;gBATI;OAAJ,KAAI;OACH,kBAAgB,cAAA;OAChB,MAAM,UAAA;OACN,gBAAcC,KAAAA;OACd,iBAAe,MAAA,aAAY;OAC3B,UAAU,MAAA,aAAY;OACtB,mBAAiB,MAAA,cAAa;OAC9B,oBAAkBC,KAAAA;OAClB,QAAM;;;;;;;;;;MAGD,YAAA,UAAW,uBADnB,YAUE,0BAAA;;gBARI;OAAJ,KAAI;OACH,kBAAgB,cAAA;OAChB,MAAM,UAAA;OACN,iBAAe,MAAA,aAAY;OAC3B,UAAU,MAAA,aAAY;OACtB,gBAAcD,KAAAA;OACd,mBAAiB,MAAA,cAAa;OAC9B,QAAM;;;;;;;;;MAGD,YAAA,UAAW,wBADnB,YAUE,2BAAA;;gBARI;OAAJ,KAAI;OACH,kBAAgB,cAAA;OAChB,MAAM,UAAA;OACN,gBAAcA,KAAAA;OACd,iBAAe,MAAA,aAAY;OAC3B,UAAU,MAAA,aAAY;OACtB,mBAAiB,MAAA,cAAa;OAC9B,QAAM;;;;;;;;;;;UAMPE,KAAAA,cAAc,cAAA,SAAiB,aAAA,sBADvC,mBAwBM,OAAA;;IAtBH,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,SAAA,CAAA;sBAEd,YASY,MAAA,SAAA,EAAA;IAPV,MAAA;IACA,MAAK;IACJ,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,WAAA,CAAA;IACb,UAAU,YAAA;IACV,SAAO;;2BAEoB,iCAAzB,MAAA,EAAC,CAAA,oBAAA,CAAA,EAAA,EAAA;;2CAPK,eAAA,SAAkBC,KAAAA,QAAO,IAU5BC,KAAAA,4BADR,YASY,MAAA,SAAA,EAAA;;IAPV,OAAA;IACA,MAAK;IACJ,OAAK,eAAE,MAAA,KAAI,CAAC,EAAC,WAAA,CAAA;IACb,UAAU,gBAAA;IACV,SAAO;;2BAEwB,iCAA7B,MAAA,EAAC,CAAA,wBAAA,CAAA,EAAA,EAAA"}