@element-plus/nightly 0.0.20220110 → 0.0.20220111

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 (236) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.css +1 -1
  3. package/dist/index.full.js +361 -425
  4. package/dist/index.full.min.js +8 -8
  5. package/dist/index.full.min.js.map +1 -1
  6. package/dist/index.full.min.mjs +8 -8
  7. package/dist/index.full.min.mjs.map +1 -1
  8. package/dist/index.full.mjs +365 -430
  9. package/es/components/calendar/src/calendar.vue_vue_type_script_lang.mjs +4 -4
  10. package/es/components/calendar/src/calendar.vue_vue_type_script_lang.mjs.map +1 -1
  11. package/es/components/calendar/src/calendar.vue_vue_type_template_id_76705c76_lang.mjs.map +1 -1
  12. package/es/components/cascader/index.d.ts +18 -2
  13. package/es/components/cascader/src/index.vue.d.ts +9 -1
  14. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs +6 -0
  15. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs.map +1 -1
  16. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.mjs.map +1 -1
  17. package/es/components/dropdown/index.d.ts +11 -1
  18. package/es/components/dropdown/src/dropdown-item-impl.vue_vue_type_script_lang.mjs.map +1 -1
  19. package/es/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.mjs +32 -26
  20. package/es/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.mjs.map +1 -1
  21. package/es/components/dropdown/src/dropdown-menu.vue.d.ts +1 -0
  22. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.mjs +5 -7
  23. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.mjs.map +1 -1
  24. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.mjs +1 -1
  25. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.mjs.map +1 -1
  26. package/es/components/dropdown/src/dropdown.vue.d.ts +9 -1
  27. package/es/components/index.mjs +1 -0
  28. package/es/components/index.mjs.map +1 -1
  29. package/es/components/popover/index.d.ts +18 -2
  30. package/es/components/popover/src/index.vue.d.ts +9 -1
  31. package/es/components/popper/src/content.vue_vue_type_script_lang.mjs +2 -1
  32. package/es/components/popper/src/content.vue_vue_type_script_lang.mjs.map +1 -1
  33. package/es/components/popper/src/content.vue_vue_type_template_id_611b76f0_lang.mjs.map +1 -1
  34. package/es/components/popper/src/trigger.vue.d.ts +3 -3
  35. package/es/components/popper/src/trigger.vue_vue_type_script_lang.mjs +2 -2
  36. package/es/components/popper/src/trigger.vue_vue_type_script_lang.mjs.map +1 -1
  37. package/es/components/popper/src/trigger.vue_vue_type_template_id_4fb6e0af_lang.mjs.map +1 -1
  38. package/es/components/select/index.d.ts +9 -1
  39. package/es/components/select/src/select.vue.d.ts +9 -1
  40. package/es/components/select/src/useSelect.d.ts +9 -1
  41. package/es/components/select-v2/index.d.ts +18 -2
  42. package/es/components/select-v2/src/select.vue.d.ts +9 -1
  43. package/es/components/select-v2/src/useSelect.d.ts +9 -1
  44. package/es/components/table/src/filter-panel.vue.d.ts +9 -1
  45. package/es/components/time-picker/src/common/picker.vue.d.ts +9 -1
  46. package/es/components/time-picker/src/common/picker.vue_vue_type_script_lang.mjs.map +1 -1
  47. package/es/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.mjs +4 -2
  48. package/es/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.mjs.map +1 -1
  49. package/es/components/tooltip/index.d.ts +5 -0
  50. package/es/components/tooltip/index.mjs +1 -0
  51. package/es/components/tooltip/index.mjs.map +1 -1
  52. package/es/components/tooltip/src/content.vue.d.ts +13 -6
  53. package/es/components/tooltip/src/content.vue_vue_type_script_lang.mjs +42 -67
  54. package/es/components/tooltip/src/content.vue_vue_type_script_lang.mjs.map +1 -1
  55. package/es/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.mjs +53 -56
  56. package/es/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.mjs.map +1 -1
  57. package/es/components/tooltip/src/tokens.d.ts +1 -0
  58. package/es/components/tooltip/src/tokens.mjs.map +1 -1
  59. package/es/components/tooltip/src/tooltip.d.ts +2 -0
  60. package/es/components/tooltip/src/tooltip.mjs +8 -0
  61. package/es/components/tooltip/src/tooltip.mjs.map +1 -1
  62. package/es/components/tooltip/src/tooltip.vue.d.ts +4 -0
  63. package/es/components/tooltip/src/tooltip.vue_vue_type_script_lang.mjs +2 -1
  64. package/es/components/tooltip/src/tooltip.vue_vue_type_script_lang.mjs.map +1 -1
  65. package/es/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.mjs +2 -1
  66. package/es/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.mjs.map +1 -1
  67. package/es/components/tooltip/src/trigger.vue.d.ts +1 -1
  68. package/es/components/tooltip/src/trigger.vue_vue_type_script_lang.mjs +2 -2
  69. package/es/components/tooltip/src/trigger.vue_vue_type_script_lang.mjs.map +1 -1
  70. package/es/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.mjs +2 -2
  71. package/es/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.mjs.map +1 -1
  72. package/es/components/tree/src/model/useDragNode.mjs +1 -1
  73. package/es/components/tree/src/model/useDragNode.mjs.map +1 -1
  74. package/es/components/tree/src/tree-node.vue_vue_type_script_lang.mjs +1 -1
  75. package/es/components/tree/src/tree-node.vue_vue_type_script_lang.mjs.map +1 -1
  76. package/es/components/tree/src/tree-node.vue_vue_type_template_id_62959aba_lang.mjs.map +1 -1
  77. package/es/index.mjs +1 -0
  78. package/es/index.mjs.map +1 -1
  79. package/es/packages/components/cascader/index.d.ts +18 -2
  80. package/es/packages/components/cascader/src/index.vue.d.ts +9 -1
  81. package/es/packages/components/descriptions/index.d.ts +4 -4
  82. package/es/packages/components/descriptions/src/description-item.d.ts +2 -2
  83. package/es/packages/components/dropdown/index.d.ts +13 -3
  84. package/es/packages/components/dropdown/src/dropdown-menu.vue.d.ts +1 -0
  85. package/es/packages/components/dropdown/src/dropdown.vue.d.ts +11 -3
  86. package/es/packages/components/message-box/src/index.vue.d.ts +2 -2
  87. package/es/packages/components/pagination/index.d.ts +2 -2
  88. package/es/packages/components/pagination/src/pagination.d.ts +2 -2
  89. package/es/packages/components/popover/index.d.ts +18 -2
  90. package/es/packages/components/popover/src/index.vue.d.ts +9 -1
  91. package/es/packages/components/popper/src/trigger.vue.d.ts +3 -3
  92. package/es/packages/components/roving-focus-group/src/roving-focus-group-impl.vue.d.ts +1 -1
  93. package/es/packages/components/roving-focus-group/src/roving-focus-item.vue.d.ts +1 -1
  94. package/es/packages/components/select/index.d.ts +9 -1
  95. package/es/packages/components/select/src/select.vue.d.ts +9 -1
  96. package/es/packages/components/select/src/useSelect.d.ts +9 -1
  97. package/es/packages/components/select-v2/index.d.ts +18 -2
  98. package/es/packages/components/select-v2/src/select.vue.d.ts +9 -1
  99. package/es/packages/components/select-v2/src/useSelect.d.ts +9 -1
  100. package/es/packages/components/table/src/filter-panel.vue.d.ts +9 -1
  101. package/es/packages/components/time-picker/src/common/picker.vue.d.ts +9 -1
  102. package/es/packages/components/tooltip/index.d.ts +5 -0
  103. package/es/packages/components/tooltip/src/content.vue.d.ts +13 -6
  104. package/es/packages/components/tooltip/src/tokens.d.ts +1 -0
  105. package/es/packages/components/tooltip/src/tooltip.d.ts +2 -0
  106. package/es/packages/components/tooltip/src/tooltip.vue.d.ts +4 -0
  107. package/es/packages/components/tooltip/src/trigger.vue.d.ts +1 -1
  108. package/es/packages/components/tree-v2/src/tree-node.vue.d.ts +1 -1
  109. package/es/packages/components/virtual-list/src/builders/build-grid.d.ts +2 -2
  110. package/es/packages/components/virtual-list/src/builders/build-list.d.ts +2 -2
  111. package/es/packages/components/virtual-list/src/components/dynamic-size-grid.d.ts +2 -2
  112. package/es/packages/components/virtual-list/src/components/dynamic-size-list.d.ts +2 -2
  113. package/es/packages/components/virtual-list/src/components/fixed-size-grid.d.ts +2 -2
  114. package/es/packages/components/virtual-list/src/components/fixed-size-list.d.ts +2 -2
  115. package/es/packages/version.d.ts +1 -1
  116. package/es/version.d.ts +1 -1
  117. package/es/version.mjs +1 -1
  118. package/es/version.mjs.map +1 -1
  119. package/lib/components/calendar/src/calendar.vue_vue_type_script_lang.js +4 -4
  120. package/lib/components/calendar/src/calendar.vue_vue_type_script_lang.js.map +1 -1
  121. package/lib/components/calendar/src/calendar.vue_vue_type_template_id_76705c76_lang.js.map +1 -1
  122. package/lib/components/cascader/index.d.ts +18 -2
  123. package/lib/components/cascader/src/index.vue.d.ts +9 -1
  124. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js +6 -0
  125. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js.map +1 -1
  126. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.js.map +1 -1
  127. package/lib/components/dropdown/index.d.ts +11 -1
  128. package/lib/components/dropdown/src/dropdown-item-impl.vue_vue_type_script_lang.js.map +1 -1
  129. package/lib/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.js +31 -25
  130. package/lib/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.js.map +1 -1
  131. package/lib/components/dropdown/src/dropdown-menu.vue.d.ts +1 -0
  132. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.js +4 -6
  133. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.js.map +1 -1
  134. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.js +1 -1
  135. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.js.map +1 -1
  136. package/lib/components/dropdown/src/dropdown.vue.d.ts +9 -1
  137. package/lib/components/index.js +2 -0
  138. package/lib/components/index.js.map +1 -1
  139. package/lib/components/popover/index.d.ts +18 -2
  140. package/lib/components/popover/src/index.vue.d.ts +9 -1
  141. package/lib/components/popper/src/content.vue_vue_type_script_lang.js +2 -1
  142. package/lib/components/popper/src/content.vue_vue_type_script_lang.js.map +1 -1
  143. package/lib/components/popper/src/content.vue_vue_type_template_id_611b76f0_lang.js.map +1 -1
  144. package/lib/components/popper/src/trigger.vue.d.ts +3 -3
  145. package/lib/components/popper/src/trigger.vue_vue_type_script_lang.js +2 -2
  146. package/lib/components/popper/src/trigger.vue_vue_type_script_lang.js.map +1 -1
  147. package/lib/components/popper/src/trigger.vue_vue_type_template_id_4fb6e0af_lang.js.map +1 -1
  148. package/lib/components/select/index.d.ts +9 -1
  149. package/lib/components/select/src/select.vue.d.ts +9 -1
  150. package/lib/components/select/src/useSelect.d.ts +9 -1
  151. package/lib/components/select-v2/index.d.ts +18 -2
  152. package/lib/components/select-v2/src/select.vue.d.ts +9 -1
  153. package/lib/components/select-v2/src/useSelect.d.ts +9 -1
  154. package/lib/components/table/src/filter-panel.vue.d.ts +9 -1
  155. package/lib/components/time-picker/src/common/picker.vue.d.ts +9 -1
  156. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_lang.js.map +1 -1
  157. package/lib/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.js +4 -2
  158. package/lib/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.js.map +1 -1
  159. package/lib/components/tooltip/index.d.ts +5 -0
  160. package/lib/components/tooltip/index.js +2 -0
  161. package/lib/components/tooltip/index.js.map +1 -1
  162. package/lib/components/tooltip/src/content.vue.d.ts +13 -6
  163. package/lib/components/tooltip/src/content.vue_vue_type_script_lang.js +43 -68
  164. package/lib/components/tooltip/src/content.vue_vue_type_script_lang.js.map +1 -1
  165. package/lib/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.js +52 -55
  166. package/lib/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.js.map +1 -1
  167. package/lib/components/tooltip/src/tokens.d.ts +1 -0
  168. package/lib/components/tooltip/src/tokens.js.map +1 -1
  169. package/lib/components/tooltip/src/tooltip.d.ts +2 -0
  170. package/lib/components/tooltip/src/tooltip.js +8 -0
  171. package/lib/components/tooltip/src/tooltip.js.map +1 -1
  172. package/lib/components/tooltip/src/tooltip.vue.d.ts +4 -0
  173. package/lib/components/tooltip/src/tooltip.vue_vue_type_script_lang.js +2 -1
  174. package/lib/components/tooltip/src/tooltip.vue_vue_type_script_lang.js.map +1 -1
  175. package/lib/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.js +2 -1
  176. package/lib/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.js.map +1 -1
  177. package/lib/components/tooltip/src/trigger.vue.d.ts +1 -1
  178. package/lib/components/tooltip/src/trigger.vue_vue_type_script_lang.js +2 -2
  179. package/lib/components/tooltip/src/trigger.vue_vue_type_script_lang.js.map +1 -1
  180. package/lib/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.js +2 -2
  181. package/lib/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.js.map +1 -1
  182. package/lib/components/tree/src/model/useDragNode.js +1 -1
  183. package/lib/components/tree/src/model/useDragNode.js.map +1 -1
  184. package/lib/components/tree/src/tree-node.vue_vue_type_script_lang.js +1 -1
  185. package/lib/components/tree/src/tree-node.vue_vue_type_script_lang.js.map +1 -1
  186. package/lib/components/tree/src/tree-node.vue_vue_type_template_id_62959aba_lang.js.map +1 -1
  187. package/lib/index.js +2 -0
  188. package/lib/index.js.map +1 -1
  189. package/lib/packages/components/cascader/index.d.ts +18 -2
  190. package/lib/packages/components/cascader/src/index.vue.d.ts +9 -1
  191. package/lib/packages/components/descriptions/index.d.ts +4 -4
  192. package/lib/packages/components/descriptions/src/description-item.d.ts +2 -2
  193. package/lib/packages/components/dropdown/index.d.ts +13 -3
  194. package/lib/packages/components/dropdown/src/dropdown-menu.vue.d.ts +1 -0
  195. package/lib/packages/components/dropdown/src/dropdown.vue.d.ts +11 -3
  196. package/lib/packages/components/message-box/src/index.vue.d.ts +2 -2
  197. package/lib/packages/components/pagination/index.d.ts +2 -2
  198. package/lib/packages/components/pagination/src/pagination.d.ts +2 -2
  199. package/lib/packages/components/popover/index.d.ts +18 -2
  200. package/lib/packages/components/popover/src/index.vue.d.ts +9 -1
  201. package/lib/packages/components/popper/src/trigger.vue.d.ts +3 -3
  202. package/lib/packages/components/roving-focus-group/src/roving-focus-group-impl.vue.d.ts +1 -1
  203. package/lib/packages/components/roving-focus-group/src/roving-focus-item.vue.d.ts +1 -1
  204. package/lib/packages/components/select/index.d.ts +9 -1
  205. package/lib/packages/components/select/src/select.vue.d.ts +9 -1
  206. package/lib/packages/components/select/src/useSelect.d.ts +9 -1
  207. package/lib/packages/components/select-v2/index.d.ts +18 -2
  208. package/lib/packages/components/select-v2/src/select.vue.d.ts +9 -1
  209. package/lib/packages/components/select-v2/src/useSelect.d.ts +9 -1
  210. package/lib/packages/components/table/src/filter-panel.vue.d.ts +9 -1
  211. package/lib/packages/components/time-picker/src/common/picker.vue.d.ts +9 -1
  212. package/lib/packages/components/tooltip/index.d.ts +5 -0
  213. package/lib/packages/components/tooltip/src/content.vue.d.ts +13 -6
  214. package/lib/packages/components/tooltip/src/tokens.d.ts +1 -0
  215. package/lib/packages/components/tooltip/src/tooltip.d.ts +2 -0
  216. package/lib/packages/components/tooltip/src/tooltip.vue.d.ts +4 -0
  217. package/lib/packages/components/tooltip/src/trigger.vue.d.ts +1 -1
  218. package/lib/packages/components/tree-v2/src/tree-node.vue.d.ts +1 -1
  219. package/lib/packages/components/virtual-list/src/builders/build-grid.d.ts +2 -2
  220. package/lib/packages/components/virtual-list/src/builders/build-list.d.ts +2 -2
  221. package/lib/packages/components/virtual-list/src/components/dynamic-size-grid.d.ts +2 -2
  222. package/lib/packages/components/virtual-list/src/components/dynamic-size-list.d.ts +2 -2
  223. package/lib/packages/components/virtual-list/src/components/fixed-size-grid.d.ts +2 -2
  224. package/lib/packages/components/virtual-list/src/components/fixed-size-list.d.ts +2 -2
  225. package/lib/packages/version.d.ts +1 -1
  226. package/lib/version.d.ts +1 -1
  227. package/lib/version.js +1 -1
  228. package/lib/version.js.map +1 -1
  229. package/package.json +2 -2
  230. package/tags.json +1 -1
  231. package/theme-chalk/el-dropdown.css +1 -1
  232. package/theme-chalk/el-tree.css +1 -1
  233. package/theme-chalk/index.css +1 -1
  234. package/theme-chalk/src/dropdown.scss +13 -18
  235. package/theme-chalk/src/tree.scss +2 -1
  236. package/web-types.json +1 -1
@@ -22,19 +22,19 @@ var script = defineComponent({
22
22
  const selectedDay = ref();
23
23
  const now = dayjs().locale(lang.value);
24
24
  const prevMonthDayjs = computed(() => {
25
- return date.value.subtract(1, "month");
25
+ return date.value.subtract(1, "month").date(1);
26
26
  });
27
27
  const curMonthDatePrefix = computed(() => {
28
28
  return dayjs(date.value).locale(lang.value).format("YYYY-MM");
29
29
  });
30
30
  const nextMonthDayjs = computed(() => {
31
- return date.value.add(1, "month");
31
+ return date.value.add(1, "month").date(1);
32
32
  });
33
33
  const prevYearDayjs = computed(() => {
34
- return date.value.subtract(1, "year");
34
+ return date.value.subtract(1, "year").date(1);
35
35
  });
36
36
  const nextYearDayjs = computed(() => {
37
- return date.value.add(1, "year");
37
+ return date.value.add(1, "year").date(1);
38
38
  });
39
39
  const i18nDate = computed(() => {
40
40
  const pickedMonth = `el.datepicker.month${date.value.format("M")}`;
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/calendar/src/calendar.vue"],"sourcesContent":["<template>\n <div class=\"el-calendar\">\n <div class=\"el-calendar__header\">\n <slot name=\"header\" :date=\"i18nDate\">\n <div class=\"el-calendar__title\">{{ i18nDate }}</div>\n <div\n v-if=\"validatedRange.length === 0\"\n class=\"el-calendar__button-group\"\n >\n <el-button-group>\n <el-button size=\"small\" @click=\"selectDate('prev-month')\">\n {{ t('el.datepicker.prevMonth') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('today')\">\n {{ t('el.datepicker.today') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('next-month')\">\n {{ t('el.datepicker.nextMonth') }}\n </el-button>\n </el-button-group>\n </div>\n </slot>\n </div>\n <div v-if=\"validatedRange.length === 0\" class=\"el-calendar__body\">\n <date-table :date=\"date\" :selected-day=\"realSelectedDay\" @pick=\"pickDay\">\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n <div v-else class=\"el-calendar__body\">\n <date-table\n v-for=\"(range_, index) in validatedRange\"\n :key=\"index\"\n :date=\"range_[0]\"\n :selected-day=\"realSelectedDay\"\n :range=\"range_\"\n :hide-header=\"index !== 0\"\n @pick=\"pickDay\"\n >\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { ref, computed, defineComponent } from 'vue'\nimport dayjs from 'dayjs'\nimport { ElButton, ElButtonGroup } from '@element-plus/components/button'\nimport { useLocale } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils/error'\nimport DateTable from './date-table.vue'\nimport { calendarProps, calendarEmits } from './calendar'\n\nimport type { ComputedRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\ntype DateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today'\n\nexport default defineComponent({\n name: 'ElCalendar',\n\n components: {\n DateTable,\n ElButton,\n ElButtonGroup,\n },\n\n props: calendarProps,\n emits: calendarEmits,\n\n setup(props, { emit }) {\n const { t, lang } = useLocale()\n const selectedDay = ref<Dayjs>()\n const now = dayjs().locale(lang.value)\n\n const prevMonthDayjs = computed(() => {\n return date.value.subtract(1, 'month')\n })\n const curMonthDatePrefix = computed(() => {\n return dayjs(date.value).locale(lang.value).format('YYYY-MM')\n })\n\n const nextMonthDayjs = computed(() => {\n return date.value.add(1, 'month')\n })\n\n const prevYearDayjs = computed(() => {\n return date.value.subtract(1, 'year')\n })\n\n const nextYearDayjs = computed(() => {\n return date.value.add(1, 'year')\n })\n\n const i18nDate = computed(() => {\n const pickedMonth = `el.datepicker.month${date.value.format('M')}`\n return `${date.value.year()} ${t('el.datepicker.year')} ${t(pickedMonth)}`\n })\n\n const realSelectedDay = computed<Dayjs | undefined>({\n get() {\n if (!props.modelValue) return selectedDay.value\n return date.value\n },\n set(val) {\n if (!val) return\n selectedDay.value = val\n const result = val.toDate()\n\n emit('input', result)\n emit('update:modelValue', result)\n },\n })\n\n const date: ComputedRef<Dayjs> = computed(() => {\n if (!props.modelValue) {\n if (realSelectedDay.value) {\n return realSelectedDay.value\n } else if (validatedRange.value.length) {\n return validatedRange.value[0][0]\n }\n return now\n } else {\n return dayjs(props.modelValue).locale(lang.value)\n }\n })\n\n // https://github.com/element-plus/element-plus/issues/3155\n // Calculate the validate date range according to the start and end dates\n const calculateValidatedDateRange = (\n startDayjs: Dayjs,\n endDayjs: Dayjs\n ): [Dayjs, Dayjs][] => {\n const firstDay = startDayjs.startOf('week')\n const lastDay = endDayjs.endOf('week')\n const firstMonth = firstDay.get('month')\n const lastMonth = lastDay.get('month')\n\n // Current mouth\n if (firstMonth === lastMonth) {\n return [[firstDay, lastDay]]\n }\n // Two adjacent months\n else if (firstMonth + 1 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the first month and the first day of the last month is in the same week\n const isSameWeek = firstMonthLastDay.isSame(lastMonthFirstDay, 'week')\n const lastMonthStartDay = isSameWeek\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Three consecutive months (compatible: 2021-01-30 to 2021-02-28)\n else if (firstMonth + 2 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const secondMonthFirstDay = firstDay.add(1, 'month').startOf('month')\n\n // Whether the last day of the first month and the second month is in the same week\n const secondMonthStartDay = firstMonthLastDay.isSame(\n secondMonthFirstDay,\n 'week'\n )\n ? secondMonthFirstDay.add(1, 'week')\n : secondMonthFirstDay\n\n const secondMonthLastDay = secondMonthStartDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the second month and the last day of the last month is in the same week\n const lastMonthStartDay = secondMonthLastDay.isSame(\n lastMonthFirstDay,\n 'week'\n )\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [secondMonthStartDay.startOf('week'), secondMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Other cases\n else {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n }\n\n // if range is valid, we get a two-digit array\n const validatedRange = computed(() => {\n if (!props.range) return []\n const rangeArrDayjs = props.range.map((_) => dayjs(_).locale(lang.value))\n const [startDayjs, endDayjs] = rangeArrDayjs\n if (startDayjs.isAfter(endDayjs)) {\n debugWarn('ElCalendar', 'end time should be greater than start time')\n return []\n }\n if (startDayjs.isSame(endDayjs, 'month')) {\n // same month\n return calculateValidatedDateRange(startDayjs, endDayjs)\n } else {\n // two months\n if (startDayjs.add(1, 'month').month() !== endDayjs.month()) {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n return calculateValidatedDateRange(startDayjs, endDayjs)\n }\n })\n\n const pickDay = (day: Dayjs) => {\n realSelectedDay.value = day\n }\n\n const selectDate = (type: DateType) => {\n let day: Dayjs\n if (type === 'prev-month') {\n day = prevMonthDayjs.value\n } else if (type === 'next-month') {\n day = nextMonthDayjs.value\n } else if (type === 'prev-year') {\n day = prevYearDayjs.value\n } else if (type === 'next-year') {\n day = nextYearDayjs.value\n } else {\n day = now\n }\n\n if (day.isSame(date.value, 'day')) return\n pickDay(day)\n }\n\n return {\n selectedDay,\n curMonthDatePrefix,\n i18nDate,\n realSelectedDay,\n date,\n validatedRange,\n pickDay,\n selectDate,\n t,\n }\n },\n})\n</script>\n"],"names":["DateTable"],"mappings":";;;;;;;;;;AAuDA,aAAe,eAAe,CAAC;;AAE/B,EAAE,UAAU,EAAE;AACd,eAAIA;;AAEJ;;EAEE,KAAK,EAAE;EACP,KAAK,EAAE;EACP,KAAK,CAAC,KAAK;IACT,MAAM;;AAEV,IAAI,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC;IAC3B,MAAM;;KAEL,CAAC,CAAC;IACH,MAAM;MACJ;KACD,CAAC,CAAC;;;KAGF,CAAC,CAAC;IACH,MAAM;;KAEL,CAAC,CAAC;IACH,MAAM,gBAAgB,QAAQ;MAC5B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;KAC1B,CAAC,CAAC;;MAED,MAAM,WAAW,IAAI;MACrB,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;KAClC;IACD,MAAM,eAAe,WAAW,CAAC;MAC/B,GAAG;;;QAGD,OAAO,IAAI,CAAC,KAAK;OAClB;;;UAGG,OAAO;QACT,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC;;;QAGxB,IAAI,CAAC,mBAAmB,EAAE,OAAO;OAClC;KACF;;MAEC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;QACrB,IAAI,eAAe,CAAC,KAAK,EAAE;UACzB,OAAO,eAAe,CAAC,KAAK,CAAC;;;;QAI/B;aACK;QACL,OAAO,KAAK,CAAC;OACd;MACD,CAAC;;YAEK,QAAQ,GAAG;YACX,OAAO,WAAW,CAAC;;YAEnB,YAAY;UACd,UAAU,KAAK,SAAS,EAAE;;;;QAI5B,MAAM,iBAAiB,UAAU,CAAC,OAAO,CAAC;cACpC,UAAU,GAAG;QACnB,MAAM,iBAAiB;eAChB;UACL,CAAC,QAAQ,EAAE,iBAAiB,CAAC;UAC7B,CAAC,iBAAiB,CAAC,OAAO,CAAC;;aAExB,IAAI;QACT;QACA,yBAAyB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;;;;QAI5C,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,CAAC;QACpD,OAAO;UACL,CAAC,QAAQ,EAAE,iBAAiB;UAC5B,CAAC;UACD,CAAC;SACF,CAAC;OACH,MAAM;QACL,SAAS,CAAC,YAAY,EAAE;QACxB,OAAO,EAAE,CAAC;OACX;;UAEG;MACJ,IAAI,CAAC,KAAK,CAAC,KAAK;QACd,OAAO,EAAE,CAAC;MACZ;MACA,OAAO,UAAU,EAAE;MACnB,cAAc,CAAC,OAAO,SAAS,CAAC,EAAE;QAChC,SAAS,CAAC,YAAY,EAAE;QACxB,OAAO,EAAE,CAAC;;oBAEE,CAAC,OAAO,QAAQ,SAAS,CAAC,EAAE;QACxC,OAAO,2BAA2B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;;YAErD,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;UAC7B,SAAS,CAAC;;SAEX;eACM;;;;MAIT,eAAe,CAAC,KAAK,GAAG,IAAI;MAC5B;UACI,UAAU,GAAG,CAAC,IAAI;UAClB,IAAI;;QAEN,GAAG,GAAG,cAAc,CAAC,MAAM;iBAClB,IAAI,KAAK,YAAY,EAAE;WAC7B,GAAG,cAAc,CAAC;aAChB;QACL;aACK,IAAI,IAAI,KAAK,WAAW,EAAE;cACzB,aAAa,CAAC;;QAEpB,GAAG,GAAG,GAAG,CAAC;;;QAGV,OAAO;cACD,GAAG,CAAC,CAAC;;WAER;;wBAEa;cACV;;UAEJ;;aAEG;gBACG;;MAEV;;;;;;"}
1
+ {"version":3,"file":"calendar.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/calendar/src/calendar.vue"],"sourcesContent":["<template>\n <div class=\"el-calendar\">\n <div class=\"el-calendar__header\">\n <slot name=\"header\" :date=\"i18nDate\">\n <div class=\"el-calendar__title\">{{ i18nDate }}</div>\n <div\n v-if=\"validatedRange.length === 0\"\n class=\"el-calendar__button-group\"\n >\n <el-button-group>\n <el-button size=\"small\" @click=\"selectDate('prev-month')\">\n {{ t('el.datepicker.prevMonth') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('today')\">\n {{ t('el.datepicker.today') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('next-month')\">\n {{ t('el.datepicker.nextMonth') }}\n </el-button>\n </el-button-group>\n </div>\n </slot>\n </div>\n <div v-if=\"validatedRange.length === 0\" class=\"el-calendar__body\">\n <date-table :date=\"date\" :selected-day=\"realSelectedDay\" @pick=\"pickDay\">\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n <div v-else class=\"el-calendar__body\">\n <date-table\n v-for=\"(range_, index) in validatedRange\"\n :key=\"index\"\n :date=\"range_[0]\"\n :selected-day=\"realSelectedDay\"\n :range=\"range_\"\n :hide-header=\"index !== 0\"\n @pick=\"pickDay\"\n >\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { ref, computed, defineComponent } from 'vue'\nimport dayjs from 'dayjs'\nimport { ElButton, ElButtonGroup } from '@element-plus/components/button'\nimport { useLocale } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils/error'\nimport DateTable from './date-table.vue'\nimport { calendarProps, calendarEmits } from './calendar'\n\nimport type { ComputedRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\ntype DateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today'\n\nexport default defineComponent({\n name: 'ElCalendar',\n\n components: {\n DateTable,\n ElButton,\n ElButtonGroup,\n },\n\n props: calendarProps,\n emits: calendarEmits,\n\n setup(props, { emit }) {\n const { t, lang } = useLocale()\n const selectedDay = ref<Dayjs>()\n const now = dayjs().locale(lang.value)\n\n const prevMonthDayjs = computed(() => {\n return date.value.subtract(1, 'month').date(1)\n })\n const curMonthDatePrefix = computed(() => {\n return dayjs(date.value).locale(lang.value).format('YYYY-MM')\n })\n\n const nextMonthDayjs = computed(() => {\n return date.value.add(1, 'month').date(1)\n })\n\n const prevYearDayjs = computed(() => {\n return date.value.subtract(1, 'year').date(1)\n })\n\n const nextYearDayjs = computed(() => {\n return date.value.add(1, 'year').date(1)\n })\n\n const i18nDate = computed(() => {\n const pickedMonth = `el.datepicker.month${date.value.format('M')}`\n return `${date.value.year()} ${t('el.datepicker.year')} ${t(pickedMonth)}`\n })\n\n const realSelectedDay = computed<Dayjs | undefined>({\n get() {\n if (!props.modelValue) return selectedDay.value\n return date.value\n },\n set(val) {\n if (!val) return\n selectedDay.value = val\n const result = val.toDate()\n\n emit('input', result)\n emit('update:modelValue', result)\n },\n })\n\n const date: ComputedRef<Dayjs> = computed(() => {\n if (!props.modelValue) {\n if (realSelectedDay.value) {\n return realSelectedDay.value\n } else if (validatedRange.value.length) {\n return validatedRange.value[0][0]\n }\n return now\n } else {\n return dayjs(props.modelValue).locale(lang.value)\n }\n })\n\n // https://github.com/element-plus/element-plus/issues/3155\n // Calculate the validate date range according to the start and end dates\n const calculateValidatedDateRange = (\n startDayjs: Dayjs,\n endDayjs: Dayjs\n ): [Dayjs, Dayjs][] => {\n const firstDay = startDayjs.startOf('week')\n const lastDay = endDayjs.endOf('week')\n const firstMonth = firstDay.get('month')\n const lastMonth = lastDay.get('month')\n\n // Current mouth\n if (firstMonth === lastMonth) {\n return [[firstDay, lastDay]]\n }\n // Two adjacent months\n else if (firstMonth + 1 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the first month and the first day of the last month is in the same week\n const isSameWeek = firstMonthLastDay.isSame(lastMonthFirstDay, 'week')\n const lastMonthStartDay = isSameWeek\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Three consecutive months (compatible: 2021-01-30 to 2021-02-28)\n else if (firstMonth + 2 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const secondMonthFirstDay = firstDay.add(1, 'month').startOf('month')\n\n // Whether the last day of the first month and the second month is in the same week\n const secondMonthStartDay = firstMonthLastDay.isSame(\n secondMonthFirstDay,\n 'week'\n )\n ? secondMonthFirstDay.add(1, 'week')\n : secondMonthFirstDay\n\n const secondMonthLastDay = secondMonthStartDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the second month and the last day of the last month is in the same week\n const lastMonthStartDay = secondMonthLastDay.isSame(\n lastMonthFirstDay,\n 'week'\n )\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [secondMonthStartDay.startOf('week'), secondMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Other cases\n else {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n }\n\n // if range is valid, we get a two-digit array\n const validatedRange = computed(() => {\n if (!props.range) return []\n const rangeArrDayjs = props.range.map((_) => dayjs(_).locale(lang.value))\n const [startDayjs, endDayjs] = rangeArrDayjs\n if (startDayjs.isAfter(endDayjs)) {\n debugWarn('ElCalendar', 'end time should be greater than start time')\n return []\n }\n if (startDayjs.isSame(endDayjs, 'month')) {\n // same month\n return calculateValidatedDateRange(startDayjs, endDayjs)\n } else {\n // two months\n if (startDayjs.add(1, 'month').month() !== endDayjs.month()) {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n return calculateValidatedDateRange(startDayjs, endDayjs)\n }\n })\n\n const pickDay = (day: Dayjs) => {\n realSelectedDay.value = day\n }\n\n const selectDate = (type: DateType) => {\n let day: Dayjs\n if (type === 'prev-month') {\n day = prevMonthDayjs.value\n } else if (type === 'next-month') {\n day = nextMonthDayjs.value\n } else if (type === 'prev-year') {\n day = prevYearDayjs.value\n } else if (type === 'next-year') {\n day = nextYearDayjs.value\n } else {\n day = now\n }\n\n if (day.isSame(date.value, 'day')) return\n pickDay(day)\n }\n\n return {\n selectedDay,\n curMonthDatePrefix,\n i18nDate,\n realSelectedDay,\n date,\n validatedRange,\n pickDay,\n selectDate,\n t,\n }\n },\n})\n</script>\n"],"names":["DateTable"],"mappings":";;;;;;;;;;AAuDA,aAAe,eAAe,CAAC;;AAE/B,EAAE,UAAU,EAAE;AACd,eAAIA;;AAEJ;;EAEE,KAAK,EAAE;EACP,KAAK,EAAE;EACP,KAAK,CAAC,KAAK;IACT,MAAM;;AAEV,IAAI,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC;IAC3B,MAAM;;KAEL,CAAC,CAAC;IACH,MAAM;MACJ;KACD,CAAC,CAAC;;;KAGF,CAAC,CAAC;IACH,MAAM;;KAEL,CAAC,CAAC;IACH,MAAM,gBAAgB,QAAQ;MAC5B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;KAC1B,CAAC,CAAC;;MAED,MAAM,WAAW,IAAI;MACrB,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;KAClC;IACD,MAAM,eAAe,WAAW,CAAC;MAC/B,GAAG;;;QAGD,OAAO,IAAI,CAAC,KAAK;OAClB;;;UAGG,OAAO;QACT,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC;;;QAGxB,IAAI,CAAC,mBAAmB,EAAE,OAAO;OAClC;KACF;;MAEC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;QACrB,IAAI,eAAe,CAAC,KAAK,EAAE;UACzB,OAAO,eAAe,CAAC,KAAK,CAAC;;;;QAI/B;aACK;QACL,OAAO,KAAK,CAAC;OACd;MACD,CAAC;;YAEK,QAAQ,GAAG;YACX,OAAO,WAAW,CAAC;;YAEnB,YAAY;UACd,UAAU,KAAK,SAAS,EAAE;;;;QAI5B,MAAM,iBAAiB,UAAU,CAAC,OAAO,CAAC;cACpC,UAAU,GAAG;QACnB,MAAM,iBAAiB;eAChB;UACL,CAAC,QAAQ,EAAE,iBAAiB,CAAC;UAC7B,CAAC,iBAAiB,CAAC,OAAO,CAAC;;aAExB,IAAI;QACT;QACA,yBAAyB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;;;;QAI5C,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,CAAC;QACpD,OAAO;UACL,CAAC,QAAQ,EAAE,iBAAiB;UAC5B,CAAC;UACD,CAAC;SACF,CAAC;OACH,MAAM;QACL,SAAS,CAAC,YAAY,EAAE;QACxB,OAAO,EAAE,CAAC;OACX;;UAEG;MACJ,IAAI,CAAC,KAAK,CAAC,KAAK;QACd,OAAO,EAAE,CAAC;MACZ;MACA,OAAO,UAAU,EAAE;MACnB,cAAc,CAAC,OAAO,SAAS,CAAC,EAAE;QAChC,SAAS,CAAC,YAAY,EAAE;QACxB,OAAO,EAAE,CAAC;;oBAEE,CAAC,OAAO,QAAQ,SAAS,CAAC,EAAE;QACxC,OAAO,2BAA2B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;;YAErD,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;UAC7B,SAAS,CAAC;;SAEX;eACM;;;;MAIT,eAAe,CAAC,KAAK,GAAG,IAAI;MAC5B;UACI,UAAU,GAAG,CAAC,IAAI;UAClB,IAAI;;QAEN,GAAG,GAAG,cAAc,CAAC,MAAM;iBAClB,IAAI,KAAK,YAAY,EAAE;WAC7B,GAAG,cAAc,CAAC;aAChB;QACL;aACK,IAAI,IAAI,KAAK,WAAW,EAAE;cACzB,aAAa,CAAC;;QAEpB,GAAG,GAAG,GAAG,CAAC;;;QAGV,OAAO;cACD,GAAG,CAAC,CAAC;;WAER;;wBAEa;cACV;;UAEJ;;aAEG;gBACG;;MAEV;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.vue_vue_type_template_id_76705c76_lang.mjs","sources":["../../../../../../packages/components/calendar/src/calendar.vue?vue&type=template&id=76705c76&lang.js"],"sourcesContent":["<template>\n <div class=\"el-calendar\">\n <div class=\"el-calendar__header\">\n <slot name=\"header\" :date=\"i18nDate\">\n <div class=\"el-calendar__title\">{{ i18nDate }}</div>\n <div\n v-if=\"validatedRange.length === 0\"\n class=\"el-calendar__button-group\"\n >\n <el-button-group>\n <el-button size=\"small\" @click=\"selectDate('prev-month')\">\n {{ t('el.datepicker.prevMonth') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('today')\">\n {{ t('el.datepicker.today') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('next-month')\">\n {{ t('el.datepicker.nextMonth') }}\n </el-button>\n </el-button-group>\n </div>\n </slot>\n </div>\n <div v-if=\"validatedRange.length === 0\" class=\"el-calendar__body\">\n <date-table :date=\"date\" :selected-day=\"realSelectedDay\" @pick=\"pickDay\">\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n <div v-else class=\"el-calendar__body\">\n <date-table\n v-for=\"(range_, index) in validatedRange\"\n :key=\"index\"\n :date=\"range_[0]\"\n :selected-day=\"realSelectedDay\"\n :range=\"range_\"\n :hide-header=\"index !== 0\"\n @pick=\"pickDay\"\n >\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { ref, computed, defineComponent } from 'vue'\nimport dayjs from 'dayjs'\nimport { ElButton, ElButtonGroup } from '@element-plus/components/button'\nimport { useLocale } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils/error'\nimport DateTable from './date-table.vue'\nimport { calendarProps, calendarEmits } from './calendar'\n\nimport type { ComputedRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\ntype DateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today'\n\nexport default defineComponent({\n name: 'ElCalendar',\n\n components: {\n DateTable,\n ElButton,\n ElButtonGroup,\n },\n\n props: calendarProps,\n emits: calendarEmits,\n\n setup(props, { emit }) {\n const { t, lang } = useLocale()\n const selectedDay = ref<Dayjs>()\n const now = dayjs().locale(lang.value)\n\n const prevMonthDayjs = computed(() => {\n return date.value.subtract(1, 'month')\n })\n const curMonthDatePrefix = computed(() => {\n return dayjs(date.value).locale(lang.value).format('YYYY-MM')\n })\n\n const nextMonthDayjs = computed(() => {\n return date.value.add(1, 'month')\n })\n\n const prevYearDayjs = computed(() => {\n return date.value.subtract(1, 'year')\n })\n\n const nextYearDayjs = computed(() => {\n return date.value.add(1, 'year')\n })\n\n const i18nDate = computed(() => {\n const pickedMonth = `el.datepicker.month${date.value.format('M')}`\n return `${date.value.year()} ${t('el.datepicker.year')} ${t(pickedMonth)}`\n })\n\n const realSelectedDay = computed<Dayjs | undefined>({\n get() {\n if (!props.modelValue) return selectedDay.value\n return date.value\n },\n set(val) {\n if (!val) return\n selectedDay.value = val\n const result = val.toDate()\n\n emit('input', result)\n emit('update:modelValue', result)\n },\n })\n\n const date: ComputedRef<Dayjs> = computed(() => {\n if (!props.modelValue) {\n if (realSelectedDay.value) {\n return realSelectedDay.value\n } else if (validatedRange.value.length) {\n return validatedRange.value[0][0]\n }\n return now\n } else {\n return dayjs(props.modelValue).locale(lang.value)\n }\n })\n\n // https://github.com/element-plus/element-plus/issues/3155\n // Calculate the validate date range according to the start and end dates\n const calculateValidatedDateRange = (\n startDayjs: Dayjs,\n endDayjs: Dayjs\n ): [Dayjs, Dayjs][] => {\n const firstDay = startDayjs.startOf('week')\n const lastDay = endDayjs.endOf('week')\n const firstMonth = firstDay.get('month')\n const lastMonth = lastDay.get('month')\n\n // Current mouth\n if (firstMonth === lastMonth) {\n return [[firstDay, lastDay]]\n }\n // Two adjacent months\n else if (firstMonth + 1 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the first month and the first day of the last month is in the same week\n const isSameWeek = firstMonthLastDay.isSame(lastMonthFirstDay, 'week')\n const lastMonthStartDay = isSameWeek\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Three consecutive months (compatible: 2021-01-30 to 2021-02-28)\n else if (firstMonth + 2 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const secondMonthFirstDay = firstDay.add(1, 'month').startOf('month')\n\n // Whether the last day of the first month and the second month is in the same week\n const secondMonthStartDay = firstMonthLastDay.isSame(\n secondMonthFirstDay,\n 'week'\n )\n ? secondMonthFirstDay.add(1, 'week')\n : secondMonthFirstDay\n\n const secondMonthLastDay = secondMonthStartDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the second month and the last day of the last month is in the same week\n const lastMonthStartDay = secondMonthLastDay.isSame(\n lastMonthFirstDay,\n 'week'\n )\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [secondMonthStartDay.startOf('week'), secondMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Other cases\n else {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n }\n\n // if range is valid, we get a two-digit array\n const validatedRange = computed(() => {\n if (!props.range) return []\n const rangeArrDayjs = props.range.map((_) => dayjs(_).locale(lang.value))\n const [startDayjs, endDayjs] = rangeArrDayjs\n if (startDayjs.isAfter(endDayjs)) {\n debugWarn('ElCalendar', 'end time should be greater than start time')\n return []\n }\n if (startDayjs.isSame(endDayjs, 'month')) {\n // same month\n return calculateValidatedDateRange(startDayjs, endDayjs)\n } else {\n // two months\n if (startDayjs.add(1, 'month').month() !== endDayjs.month()) {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n return calculateValidatedDateRange(startDayjs, endDayjs)\n }\n })\n\n const pickDay = (day: Dayjs) => {\n realSelectedDay.value = day\n }\n\n const selectDate = (type: DateType) => {\n let day: Dayjs\n if (type === 'prev-month') {\n day = prevMonthDayjs.value\n } else if (type === 'next-month') {\n day = nextMonthDayjs.value\n } else if (type === 'prev-year') {\n day = prevYearDayjs.value\n } else if (type === 'next-year') {\n day = nextYearDayjs.value\n } else {\n day = now\n }\n\n if (day.isSame(date.value, 'day')) return\n pickDay(day)\n }\n\n return {\n selectedDay,\n curMonthDatePrefix,\n i18nDate,\n realSelectedDay,\n date,\n validatedRange,\n pickDay,\n selectDate,\n t,\n }\n },\n})\n</script>\n"],"names":["_renderSlot"],"mappings":";;;qBACO,KAAK,EAAC;qBACJ,KAAK,EAAC;;;;EAKL;;;;EAgBkC;;;;EAO5B;;;;;;;;;;gDA3BiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAoBJ,CAAC;;UACxB;YAAa;YAAaA,eAAc;YAAkB;;yBACjC;;;;oBACrB;;;;;;sBAIN;;;cAGK,SAAU;cACVA,WAAY;cACZ;cACA,KAAK;2BACM;cACX;;;;;;;"}
1
+ {"version":3,"file":"calendar.vue_vue_type_template_id_76705c76_lang.mjs","sources":["../../../../../../packages/components/calendar/src/calendar.vue?vue&type=template&id=76705c76&lang.js"],"sourcesContent":["<template>\n <div class=\"el-calendar\">\n <div class=\"el-calendar__header\">\n <slot name=\"header\" :date=\"i18nDate\">\n <div class=\"el-calendar__title\">{{ i18nDate }}</div>\n <div\n v-if=\"validatedRange.length === 0\"\n class=\"el-calendar__button-group\"\n >\n <el-button-group>\n <el-button size=\"small\" @click=\"selectDate('prev-month')\">\n {{ t('el.datepicker.prevMonth') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('today')\">\n {{ t('el.datepicker.today') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('next-month')\">\n {{ t('el.datepicker.nextMonth') }}\n </el-button>\n </el-button-group>\n </div>\n </slot>\n </div>\n <div v-if=\"validatedRange.length === 0\" class=\"el-calendar__body\">\n <date-table :date=\"date\" :selected-day=\"realSelectedDay\" @pick=\"pickDay\">\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n <div v-else class=\"el-calendar__body\">\n <date-table\n v-for=\"(range_, index) in validatedRange\"\n :key=\"index\"\n :date=\"range_[0]\"\n :selected-day=\"realSelectedDay\"\n :range=\"range_\"\n :hide-header=\"index !== 0\"\n @pick=\"pickDay\"\n >\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { ref, computed, defineComponent } from 'vue'\nimport dayjs from 'dayjs'\nimport { ElButton, ElButtonGroup } from '@element-plus/components/button'\nimport { useLocale } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils/error'\nimport DateTable from './date-table.vue'\nimport { calendarProps, calendarEmits } from './calendar'\n\nimport type { ComputedRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\ntype DateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today'\n\nexport default defineComponent({\n name: 'ElCalendar',\n\n components: {\n DateTable,\n ElButton,\n ElButtonGroup,\n },\n\n props: calendarProps,\n emits: calendarEmits,\n\n setup(props, { emit }) {\n const { t, lang } = useLocale()\n const selectedDay = ref<Dayjs>()\n const now = dayjs().locale(lang.value)\n\n const prevMonthDayjs = computed(() => {\n return date.value.subtract(1, 'month').date(1)\n })\n const curMonthDatePrefix = computed(() => {\n return dayjs(date.value).locale(lang.value).format('YYYY-MM')\n })\n\n const nextMonthDayjs = computed(() => {\n return date.value.add(1, 'month').date(1)\n })\n\n const prevYearDayjs = computed(() => {\n return date.value.subtract(1, 'year').date(1)\n })\n\n const nextYearDayjs = computed(() => {\n return date.value.add(1, 'year').date(1)\n })\n\n const i18nDate = computed(() => {\n const pickedMonth = `el.datepicker.month${date.value.format('M')}`\n return `${date.value.year()} ${t('el.datepicker.year')} ${t(pickedMonth)}`\n })\n\n const realSelectedDay = computed<Dayjs | undefined>({\n get() {\n if (!props.modelValue) return selectedDay.value\n return date.value\n },\n set(val) {\n if (!val) return\n selectedDay.value = val\n const result = val.toDate()\n\n emit('input', result)\n emit('update:modelValue', result)\n },\n })\n\n const date: ComputedRef<Dayjs> = computed(() => {\n if (!props.modelValue) {\n if (realSelectedDay.value) {\n return realSelectedDay.value\n } else if (validatedRange.value.length) {\n return validatedRange.value[0][0]\n }\n return now\n } else {\n return dayjs(props.modelValue).locale(lang.value)\n }\n })\n\n // https://github.com/element-plus/element-plus/issues/3155\n // Calculate the validate date range according to the start and end dates\n const calculateValidatedDateRange = (\n startDayjs: Dayjs,\n endDayjs: Dayjs\n ): [Dayjs, Dayjs][] => {\n const firstDay = startDayjs.startOf('week')\n const lastDay = endDayjs.endOf('week')\n const firstMonth = firstDay.get('month')\n const lastMonth = lastDay.get('month')\n\n // Current mouth\n if (firstMonth === lastMonth) {\n return [[firstDay, lastDay]]\n }\n // Two adjacent months\n else if (firstMonth + 1 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the first month and the first day of the last month is in the same week\n const isSameWeek = firstMonthLastDay.isSame(lastMonthFirstDay, 'week')\n const lastMonthStartDay = isSameWeek\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Three consecutive months (compatible: 2021-01-30 to 2021-02-28)\n else if (firstMonth + 2 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const secondMonthFirstDay = firstDay.add(1, 'month').startOf('month')\n\n // Whether the last day of the first month and the second month is in the same week\n const secondMonthStartDay = firstMonthLastDay.isSame(\n secondMonthFirstDay,\n 'week'\n )\n ? secondMonthFirstDay.add(1, 'week')\n : secondMonthFirstDay\n\n const secondMonthLastDay = secondMonthStartDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the second month and the last day of the last month is in the same week\n const lastMonthStartDay = secondMonthLastDay.isSame(\n lastMonthFirstDay,\n 'week'\n )\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [secondMonthStartDay.startOf('week'), secondMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Other cases\n else {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n }\n\n // if range is valid, we get a two-digit array\n const validatedRange = computed(() => {\n if (!props.range) return []\n const rangeArrDayjs = props.range.map((_) => dayjs(_).locale(lang.value))\n const [startDayjs, endDayjs] = rangeArrDayjs\n if (startDayjs.isAfter(endDayjs)) {\n debugWarn('ElCalendar', 'end time should be greater than start time')\n return []\n }\n if (startDayjs.isSame(endDayjs, 'month')) {\n // same month\n return calculateValidatedDateRange(startDayjs, endDayjs)\n } else {\n // two months\n if (startDayjs.add(1, 'month').month() !== endDayjs.month()) {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n return calculateValidatedDateRange(startDayjs, endDayjs)\n }\n })\n\n const pickDay = (day: Dayjs) => {\n realSelectedDay.value = day\n }\n\n const selectDate = (type: DateType) => {\n let day: Dayjs\n if (type === 'prev-month') {\n day = prevMonthDayjs.value\n } else if (type === 'next-month') {\n day = nextMonthDayjs.value\n } else if (type === 'prev-year') {\n day = prevYearDayjs.value\n } else if (type === 'next-year') {\n day = nextYearDayjs.value\n } else {\n day = now\n }\n\n if (day.isSame(date.value, 'day')) return\n pickDay(day)\n }\n\n return {\n selectedDay,\n curMonthDatePrefix,\n i18nDate,\n realSelectedDay,\n date,\n validatedRange,\n pickDay,\n selectDate,\n t,\n }\n },\n})\n</script>\n"],"names":["_renderSlot"],"mappings":";;;qBACO,KAAK,EAAC;qBACJ,KAAK,EAAC;;;;EAKL;;;;EAgBkC;;;;EAO5B;;;;;;;;;;gDA3BiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAoBJ,CAAC;;UACxB;YAAa;YAAaA,eAAc;YAAkB;;yBACjC;;;;oBACrB;;;;;;sBAIN;;;cAGK,SAAU;cACVA,WAAY;cACZ;cACA,KAAK;2BACM;cACX;;;;;;;"}
@@ -86,6 +86,7 @@ declare const _Cascader: SFCWithInstall<import("vue").DefineComponent<{
86
86
  } | any)[])[])[])[])[])[])[])[])[])[])[];
87
87
  disabled: boolean;
88
88
  effect: string;
89
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
89
90
  showAfter: number;
90
91
  hideAfter: number;
91
92
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -144,6 +145,7 @@ declare const _Cascader: SFCWithInstall<import("vue").DefineComponent<{
144
145
  trigger?: unknown;
145
146
  virtualRef?: unknown;
146
147
  virtualTriggering?: unknown;
148
+ appendTo?: unknown;
147
149
  content?: unknown;
148
150
  rawContent?: unknown;
149
151
  persistent?: unknown;
@@ -202,6 +204,7 @@ declare const _Cascader: SFCWithInstall<import("vue").DefineComponent<{
202
204
  } | any)[])[])[])[])[])[])[])[])[])[])[];
203
205
  disabled: boolean;
204
206
  effect: string;
207
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
205
208
  showAfter: number;
206
209
  hideAfter: number;
207
210
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -255,7 +258,7 @@ declare const _Cascader: SFCWithInstall<import("vue").DefineComponent<{
255
258
  virtualTriggering?: import("../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown> | undefined;
256
259
  }> & {
257
260
  [x: string & `on${string}`]: ((...args: any[]) => any) | undefined;
258
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "offset" | "content" | "transition" | "visible" | "style" | "className" | "disabled" | "effect" | "showAfter" | "hideAfter" | "placement" | "gpuAcceleration" | "arrowOffset" | "boundariesPadding" | "fallbackPlacements" | "popperOptions" | "strategy" | "enterable" | "pure" | "popperClass" | "popperStyle" | "referenceEl" | "stopPopperMouseEvent" | "virtualRef" | "virtualTriggering" | "rawContent" | "persistent" | "teleported" | "openDelay" | "visibleArrow" | "showArrow" | "trigger">;
261
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "offset" | "content" | "transition" | "visible" | "style" | "className" | "disabled" | "effect" | "appendTo" | "showAfter" | "hideAfter" | "placement" | "gpuAcceleration" | "arrowOffset" | "boundariesPadding" | "fallbackPlacements" | "popperOptions" | "strategy" | "enterable" | "pure" | "popperClass" | "popperStyle" | "referenceEl" | "stopPopperMouseEvent" | "virtualRef" | "virtualTriggering" | "rawContent" | "persistent" | "teleported" | "openDelay" | "visibleArrow" | "showArrow" | "trigger">;
259
262
  $attrs: {
260
263
  [x: string]: unknown;
261
264
  };
@@ -279,6 +282,7 @@ declare const _Cascader: SFCWithInstall<import("vue").DefineComponent<{
279
282
  trigger?: unknown;
280
283
  virtualRef?: unknown;
281
284
  virtualTriggering?: unknown;
285
+ appendTo?: unknown;
282
286
  content?: unknown;
283
287
  rawContent?: unknown;
284
288
  persistent?: unknown;
@@ -337,6 +341,7 @@ declare const _Cascader: SFCWithInstall<import("vue").DefineComponent<{
337
341
  } | any)[])[])[])[])[])[])[])[])[])[])[];
338
342
  disabled: boolean;
339
343
  effect: string;
344
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
340
345
  showAfter: number;
341
346
  hideAfter: number;
342
347
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -468,6 +473,7 @@ declare const _Cascader: SFCWithInstall<import("vue").DefineComponent<{
468
473
  } | any)[])[])[])[])[])[])[])[])[])[])[];
469
474
  disabled: boolean;
470
475
  effect: string;
476
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
471
477
  showAfter: number;
472
478
  hideAfter: number;
473
479
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -546,6 +552,7 @@ declare const _Cascader: SFCWithInstall<import("vue").DefineComponent<{
546
552
  trigger?: unknown;
547
553
  virtualRef?: unknown;
548
554
  virtualTriggering?: unknown;
555
+ appendTo?: unknown;
549
556
  content?: unknown;
550
557
  rawContent?: unknown;
551
558
  persistent?: unknown;
@@ -604,6 +611,7 @@ declare const _Cascader: SFCWithInstall<import("vue").DefineComponent<{
604
611
  } | any)[])[])[])[])[])[])[])[])[])[])[];
605
612
  disabled: boolean;
606
613
  effect: string;
614
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
607
615
  showAfter: number;
608
616
  hideAfter: number;
609
617
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -1759,6 +1767,7 @@ export declare const ElCascader: SFCWithInstall<import("vue").DefineComponent<{
1759
1767
  } | any)[])[])[])[])[])[])[])[])[])[])[];
1760
1768
  disabled: boolean;
1761
1769
  effect: string;
1770
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
1762
1771
  showAfter: number;
1763
1772
  hideAfter: number;
1764
1773
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -1817,6 +1826,7 @@ export declare const ElCascader: SFCWithInstall<import("vue").DefineComponent<{
1817
1826
  trigger?: unknown;
1818
1827
  virtualRef?: unknown;
1819
1828
  virtualTriggering?: unknown;
1829
+ appendTo?: unknown;
1820
1830
  content?: unknown;
1821
1831
  rawContent?: unknown;
1822
1832
  persistent?: unknown;
@@ -1875,6 +1885,7 @@ export declare const ElCascader: SFCWithInstall<import("vue").DefineComponent<{
1875
1885
  } | any)[])[])[])[])[])[])[])[])[])[])[];
1876
1886
  disabled: boolean;
1877
1887
  effect: string;
1888
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
1878
1889
  showAfter: number;
1879
1890
  hideAfter: number;
1880
1891
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -1928,7 +1939,7 @@ export declare const ElCascader: SFCWithInstall<import("vue").DefineComponent<{
1928
1939
  virtualTriggering?: import("../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown> | undefined;
1929
1940
  }> & {
1930
1941
  [x: string & `on${string}`]: ((...args: any[]) => any) | undefined;
1931
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "offset" | "content" | "transition" | "visible" | "style" | "className" | "disabled" | "effect" | "showAfter" | "hideAfter" | "placement" | "gpuAcceleration" | "arrowOffset" | "boundariesPadding" | "fallbackPlacements" | "popperOptions" | "strategy" | "enterable" | "pure" | "popperClass" | "popperStyle" | "referenceEl" | "stopPopperMouseEvent" | "virtualRef" | "virtualTriggering" | "rawContent" | "persistent" | "teleported" | "openDelay" | "visibleArrow" | "showArrow" | "trigger">;
1942
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "offset" | "content" | "transition" | "visible" | "style" | "className" | "disabled" | "effect" | "appendTo" | "showAfter" | "hideAfter" | "placement" | "gpuAcceleration" | "arrowOffset" | "boundariesPadding" | "fallbackPlacements" | "popperOptions" | "strategy" | "enterable" | "pure" | "popperClass" | "popperStyle" | "referenceEl" | "stopPopperMouseEvent" | "virtualRef" | "virtualTriggering" | "rawContent" | "persistent" | "teleported" | "openDelay" | "visibleArrow" | "showArrow" | "trigger">;
1932
1943
  $attrs: {
1933
1944
  [x: string]: unknown;
1934
1945
  };
@@ -1952,6 +1963,7 @@ export declare const ElCascader: SFCWithInstall<import("vue").DefineComponent<{
1952
1963
  trigger?: unknown;
1953
1964
  virtualRef?: unknown;
1954
1965
  virtualTriggering?: unknown;
1966
+ appendTo?: unknown;
1955
1967
  content?: unknown;
1956
1968
  rawContent?: unknown;
1957
1969
  persistent?: unknown;
@@ -2010,6 +2022,7 @@ export declare const ElCascader: SFCWithInstall<import("vue").DefineComponent<{
2010
2022
  } | any)[])[])[])[])[])[])[])[])[])[])[];
2011
2023
  disabled: boolean;
2012
2024
  effect: string;
2025
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
2013
2026
  showAfter: number;
2014
2027
  hideAfter: number;
2015
2028
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -2141,6 +2154,7 @@ export declare const ElCascader: SFCWithInstall<import("vue").DefineComponent<{
2141
2154
  } | any)[])[])[])[])[])[])[])[])[])[])[];
2142
2155
  disabled: boolean;
2143
2156
  effect: string;
2157
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
2144
2158
  showAfter: number;
2145
2159
  hideAfter: number;
2146
2160
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -2219,6 +2233,7 @@ export declare const ElCascader: SFCWithInstall<import("vue").DefineComponent<{
2219
2233
  trigger?: unknown;
2220
2234
  virtualRef?: unknown;
2221
2235
  virtualTriggering?: unknown;
2236
+ appendTo?: unknown;
2222
2237
  content?: unknown;
2223
2238
  rawContent?: unknown;
2224
2239
  persistent?: unknown;
@@ -2277,6 +2292,7 @@ export declare const ElCascader: SFCWithInstall<import("vue").DefineComponent<{
2277
2292
  } | any)[])[])[])[])[])[])[])[])[])[])[];
2278
2293
  disabled: boolean;
2279
2294
  effect: string;
2295
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
2280
2296
  showAfter: number;
2281
2297
  hideAfter: number;
2282
2298
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -90,6 +90,7 @@ declare const _default: import("vue").DefineComponent<{
90
90
  } | any)[])[])[])[])[])[])[])[])[])[])[];
91
91
  disabled: boolean;
92
92
  effect: string;
93
+ appendTo: import("../../../utils/props").BuildPropType<import("../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
93
94
  showAfter: number;
94
95
  hideAfter: number;
95
96
  placement: import("../../../utils/props").BuildPropType<(new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>) | ((new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>))[], unknown, unknown>;
@@ -148,6 +149,7 @@ declare const _default: import("vue").DefineComponent<{
148
149
  trigger?: unknown;
149
150
  virtualRef?: unknown;
150
151
  virtualTriggering?: unknown;
152
+ appendTo?: unknown;
151
153
  content?: unknown;
152
154
  rawContent?: unknown;
153
155
  persistent?: unknown;
@@ -206,6 +208,7 @@ declare const _default: import("vue").DefineComponent<{
206
208
  } | any)[])[])[])[])[])[])[])[])[])[])[];
207
209
  disabled: boolean;
208
210
  effect: string;
211
+ appendTo: import("../../../utils/props").BuildPropType<import("../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
209
212
  showAfter: number;
210
213
  hideAfter: number;
211
214
  placement: import("../../../utils/props").BuildPropType<(new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>) | ((new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>))[], unknown, unknown>;
@@ -259,7 +262,7 @@ declare const _default: import("vue").DefineComponent<{
259
262
  virtualTriggering?: import("../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown> | undefined;
260
263
  }> & {
261
264
  [x: string & `on${string}`]: ((...args: any[]) => any) | undefined;
262
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "offset" | "content" | "transition" | "visible" | "style" | "className" | "disabled" | "effect" | "showAfter" | "hideAfter" | "placement" | "gpuAcceleration" | "arrowOffset" | "boundariesPadding" | "fallbackPlacements" | "popperOptions" | "strategy" | "enterable" | "pure" | "popperClass" | "popperStyle" | "referenceEl" | "stopPopperMouseEvent" | "virtualRef" | "virtualTriggering" | "rawContent" | "persistent" | "teleported" | "openDelay" | "visibleArrow" | "showArrow" | "trigger">;
265
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "offset" | "content" | "transition" | "visible" | "style" | "className" | "disabled" | "effect" | "appendTo" | "showAfter" | "hideAfter" | "placement" | "gpuAcceleration" | "arrowOffset" | "boundariesPadding" | "fallbackPlacements" | "popperOptions" | "strategy" | "enterable" | "pure" | "popperClass" | "popperStyle" | "referenceEl" | "stopPopperMouseEvent" | "virtualRef" | "virtualTriggering" | "rawContent" | "persistent" | "teleported" | "openDelay" | "visibleArrow" | "showArrow" | "trigger">;
263
266
  $attrs: {
264
267
  [x: string]: unknown;
265
268
  };
@@ -283,6 +286,7 @@ declare const _default: import("vue").DefineComponent<{
283
286
  trigger?: unknown;
284
287
  virtualRef?: unknown;
285
288
  virtualTriggering?: unknown;
289
+ appendTo?: unknown;
286
290
  content?: unknown;
287
291
  rawContent?: unknown;
288
292
  persistent?: unknown;
@@ -341,6 +345,7 @@ declare const _default: import("vue").DefineComponent<{
341
345
  } | any)[])[])[])[])[])[])[])[])[])[])[];
342
346
  disabled: boolean;
343
347
  effect: string;
348
+ appendTo: import("../../../utils/props").BuildPropType<import("../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
344
349
  showAfter: number;
345
350
  hideAfter: number;
346
351
  placement: import("../../../utils/props").BuildPropType<(new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>) | ((new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>))[], unknown, unknown>;
@@ -472,6 +477,7 @@ declare const _default: import("vue").DefineComponent<{
472
477
  } | any)[])[])[])[])[])[])[])[])[])[])[];
473
478
  disabled: boolean;
474
479
  effect: string;
480
+ appendTo: import("../../../utils/props").BuildPropType<import("../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
475
481
  showAfter: number;
476
482
  hideAfter: number;
477
483
  placement: import("../../../utils/props").BuildPropType<(new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>) | ((new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>))[], unknown, unknown>;
@@ -550,6 +556,7 @@ declare const _default: import("vue").DefineComponent<{
550
556
  trigger?: unknown;
551
557
  virtualRef?: unknown;
552
558
  virtualTriggering?: unknown;
559
+ appendTo?: unknown;
553
560
  content?: unknown;
554
561
  rawContent?: unknown;
555
562
  persistent?: unknown;
@@ -608,6 +615,7 @@ declare const _default: import("vue").DefineComponent<{
608
615
  } | any)[])[])[])[])[])[])[])[])[])[])[];
609
616
  disabled: boolean;
610
617
  effect: string;
618
+ appendTo: import("../../../utils/props").BuildPropType<import("../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
611
619
  showAfter: number;
612
620
  hideAfter: number;
613
621
  placement: import("../../../utils/props").BuildPropType<(new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>) | ((new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>))[], unknown, unknown>;
@@ -9,6 +9,7 @@ import { ElIcon } from '../../../icon/index.mjs';
9
9
  import { EVENT_CODE } from '../../../../utils/aria.mjs';
10
10
  import { isValidDatePickType } from '../../../../utils/validators.mjs';
11
11
  import { DArrowLeft, ArrowLeft, DArrowRight, ArrowRight } from '@element-plus/icons-vue';
12
+ import '../../../tooltip/index.mjs';
12
13
  import './basic-date-table.mjs';
13
14
  import './basic-month-table.mjs';
14
15
  import './basic-year-table.mjs';
@@ -18,6 +19,7 @@ import script$3 from './basic-month-table.vue_vue_type_script_lang.mjs';
18
19
  import script$4 from './basic-year-table.vue_vue_type_script_lang.mjs';
19
20
  import ClickOutside from '../../../../directives/click-outside/index.mjs';
20
21
  import { useLocale } from '../../../../hooks/use-locale/index.mjs';
22
+ import { TOOLTIP_INJECTION_KEY } from '../../../tooltip/src/tokens.mjs';
21
23
  import { extractTimeFormat, extractDateFormat } from '../../../time-picker/src/common/date-utils.mjs';
22
24
 
23
25
  const timeWithinRange = (_, __, ___) => true;
@@ -58,6 +60,7 @@ var script = defineComponent({
58
60
  setup(props, ctx) {
59
61
  const { t, lang } = useLocale();
60
62
  const pickerBase = inject("EP_PICKER_BASE");
63
+ const popper = inject(TOOLTIP_INJECTION_KEY);
61
64
  const {
62
65
  shortcuts,
63
66
  disabledDate,
@@ -171,6 +174,9 @@ var script = defineComponent({
171
174
  }
172
175
  currentView.value = "date";
173
176
  }, { immediate: true });
177
+ watch(() => currentView.value, () => {
178
+ popper == null ? void 0 : popper.updatePopper();
179
+ });
174
180
  const hasShortcuts = computed(() => !!shortcuts.length);
175
181
  const handleMonthPick = (month2) => {
176
182
  innerDate.value = innerDate.value.startOf("month").month(month2);
@@ -1 +1 @@
1
- {"version":3,"file":"panel-date-pick.vue_vue_type_script_lang.mjs","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/panel-date-pick.vue"],"sourcesContent":["<template>\n <div\n class=\"el-picker-panel el-date-picker\"\n :class=\"[\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n 'has-time': showTime,\n },\n ]\"\n >\n <div class=\"el-picker-panel__body-wrapper\">\n <slot name=\"sidebar\" class=\"el-picker-panel__sidebar\"></slot>\n <div v-if=\"hasShortcuts\" class=\"el-picker-panel__sidebar\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n class=\"el-picker-panel__shortcut\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div class=\"el-picker-panel__body\">\n <div v-if=\"showTime\" class=\"el-date-picker__time-header\">\n <span class=\"el-date-picker__editor-wrap\">\n <el-input\n :placeholder=\"t('el.datepicker.selectDate')\"\n :model-value=\"visibleDate\"\n size=\"small\"\n @input=\"(val) => (userInputDate = val)\"\n @change=\"handleVisibleDateChange\"\n />\n </span>\n <span\n v-clickoutside=\"handleTimePickClose\"\n class=\"el-date-picker__editor-wrap\"\n >\n <el-input\n :placeholder=\"t('el.datepicker.selectTime')\"\n :model-value=\"visibleTime\"\n size=\"small\"\n @focus=\"onTimePickerInputFocus\"\n @input=\"(val) => (userInputTime = val)\"\n @change=\"handleVisibleTimeChange\"\n />\n <time-pick-panel\n :visible=\"timePickerVisible\"\n :format=\"timeFormat\"\n :time-arrow-control=\"arrowControl\"\n :parsed-value=\"innerDate\"\n @pick=\"handleTimePick\"\n />\n </span>\n </div>\n <div\n v-show=\"currentView !== 'time'\"\n class=\"el-date-picker__header\"\n :class=\"{\n 'el-date-picker__header--bordered':\n currentView === 'year' || currentView === 'month',\n }\"\n >\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevYear`)\"\n class=\"el-picker-panel__icon-btn el-date-picker__prev-btn d-arrow-left\"\n @click=\"prevYear_\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevMonth`)\"\n class=\"el-picker-panel__icon-btn el-date-picker__prev-btn arrow-left\"\n @click=\"prevMonth_\"\n >\n <el-icon><arrow-left /></el-icon>\n </button>\n <span\n role=\"button\"\n class=\"el-date-picker__header-label\"\n @click=\"showYearPicker\"\n >{{ yearLabel }}</span\n >\n <span\n v-show=\"currentView === 'date'\"\n role=\"button\"\n class=\"el-date-picker__header-label\"\n :class=\"{ active: currentView === 'month' }\"\n @click=\"showMonthPicker\"\n >{{ t(`el.datepicker.month${month + 1}`) }}</span\n >\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextYear`)\"\n class=\"el-picker-panel__icon-btn el-date-picker__next-btn d-arrow-right\"\n @click=\"nextYear_\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextMonth`)\"\n class=\"el-picker-panel__icon-btn el-date-picker__next-btn arrow-right\"\n @click=\"nextMonth_\"\n >\n <el-icon><arrow-right /></el-icon>\n </button>\n </div>\n <div class=\"el-picker-panel__content\">\n <date-table\n v-if=\"currentView === 'date'\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n @pick=\"handleDatePick\"\n />\n <year-table\n v-if=\"currentView === 'year'\"\n :date=\"innerDate\"\n :disabled-date=\"disabledDate\"\n :parsed-value=\"parsedValue\"\n @pick=\"handleYearPick\"\n />\n <month-table\n v-if=\"currentView === 'month'\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n @pick=\"handleMonthPick\"\n />\n </div>\n </div>\n </div>\n <div\n v-show=\"footerVisible && currentView === 'date'\"\n class=\"el-picker-panel__footer\"\n >\n <el-button\n v-show=\"selectionMode !== 'dates'\"\n size=\"small\"\n type=\"text\"\n class=\"el-picker-panel__link-btn\"\n @click=\"changeToNow\"\n >\n {{ t('el.datepicker.now') }}\n </el-button>\n <el-button\n plain\n size=\"small\"\n class=\"el-picker-panel__link-btn\"\n @click=\"onConfirm\"\n >\n {{ t('el.datepicker.confirm') }}\n </el-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@element-plus/components/button'\nimport { ClickOutside } from '@element-plus/directives'\nimport { useLocale } from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport {\n extractDateFormat,\n extractTimeFormat,\n TimePickPanel,\n} from '@element-plus/components/time-picker'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isValidDatePickType } from '@element-plus/utils/validators'\nimport {\n DArrowLeft,\n ArrowLeft,\n DArrowRight,\n ArrowRight,\n} from '@element-plus/icons-vue'\nimport DateTable from './basic-date-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport YearTable from './basic-year-table.vue'\n\nimport type { PropType } from 'vue'\nimport type { ConfigType, Dayjs } from 'dayjs'\nimport type { IDatePickerType } from '../date-picker.type'\n\n// todo\n/* eslint-disable-next-line */\nconst timeWithinRange = (_: ConfigType, __: any, ___: string) => true\n\nexport default defineComponent({\n components: {\n DateTable,\n ElInput,\n ElButton,\n ElIcon,\n TimePickPanel,\n MonthTable,\n YearTable,\n DArrowLeft,\n ArrowLeft,\n DArrowRight,\n ArrowRight,\n },\n\n directives: { clickoutside: ClickOutside },\n props: {\n visible: {\n type: Boolean,\n default: false,\n },\n parsedValue: {\n type: [Object, Array] as PropType<Dayjs | Dayjs[]>,\n },\n format: {\n type: String,\n default: '',\n },\n type: {\n type: String as PropType<IDatePickerType>,\n required: true,\n validator: isValidDatePickType,\n },\n },\n emits: ['pick', 'set-picker-option'],\n setup(props, ctx) {\n const { t, lang } = useLocale()\n const pickerBase = inject('EP_PICKER_BASE') as any\n\n const {\n shortcuts,\n disabledDate,\n cellClassName,\n defaultTime,\n defaultValue,\n arrowControl,\n } = pickerBase.props\n\n const innerDate = ref(dayjs().locale(lang.value))\n\n const defaultTimeD = computed(() => {\n return dayjs(defaultTime).locale(lang.value)\n })\n\n const month = computed(() => {\n return innerDate.value.month()\n })\n\n const year = computed(() => {\n return innerDate.value.year()\n })\n\n const selectableRange = ref([])\n const userInputDate = ref(null)\n const userInputTime = ref(null)\n // todo update to disableHour\n const checkDateWithinRange = (date: ConfigType) => {\n return selectableRange.value.length > 0\n ? timeWithinRange(\n date,\n selectableRange.value,\n props.format || 'HH:mm:ss'\n )\n : true\n }\n const formatEmit = (emitDayjs: Dayjs) => {\n if (defaultTime && !visibleTime.value) {\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 }\n const emit = (value, ...args) => {\n if (!value) {\n ctx.emit('pick', value, ...args)\n } else if (Array.isArray(value)) {\n const dates = value.map(formatEmit)\n ctx.emit('pick', dates, ...args)\n } else {\n ctx.emit('pick', formatEmit(value), ...args)\n }\n userInputDate.value = null\n userInputTime.value = null\n }\n const handleDatePick = (value: Dayjs) => {\n if (selectionMode.value === 'day') {\n let newDate = props.parsedValue\n ? (props.parsedValue as Dayjs)\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)\n } else if (selectionMode.value === 'week') {\n emit(value.date)\n } else if (selectionMode.value === 'dates') {\n emit(value, true) // set false to keep panel open\n }\n }\n const prevMonth_ = () => {\n innerDate.value = innerDate.value.subtract(1, 'month')\n }\n\n const nextMonth_ = () => {\n innerDate.value = innerDate.value.add(1, 'month')\n }\n\n const prevYear_ = () => {\n if (currentView.value === 'year') {\n innerDate.value = innerDate.value.subtract(10, 'year')\n } else {\n innerDate.value = innerDate.value.subtract(1, 'year')\n }\n }\n\n const nextYear_ = () => {\n if (currentView.value === 'year') {\n innerDate.value = innerDate.value.add(10, 'year')\n } else {\n innerDate.value = innerDate.value.add(1, 'year')\n }\n }\n\n const currentView = ref('date')\n\n const 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\n const handleShortcutClick = (shortcut) => {\n const shortcutValue =\n typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value\n if (shortcutValue) {\n emit(dayjs(shortcutValue).locale(lang.value))\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick(ctx)\n }\n }\n\n const selectionMode = computed(() => {\n if (['week', 'month', 'year', 'dates'].includes(props.type)) {\n return props.type\n }\n return 'day'\n })\n\n watch(\n () => selectionMode.value,\n (val) => {\n if (['month', 'year'].includes(val)) {\n currentView.value = val\n return\n }\n currentView.value = 'date'\n },\n { immediate: true }\n )\n\n const hasShortcuts = computed(() => !!shortcuts.length)\n\n const handleMonthPick = (month) => {\n innerDate.value = innerDate.value.startOf('month').month(month)\n if (selectionMode.value === 'month') {\n emit(innerDate.value)\n } else {\n currentView.value = 'date'\n }\n }\n\n const handleYearPick = (year) => {\n if (selectionMode.value === 'year') {\n innerDate.value = innerDate.value.startOf('year').year(year)\n emit(innerDate.value)\n } else {\n innerDate.value = innerDate.value.year(year)\n currentView.value = 'month'\n }\n }\n\n const showMonthPicker = () => {\n currentView.value = 'month'\n }\n\n const showYearPicker = () => {\n currentView.value = 'year'\n }\n\n const showTime = computed(\n () => props.type === 'datetime' || props.type === 'datetimerange'\n )\n\n const footerVisible = computed(() => {\n return showTime.value || selectionMode.value === 'dates'\n })\n\n const onConfirm = () => {\n if (selectionMode.value === 'dates') {\n emit(props.parsedValue)\n } else {\n // deal with the scenario where: user opens the date time picker, then confirm without doing anything\n let result = props.parsedValue as Dayjs\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\n const 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 if (\n (!disabledDate || !disabledDate(nowDate)) &&\n checkDateWithinRange(nowDate)\n ) {\n innerDate.value = dayjs().locale(lang.value)\n emit(innerDate.value)\n }\n }\n\n const timeFormat = computed(() => {\n return extractTimeFormat(props.format)\n })\n\n const dateFormat = computed(() => {\n return extractDateFormat(props.format)\n })\n\n const visibleTime = computed(() => {\n if (userInputTime.value) return userInputTime.value\n if (!props.parsedValue && !defaultValue) return\n return ((props.parsedValue || innerDate.value) as Dayjs).format(\n timeFormat.value\n )\n })\n\n const visibleDate = computed(() => {\n if (userInputDate.value) return userInputDate.value\n if (!props.parsedValue && !defaultValue) return\n return ((props.parsedValue || innerDate.value) as Dayjs).format(\n dateFormat.value\n )\n })\n\n const timePickerVisible = ref(false)\n const onTimePickerInputFocus = () => {\n timePickerVisible.value = true\n }\n const handleTimePickClose = () => {\n timePickerVisible.value = false\n }\n\n const handleTimePick = (value, visible, first) => {\n const newDate = props.parsedValue\n ? (props.parsedValue as Dayjs)\n .hour(value.hour())\n .minute(value.minute())\n .second(value.second())\n : value\n innerDate.value = newDate\n emit(innerDate.value, true)\n if (!first) {\n timePickerVisible.value = visible\n }\n }\n\n const handleVisibleTimeChange = (value) => {\n const newDate = dayjs(value, timeFormat.value).locale(lang.value)\n if (newDate.isValid() && checkDateWithinRange(newDate)) {\n innerDate.value = newDate\n .year(innerDate.value.year())\n .month(innerDate.value.month())\n .date(innerDate.value.date())\n userInputTime.value = null\n timePickerVisible.value = false\n emit(innerDate.value, true)\n }\n }\n\n const handleVisibleDateChange = (value) => {\n const newDate = dayjs(value, dateFormat.value).locale(lang.value)\n if (newDate.isValid()) {\n if (disabledDate && disabledDate(newDate.toDate())) {\n return\n }\n innerDate.value = newDate\n .hour(innerDate.value.hour())\n .minute(innerDate.value.minute())\n .second(innerDate.value.second())\n userInputDate.value = null\n emit(innerDate.value, true)\n }\n }\n\n const isValidValue = (date: unknown) => {\n return (\n dayjs.isDayjs(date) &&\n date.isValid() &&\n (disabledDate ? !disabledDate(date.toDate()) : true)\n )\n }\n\n const formatToString = (value) => {\n if (selectionMode.value === 'dates') {\n return value.map((_) => _.format(props.format))\n }\n return value.format(props.format)\n }\n\n const parseUserInput = (value) => {\n return dayjs(value, props.format).locale(lang.value)\n }\n\n const getDefaultValue = () => {\n const parseDate = dayjs(defaultValue).locale(lang.value)\n if (!defaultValue) {\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\n const handleKeydown = (event) => {\n const { code, keyCode } = event\n const list = [\n EVENT_CODE.up,\n EVENT_CODE.down,\n EVENT_CODE.left,\n EVENT_CODE.right,\n ]\n if (props.visible && !timePickerVisible.value) {\n if (list.includes(code)) {\n handleKeyControl(keyCode)\n event.stopPropagation()\n event.preventDefault()\n }\n if (\n code === EVENT_CODE.enter &&\n userInputDate.value === null &&\n userInputTime.value === null\n ) {\n // Enter\n emit(innerDate, false)\n }\n }\n }\n\n const handleKeyControl = (keyCode) => {\n const mapping = {\n year: {\n 38: -4,\n 40: 4,\n 37: -1,\n 39: 1,\n offset: (date, step) => date.setFullYear(date.getFullYear() + step),\n },\n month: {\n 38: -4,\n 40: 4,\n 37: -1,\n 39: 1,\n offset: (date, step) => date.setMonth(date.getMonth() + step),\n },\n week: {\n 38: -1,\n 40: 1,\n 37: -1,\n 39: 1,\n offset: (date, step) => date.setDate(date.getDate() + step * 7),\n },\n day: {\n 38: -7,\n 40: 7,\n 37: -1,\n 39: 1,\n offset: (date, step) => 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[selectionMode.value]\n map.offset(newDate, map[keyCode])\n if (disabledDate && disabledDate(newDate)) {\n continue\n }\n const result = dayjs(newDate).locale(lang.value)\n innerDate.value = result\n ctx.emit('pick', result, true)\n break\n }\n }\n\n ctx.emit('set-picker-option', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])\n ctx.emit('set-picker-option', ['handleKeydown', handleKeydown])\n\n watch(\n () => props.parsedValue,\n (val) => {\n if (val) {\n if (selectionMode.value === 'dates') return\n if (Array.isArray(val)) return\n innerDate.value = val\n } else {\n innerDate.value = getDefaultValue()\n }\n },\n { immediate: true }\n )\n\n return {\n handleTimePick,\n handleTimePickClose,\n onTimePickerInputFocus,\n timePickerVisible,\n visibleTime,\n visibleDate,\n showTime,\n changeToNow,\n onConfirm,\n footerVisible,\n handleYearPick,\n showMonthPicker,\n showYearPicker,\n handleMonthPick,\n hasShortcuts,\n shortcuts,\n arrowControl,\n disabledDate,\n cellClassName,\n selectionMode,\n handleShortcutClick,\n prevYear_,\n nextYear_,\n prevMonth_,\n nextMonth_,\n innerDate,\n t,\n yearLabel,\n currentView,\n month,\n handleDatePick,\n handleVisibleTimeChange,\n handleVisibleDateChange,\n timeFormat,\n userInputTime,\n userInputDate,\n }\n },\n})\n</script>\n"],"names":["DateTable","TimePickPanel","MonthTable"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA0LA,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;;AAE7C,EAAE,UAAU,EAAE;AACd,eAAIA;AACJ,IAAI;;AAEJ,IAAI;AACJ,mBAAIC,QAAa;AACjB,gBAAIC,QAAU;;AAEd,IAAI;IACA;IACA;IACA;;;OAGG,EAAE;IACL,OAAO,EAAE;MACP,IAAI,EAAE;MACN,OAAO;KACR;IACD,WAAW;MACT,IAAI,EAAE,CAAC;;;MAGP,IAAI,EAAE,MAAM;MACZ;KACD;QACG,EAAE;MACJ,IAAI,EAAE,MAAM;;MAEZ,SAAS,EAAE;;;OAGV,EAAE,CAAC;OACH,CAAC,KAAK,EAAE,GAAG;UACR,EAAE,CAAC,EAAE;IACX;IACA,MAAM;MACJ,SAAS;MACT,YAAY;MACZ,aAAa;;;MAGb,YAAY;KACb,GAAG,UAAU;IACd,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC;IAC9B,MAAM,eAAe,QAAQ,CAAC,MAAM;;KAEnC,CAAC,CAAC;UACG,KAAK;MACT,OAAO;MACP,CAAC;UACG,IAAI,GAAG;MACX,OAAO;MACP,CAAC;IACH,MAAM;;IAEN,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;;MAE9B,OAAO,eAAe,CAAC,KAAK,CAAC;MAC7B;IACF;;QAEI,mBAAmB,CAAC,KAAK;OAC1B;;;MAGD,OAAO,SAAS,CAAC,OAAO;MACxB;IACF;;QAEI,GAAG,CAAC,IAAI,CAAC,MAAM,OAAO,EAAE;OACzB,MAAM,IAAI,KAAK,QAAQ,CAAC;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;OACzB,MAAM;QACL,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;;;mBAGzB,CAAC,KAAK,GAAG,IAAI,CAAC;;UAEvB;UACA;;QAEF,IAAI,CAAC,oBAAoB,SAAS;UAChC,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;SACpC;iBACQ,CAAC,KAAK,GAAG;YACd,CAAC,OAAO,EAAE,QAAQ,CAAC;aAClB,IAAI,aAAa,CAAC;;OAExB,MAAM,IAAI,aAAa,CAAC,KAAK,KAAK,OAAO,EAAE;QAC1C,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC;;KAErB,CAAC;UACI;eACK,CAAC,KAAK,YAAY,CAAC,KAAK;MACjC;UACI,UAAU,GAAG,MAAM;eACd,CAAC,KAAK,YAAY,CAAC,KAAK;MACjC;UACI,SAAS,GAAG,MAAM;MACtB;QACE,SAAS,CAAC,KAAK,GAAG;OACnB,MAAM;;OAEN;MACD;UACI,YAAY,MAAM;UAClB,WAAW,CAAC,KAAK,KAAK,MAAM;iBACrB,CAAC,KAAK,GAAG;;iBAET,CAAC,KAAK,GAAG;;;qBAGL,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;UAC1B,YAAY,QAAQ,CAAC,MAAM;YACzB,eAAe,GAAG;qBACT,CAAC,KAAK,KAAK;cAClB,SAAS,GAAG,IAAI;QACtB;UACE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;SACtB;QACD,QAAQ,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,CAAC,CAAC,EAAE;;MAE3C,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;;;;MAI1C,IAAI,aAAa;QACf,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;MAGhD,IAAI,QAAQ,CAAC,OAAO;QAClB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;;;IAG1B,MAAM,aAAa,GAAG;MACpB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;QAC5B,OAAO,KAAK,CAAC,KAAK;;aAEb,KAAK,CAAC;MACb;IACF;;QAEI,YAAY,KAAK,GAAG;eACb;;MAET;SACG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;;IAExB;;MAEE,IAAI,cAAc,KAAK,KAAK;;OAE3B,MAAM;QACL,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;OAC5B;;wBAEiB,GAAG;UACjB,aAAa,CAAC,KAAK,KAAK,MAAM,EAAE;iBACzB,CAAC;YACN,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;QAEtB,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,KAAK,CAAC;;OAExC;KACF;;MAEC,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC;MAC5B;UACI,cAAc,GAAG;MACrB,WAAW,CAAC,KAAK;;UAEb;;MAEJ,OAAO,QAAQ,CAAC;;;;;OAKf,MAAM;YACD,SAAS,KAAK,YAAY,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE;;UAEX,MAAM;;;QAGR;YACI,CAAC,MAAM,CAAC,CAAC;OACd;;UAEG,WAAW,GAAG,MAAM;YAClB,GAAG;;UAEL,CAAC,CAAC,YAAY,IAAI,CAAC;;QAErB,IAAI,CAAC,SAAS;;;IAGlB,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM;;KAEjC,CAAC,CAAC;UACG,UAAU,WAAW,CAAC,MAAM;MAChC,OAAO,iBAAiB,CAAC,KAAK,CAAC,MAAM;;UAEjC;UACA,aAAa,CAAC,KAAK;;;;MAIvB,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI;MAC7B,CAAC;UACG,WAAW,GAAG,QAAQ,CAAC,MAAM;UAC7B,aAAa,CAAC;QAChB;UACE,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,YAAY;QACrC,OAAO;MACT;;;IAGF,MAAM,sBAAsB;MAC1B,kBAAkB,KAAK,GAAG;;;MAG1B,iBAAiB;MACjB;IACF;;MAEE,SAAS,CAAC,KAAK,GAAG;MAClB,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;;;OAG3B;MACD;IACF;;MAEE,IAAI,OAAO,CAAC,OAAO;iBACR,CAAC,KAAK,GAAG,QAAQ,IAAI,CAAC;QAC/B,aAAa,CAAC,KAAK,GAAG;QACtB;QACA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;;UAG1B,uBAAuB,GAAG,CAAC,KAAK,KAAK;YACnC,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC;UACpC,OAAO,QAAQ,EAAE,EAAE;YACjB,YAAY,IAAI;iBACX;;QAET;QACA,aAAa,CAAC,KAAK,GAAG;QACtB,IAAI,CAAC;;;;MAIP,OAAO,KAAK,CAAC,QAAQ;MACrB;wBACkB,GAAG,CAAC,KAAK,KAAK;MAChC,IAAI,aAAa,CAAC,KAAK,KAAK,OAAO,EAAE;QACnC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;OAC1B;aACM,KAAK,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;;;aAG3B,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI;;;;;QAK3C,MAAM,iBAAiB;QACvB,OAAO,KAAK,EAAE,CAAC,IAAI,CAAC;;;KAGvB,CAAC;UACI,aAAa,GAAG,CAAC,KAAK,KAAK;;;QAG7B,UAAU,CAAC;kBACD,CAAC,IAAI;kBACL,CAAC,IAAI;QACf,UAAU,CAAC,KAAK;QAChB;MACF;;;UAGI,KAAK,CAAC,eAAe,EAAE,CAAC;UACxB,KAAK,CAAC,gBAAgB,CAAC;SACxB;QACD,QAAQ,KAAK,UAAU,MAAM,IAAI,aAAa,MAAM,KAAK,IAAI;UAC3D,IAAI,CAAC;;;;IAIX,MAAM,gBAAgB,IAAI,OAAO;MAC/B,MAAM,OAAO,GAAG;QACd,IAAI,EAAE;;UAEJ,EAAE,EAAE,CAAC;UACL,EAAE,EAAE,CAAC,CAAC;;;;QAIR,KAAK,EAAE;UACL,EAAE,EAAE,CAAC,CAAC;YACJ,EAAE,CAAC;YACH,EAAE,CAAC,CAAC;YACJ,EAAE,CAAC;UACL;SACD;QACD,IAAI,EAAE;UACJ,EAAE,EAAE,CAAC,CAAC;UACN,EAAE,EAAE,CAAC;;;;;QAKP,KAAK;UACH,EAAE,EAAE,CAAC,CAAC;UACN,EAAE,EAAE,CAAC;UACL,EAAE,EAAE,CAAC,CAAC;UACN,EAAE,EAAE,CAAC;UACL,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI;SAC7B;QACD;YACI,OAAO,GAAG,SAAS,CAAC;MAC1B;;;QAGE,IAAI,YAAY,IAAI,YAAY,CAAC;UAC/B;SACD;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;QAEjD;QACA,MAAM;;;YAGF,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,mBAAmB;QACxB,IAAI,CAAC,mBAAmB,EAAE;;IAE9B;;QAEI,IAAI,aAAa,CAAC,UAAU;UAC1B;QACF,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG;UACnB,OAAO;QACT,SAAS,CAAC,QAAQ,GAAG,CAAC;;;;KAIzB,EAAE,WAAW,EAAE,OAAO,CAAC;WACjB;oBACS;MACd;MACA,sBAAsB;;;MAGtB,WAAW;MACX,QAAQ;;;MAGR,aAAa;MACb,cAAc;MACd,eAAe;oBACD;qBACC;kBACH;eACH;kBACG;kBACA;MACZ;MACA,aAAa;;;MAGb,SAAS;MACT,UAAU;MACV;eACS;;eAEA;iBACE;MACX;MACA,cAAc;6BACS;6BACA;gBACb;mBACG;;;;;;;;"}
1
+ {"version":3,"file":"panel-date-pick.vue_vue_type_script_lang.mjs","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/panel-date-pick.vue"],"sourcesContent":["<template>\n <div\n class=\"el-picker-panel el-date-picker\"\n :class=\"[\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n 'has-time': showTime,\n },\n ]\"\n >\n <div class=\"el-picker-panel__body-wrapper\">\n <slot name=\"sidebar\" class=\"el-picker-panel__sidebar\"></slot>\n <div v-if=\"hasShortcuts\" class=\"el-picker-panel__sidebar\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n class=\"el-picker-panel__shortcut\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div class=\"el-picker-panel__body\">\n <div v-if=\"showTime\" class=\"el-date-picker__time-header\">\n <span class=\"el-date-picker__editor-wrap\">\n <el-input\n :placeholder=\"t('el.datepicker.selectDate')\"\n :model-value=\"visibleDate\"\n size=\"small\"\n @input=\"(val) => (userInputDate = val)\"\n @change=\"handleVisibleDateChange\"\n />\n </span>\n <span\n v-clickoutside=\"handleTimePickClose\"\n class=\"el-date-picker__editor-wrap\"\n >\n <el-input\n :placeholder=\"t('el.datepicker.selectTime')\"\n :model-value=\"visibleTime\"\n size=\"small\"\n @focus=\"onTimePickerInputFocus\"\n @input=\"(val) => (userInputTime = val)\"\n @change=\"handleVisibleTimeChange\"\n />\n <time-pick-panel\n :visible=\"timePickerVisible\"\n :format=\"timeFormat\"\n :time-arrow-control=\"arrowControl\"\n :parsed-value=\"innerDate\"\n @pick=\"handleTimePick\"\n />\n </span>\n </div>\n <div\n v-show=\"currentView !== 'time'\"\n class=\"el-date-picker__header\"\n :class=\"{\n 'el-date-picker__header--bordered':\n currentView === 'year' || currentView === 'month',\n }\"\n >\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevYear`)\"\n class=\"el-picker-panel__icon-btn el-date-picker__prev-btn d-arrow-left\"\n @click=\"prevYear_\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.prevMonth`)\"\n class=\"el-picker-panel__icon-btn el-date-picker__prev-btn arrow-left\"\n @click=\"prevMonth_\"\n >\n <el-icon><arrow-left /></el-icon>\n </button>\n <span\n role=\"button\"\n class=\"el-date-picker__header-label\"\n @click=\"showYearPicker\"\n >{{ yearLabel }}</span\n >\n <span\n v-show=\"currentView === 'date'\"\n role=\"button\"\n class=\"el-date-picker__header-label\"\n :class=\"{ active: currentView === 'month' }\"\n @click=\"showMonthPicker\"\n >{{ t(`el.datepicker.month${month + 1}`) }}</span\n >\n <button\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextYear`)\"\n class=\"el-picker-panel__icon-btn el-date-picker__next-btn d-arrow-right\"\n @click=\"nextYear_\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <button\n v-show=\"currentView === 'date'\"\n type=\"button\"\n :aria-label=\"t(`el.datepicker.nextMonth`)\"\n class=\"el-picker-panel__icon-btn el-date-picker__next-btn arrow-right\"\n @click=\"nextMonth_\"\n >\n <el-icon><arrow-right /></el-icon>\n </button>\n </div>\n <div class=\"el-picker-panel__content\">\n <date-table\n v-if=\"currentView === 'date'\"\n :selection-mode=\"selectionMode\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n @pick=\"handleDatePick\"\n />\n <year-table\n v-if=\"currentView === 'year'\"\n :date=\"innerDate\"\n :disabled-date=\"disabledDate\"\n :parsed-value=\"parsedValue\"\n @pick=\"handleYearPick\"\n />\n <month-table\n v-if=\"currentView === 'month'\"\n :date=\"innerDate\"\n :parsed-value=\"parsedValue\"\n :disabled-date=\"disabledDate\"\n @pick=\"handleMonthPick\"\n />\n </div>\n </div>\n </div>\n <div\n v-show=\"footerVisible && currentView === 'date'\"\n class=\"el-picker-panel__footer\"\n >\n <el-button\n v-show=\"selectionMode !== 'dates'\"\n size=\"small\"\n type=\"text\"\n class=\"el-picker-panel__link-btn\"\n @click=\"changeToNow\"\n >\n {{ t('el.datepicker.now') }}\n </el-button>\n <el-button\n plain\n size=\"small\"\n class=\"el-picker-panel__link-btn\"\n @click=\"onConfirm\"\n >\n {{ t('el.datepicker.confirm') }}\n </el-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@element-plus/components/button'\nimport { ClickOutside } from '@element-plus/directives'\nimport { useLocale } from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport {\n extractDateFormat,\n extractTimeFormat,\n TimePickPanel,\n} from '@element-plus/components/time-picker'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isValidDatePickType } from '@element-plus/utils/validators'\nimport {\n DArrowLeft,\n ArrowLeft,\n DArrowRight,\n ArrowRight,\n} from '@element-plus/icons-vue'\nimport { TOOLTIP_INJECTION_KEY } from '@element-plus/components/tooltip'\nimport DateTable from './basic-date-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport YearTable from './basic-year-table.vue'\n\nimport type { PropType } from 'vue'\nimport type { ConfigType, Dayjs } from 'dayjs'\nimport type { IDatePickerType } from '../date-picker.type'\n\n// todo\n/* eslint-disable-next-line */\nconst timeWithinRange = (_: ConfigType, __: any, ___: string) => true\n\nexport default defineComponent({\n components: {\n DateTable,\n ElInput,\n ElButton,\n ElIcon,\n TimePickPanel,\n MonthTable,\n YearTable,\n DArrowLeft,\n ArrowLeft,\n DArrowRight,\n ArrowRight,\n },\n\n directives: { clickoutside: ClickOutside },\n props: {\n visible: {\n type: Boolean,\n default: false,\n },\n parsedValue: {\n type: [Object, Array] as PropType<Dayjs | Dayjs[]>,\n },\n format: {\n type: String,\n default: '',\n },\n type: {\n type: String as PropType<IDatePickerType>,\n required: true,\n validator: isValidDatePickType,\n },\n },\n emits: ['pick', 'set-picker-option'],\n setup(props, ctx) {\n const { t, lang } = useLocale()\n const pickerBase = inject('EP_PICKER_BASE') as any\n const popper = inject(TOOLTIP_INJECTION_KEY)\n const {\n shortcuts,\n disabledDate,\n cellClassName,\n defaultTime,\n defaultValue,\n arrowControl,\n } = pickerBase.props\n\n const innerDate = ref(dayjs().locale(lang.value))\n\n const defaultTimeD = computed(() => {\n return dayjs(defaultTime).locale(lang.value)\n })\n\n const month = computed(() => {\n return innerDate.value.month()\n })\n\n const year = computed(() => {\n return innerDate.value.year()\n })\n\n const selectableRange = ref([])\n const userInputDate = ref(null)\n const userInputTime = ref(null)\n // todo update to disableHour\n const checkDateWithinRange = (date: ConfigType) => {\n return selectableRange.value.length > 0\n ? timeWithinRange(\n date,\n selectableRange.value,\n props.format || 'HH:mm:ss'\n )\n : true\n }\n const formatEmit = (emitDayjs: Dayjs) => {\n if (defaultTime && !visibleTime.value) {\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 }\n const emit = (value, ...args) => {\n if (!value) {\n ctx.emit('pick', value, ...args)\n } else if (Array.isArray(value)) {\n const dates = value.map(formatEmit)\n ctx.emit('pick', dates, ...args)\n } else {\n ctx.emit('pick', formatEmit(value), ...args)\n }\n userInputDate.value = null\n userInputTime.value = null\n }\n const handleDatePick = (value: Dayjs) => {\n if (selectionMode.value === 'day') {\n let newDate = props.parsedValue\n ? (props.parsedValue as Dayjs)\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)\n } else if (selectionMode.value === 'week') {\n emit(value.date)\n } else if (selectionMode.value === 'dates') {\n emit(value, true) // set false to keep panel open\n }\n }\n const prevMonth_ = () => {\n innerDate.value = innerDate.value.subtract(1, 'month')\n }\n\n const nextMonth_ = () => {\n innerDate.value = innerDate.value.add(1, 'month')\n }\n\n const prevYear_ = () => {\n if (currentView.value === 'year') {\n innerDate.value = innerDate.value.subtract(10, 'year')\n } else {\n innerDate.value = innerDate.value.subtract(1, 'year')\n }\n }\n\n const nextYear_ = () => {\n if (currentView.value === 'year') {\n innerDate.value = innerDate.value.add(10, 'year')\n } else {\n innerDate.value = innerDate.value.add(1, 'year')\n }\n }\n\n const currentView = ref('date')\n\n const 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\n const handleShortcutClick = (shortcut) => {\n const shortcutValue =\n typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value\n if (shortcutValue) {\n emit(dayjs(shortcutValue).locale(lang.value))\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick(ctx)\n }\n }\n\n const selectionMode = computed(() => {\n if (['week', 'month', 'year', 'dates'].includes(props.type)) {\n return props.type\n }\n return 'day'\n })\n\n watch(\n () => selectionMode.value,\n (val) => {\n if (['month', 'year'].includes(val)) {\n currentView.value = val\n return\n }\n currentView.value = 'date'\n },\n { immediate: true }\n )\n\n watch(\n () => currentView.value,\n () => {\n popper?.updatePopper()\n }\n )\n\n const hasShortcuts = computed(() => !!shortcuts.length)\n\n const handleMonthPick = (month) => {\n innerDate.value = innerDate.value.startOf('month').month(month)\n if (selectionMode.value === 'month') {\n emit(innerDate.value)\n } else {\n currentView.value = 'date'\n }\n }\n\n const handleYearPick = (year) => {\n if (selectionMode.value === 'year') {\n innerDate.value = innerDate.value.startOf('year').year(year)\n emit(innerDate.value)\n } else {\n innerDate.value = innerDate.value.year(year)\n currentView.value = 'month'\n }\n }\n\n const showMonthPicker = () => {\n currentView.value = 'month'\n }\n\n const showYearPicker = () => {\n currentView.value = 'year'\n }\n\n const showTime = computed(\n () => props.type === 'datetime' || props.type === 'datetimerange'\n )\n\n const footerVisible = computed(() => {\n return showTime.value || selectionMode.value === 'dates'\n })\n\n const onConfirm = () => {\n if (selectionMode.value === 'dates') {\n emit(props.parsedValue)\n } else {\n // deal with the scenario where: user opens the date time picker, then confirm without doing anything\n let result = props.parsedValue as Dayjs\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\n const 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 if (\n (!disabledDate || !disabledDate(nowDate)) &&\n checkDateWithinRange(nowDate)\n ) {\n innerDate.value = dayjs().locale(lang.value)\n emit(innerDate.value)\n }\n }\n\n const timeFormat = computed(() => {\n return extractTimeFormat(props.format)\n })\n\n const dateFormat = computed(() => {\n return extractDateFormat(props.format)\n })\n\n const visibleTime = computed(() => {\n if (userInputTime.value) return userInputTime.value\n if (!props.parsedValue && !defaultValue) return\n return ((props.parsedValue || innerDate.value) as Dayjs).format(\n timeFormat.value\n )\n })\n\n const visibleDate = computed(() => {\n if (userInputDate.value) return userInputDate.value\n if (!props.parsedValue && !defaultValue) return\n return ((props.parsedValue || innerDate.value) as Dayjs).format(\n dateFormat.value\n )\n })\n\n const timePickerVisible = ref(false)\n const onTimePickerInputFocus = () => {\n timePickerVisible.value = true\n }\n const handleTimePickClose = () => {\n timePickerVisible.value = false\n }\n\n const handleTimePick = (value, visible, first) => {\n const newDate = props.parsedValue\n ? (props.parsedValue as Dayjs)\n .hour(value.hour())\n .minute(value.minute())\n .second(value.second())\n : value\n innerDate.value = newDate\n emit(innerDate.value, true)\n if (!first) {\n timePickerVisible.value = visible\n }\n }\n\n const handleVisibleTimeChange = (value) => {\n const newDate = dayjs(value, timeFormat.value).locale(lang.value)\n if (newDate.isValid() && checkDateWithinRange(newDate)) {\n innerDate.value = newDate\n .year(innerDate.value.year())\n .month(innerDate.value.month())\n .date(innerDate.value.date())\n userInputTime.value = null\n timePickerVisible.value = false\n emit(innerDate.value, true)\n }\n }\n\n const handleVisibleDateChange = (value) => {\n const newDate = dayjs(value, dateFormat.value).locale(lang.value)\n if (newDate.isValid()) {\n if (disabledDate && disabledDate(newDate.toDate())) {\n return\n }\n innerDate.value = newDate\n .hour(innerDate.value.hour())\n .minute(innerDate.value.minute())\n .second(innerDate.value.second())\n userInputDate.value = null\n emit(innerDate.value, true)\n }\n }\n\n const isValidValue = (date: unknown) => {\n return (\n dayjs.isDayjs(date) &&\n date.isValid() &&\n (disabledDate ? !disabledDate(date.toDate()) : true)\n )\n }\n\n const formatToString = (value) => {\n if (selectionMode.value === 'dates') {\n return value.map((_) => _.format(props.format))\n }\n return value.format(props.format)\n }\n\n const parseUserInput = (value) => {\n return dayjs(value, props.format).locale(lang.value)\n }\n\n const getDefaultValue = () => {\n const parseDate = dayjs(defaultValue).locale(lang.value)\n if (!defaultValue) {\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\n const handleKeydown = (event) => {\n const { code, keyCode } = event\n const list = [\n EVENT_CODE.up,\n EVENT_CODE.down,\n EVENT_CODE.left,\n EVENT_CODE.right,\n ]\n if (props.visible && !timePickerVisible.value) {\n if (list.includes(code)) {\n handleKeyControl(keyCode)\n event.stopPropagation()\n event.preventDefault()\n }\n if (\n code === EVENT_CODE.enter &&\n userInputDate.value === null &&\n userInputTime.value === null\n ) {\n // Enter\n emit(innerDate, false)\n }\n }\n }\n\n const handleKeyControl = (keyCode) => {\n const mapping = {\n year: {\n 38: -4,\n 40: 4,\n 37: -1,\n 39: 1,\n offset: (date, step) => date.setFullYear(date.getFullYear() + step),\n },\n month: {\n 38: -4,\n 40: 4,\n 37: -1,\n 39: 1,\n offset: (date, step) => date.setMonth(date.getMonth() + step),\n },\n week: {\n 38: -1,\n 40: 1,\n 37: -1,\n 39: 1,\n offset: (date, step) => date.setDate(date.getDate() + step * 7),\n },\n day: {\n 38: -7,\n 40: 7,\n 37: -1,\n 39: 1,\n offset: (date, step) => 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[selectionMode.value]\n map.offset(newDate, map[keyCode])\n if (disabledDate && disabledDate(newDate)) {\n continue\n }\n const result = dayjs(newDate).locale(lang.value)\n innerDate.value = result\n ctx.emit('pick', result, true)\n break\n }\n }\n\n ctx.emit('set-picker-option', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])\n ctx.emit('set-picker-option', ['handleKeydown', handleKeydown])\n\n watch(\n () => props.parsedValue,\n (val) => {\n if (val) {\n if (selectionMode.value === 'dates') return\n if (Array.isArray(val)) return\n innerDate.value = val\n } else {\n innerDate.value = getDefaultValue()\n }\n },\n { immediate: true }\n )\n\n return {\n handleTimePick,\n handleTimePickClose,\n onTimePickerInputFocus,\n timePickerVisible,\n visibleTime,\n visibleDate,\n showTime,\n changeToNow,\n onConfirm,\n footerVisible,\n handleYearPick,\n showMonthPicker,\n showYearPicker,\n handleMonthPick,\n hasShortcuts,\n shortcuts,\n arrowControl,\n disabledDate,\n cellClassName,\n selectionMode,\n handleShortcutClick,\n prevYear_,\n nextYear_,\n prevMonth_,\n nextMonth_,\n innerDate,\n t,\n yearLabel,\n currentView,\n month,\n handleDatePick,\n handleVisibleTimeChange,\n handleVisibleDateChange,\n timeFormat,\n userInputTime,\n userInputDate,\n }\n },\n})\n</script>\n"],"names":["DateTable","TimePickPanel","MonthTable"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA2LA,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;;AAE7C,EAAE,UAAU,EAAE;AACd,eAAIA;AACJ,IAAI;;AAEJ,IAAI;AACJ,mBAAIC,QAAa;AACjB,gBAAIC,QAAU;;AAEd,IAAI;IACA;IACA;IACA;;;OAGG,EAAE;IACL,OAAO,EAAE;MACP,IAAI,EAAE;MACN,OAAO;KACR;IACD,WAAW;MACT,IAAI,EAAE,CAAC;;;MAGP,IAAI,EAAE,MAAM;MACZ;KACD;QACG,EAAE;MACJ,IAAI,EAAE,MAAM;;MAEZ,SAAS,EAAE;;;OAGV,EAAE,CAAC;OACH,CAAC,KAAK,EAAE,GAAG;UACR,EAAE,CAAC,EAAE;IACX;IACA,MAAM;UACA;MACJ;MACA,YAAY;;;MAGZ,YAAY;MACZ,YAAY;KACb,GAAG,UAAU,MAAM,CAAC;IACrB,MAAM,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM;MAClC;MACA,CAAC;UACG,KAAK,GAAG;MACZ,OAAO;MACP,CAAC;UACG,IAAI,GAAG;MACX,OAAO;MACP;;IAEF,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;;IAEhC,MAAM,oBAAoB,GAAG,CAAC,IAAI;MAChC,OAAO,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG;KAC3C;;MAEC,IAAI,WAAW,IAAI,CAAC;QAClB,OAAO,YAAY,CAAC,KAAK,CAAC;;;QAG1B,OAAO,SAAS,CAAC;MACnB,OAAO,SAAS,CAAC,OAAO,CAAC;KAC1B;;MAEC,IAAI,CAAC,KAAK,EAAE;QACV,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;OACzB,MAAM,IAAI,KAAK,QAAQ,CAAC;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,KAAK,CAAC;OAClC,MAAM;QACL,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;;mBAEN,CAAC,KAAK,GAAG,IAAI,CAAC;mBACd,CAAC,KAAK,GAAG,IAAI,CAAC;;UAEvB;;QAEF,IAAI,OAAO,QAAQ,CAAC,WAAW,GAAG;YAC9B,CAAC,oBAAoB,CAAC,OAAO,CAAC;UAChC,OAAO,GAAG;;iBAEH,CAAC,KAAK,GAAG,OAAO,CAAC;YACtB,CAAC,OAAO,EAAE,QAAQ,CAAC;;YAEnB,CAAC,KAAK,CAAC,IAAI,CAAC;OACjB,MAAM,IAAI,aAAa,CAAC,KAAK;;OAE7B;MACD;UACI,UAAU,GAAG,MAAM;MACvB,UAAU,KAAK,GAAG,SAAS,CAAC,KAAK;;UAE7B,UAAU,GAAG,MAAM;MACvB;;;MAGA,IAAI,WAAW,CAAC;QACd,SAAS,CAAC,KAAK,GAAG;;QAElB,SAAS,CAAC,KAAK,YAAY,CAAC,MAAM;OACnC;;UAEG,SAAS,GAAG,MAAM;qBACP,CAAC,KAAK,KAAK;iBACf,CAAC,KAAK,GAAG;;;;;UAKhB,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;mBACjB,GAAG,QAAQ;YAClB,eAAe,GAAG,CAAC,CAAC;qBACX,CAAC,KAAK;QACnB;QACA,IAAI,eAAe,EAAE;UACnB,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE;SACxB;QACD,OAAO,CAAC,EAAE;;aAEL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,eAAe,EAAE,CAAC;MAC1C;IACF;MACE,MAAM;MACN,IAAI,eAAe;;;OAGlB;MACD,IAAI,QAAQ,CAAC,OAAO,EAAE;;;KAGvB,CAAC;UACI,aAAa,GAAG,QAAQ,CAAC;UACzB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,MAAM,CAAC;QACpD;;MAEF;;;MAGA,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;mBACT,CAAC,KAAK,GAAG,IAAI;QACxB,OAAO;;iBAEE,CAAC,QAAQ,MAAM,CAAC;;IAE7B;;KAEC,CAAC,CAAC;;IAEH,MAAM,eAAe,GAAG,CAAC,MAAM;MAC7B,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;MAC1C,IAAI,aAAa,CAAC,KAAK,KAAK;QAC1B,IAAI,UAAU,MAAM,CAAC,CAAC;aACjB;mBACM,CAAC,KAAK,GAAG,MAAM,CAAC;;;;UAIzB,aAAa,CAAC,KAAK,KAAK,MAAM;;QAEhC,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;;;QAGtB,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC;OAC7B;;UAEG,eAAe;iBACR,CAAC,KAAK,GAAG,OAAO,CAAC;;;MAG5B,WAAW,CAAC,KAAK,GAAG;;;IAGtB;;KAEC,CAAC,CAAC;UACG,SAAS,GAAG,MAAM;UAClB,aAAa,CAAC;;OAEjB,MAAM;;;;UAIH,MAAM,aAAa;UACnB;SACD;iBACQ,CAAC,KAAK,GAAG,MAAM;YACpB,CAAC;;;;MAIP,MAAM,GAAG;;;QAGP;YACI,CAAC,SAAS,CAAC,KAAK,CAAC;OACtB;;;;;IAKH,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM;;KAEjC,CAAC,CAAC;UACG,cAAc,QAAQ,CAAC,MAAM;MACjC,IAAI,aAAa,CAAC;QAChB,OAAO,aAAa;MACtB,IAAI,CAAC;QACH,OAAO;MACT;;;MAGA,IAAI,aAAa,MAAM;eACd,aAAa,MAAM,CAAC;UACzB,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,YAAY;QACrC,OAAO;MACT,OAAO;;UAEH,oBAAoB,GAAG,CAAC;;;;IAI9B,MAAM,mBAAmB,GAAG;MAC1B,kBAAkB,KAAK,GAAG;;;MAG1B,MAAM,OAAO,GAAG,KAAK,CAAC;MACtB,SAAS,CAAC,KAAK,GAAG,OAAO;;;QAGvB,iBAAiB,CAAC;OACnB;;;MAGD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE;MAC7B,IAAI,OAAO,CAAC,OAAO,MAAM,oBAAoB,CAAC,OAAO,CAAC;;;QAGpD,iBAAiB,CAAC;YACd,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;MAE9B;oCAC8B,CAAC,KAAK,KAAK;YACnC,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC;iBAC7B,CAAC;YACN,YAAY,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;UAClD,OAAO;;iBAEA,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI;qBACjB,CAAC,KAAK,GAAG,IAAI,CAAC;YACvB,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;;UAG1B;MACJ;;;MAGA,IAAI,cAAc;eACT,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;OAC3B;MACD,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;MAClC;;aAEO,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI;;;YAGvC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;UACzC,CAAC,YAAY,EAAE;;;;MAInB,OAAO,UAAU;MACjB;IACF;;MAEE,MAAM,IAAI,GAAG;QACX,UAAU,CAAC,EAAE;;;QAGb,UAAU,CAAC,KAAK;OACjB;MACD,IAAI,KAAK,CAAC,OAAO,IAAI,kBAAkB,MAAM;QAC3C,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;UACvB;;;;QAIF,IAAI,IAAI,eAAe,CAAC,KAAK;UAC3B,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACxB;OACF;;;;;UAKG,EAAE,EAAE,CAAC,CAAC;UACN,EAAE,EAAE,CAAC;UACL,EAAE,EAAE,CAAC,CAAC;;UAEN,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa;SAC7B;;;UAGC,EAAE,EAAE,CAAC;UACL,EAAE,EAAE,CAAC,CAAC;UACN,EAAE,EAAE,CAAC;gBACC,EAAE,CAAC,IAAI,EAAE,IAAI;;YAEjB,EAAE;UACJ,EAAE,EAAE;UACJ,EAAE,EAAE,CAAC;UACL,EAAE,EAAE,CAAC,CAAC;UACN,EAAE,EAAE,CAAC;UACL,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;;;;UAI7B,EAAE,EAAE,CAAC;UACL,EAAE,EAAE,CAAC,CAAC;UACN,EAAE,EAAE,CAAC;UACL,MAAM,EAAE,CAAC,UAAU;;;YAGjB,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;aACzB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;QACxB,MAAM,GAAG,GAAG,OAAO,CAAC;QACpB,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC;;;;QAIxB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QACrC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC;WACtB,CAAC,IAAI,CAAC,MAAM,EAAE;QACjB,MAAM;;;QAGN,IAAI,CAAC,mBAAmB;YACpB,CAAC,mBAAmB,EAAE,CAAC;YACvB,CAAC,mBAAmB,EAAE,CAAC;YACvB,CAAC,mBAAmB,EAAE,CAAC;SAC1B,CAAC,MAAM,KAAK,CAAC,WAAW;UACvB,GAAG,EAAE;;;;UAIL,OAAO;QACT;aACK;QACL,SAAS,CAAC,KAAK;;;IAGnB;;MAEE,mBAAmB;MACnB,sBAAsB;uBACL;MACjB;MACA,WAAW;;;MAGX,SAAS;MACT,aAAa;;;MAGb,cAAc;MACd;MACA,YAAY;eACH;kBACG;kBACA;mBACC;mBACA;yBACM;MACnB;MACA,SAAS;;;MAGT,SAAS;MACT,CAAC;MACD,SAAS;iBACE;WACN;oBACS;;MAEd;MACA,UAAU;mBACG;mBACA;;;;;;;"}