UNPKG

nutui-uniapp

Version:

京东风格的轻量级移动端 Uniapp、Vue3 组件库(支持小程序开发)

98 lines (93 loc) 2.6 kB
import type { ExtractPropTypes, PropType } from 'vue' import { CANCEL_EVENT, CHANGE_EVENT, CONFIRM_EVENT, UPDATE_MODEL_EVENT } from '../_constants' import { makeNumberProp, makeNumericProp, makeStringProp, truthProp } from '../_utils' import type { DateLike, DatePickerBaseEvent, DatePickerChangeEvent, DatePickerFilter, DatePickerFormatter, DatePickerType, } from './type' export const datepickerProps = { /** * @description 初始值 */ modelValue: { type: [Number, String, Object] as PropType<DateLike>, }, /** * @description 时间类型,可选值 `date`(年月日) `time`(时分秒) `year-month`(年月) `month-day`(月日) `datehour`(年月日时) `hour-minute` */ type: makeStringProp<DatePickerType>('date'), /** * @description 是否显示顶部导航 */ showToolbar: truthProp, /** * @description 设置标题 */ title: makeStringProp(''), /** * @description 确定按钮文案 */ okText: makeStringProp(''), /** * @description 取消按钮文案 */ cancelText: makeStringProp(''), /** * @description 每列是否展示中文 */ isShowChinese: Boolean, /** * @description 分钟步进值 */ minuteStep: makeNumberProp(1), /** * @description 开始日期 */ minDate: { type: [Number, String, Object] as PropType<DateLike>, default: () => new Date(new Date().getFullYear() - 10, 0, 1), }, /** * @description 结束日期 */ maxDate: { type: [Number, String, Object] as PropType<DateLike>, default: () => new Date(new Date().getFullYear() + 10, 11, 31), }, /** * @description 选项格式化函数 */ formatter: Function as PropType<DatePickerFormatter>, /** * @description 选项过滤函数 */ filter: Function as PropType<DatePickerFilter>, /** * @description 是否开启3D效果 */ threeDimensional: Boolean, /** * @description 惯性滚动时长 */ swipeDuration: makeNumericProp(1000), /** * @description 可见的选项个数 */ visibleOptionNum: makeNumericProp(7), /** * @description 选项高度 */ optionHeight: makeNumericProp(36), } export type DatePickerProps = ExtractPropTypes<typeof datepickerProps> export const datepickerEmits = { [UPDATE_MODEL_EVENT]: (val: Date) => val instanceof Object, [CHANGE_EVENT]: (evt: DatePickerChangeEvent) => evt instanceof Object, [CONFIRM_EVENT]: (evt: DatePickerBaseEvent) => evt instanceof Object, [CANCEL_EVENT]: (evt: DatePickerBaseEvent) => evt instanceof Object, } export type DatePickerEmits = typeof datepickerEmits