{"version":3,"file":"template.mjs","sources":["../../src/calendar/template.tsx"],"sourcesContent":["import { computed, watch, inject, ref, toRaw, defineComponent } from 'vue';\nimport {\n  CloseIcon,\n  ChevronLeftDoubleIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n  ChevronRightDoubleIcon,\n} from 'tdesign-icons-vue-next';\nimport TButton from '../button';\nimport config from '../config';\nimport props from './template-props';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { TdCalendarProps, TDate, TDateType, CalendarValue, TCalendarValue } from './type';\nimport { usePrefixClass, useConfig } from '../hooks/useClass';\nimport { getPrevMonth, getPrevYear, getNextMonth, getNextYear } from './utils';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n  name: `${prefix}-calendar-template`,\n  props,\n  emits: ['visible-change'],\n  setup(_props, context) {\n    const renderTNodeJSX = useTNodeJSX();\n    const { t, globalConfig } = useConfig('calendar');\n    const calendarClass = usePrefixClass('calendar');\n\n    const props = inject('templateProps') as TdCalendarProps;\n    // 获取时间年月日起\n    const getYearMonthDay = (date: Date) => {\n      return {\n        year: date.getFullYear(),\n        month: date.getMonth(),\n        date: date.getDate(),\n      };\n    };\n    const usePopup = computed(() => props.usePopup);\n    const templateRef = ref(null);\n    const valueRef = ref(props.value);\n    const currentMonth = ref<\n      Array<{\n        year: number;\n        month: number;\n        months: TDate[];\n        weekdayOfFirstDay: number;\n      }>\n    >([]);\n    const headerButtons = ref({\n      preYearBtnDisable: false,\n      prevMonthBtnDisable: false,\n      nextYearBtnDisable: false,\n      nextMonthBtnDisable: false,\n    });\n\n    const selectedDate = ref();\n    const firstDayOfWeek = computed(() => props.firstDayOfWeek || 0);\n    const days = computed(() => {\n      const raw = globalConfig.value.weekdays;\n      const ans = [];\n      let i = firstDayOfWeek.value % 7;\n\n      while (ans.length < 7) {\n        ans.push(raw[i]);\n        i = (i + 1) % 7;\n      }\n\n      return ans;\n    });\n    const today = new Date();\n    const minDate = computed(() => (props.minDate ? new Date(props.minDate) : today));\n    const maxDate = computed(() =>\n      props.maxDate ? new Date(props.maxDate) : new Date(today.getFullYear(), today.getMonth() + 6, today.getDate()),\n    );\n\n    // 获取日期\n    const getDate = (year: number, month: number, day: number) => new Date(year, month, day);\n\n    const confirmBtn = computed(() => {\n      if (typeof _props.confirmBtn === 'string') {\n        return { content: _props.confirmBtn || globalConfig.value.confirm };\n      }\n      return _props.confirmBtn;\n    });\n\n    const getCurrentDate = () => {\n      let time = Array.isArray(selectedDate.value) ? selectedDate.value[0] : selectedDate.value;\n\n      if (currentMonth.value?.length > 0) {\n        const year = currentMonth.value[0]?.year;\n        const month = currentMonth.value[0]?.month;\n        time = new Date(year, month, 1).getTime();\n      }\n\n      return time;\n    };\n\n    const getCurrentYearAndMonth = (v: Date) => {\n      const date = new Date(v);\n      return { year: date.getFullYear(), month: date.getMonth() };\n    };\n    const updateActionButton = (value: Date) => {\n      const _min = getCurrentYearAndMonth(minDate.value);\n      const _max = getCurrentYearAndMonth(maxDate.value);\n\n      const _minTimestamp = new Date(_min.year, _min.month, 1).getTime();\n      const _maxTimestamp = new Date(_max.year, _max.month, 1).getTime();\n\n      const _prevYearTimestamp = getPrevYear(value).getTime();\n      const _prevMonthTimestamp = getPrevMonth(value).getTime();\n      const _nextMonthTimestamp = getNextMonth(value).getTime();\n      const _nextYearTimestamp = getNextYear(value).getTime();\n\n      const preYearBtnDisable = _prevYearTimestamp < _minTimestamp || _prevMonthTimestamp < _minTimestamp;\n      const prevMonthBtnDisable = _prevMonthTimestamp < _minTimestamp;\n      const nextYearBtnDisable = _nextMonthTimestamp > _maxTimestamp || _nextYearTimestamp > _maxTimestamp;\n      const nextMonthBtnDisable = _nextMonthTimestamp > _maxTimestamp;\n\n      headerButtons.value = {\n        preYearBtnDisable,\n        prevMonthBtnDisable,\n        nextYearBtnDisable,\n        nextMonthBtnDisable,\n      };\n    };\n\n    const calcCurrentMonth = (newValue?: any) => {\n      const date = newValue || getCurrentDate();\n      const { year, month } = getCurrentYearAndMonth(date);\n      currentMonth.value = months.value.filter((item) => item.year === year && item.month === month);\n\n      updateActionButton(date);\n    };\n\n    // 选择日期\n    const handleSelect = (year: number, month: number, date: number, dateItem: TDate) => {\n      if (dateItem.type === 'disabled' || props.readonly) return;\n      const selected: CalendarValue = new Date(year, month, date);\n\n      if (props.type === 'range' && Array.isArray(selectedDate.value)) {\n        if (selectedDate.value.length === 1) {\n          const firstDate = selectedDate.value[0];\n          if (selected.getTime() === firstDate.getTime()) {\n            selectedDate.value = props.allowSameDay ? [firstDate, selected] : [selected];\n          } else if (selected < firstDate) {\n            selectedDate.value = [selected];\n          } else {\n            selectedDate.value = [firstDate, selected];\n          }\n        } else {\n          selectedDate.value = [selected];\n        }\n        if (!confirmBtn.value && selectedDate.value.length === 2) {\n          props.onChange?.(selectedDate.value);\n        }\n      } else if (props.type === 'multiple') {\n        const newVal = [...selectedDate.value];\n        const index = selectedDate.value.findIndex((item: Date) => isSameDate(item, selected));\n        if (index > -1) {\n          newVal.splice(index, 1);\n        } else {\n          newVal.push(selected);\n        }\n        selectedDate.value = newVal;\n      } else {\n        selectedDate.value = selected;\n        if (!confirmBtn.value) {\n          props.onChange?.(selectedDate.value);\n        }\n      }\n\n      if (props.switchMode !== 'none') {\n        const date = getCurrentDate();\n        calcCurrentMonth(date);\n      }\n\n      props.onSelect?.(toRaw(selectedDate.value));\n    };\n    // 确认\n    const handleConfirm = () => {\n      context.emit('visible-change');\n      props.onClose?.('confirm-btn');\n      props.onConfirm?.(toRaw(selectedDate.value));\n    };\n    const handleClose = () => {\n      context.emit('visible-change');\n      props.onClose?.('close-btn');\n    };\n\n    const getMonthDates = (date: Date) => {\n      const { year, month } = getYearMonthDay(date);\n      const firstDay = getDate(year, month, 1);\n      const weekdayOfFirstDay = firstDay.getDay();\n      const lastDate = new Date(+getDate(year, month + 1, 1) - 24 * 3600 * 1000).getDate();\n\n      return {\n        year,\n        month,\n        weekdayOfFirstDay,\n        lastDate,\n      };\n    };\n    type CompareDate = Date | number | { year: number; month: number; date: number };\n    const isSameDate = (date1: CompareDate, date2: CompareDate) => {\n      if (date1 instanceof Date) date1 = getYearMonthDay(date1);\n      if (date2 instanceof Date) date2 = getYearMonthDay(date2);\n      const keys = ['year', 'month', 'date'];\n      // @ts-ignore TODO\n      return keys.every((key) => date1[key] === date2[key]);\n    };\n\n    const months = computed(() => {\n      const ans = [];\n      let { year: minYear, month: minMonth } = getYearMonthDay(minDate.value);\n      const { year: maxYear, month: maxMonth } = getYearMonthDay(maxDate.value);\n      const calcType = (year: number, month: number, date: number): TDateType => {\n        const curDate = new Date(year, month, date, 23, 59, 59);\n\n        if (props.type === 'single') {\n          if (isSameDate({ year, month, date }, selectedDate.value)) return 'selected';\n        }\n        if (props.type === 'multiple') {\n          const hit = selectedDate.value.some((item: Date) => isSameDate({ year, month, date }, item));\n          if (hit) {\n            return 'selected';\n          }\n        }\n        if (props.type === 'range') {\n          if (Array.isArray(selectedDate.value)) {\n            const [startDate, endDate] = selectedDate.value;\n            const compareWithStart = startDate && isSameDate({ year, month, date }, startDate);\n            const compareWithEnd = endDate && isSameDate({ year, month, date }, endDate);\n\n            if (compareWithStart && compareWithEnd && props.allowSameDay) return 'start-end';\n            if (startDate && isSameDate({ year, month, date }, startDate)) return 'start';\n            if (endDate && isSameDate({ year, month, date }, endDate)) return 'end';\n            if (\n              startDate &&\n              endDate &&\n              curDate.getTime() > startDate.getTime() &&\n              curDate.getTime() < endDate.getTime()\n            )\n              return 'centre';\n          }\n        }\n\n        const minCurDate = new Date(year, month, date, 0, 0, 0);\n        if (curDate.getTime() < minDate.value.getTime() || minCurDate.getTime() > maxDate.value.getTime()) {\n          return 'disabled';\n        }\n        return '';\n      };\n\n      while (minYear < maxYear || (minYear === maxYear && minMonth <= maxMonth)) {\n        const target = getMonthDates(getDate(minYear, minMonth, 1));\n        const months: TDate[] = [];\n        for (let i = 1; i <= 31; i++) {\n          if (i > target.lastDate) break;\n          const dateObj: TDate = {\n            date: getDate(minYear, minMonth, i),\n            day: i,\n            type: calcType(minYear, minMonth, i),\n          };\n          months.push(props.format ? props.format(dateObj) : dateObj);\n        }\n        ans.push({\n          year: minYear,\n          month: minMonth,\n          months,\n          weekdayOfFirstDay: target.weekdayOfFirstDay,\n        });\n        const curDate = getYearMonthDay(getDate(minYear, minMonth + 1, 1));\n        minYear = curDate.year;\n        minMonth = curDate.month;\n      }\n\n      return ans;\n    });\n\n    const createDateTypeHandler = () => {\n      const now = minDate.value;\n\n      const createRangePair = (baseDate: Date): [Date, Date] =>\n        props.allowSameDay ? [baseDate, baseDate] : [baseDate, new Date(baseDate.getTime() + 24 * 3600 * 1000)];\n\n      const convertToDateArray = (value: TCalendarValue[]): Date[] => value.map((item) => new Date(item));\n\n      return {\n        // 初始化空日期\n        initialize: {\n          single: () => now,\n          multiple: () => [now],\n          range: () => createRangePair(now),\n        },\n        // 转换已有值\n        transform: {\n          single: (value: TCalendarValue): Date => new Date(value),\n\n          multiple: (value: TCalendarValue[]): Date[] => {\n            const dates = convertToDateArray(value);\n            return dates.length ? dates : [now];\n          },\n          range: (value: TCalendarValue[]): Date[] => {\n            const dates = convertToDateArray(value);\n            // 传入值为空数组或只有一个值时\n            if (dates.length <= 1) {\n              return createRangePair(dates[0] || now);\n            }\n            return dates;\n          },\n        },\n      };\n    };\n\n    const dateTypeHandler = createDateTypeHandler();\n\n    watch(\n      valueRef,\n      () => {\n        if (!valueRef.value) {\n          selectedDate.value = dateTypeHandler.initialize[props.type]?.();\n        } else {\n          selectedDate.value =\n            props.type === 'single'\n              ? dateTypeHandler.transform.single?.(valueRef.value as TCalendarValue)\n              : dateTypeHandler.transform[props.type]?.(valueRef.value as TCalendarValue[]);\n        }\n      },\n      { immediate: true },\n    );\n    context.expose({\n      valueRef,\n      templateRef,\n    });\n    const getDateItemClass = (dateItem: TDate) => {\n      let className = `${calendarClass.value}__dates-item`;\n      if (dateItem.type) {\n        className = `${className} ${calendarClass.value}__dates-item--${dateItem.type}`;\n      }\n      if (dateItem.className) {\n        className = `${className} ${dateItem.className}`;\n      }\n      return className;\n    };\n    const renderCell = (dateItem: TDate) => {\n      const cell = renderTNodeJSX('cell', { params: { item: dateItem } });\n      if (cell) {\n        return cell;\n      }\n      let className = `${calendarClass.value}__dates-item-suffix`;\n      if (dateItem.type) {\n        className = `${className} ${calendarClass.value}__dates-item-suffix--${dateItem.type}`;\n      }\n      return (\n        <>\n          {dateItem.prefix && <div class={`${calendarClass.value}__dates-item-prefix`}>{dateItem.prefix}</div>}\n          {dateItem.day}\n          {dateItem.suffix && <div class={className}>{dateItem.suffix}</div>}\n        </>\n      );\n    };\n    const className = usePopup.value\n      ? `${calendarClass.value} ${calendarClass.value}--popup`\n      : `${calendarClass.value}`;\n\n    const renderConfirmBtn = () => {\n      if (confirmBtn.value && typeof confirmBtn.value !== 'object') {\n        return confirmBtn.value;\n      }\n      if (confirmBtn.value && Array.isArray(confirmBtn.value)) {\n        return confirmBtn.value;\n      }\n      if (confirmBtn.value && typeof confirmBtn.value === 'object') {\n        return <TButton block theme=\"primary\" {...confirmBtn.value} onClick={handleConfirm} />;\n      }\n    };\n\n    if (props.switchMode !== 'none') {\n      calcCurrentMonth();\n    }\n\n    const handleSwitchModeChange = (\n      type: 'pre-year' | 'pre-month' | 'next-month' | 'next-year',\n      disabled?: boolean,\n    ) => {\n      if (disabled) return;\n      const date = getCurrentDate();\n\n      const funcMap = {\n        'pre-year': () => getPrevYear(date),\n        'pre-month': () => getPrevMonth(date),\n        'next-month': () => getNextMonth(date),\n        'next-year': () => getNextYear(date),\n      };\n      const newValue = funcMap[type]();\n      if (!newValue) return;\n\n      const { year, month } = getCurrentYearAndMonth(newValue);\n\n      props.onPanelChange?.({ year, month: month + 1 });\n\n      calcCurrentMonth(newValue);\n    };\n\n    const onScroll = (e: Event) => {\n      props.onScroll?.({ e });\n    };\n    return () => {\n      return (\n        <div ref={templateRef} class={className}>\n          <div class={`${calendarClass.value}__title`}>{_props.title || globalConfig.value.title}</div>\n          {usePopup.value && (\n            <CloseIcon class={`${calendarClass.value}__close-btn`} size=\"24\" onClick={handleClose}></CloseIcon>\n          )}\n          {props.switchMode !== 'none' && (\n            <div class={`${calendarClass.value}-header`}>\n              <div class={`${calendarClass.value}-header__action`}>\n                {props.switchMode === 'year-month' && (\n                  <div\n                    class={[\n                      `${calendarClass.value}-header__icon`,\n                      { [`${calendarClass.value}-header__icon--disabled`]: headerButtons.value.preYearBtnDisable },\n                    ]}\n                    onClick={() => handleSwitchModeChange('pre-year', headerButtons.value.preYearBtnDisable)}\n                  >\n                    <ChevronLeftDoubleIcon />\n                  </div>\n                )}\n\n                <div\n                  class={[\n                    `${calendarClass.value}-header__icon`,\n                    { [`${calendarClass.value}-header__icon--disabled`]: headerButtons.value.prevMonthBtnDisable },\n                  ]}\n                  onClick={() => handleSwitchModeChange('pre-month', headerButtons.value.prevMonthBtnDisable)}\n                >\n                  <ChevronLeftIcon />\n                </div>\n              </div>\n              <div class={`${calendarClass.value}-header__title`}>\n                {t(globalConfig.value.monthTitle, {\n                  year: currentMonth.value[0]?.year,\n                  month: globalConfig.value.months[currentMonth.value[0]?.month],\n                })}\n              </div>\n              <div class={`${calendarClass.value}-header__action`}>\n                <div\n                  class={[\n                    `${calendarClass.value}-header__icon`,\n                    { [`${calendarClass.value}-header__icon--disabled`]: headerButtons.value.nextMonthBtnDisable },\n                  ]}\n                  onClick={() => handleSwitchModeChange('next-month', headerButtons.value.nextMonthBtnDisable)}\n                >\n                  <ChevronRightIcon />\n                </div>\n\n                {props.switchMode === 'year-month' && (\n                  <div\n                    class={[\n                      `${calendarClass.value}-header__icon`,\n                      { [`${calendarClass.value}-header__icon--disabled`]: headerButtons.value.nextYearBtnDisable },\n                    ]}\n                    onClick={() => handleSwitchModeChange('next-year', headerButtons.value.nextYearBtnDisable)}\n                  >\n                    <ChevronRightDoubleIcon />\n                  </div>\n                )}\n              </div>\n            </div>\n          )}\n          <div class={`${calendarClass.value}__days`}>\n            {(days.value || []).map((item, index) => (\n              <div key={index} class={`${calendarClass.value}__days-item`}>\n                {item}\n              </div>\n            ))}\n          </div>\n          <div class={`${calendarClass.value}__months`} style=\"overflow: auto\" onScroll={onScroll}>\n            {(props.switchMode === 'none' ? months.value : currentMonth.value).map((item, index) => (\n              <>\n                {props.switchMode === 'none' && (\n                  <div class={`${calendarClass.value}__month`} key={index}>\n                    {t(globalConfig.value.monthTitle, {\n                      year: item.year,\n                      month: globalConfig.value.months[item.month],\n                    })}\n                  </div>\n                )}\n                <div class={`${calendarClass.value}__dates`} key={index}>\n                  {new Array((item.weekdayOfFirstDay - firstDayOfWeek.value + 7) % 7)\n                    .fill(0)\n                    .map((emptyItem, index) => (\n                      <div key={index} />\n                    ))}\n                  {item.months.map((dateItem, dateIndex) => (\n                    <>\n                      <div\n                        key={`${index}_${dateIndex}`}\n                        class={getDateItemClass(dateItem)}\n                        onClick={() => handleSelect(item.year, item.month, dateItem.day, dateItem)}\n                      >\n                        {renderCell(dateItem)}\n                      </div>\n                    </>\n                  ))}\n                </div>\n              </>\n            ))}\n          </div>\n          {usePopup.value && <div class={`${calendarClass.value}__footer`}>{renderConfirmBtn()}</div>}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","defineComponent","name","props","emits","setup","_props","context","renderTNodeJSX","useTNodeJSX","_useConfig","useConfig","t","globalConfig","calendarClass","usePrefixClass","inject","getYearMonthDay","date","year","getFullYear","month","getMonth","getDate","usePopup","computed","templateRef","ref","valueRef","value","currentMonth","headerButtons","preYearBtnDisable","prevMonthBtnDisable","nextYearBtnDisable","nextMonthBtnDisable","selectedDate","firstDayOfWeek","days","raw","weekdays","ans","i","length","push","today","Date","minDate","maxDate","day","confirmBtn","content","confirm","getCurrentDate","_currentMonth$value","time","Array","isArray","_currentMonth$value$","_currentMonth$value$2","getTime","getCurrentYearAndMonth","v","updateActionButton","_min","_max","_minTimestamp","_maxTimestamp","_prevYearTimestamp","getPrevYear","_prevMonthTimestamp","getPrevMonth","_nextMonthTimestamp","getNextMonth","_nextYearTimestamp","getNextYear","calcCurrentMonth","newValue","_getCurrentYearAndMon","months","filter","item","handleSelect","dateItem","_props2$onSelect","type","readonly","selected","firstDate","allowSameDay","_props2$onChange","onChange","newVal","_toConsumableArray","index","findIndex","isSameDate","splice","_props2$onChange2","switchMode","onSelect","toRaw","handleConfirm","_props2$onClose","_props2$onConfirm","emit","onClose","onConfirm","handleClose","_props2$onClose2","getMonthDates","_getYearMonthDay","firstDay","weekdayOfFirstDay","getDay","lastDate","date1","date2","keys","every","key","_getYearMonthDay2","minYear","minMonth","_getYearMonthDay3","maxYear","maxMonth","calcType","curDate","hit","some","_selectedDate$value","_slicedToArray","startDate","endDate","compareWithStart","compareWithEnd","minCurDate","target","dateObj","format","createDateTypeHandler","now","createRangePair","baseDate","convertToDateArray","map","initialize","single","multiple","range","transform","dates","dateTypeHandler","watch","_dateTypeHandler$init","_dateTypeHandler$init2","call","_dateTypeHandler$tran","_dateTypeHandler$tran2","_dateTypeHandler$tran3","_dateTypeHandler$tran4","immediate","expose","getDateItemClass","className","concat","renderCell","cell","params","_createVNode","_Fragment","suffix","renderConfirmBtn","_typeof","TButton","_mergeProps","handleSwitchModeChange","disabled","_props2$onPanelChange","funcMap","preYear","preMonth","nextMonth","nextYear","_getCurrentYearAndMon2","onPanelChange","onScroll","e","_props2$onScroll","_currentMonth$value$3","_currentMonth$value$4","title","CloseIcon","_defineProperty","onClick","ChevronLeftDoubleIcon","ChevronLeftIcon","monthTitle","ChevronRightIcon","ChevronRightDoubleIcon","fill","emptyItem","dateIndex"],"mappings":"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"}