{"version":3,"file":"Table.mjs","sources":["../../../../../components/date-picker/components/base/Table.tsx"],"sourcesContent":["import { defineComponent, PropType, computed } from 'vue';\n\nimport TDatePickerCell from './Cell';\nimport { useConfig, usePrefixClass } from '@tdesign/shared-hooks';\nimport { parseToDayjs } from '@tdesign/common-js/date-picker/format';\nimport { isArray } from 'lodash-es';\n\nimport type { TdDatePickerProps, DateMultipleValue } from '../../type';\n\nexport default defineComponent({\n  name: 'TDatePickerTable',\n  props: {\n    mode: {\n      type: String as PropType<TdDatePickerProps['mode']>,\n      default: 'date',\n    },\n    value: [String, Number, Array, Date],\n    format: String,\n    firstDayOfWeek: Number,\n    multiple: Boolean,\n    data: Array,\n    time: String,\n    onCellClick: Function,\n    onCellMouseEnter: Function,\n    onCellMouseLeave: Function,\n  },\n  setup(props) {\n    const COMPONENT_NAME = usePrefixClass('date-picker__table');\n    const { globalConfig } = useConfig('datePicker');\n    const { dayjsLocale } = globalConfig.value;\n\n    const weekArr = computed(() => {\n      const weekArr = [];\n      let wi = props.firstDayOfWeek - 1;\n      const len = globalConfig.value.weekdays.length;\n      while (weekArr.length < len) {\n        weekArr.push(globalConfig.value.weekdays[wi]);\n        wi = (wi + len + 1) % len;\n      }\n\n      if (props.mode === 'week') weekArr.unshift(globalConfig.value.weekAbbreviation);\n\n      return weekArr;\n    });\n\n    const showThead = computed(() => props.mode === 'date' || props.mode === 'week');\n\n    // 高亮周区间\n    const weekRowClass = (value: any, targetValue: Date) => {\n      if (props.mode !== 'week' || !value) return {};\n\n      if (isArray(value)) {\n        if (!value.length) return {};\n        const [startObj, endObj] = value.map((v) => v && parseToDayjs(v, props.format));\n        const startYear = startObj && startObj.year();\n        const startWeek = startObj?.locale?.(dayjsLocale)?.week?.();\n        const endYear = endObj && endObj.year();\n        const endWeek = endObj?.locale?.(dayjsLocale)?.week?.();\n\n        const targetObj = parseToDayjs(targetValue, props.format);\n        const targetYear = targetObj.year();\n        const targetWeek = targetObj.week();\n        const isActive =\n          (targetYear === startYear && targetWeek === startWeek) || (targetYear === endYear && targetWeek === endWeek);\n        const isRange =\n          targetYear >= startYear && targetYear <= endYear && targetWeek > startWeek && targetWeek < endWeek;\n        return {\n          // 同年同周\n          [`${COMPONENT_NAME.value}-${props.mode}-row--active`]: isActive,\n          [`${COMPONENT_NAME.value}-${props.mode}-row--range`]: isRange,\n        };\n      }\n\n      const valueDayjs = parseToDayjs(value, props.format).locale(dayjsLocale);\n      const targetDayjs = parseToDayjs(targetValue, props.format).locale(dayjsLocale);\n      return {\n        [`${COMPONENT_NAME.value}-${props.mode}-row--active`]:\n          valueDayjs.year() === targetDayjs.year() && valueDayjs.week() === targetDayjs.week(),\n      };\n    };\n\n    const multipleWeekRowClass = (value: DateMultipleValue, targetValue: Date) => {\n      const targetDayjs = parseToDayjs(targetValue, props.format);\n      if (props.mode !== 'week' || (Array.isArray(value) && !value.length)) return {};\n      const isSomeYearWeek = value\n        .map?.((v) => parseToDayjs(v, props.format))\n        .some((item) => item.week() === targetDayjs.week() && item.year() === targetDayjs.year());\n      return {\n        [`${COMPONENT_NAME.value}-${props.mode}-row--active`]: isSomeYearWeek,\n      };\n    };\n    const activeRowCss = props.multiple ? multipleWeekRowClass : weekRowClass;\n\n    return () => (\n      <div class={COMPONENT_NAME.value} onMouseleave={(e: MouseEvent) => props.onCellMouseLeave?.({ e })}>\n        <table>\n          {showThead.value && (\n            <thead>\n              <tr class={`${COMPONENT_NAME.value}-header-row`}>\n                {weekArr.value.map((value: string, i: number) => (\n                  <th class={`${COMPONENT_NAME.value}-header-cell`} key={i}>\n                    {value}\n                  </th>\n                ))}\n              </tr>\n            </thead>\n          )}\n          <tbody>\n            {props.data.map((row: Array<any>, i: number) => (\n              <tr\n                key={i}\n                class={{\n                  [`${COMPONENT_NAME.value}-${props.mode}-row`]: true,\n                  ...activeRowCss(props.value, row[0].value),\n                }}\n              >\n                {row.map((col: any, j: number) => (\n                  <TDatePickerCell\n                    {...col}\n                    key={j}\n                    time={props.time}\n                    onClick={props.onCellClick}\n                    onMouseEnter={props.onCellMouseEnter}\n                  />\n                ))}\n              </tr>\n            ))}\n          </tbody>\n        </table>\n      </div>\n    );\n  },\n});\n"],"names":["defineComponent","name","props","mode","type","String","value","Number","Array","Date","format","firstDayOfWeek","multiple","Boolean","data","time","onCellClick","Function","onCellMouseEnter","onCellMouseLeave","setup","COMPONENT_NAME","usePrefixClass","_useConfig","useConfig","globalConfig","dayjsLocale","weekArr","computed","wi","len","weekdays","length","push","unshift","weekAbbreviation","showThead","weekRowClass","targetValue","isArray","_startObj$locale","_startObj$locale$week","_endObj$locale","_endObj$locale$week","_value$map","map","v","parseToDayjs","_value$map2","_slicedToArray","startObj","endObj","startYear","year","startWeek","locale","call","week","endYear","endWeek","targetObj","targetYear","targetWeek","isActive","isRange","_defineProperty","concat","valueDayjs","targetDayjs","multipleWeekRowClass","_value$map3","isSomeYearWeek","some","item","activeRowCss","_createVNode","onMouseleave","e","_props$onCellMouseLea","i","row","_objectSpread","col","j"],"mappings":"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"}