UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 6.53 kB
{"version":3,"file":"useState.mjs","sources":["../../../src/calendar/hook/useState.ts"],"sourcesContent":["import { reactive, watch } from 'vue';\nimport dayjs from 'dayjs';\n\nimport { useConfig } from '../../hooks/useConfig';\nimport { COMPONENT_NAME } from '../const';\nimport { createDefaultCurDate } from '../utils';\nimport { TdCalendarProps } from '../type';\nimport { CalendarState } from '../interface';\nimport isArray from 'lodash/isArray';\n\nexport function useState(props: TdCalendarProps) {\n const { globalConfig } = useConfig(COMPONENT_NAME);\n\n const state = reactive<CalendarState>({\n realFirstDayOfWeek: 1,\n curDate: null,\n curDateList: [],\n curSelectedYear: null,\n curSelectedMonth: null,\n curSelectedMode: null,\n isShowWeekend: true,\n controlSize: 'medium',\n });\n\n function toToday() {\n const curDate = createDefaultCurDate();\n state.curDate = curDate;\n state.curSelectedYear = curDate.year();\n state.curSelectedMonth = parseInt(curDate.format('M'), 10);\n }\n\n function setCurSelectedYear(year?: TdCalendarProps['year']) {\n const curSelectedYear = year ? parseInt(`${year}`, 10) : createDefaultCurDate().year();\n if (!isNaN(curSelectedYear) && curSelectedYear > 0) {\n state.curSelectedYear = curSelectedYear;\n }\n }\n\n function setCurSelectedMonth(month?: TdCalendarProps['month']) {\n const curSelectedMonth = month ? parseInt(`${month}`, 10) : parseInt(createDefaultCurDate().format('M'), 10);\n if (!isNaN(curSelectedMonth) && curSelectedMonth > 0 && curSelectedMonth <= 12) {\n state.curSelectedMonth = curSelectedMonth;\n }\n }\n\n function setCurrentDate(value?: TdCalendarProps['value']): void {\n if (isArray(value)) {\n state.curDate = value && value.length ? dayjs(value[0]) : createDefaultCurDate();\n } else {\n state.curDate = value ? dayjs(value) : createDefaultCurDate();\n }\n }\n\n function setCurrentDateList(value?: TdCalendarProps['value']): void {\n if (isArray(value)) {\n state.curDateList = value && value.length ? value.map((item) => dayjs(item)) : [createDefaultCurDate()];\n } else {\n state.curDateList = value ? [dayjs(value)] : [createDefaultCurDate()];\n }\n }\n\n function checkDayVisible(day: number) {\n let re = true;\n if (!state.isShowWeekend) {\n re = day !== 6 && day !== 7;\n }\n return re;\n }\n\n watch(\n () => props.firstDayOfWeek,\n () => {\n state.realFirstDayOfWeek = props.firstDayOfWeek ?? globalConfig.value.firstDayOfWeek ?? 1;\n },\n { immediate: true },\n );\n watch(\n () => props.value,\n (v: TdCalendarProps['value']) => {\n if (props.multiple) {\n setCurrentDateList(v);\n } else {\n setCurrentDate(v);\n }\n },\n { immediate: true },\n );\n watch(\n () => props.year,\n (v: TdCalendarProps['year']) => {\n setCurSelectedYear(v);\n },\n { immediate: true },\n );\n watch(\n () => props.month,\n (v: TdCalendarProps['month']) => {\n setCurSelectedMonth(v);\n },\n { immediate: true },\n );\n watch(\n () => props.isShowWeekendDefault,\n (v: TdCalendarProps['isShowWeekendDefault']) => {\n state.isShowWeekend = v;\n },\n { immediate: true },\n );\n watch(\n () => props.mode,\n (v: TdCalendarProps['mode']) => {\n state.curSelectedMode = v;\n },\n { immediate: true },\n );\n watch(\n () => props.theme,\n (v: TdCalendarProps['theme']) => {\n if (v === 'card') state.controlSize = 'small';\n if (v === 'full') state.controlSize = 'medium';\n },\n { immediate: true },\n );\n return {\n state,\n toToday,\n checkDayVisible,\n };\n}\n"],"names":["realFirstDayOfWeek","curDate","curDateList","curSelectedYear","curSelectedMonth","curSelectedMode","isShowWeekend","controlSize","state","isArray","re","watch","immediate","toToday","checkDayVisible"],"mappings":"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"}