UNPKG

wot-design-uni

Version:

一个基于Vue3+TS开发的uni-app组件库,提供70+高质量组件,支持暗黑模式、国际化和自定义主题。

97 lines (89 loc) 2.79 kB
import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' import { makeBooleanProp, makeNumberProp, makeStringProp } from '../../common/props' import type { CalendarFormatter, CalendarTimeFilter, CalendarType } from '../types' const now = new Date() const defaultMinDate = new Date(now.getFullYear(), now.getMonth() - 6, now.getDate()).getTime() const defaultMaxDate = new Date(now.getFullYear(), now.getMonth() + 6, now.getDate(), 23, 59, 59).getTime() /** * 月份信息 */ export interface MonthInfo { date: number height: number } export const monthPanelProps = { /** * 日期类型 */ type: makeStringProp<CalendarType>('date'), /** * 选中值,为 13 位时间戳或时间戳数组 */ value: { type: [Number, Array, null] as PropType<number | (number | null)[] | null>, default: null }, /** * 最小日期,为 13 位时间戳 */ minDate: makeNumberProp(defaultMinDate), /** * 最大日期,为 13 位时间戳 */ maxDate: makeNumberProp(defaultMaxDate), /** * 周起始天 */ firstDayOfWeek: makeNumberProp(0), /** * 日期格式化函数 */ formatter: Function as PropType<CalendarFormatter>, /** * type 为范围选择时有效,最大日期范围 */ maxRange: Number, /** * type 为范围选择时有效,选择超出最大日期范围时的错误提示文案 */ rangePrompt: String, /** * type 为范围选择时有效,是否允许选择同一天 */ allowSameDay: makeBooleanProp(false), /** * 是否展示面板标题,自动计算当前滚动的日期月份 */ showPanelTitle: makeBooleanProp(false), /** * 选中日期所使用的当日内具体时刻 */ defaultTime: { type: [Array] as PropType<Array<number[]>> }, /** * 可滚动面板的高度 */ panelHeight: makeNumberProp(378), /** * type 为 'datetime' 或 'datetimerange' 时有效,用于过滤时间选择器的数据 */ timeFilter: Function as PropType<CalendarTimeFilter>, /** * type 为 'datetime' 或 'datetimerange' 时有效,是否不展示秒修改 */ hideSecond: makeBooleanProp(false), /** * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 */ immediateChange: makeBooleanProp(false) } export type MonthPanelProps = ExtractPropTypes<typeof monthPanelProps> export type MonthPanelTimeType = 'start' | 'end' | '' export type MonthPanelExpose = { /** * 使当前日期或者选中日期滚动到可视区域 */ scrollIntoView: () => void } export type MonthPanelInstance = ComponentPublicInstance<MonthPanelProps, MonthPanelExpose>