calendar2.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var index$2 = require('../../button/index.js');
  5. require('../../../hooks/index.js');
  6. var dateTable = require('./date-table2.js');
  7. var useCalendar = require('./use-calendar.js');
  8. var calendar = require('./calendar.js');
  9. var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
  10. var index = require('../../../hooks/use-namespace/index.js');
  11. var index$1 = require('../../../hooks/use-locale/index.js');
  12. const COMPONENT_NAME = "ElCalendar";
  13. const __default__ = vue.defineComponent({
  14. name: COMPONENT_NAME
  15. });
  16. const _sfc_main = /* @__PURE__ */ vue.defineComponent({
  17. ...__default__,
  18. props: calendar.calendarProps,
  19. emits: calendar.calendarEmits,
  20. setup(__props, { expose, emit }) {
  21. const props = __props;
  22. const ns = index.useNamespace("calendar");
  23. const {
  24. calculateValidatedDateRange,
  25. date,
  26. pickDay,
  27. realSelectedDay,
  28. selectDate,
  29. validatedRange
  30. } = useCalendar.useCalendar(props, emit, COMPONENT_NAME);
  31. const { t } = index$1.useLocale();
  32. const i18nDate = vue.computed(() => {
  33. const pickedMonth = `el.datepicker.month${date.value.format("M")}`;
  34. return `${date.value.year()} ${t("el.datepicker.year")} ${t(pickedMonth)}`;
  35. });
  36. expose({
  37. selectedDay: realSelectedDay,
  38. pickDay,
  39. selectDate,
  40. calculateValidatedDateRange
  41. });
  42. return (_ctx, _cache) => {
  43. return vue.openBlock(), vue.createElementBlock("div", {
  44. class: vue.normalizeClass(vue.unref(ns).b())
  45. }, [
  46. vue.createElementVNode("div", {
  47. class: vue.normalizeClass(vue.unref(ns).e("header"))
  48. }, [
  49. vue.renderSlot(_ctx.$slots, "header", { date: vue.unref(i18nDate) }, () => [
  50. vue.createElementVNode("div", {
  51. class: vue.normalizeClass(vue.unref(ns).e("title"))
  52. }, vue.toDisplayString(vue.unref(i18nDate)), 3),
  53. vue.unref(validatedRange).length === 0 ? (vue.openBlock(), vue.createElementBlock("div", {
  54. key: 0,
  55. class: vue.normalizeClass(vue.unref(ns).e("button-group"))
  56. }, [
  57. vue.createVNode(vue.unref(index$2.ElButtonGroup), null, {
  58. default: vue.withCtx(() => [
  59. vue.createVNode(vue.unref(index$2.ElButton), {
  60. size: "small",
  61. onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(selectDate)("prev-month"))
  62. }, {
  63. default: vue.withCtx(() => [
  64. vue.createTextVNode(vue.toDisplayString(vue.unref(t)("el.datepicker.prevMonth")), 1)
  65. ]),
  66. _: 1
  67. }),
  68. vue.createVNode(vue.unref(index$2.ElButton), {
  69. size: "small",
  70. onClick: _cache[1] || (_cache[1] = ($event) => vue.unref(selectDate)("today"))
  71. }, {
  72. default: vue.withCtx(() => [
  73. vue.createTextVNode(vue.toDisplayString(vue.unref(t)("el.datepicker.today")), 1)
  74. ]),
  75. _: 1
  76. }),
  77. vue.createVNode(vue.unref(index$2.ElButton), {
  78. size: "small",
  79. onClick: _cache[2] || (_cache[2] = ($event) => vue.unref(selectDate)("next-month"))
  80. }, {
  81. default: vue.withCtx(() => [
  82. vue.createTextVNode(vue.toDisplayString(vue.unref(t)("el.datepicker.nextMonth")), 1)
  83. ]),
  84. _: 1
  85. })
  86. ]),
  87. _: 1
  88. })
  89. ], 2)) : vue.createCommentVNode("v-if", true)
  90. ])
  91. ], 2),
  92. vue.unref(validatedRange).length === 0 ? (vue.openBlock(), vue.createElementBlock("div", {
  93. key: 0,
  94. class: vue.normalizeClass(vue.unref(ns).e("body"))
  95. }, [
  96. vue.createVNode(dateTable["default"], {
  97. date: vue.unref(date),
  98. "selected-day": vue.unref(realSelectedDay),
  99. onPick: vue.unref(pickDay)
  100. }, vue.createSlots({ _: 2 }, [
  101. _ctx.$slots["date-cell"] || _ctx.$slots.dateCell ? {
  102. name: "date-cell",
  103. fn: vue.withCtx((data) => [
  104. _ctx.$slots["date-cell"] ? vue.renderSlot(_ctx.$slots, "date-cell", vue.normalizeProps(vue.mergeProps({ key: 0 }, data))) : vue.renderSlot(_ctx.$slots, "dateCell", vue.normalizeProps(vue.mergeProps({ key: 1 }, data)))
  105. ])
  106. } : void 0
  107. ]), 1032, ["date", "selected-day", "onPick"])
  108. ], 2)) : (vue.openBlock(), vue.createElementBlock("div", {
  109. key: 1,
  110. class: vue.normalizeClass(vue.unref(ns).e("body"))
  111. }, [
  112. (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(validatedRange), (range_, index) => {
  113. return vue.openBlock(), vue.createBlock(dateTable["default"], {
  114. key: index,
  115. date: range_[0],
  116. "selected-day": vue.unref(realSelectedDay),
  117. range: range_,
  118. "hide-header": index !== 0,
  119. onPick: vue.unref(pickDay)
  120. }, vue.createSlots({ _: 2 }, [
  121. _ctx.$slots["date-cell"] || _ctx.$slots.dateCell ? {
  122. name: "date-cell",
  123. fn: vue.withCtx((data) => [
  124. _ctx.$slots["date-cell"] ? vue.renderSlot(_ctx.$slots, "date-cell", vue.normalizeProps(vue.mergeProps({ key: 0 }, data))) : vue.renderSlot(_ctx.$slots, "dateCell", vue.normalizeProps(vue.mergeProps({ key: 1 }, data)))
  125. ])
  126. } : void 0
  127. ]), 1032, ["date", "selected-day", "range", "hide-header", "onPick"]);
  128. }), 128))
  129. ], 2))
  130. ], 2);
  131. };
  132. }
  133. });
  134. var Calendar = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/calendar/src/calendar.vue"]]);
  135. exports["default"] = Calendar;
  136. //# sourceMappingURL=calendar2.js.map