{"version":3,"file":"calendar-header.mjs","sources":["../../../../../../../packages/components/calendar/src/calendar-header.tsx"],"sourcesContent":["import { defineComponent } from 'vue'\n\n// Utils\nimport { createNamespace, makeStringProp } from '@xzx-design/utils'\nimport {\n  bem,\n  // compareMonth,\n  // getNextMonth,\n  // getNextYear,\n  // getPrevMonth,\n  // getPrevYear,\n  t,\n} from './utils'\n\n// Components\n\n// Types\nimport type { CalendarSwitchMode } from './types'\n\nconst [name] = createNamespace('calendar-header')\n\nexport default defineComponent({\n  name,\n\n  props: {\n    date: Date,\n    minDate: Date,\n    maxDate: Date,\n    title: String,\n    subtitle: String,\n    showTitle: Boolean,\n    showSubtitle: Boolean,\n    firstDayOfWeek: Number,\n    switchMode: makeStringProp<CalendarSwitchMode>('none'),\n  },\n\n  emits: ['clickSubtitle', 'panelChange'],\n\n  setup(props, { slots, emit }) {\n    // const prevMonthDisabled = computed(\n    //   () =>\n    //     props.date &&\n    //     props.minDate &&\n    //     compareMonth(getPrevMonth(props.date), props.minDate) < 0\n    // )\n\n    // const prevYearDisabled = computed(\n    //   () =>\n    //     props.date &&\n    //     props.minDate &&\n    //     compareMonth(getPrevYear(props.date), props.minDate) < 0\n    // )\n\n    // const nextMonthDisabled = computed(\n    //   () =>\n    //     props.date &&\n    //     props.maxDate &&\n    //     compareMonth(getNextMonth(props.date), props.maxDate) > 0\n    // )\n\n    // const nextYearDisabled = computed(\n    //   () =>\n    //     props.date &&\n    //     props.maxDate &&\n    //     compareMonth(getNextYear(props.date), props.maxDate) > 0\n    // )\n\n    const renderTitle = () => {\n      if (props.showTitle) {\n        const text = props.title || t('title')\n        const title = slots.title ? slots.title() : text\n        return <div class={bem('header-title')}>{title}</div>\n      }\n    }\n\n    // const onClickSubtitle = (event: MouseEvent) => emit('clickSubtitle', event)\n\n    // const onPanelChange = (date: Date) => emit('panelChange', date)\n\n    // const renderAction = (isNext?: boolean) => {\n    //   const showYearAction = props.switchMode === 'year-month'\n    //   const monthSlot = slots[isNext ? 'next-month' : 'prev-month']\n    //   const yearSlot = slots[isNext ? 'next-year' : 'prev-year']\n    //   const monthDisabled = isNext\n    //     ? nextMonthDisabled.value\n    //     : prevMonthDisabled.value\n    //   const yearDisabled = isNext\n    //     ? nextYearDisabled.value\n    //     : prevYearDisabled.value\n    //   const monthIconName = isNext ? 'arrow' : 'arrow-left'\n    //   const yearIconName = isNext ? 'arrow-double-right' : 'arrow-double-left'\n    //\n    //   const onMonthChange = () =>\n    //     onPanelChange((isNext ? getNextMonth : getPrevMonth)(props.date!))\n    //   const onYearChange = () =>\n    //     onPanelChange((isNext ? getNextYear : getPrevYear)(props.date!))\n    //\n    //   const MonthAction = (\n    //     <view\n    //       class={bem('header-action', { disabled: monthDisabled })}\n    //       onClick={monthDisabled ? undefined : onMonthChange}\n    //     >\n    //       {monthSlot ? (\n    //         monthSlot({ disabled: monthDisabled })\n    //       ) : (\n    //         <Icon\n    //           class={{ [HAPTICS_FEEDBACK]: !monthDisabled }}\n    //           name={monthIconName}\n    //         />\n    //       )}\n    //     </view>\n    //   )\n    //   const YearAction = showYearAction && (\n    //     <view\n    //       class={bem('header-action', { disabled: yearDisabled })}\n    //       onClick={yearDisabled ? undefined : onYearChange}\n    //     >\n    //       {yearSlot ? (\n    //         yearSlot({ disabled: yearDisabled })\n    //       ) : (\n    //         <Icon\n    //           class={{ [HAPTICS_FEEDBACK]: !yearDisabled }}\n    //           name={yearIconName}\n    //         />\n    //       )}\n    //     </view>\n    //   )\n    //\n    //   return isNext ? [MonthAction, YearAction] : [YearAction, MonthAction]\n    // }\n\n    // const renderSubtitle = () => {\n    //   if (props.showSubtitle) {\n    //     const title = slots.subtitle\n    //       ? slots.subtitle({\n    //           date: props.date,\n    //           text: props.subtitle,\n    //         })\n    //       : props.subtitle\n    //     const canSwitch = props.switchMode !== 'none'\n    //\n    //     return (\n    //       <div\n    //         class={bem('header-subtitle', { 'with-switch': canSwitch })}\n    //         onClick={onClickSubtitle}\n    //       >\n    //         {canSwitch\n    //           ? [\n    //               renderAction(),\n    //               <div class={bem('header-subtitle-text')}>{title}</div>,\n    //               renderAction(true),\n    //             ]\n    //           : title}\n    //       </div>\n    //     )\n    //   }\n    // }\n\n    const renderWeekDays = () => {\n      const { firstDayOfWeek } = props\n      const weekdays = t('weekdays')\n      const renderWeekDays = [\n        ...weekdays.slice(firstDayOfWeek, 7),\n        ...weekdays.slice(0, firstDayOfWeek),\n      ]\n\n      return (\n        <div class={bem('weekdays')}>\n          {renderWeekDays.map((text) => (\n            <span class={bem('weekday')}>{text}</span>\n          ))}\n        </div>\n      )\n    }\n\n    return () => (\n      <div class={bem('header')}>\n        {renderTitle()}\n        {renderWeekDays()}\n      </div>\n    )\n  },\n})\n"],"names":["name","createNamespace","defineComponent","props","date","Date","minDate","maxDate","title","String","subtitle","showTitle","Boolean","showSubtitle","firstDayOfWeek","Number","switchMode","makeStringProp","emits","setup","slots","emit","renderTitle","text","t","_createVNode","bem","renderWeekDays","weekdays","slice","map"],"mappings":";;;;;;AAmBA,MAAM,CAACA,IAAI,CAAIC,GAAAA,eAAAA,CAAgB,iBAAiB,CAAA,CAAA;AAEhD,qBAAeC,eAAgB,CAAA;AAAA,EAC7BF,IAAAA;AAAAA,EAEAG,KAAO,EAAA;AAAA,IACLC,IAAMC,EAAAA,IAAAA;AAAAA,IACNC,OAASD,EAAAA,IAAAA;AAAAA,IACTE,OAASF,EAAAA,IAAAA;AAAAA,IACTG,KAAOC,EAAAA,MAAAA;AAAAA,IACPC,QAAUD,EAAAA,MAAAA;AAAAA,IACVE,SAAWC,EAAAA,OAAAA;AAAAA,IACXC,YAAcD,EAAAA,OAAAA;AAAAA,IACdE,cAAgBC,EAAAA,MAAAA;AAAAA,IAChBC,UAAAA,EAAYC,eAAmC,MAAM,CAAA;AAAA,GACvD;AAAA,EAEAC,KAAAA,EAAO,CAAC,eAAA,EAAiB,aAAa,CAAA;AAAA,EAEtCC,MAAMhB,KAAO,EAAA;AAAA,IAAEiB,KAAAA;AAAAA,IAAOC,IAAAA;AAAAA,GAAQ,EAAA;AA6B5B,IAAA,MAAMC,cAAcA,MAAM;AACxB,MAAA,IAAInB,MAAMQ,SAAW,EAAA;AACnB,QAAA,MAAMY,IAAOpB,GAAAA,KAAAA,CAAMK,KAASgB,IAAAA,CAAAA,CAAE,OAAO,CAAA,CAAA;AACrC,QAAA,MAAMhB,KAAQY,GAAAA,KAAAA,CAAMZ,KAAQY,GAAAA,KAAAA,CAAMZ,OAAUe,GAAAA,IAAAA,CAAAA;AAC5C,QAAA,OAAAE,YAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAmBC,IAAI,cAAc,CAAA;AAAA,SAAC,EAAA,CAAGlB,KAAK,CAAA,CAAA,CAAA;AAAA,OAChD;AAAA,KACF,CAAA;AAqFA,IAAA,MAAMmB,iBAAiBA,MAAM;AAC3B,MAAM,MAAA;AAAA,QAAEb,cAAAA;AAAAA,OAAmBX,GAAAA,KAAAA,CAAAA;AAC3B,MAAMyB,MAAAA,QAAAA,GAAWJ,EAAE,UAAU,CAAA,CAAA;AAC7B,MAAA,MAAMG,eAAiB,GAAA,CACrB,GAAGC,QAAAA,CAASC,KAAMf,CAAAA,cAAAA,EAAgB,CAAC,CAAA,EACnC,GAAGc,QAAAA,CAASC,KAAM,CAAA,CAAA,EAAGf,cAAc,CAAC,CAAA,CAAA;AAGtC,MAAA,OAAAW,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACcC,IAAI,UAAU,CAAA;AAAA,SAAC,CACxBC,eAAAA,CAAeG,GAAKP,CAAAA,CAAAA,IAAAA,KAAIE,YAAA,MAAA,EAAA;AAAA,QAAA,OAAA,EACVC,IAAI,SAAS,CAAA;AAAA,SAAIH,CAAAA,IAAI,EACnC,CAAC,CAAA,CAAA,CAAA;AAAA,KAGR,CAAA;AAEA,IAAO,OAAA,MAAAE,YAAA,KAAA,EAAA;AAAA,MAAA,OAAA,EACOC,IAAI,QAAQ,CAAA;AAAA,OAAC,CACtBJ,WAAAA,EACAK,EAAAA,cAAAA,EAAgB,CAEpB,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA;;;;"}