{"version":3,"file":"date-panel.vue.mjs","sources":["../../../../../../../packages/components/date-picker/src/panels/date-panel.vue"],"sourcesContent":["<script lang=\"ts\">\n  import { computed, defineComponent, ref, toRefs, watch } from 'vue'\n  import { getNamespace } from '../../../../utils/global-config'\n  import { diffOfMonth, dateFormat, diffOfYear, compareMonth } from '../utils'\n  import type { DateCell } from '../types'\n  import { useDateRows } from '../hooks/use-date-rows'\n  import PanelBody from './layout/body.vue'\n  import PanelHeader from './layout/header.vue'\n  import PanelWeek from './layout/week.vue'\n\n  export default defineComponent({\n    name: 'DatePanel',\n    components: {\n      PanelHeader,\n      PanelBody,\n      PanelWeek\n    },\n    props: {\n      dayStartOfWeek: {\n        type: Number,\n        default: 0\n      },\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 ns = getNamespace('date-picker')\n\n      const date = ref<Date>()\n      const { dayStartOfWeek, disabledDate } = toRefs(props)\n      const dateModel = computed(() => (props.modelValue ? [props.modelValue] : []))\n      const { weeks, rows } = useDateRows({\n        dayStartOfWeek,\n        date,\n        dateModel,\n        disabledDate\n      })\n\n      const headerContent = computed(() => {\n        return dateFormat(date.value, 'yyyy 年 M 月')\n      })\n\n      const handleYearChange = (count: number) => {\n        date.value = diffOfYear(date.value!, count)\n      }\n\n      const handleMonthChange = (count: number) => {\n        date.value = diffOfMonth(date.value!, count)\n      }\n\n      const handleCellClick = (cell: DateCell) => {\n        emit('update:modelValue', cell.date)\n      }\n\n      // 同步选中状态\n      watch(\n        () => props.modelValue,\n        (newDate) => {\n          const d = newDate || new Date()\n          const ret = compareMonth(d, date.value)\n          if (ret) {\n            date.value = ret\n          }\n        },\n        { immediate: true }\n      )\n\n      return {\n        ns,\n        weeks,\n        rows,\n        headerContent,\n        handleYearChange,\n        handleMonthChange,\n        handleCellClick\n      }\n    }\n  })\n</script>\n\n<template>\n  <PanelHeader\n    :content=\"headerContent\"\n    @prev-super=\"handleYearChange(-1)\"\n    @next-super=\"handleYearChange(1)\"\n    @prev=\"handleMonthChange(-1)\"\n    @next=\"handleMonthChange(1)\"\n  />\n  <PanelWeek :weeks=\"weeks\" />\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","headerContent","_Fragment","_createVNode","handleMonthChange","weeks","rows","handleCellClick"],"mappings":";;;;;;;;SAyFKA,WAASC,EAAAA,kBAAAA;AAAAA,IAAaC,QAAA;AAAA,IAAA,IAAA;AAAA,IAAA;AAAA,MACZC,YAAA,sBAAA,EAAA;AAAA,QACV,SAAU,IAAA,CAAA,aAAA;AAAA,QACV,WAAA,EAAI,sCAAEC,IAAiB,CAAA,gBAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QACvB,WAAA,EAAI,sCAAEA,IAAiB,CAAA,gBAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,MAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAE1B,MAAA,EAAA,MAA4B,CAAA,+BAATC,IAAK,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA;AAAA,OAKZ,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,MAAAF,WAAA,CAJMG,oBAAI,EAAA,EAAA,KAAA,EAAA,IAAA,CAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA;AAAA,MAAAH,YAAG,oBAAeI,EAAAA;AAAAA,QAAAA,MAAAA,IAAAA,CAAAA,IAAAA;AAAAA,QAC3B,eACT,IADe,CAAA,eAAA;AAAA,OAAA,EAAA;AAAA;;;;;;;;;;;;;;;"}