UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 8.02 kB
{"version":3,"file":"Table.mjs","sources":["../../../src/date-picker/base/Table.tsx"],"sourcesContent":["import { defineComponent, PropType, computed } from 'vue';\nimport TDatePickerCell from './Cell';\nimport { useConfig, usePrefixClass } from '../../hooks/useConfig';\nimport type { TdDatePickerProps } from '../type';\nimport { parseToDayjs } from '../../_common/js/date-picker/format';\nimport isArray from 'lodash/isArray';\n\nexport default defineComponent({\n name: 'XDatePickerTable',\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 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 { weekdays, weekAbbreviation, dayjsLocale } = globalConfig.value;\n\n const weekArr = computed(() => {\n const _weekArr = [];\n let wi = props.firstDayOfWeek - 1;\n const len = weekdays.length;\n while (_weekArr.length < len) {\n _weekArr.push(weekdays[wi]);\n wi = (wi + len + 1) % len;\n }\n\n if (props.mode === 'week') _weekArr.unshift(weekAbbreviation);\n\n return _weekArr;\n });\n\n const showThead = computed(() => props.mode === 'date' || props.mode === 'week');\n\n // 高亮周区间\n const weekRowClass = (value: any, format: string, 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, 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, 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 return {\n [`${COMPONENT_NAME.value}-${props.mode}-row--active`]:\n parseToDayjs(value, format).locale(dayjsLocale).week() ===\n parseToDayjs(targetValue, format).locale(dayjsLocale).week(),\n };\n };\n\n return () => (\n <div class={COMPONENT_NAME.value} onMouseleave={(e: MouseEvent) => props.onCellMouseLeave?.({ e })}>\n <table>\n {showThead.value && (\n <thead>\n <tr>\n {weekArr.value.map((value: string, i: number) => (\n <th key={i}>{value}</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 ...weekRowClass(props.value, props.format, 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":["name","props","mode","type","format","firstDayOfWeek","data","time","onCellClick","onCellMouseEnter","onCellMouseLeave","_weekArr","isArray","startObj","endObj","_createVNode","e"],"mappings":"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"}