You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

0 lines
20 KiB

1 month ago
  1. {"ast":null,"code":"import { defineComponent, inject, toRef, ref, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, Fragment, renderList, toDisplayString, createCommentVNode, createVNode, withCtx } from 'vue';\nimport dayjs from 'dayjs';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport { DArrowLeft, DArrowRight } from '@element-plus/icons-vue';\nimport { isValidRange, getDefaultValue } from '../utils.mjs';\nimport { panelMonthRangeProps, panelMonthRangeEmits } from '../props/panel-month-range.mjs';\nimport { useMonthRangeHeader } from '../composables/use-month-range-header.mjs';\nimport { useRangePicker } from '../composables/use-range-picker.mjs';\nimport MonthTable from './basic-month-table.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { isArray } from '@vue/shared';\nconst unit = \"year\";\nconst __default__ = defineComponent({\n name: \"DatePickerMonthRange\"\n});\nconst _sfc_main = /* @__PURE__ */defineComponent({\n ...__default__,\n props: panelMonthRangeProps,\n emits: panelMonthRangeEmits,\n setup(__props, {\n emit\n }) {\n const props = __props;\n const {\n lang\n } = useLocale();\n const pickerBase = inject(\"EP_PICKER_BASE\");\n const {\n shortcuts,\n disabledDate\n } = pickerBase.props;\n const format = toRef(pickerBase.props, \"format\");\n const defaultValue = toRef(pickerBase.props, \"defaultValue\");\n const leftDate = ref(dayjs().locale(lang.value));\n const rightDate = ref(dayjs().locale(lang.value).add(1, unit));\n const {\n minDate,\n maxDate,\n rangeState,\n ppNs,\n drpNs,\n handleChangeRange,\n handleRangeConfirm,\n handleShortcutClick,\n onSelect\n } = useRangePicker(props, {\n defaultValue,\n leftDate,\n rightDate,\n unit,\n onParsedValueChanged\n });\n const hasShortcuts = computed(() => !!shortcuts.length);\n const {\n leftPrevYear,\n rightNextYear,\n leftNextYear,\n rightPrevYear,\n leftLabel,\n rightLabel,\n leftYear,\n rightYear\n } = useMonthRangeHeader({\n unlinkPanels: toRef(props, \"unlinkPanels\"),\n leftDate,\n rightDate\n });\n const enableYearArrow = computed(() => {\n return props.unlinkPanels && rightYear.value > leftYear.value + 1;\n });\n const handleRangePick = (val, close = true) => {\n const minDate_ = val.minDate;\n const maxDate_ = val.maxDate;\n if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n return;\n }\n emit(\"calendar-change\", [minDate_.toDate(), maxDate_ && maxDate_.toDate()]);\n maxDate.value = maxDate_;\n minDate.value = minDate_;\n if (!close) return;\n handleRangeConfirm();\n };\n const handleClear = () => {\n leftDate.value = getDefaultValue(unref(defaultValue), {\n lang: unref(lang),\n unit: \"year\",\n unlinkPanels: props.unlinkPanels\n })[0];\n rightDate.value = leftDate.value.add(1, \"year\");\n emit(\"pick\", null);\n };\n const formatToString = value => {\n return isArray(value) ? value.map(_ => _.format(format.value)) : value.format(format.value);\n };\n const parseUserInput = value => {\n return isArray(value) ? value.map(_ => dayjs(_, format.value).locale(lang.value)) : dayjs(value, format.value).locale(lang.value);\n };\n function onParsedValueChanged(minDate2, maxDate2) {\n if (props.unlinkPanels && maxDate2) {\n const minDateYear = (minDate2 == null ? void 0 : minDate2.year()) || 0;\n const maxDateYear = maxDate2.year();\n rightDate.value = minDateYear === maxDateYear ? maxDate2.add(1, unit) : maxDate2;\n } else {\n rightDate.value = leftDate.value.add(1, unit);\n }\n }\n emit(\"set-picker-option\", [\"isValidValue\", isValidRange]);\n emit(\"set-picker-option\", [\"formatToString