{"version":3,"file":"calendar-day.mjs","sources":["../../../../../../../packages/components/calendar/src/calendar-day.tsx"],"sourcesContent":["import {\n  type CSSProperties,\n  type PropType,\n  computed,\n  defineComponent,\n} from 'vue'\nimport {\n  createNamespace,\n  makeNumberProp,\n  makeRequiredProp,\n} from '@xzx-design/utils'\nimport { bem, isLastRowInMonth } from './utils'\n\nimport type { CalendarDayItem, CalendarDayType } from './types'\n\nconst [name] = createNamespace('calendar-day')\n\nexport default defineComponent({\n  name,\n\n  props: {\n    item: makeRequiredProp<PropType<CalendarDayItem>>(Object),\n    color: String,\n    index: Number,\n    offset: makeNumberProp(0),\n    rowHeight: String,\n    isToday: Boolean,\n  },\n\n  emits: ['click', 'clickDisabledDate'],\n\n  setup(props, { emit, slots }) {\n    const style = computed(() => {\n      const { item, index, color, offset, rowHeight } = props\n      const style: CSSProperties = {\n        height: rowHeight,\n      }\n\n      if (item.type === 'placeholder') {\n        style.width = '100%'\n        return style\n      }\n\n      if (index === 0) {\n        style.marginLeft = `${(100 * offset) / 7}%`\n      }\n\n      if (color) {\n        switch (item.type) {\n          case 'end':\n          case 'start':\n          case 'start-end':\n          case 'multiple-middle':\n          case 'multiple-selected':\n            style.background = color\n            break\n          case 'middle':\n            style.color = color\n            break\n        }\n      }\n\n      if (item.date && isLastRowInMonth(item.date, offset)) {\n        style.marginBottom = 0\n      }\n\n      return style\n    })\n\n    const onClick = () => {\n      if (props.item.type !== 'disabled') {\n        emit('click', props.item)\n      } else {\n        emit('clickDisabledDate', props.item)\n      }\n    }\n\n    const renderTopInfo = () => {\n      const { topInfo } = props.item\n\n      if (topInfo || slots['top-info']) {\n        return (\n          <div class={bem('top-info')}>\n            {slots['top-info'] ? slots['top-info'](props.item) : topInfo}\n          </div>\n        )\n      }\n    }\n\n    // const renderBottomInfo = () => {\n    //   const { bottomInfo } = props.item\n    //\n    //   if (bottomInfo || slots['bottom-info']) {\n    //     return (\n    //       <div class={bem('bottom-info')}>\n    //         {slots['bottom-info']\n    //           ? slots['bottom-info'](props.item)\n    //           : bottomInfo}\n    //       </div>\n    //     )\n    //   }\n    // }\n\n    const renderText = (type: CalendarDayType | undefined) => {\n      const { isToday } = props\n      return slots.text ? (\n        slots.text(props.item)\n      ) : isToday && type !== 'selected' ? (\n        <span style={{ color: 'var(--xzx-color-primary)' }}>\n          {props.item.text}\n        </span>\n      ) : (\n        props.item.text\n      )\n    }\n\n    const renderContent = () => {\n      const { item, color, rowHeight } = props\n      const { type } = item\n\n      const Nodes = [renderTopInfo(), renderText(type)]\n\n      if (type === 'selected') {\n        return (\n          <div\n            class={bem('selected-day')}\n            style={{\n              width: rowHeight,\n              height: rowHeight,\n              background: color,\n            }}\n          >\n            {Nodes}\n          </div>\n        )\n      }\n\n      return Nodes\n    }\n\n    return () => {\n      const { type, className } = props.item\n\n      if (type === 'placeholder') {\n        return <div class={bem('day')} style={style.value} />\n      }\n\n      return (\n        <div\n          role=\"gridcell\"\n          style={style.value}\n          class={[bem('day', type), className]}\n          tabindex={type === 'disabled' ? undefined : -1}\n          onClick={onClick}\n        >\n          {renderContent()}\n        </div>\n      )\n    }\n  },\n})\n"],"names":["name","createNamespace","defineComponent","props","item","makeRequiredProp","Object","color","String","index","Number","offset","makeNumberProp","rowHeight","isToday","Boolean","emits","setup","emit","slots","style","computed","height","type","width","marginLeft","background","date","isLastRowInMonth","marginBottom","onClick","renderTopInfo","topInfo","_createVNode","bem","renderText","text","renderContent","Nodes","className","value","undefined"],"mappings":"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"}