EASYAIuniappNewUI/node_modules/@tuniao/tnui-vue3-uniapp/components/calendar/src/calendar.ts
2025-02-08 18:50:38 +08:00

110 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '../../../constants'
import {
buildProps,
definePropType,
isArray,
isNumber,
isString,
} from '../../../utils'
import type { ExtractPropTypes } from 'vue'
import type { Arrayable } from '../../../utils'
export const calendarModes = ['date', 'multi', 'range'] as const
export type CalendarModelValueType = Arrayable<string>
export const calendarProps = buildProps({
/**
* @description 日期绑定的值,支持的格式为 YYYY/MM/DD 2023/01/01 或者 YYYY-MM-DD 2023-01-01 [2023/01/01, 2023/01/02] [2023-01-01, 2023-01-02]
*/
modelValue: {
type: definePropType<CalendarModelValueType>([String, Array]),
default: '',
},
/**
* @description 选中时的背景颜色以tn开头使用图鸟内置的颜色
*/
activeBgColor: String,
/**
* @description 选中时的文字颜色以tn开头使用图鸟内置的颜色
*/
activeTextColor: String,
/**
* @description 在日期范围内的背景颜色以tn开头使用图鸟内置的颜色
*/
rangeBgColor: String,
/**
* @description 在日期范围内的文字颜色以tn开头使用图鸟内置的颜色
*/
rangeTextColor: String,
/**
* @description 日期模式
*/
mode: {
type: String,
values: calendarModes,
default: 'date',
},
/**
* @description 日期最小值,支持的格式为 YYYY/MM/DD 或者 YYYY-MM-DD如果没有设置最小值则以当前日期作为最小值
*/
minDate: String,
/**
* @description 日期最大值,支持的格式为 YYYY/MM/DD 或者 YYYY-MM-DD如果没有设置最大值则以当前年份最后一天作为最大值
*/
maxDate: String,
/**
* @description 是否允许切换年份
*/
allowChangeYear: {
type: Boolean,
default: true,
},
/**
* @description 是否允许切换月份
*/
allowChangeMonth: {
type: Boolean,
default: true,
},
/**
* @description 是否显示农历
*/
showLunar: Boolean,
/**
* @description 当 mode 为 range 时,开始时间的提示信息
*/
rangeStartDesc: {
type: String,
default: '开始',
},
/**
* @description 当 mode 为 range 时,结束时间的提示信息
*/
rangeEndDesc: {
type: String,
default: '结束',
},
})
export const calendarEmits = {
[UPDATE_MODEL_EVENT]: (value: CalendarModelValueType) =>
isArray(value) || isString(value),
[CHANGE_EVENT]: (value: CalendarModelValueType) =>
isArray(value) || isString(value),
/**
* @description 年份切换事件
*/
'change-year': (year: number) => isNumber(year),
/**
* @description 月份切换事件
*/
'change-month': (month: number) => isNumber(month),
}
export type CalendarProps = ExtractPropTypes<typeof calendarProps>
export type CalendarEmits = typeof calendarEmits
export type CalendarMode = (typeof calendarModes)[number]