{"version":3,"file":"month-panel.vue.mjs","sources":["../../../../../../../packages/components/date-picker/src/panels/month-panel.vue"],"sourcesContent":["<script lang=\"ts\">\n  import { computed, defineComponent, ref, toRefs, watch } from 'vue'\n  import { useMonthRows } from '../hooks/use-month-rows'\n\n  import type { DateCell } from '../types'\n  import { dateFormat, diffOfYear, compareYear } from '../utils'\n  import PanelBody from './layout/body.vue'\n  import PanelHeader from './layout/header.vue'\n\n  export default defineComponent({\n    name: 'MonthPanel',\n    components: {\n      PanelBody,\n      PanelHeader\n    },\n    props: {\n      modelValue: {\n        type: Date,\n        default: undefined\n      },\n      disabledDate: {\n        type: Function,\n        default: undefined\n      }\n    },\n    emits: ['update:modelValue'],\n    setup(props, { emit }) {\n      const date = ref<Date>()\n      const dateModel = computed(() => (props.modelValue ? [props.modelValue] : []))\n      const { disabledDate } = toRefs(props)\n      const { rows } = useMonthRows({\n        date,\n        dateModel,\n        disabledDate\n      })\n\n      const handleCellClick = (cell: DateCell) => {\n        emit('update:modelValue', cell.date)\n      }\n\n      const handleYearChange = (count: number) => {\n        date.value = diffOfYear(date.value!, count)\n      }\n\n      const headerContent = computed(() => {\n        return dateFormat(date.value, 'yyyy 年')\n      })\n\n      // 同步选中状态\n      watch(\n        () => props.modelValue,\n        (newDate) => {\n          const d = newDate || new Date()\n          const ret = compareYear(d, date.value)\n          if (ret) {\n            date.value = ret\n          }\n          date.value = d\n        },\n        { immediate: true }\n      )\n\n      return {\n        headerContent,\n        rows,\n        handleCellClick,\n        handleYearChange\n      }\n    }\n  })\n</script>\n\n<template>\n  <PanelHeader\n    :actions=\"['prevSuper', 'nextSuper']\"\n    :content=\"headerContent\"\n    @prev-super=\"handleYearChange(-1)\"\n    @next-super=\"handleYearChange(1)\"\n  />\n  <PanelBody :rows=\"rows\" @on-cell-click=\"handleCellClick\">\n    <template #cell=\"scoped\">\n      <slot name=\"cell\" v-bind=\"scoped\"> </slot>\n    </template>\n  </PanelBody>\n</template>\n"],"names":["_openBlock","_createElementBlock","_Fragment","_createVNode","headerContent","rows","handleCellClick"],"mappings":";;;;;;;SA0EKA,WAAS,EAAAC,kBAAA;AAAA,IAA0BC,QAAA;AAAA,IAAA,IAAA;AAAA,IAAA;AAAA,MAAAC,YAC1BC,sBAAa,EAAA;AAAA,QACtB,OAAA,EAAU,CAAA,WAAA,EAAA,WAAA,CAAA;AAAA,QACV,SAAU,IAAA,CAAA,aAAA;AAAA,QAAA,WAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAEb,WAAA,EAIY,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,CAAA;AAAA,OAJA,EAAA,IAAA,EAAMC,CAAI,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,MAAAF,YAAG,oBAAeG,EAAAA;AAAAA,QAAAA,MAAAA,IAAAA,CAAAA,IAAAA;AAAAA,QAC3B,eACT,IADe,CAAA,eAAA;AAAA,OAAA,EAAA;AAAA;;;;;;;;;;;;;;;"}