UNPKG

tdesign-vue-next

Version:
1 lines 12.9 kB
{"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 cell: {\n type: Function as PropType<TdDatePickerProps['cell']>,\n },\n },\n setup(props, { slots }) {\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 cell={props.cell}\n v-slots={slots}\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","cell","setup","_ref","slots","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","TDatePickerCell","_mergeProps"],"mappings":"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"}