import React from 'react'; import { Moment } from 'moment'; import { DatePickerProps, MonthPickerProps } from '@firesoon/antd/lib/date-picker/interface'; import { SelectDataProps } from '../Select/interface'; import { TimePickerProps } from '@firesoon/antd/lib/time-picker'; export type Type = 'start' | 'end'; export interface NormalProps { /** 禁止未来时间,默认true,禁止 */ disableFuture?: boolean; /** 月份块显示tooltip */ tipRender?: (date: Moment, locale: any) => string; /** 月份块页脚显示副内容 */ monthCellFooterRender?: (date: Moment, locale: any) => React.ReactNode; } export interface FSDatePickerProps extends NormalProps, DatePickerProps { } export interface FSMonthPickerProps extends NormalProps, MonthPickerProps { /** 是否使用Antd默认的渲染方法渲染 */ notDefaultRender?: boolean; } export type PickerMode = 'date' | 'month' | 'quarters' | 'year'; export interface RangePickerProps extends NormalProps { /** 是否是月份格式, 默认为 false, 目前存在是兼容老版本 后续新开发不推荐使用, 尽量使用picker */ isMonth?: boolean; /** 开始时间配置, antd日期组件(日期和月份)参数都支持 */ startProps?: DatePickerProps | MonthPickerProps | QuarterPickerProps | YearPickerProps; /** 结束时间配置, antd日期组件(日期和月份)参数都支持 */ endProps?: DatePickerProps | MonthPickerProps | QuarterPickerProps | YearPickerProps; /** 时间改变回调,可以根据type判断是开始、结束时间, 第三个参数为时间数组,对应value参数 */ onChange?: (date: Moment | LimitObj, type: Type, rangeDate: any[]) => void; futureTime?: Moment; futureMonth?: Moment; className?: string; /** 设置日期选择类型 */ picker?: PickerMode; /** 标签 */ label?: string; /** 预设范围,只有picker为date的时候适用, 推荐传value为数组的方式使用 */ ranges?: Record; /** 推荐使用,是startProps中value和endProps中value的组合,日期类型为季的时候是{ year, quarter }, 其他类型为moment */ value?: any[]; } interface LimitObj { year: number; quarter: number; } /** * year 默认年份 默认当前年份 * quarter {number} 默认季度 从0开始 * onChange() 回调函数 用来获取选中时间 * quarters 选择栏里显示的季度数组 默认['第一季度','第二季度','第三季度','第四季度'] * formatQuarters 选择结果显示数组 默认['第一季度','第二季度','第三季度','第四季度'] * type { start, end } 起止类型 * limit 时间范围限制 {year: 2018, quarter: '一季度'} */ export interface QuarterPickerProps extends NormalProps { /** 年份,默认今年 */ year?: number; /** 季度,默认0,第一季度 */ quarter?: number; /** 季度改变回调 */ onChange?: (date: LimitObj) => void; /** formatQuarters 选择结果显示数组 默认['第一季度','第二季度','第三季度','第四季度'] */ formatQuarters?: Array; /** quarters 选择栏里显示的季度数组 默认['第一季度','第二季度','第三季度','第四季度'] */ quarters?: Array; type?: 'start' | 'end'; limit?: LimitObj; /** 点击非选择区域 */ handleOk?: () => void; /** 年份后缀,默认 '年度' */ yearSuffix?: string; className?: string; placeholder?: string; /** startYear之前的年份不可选,默认为null */ startYear?: number; } export interface QuarterPickerState { show: boolean; year: number; quarter: number; optYear: number; } export interface YearPickerProps { /** 年份显示格式, 默认'YYYY' */ formatter?: string; /** 年份改变回调 */ onChange?: (value: Moment) => void; /** 默认值, 默认今年 */ defaultValue?: Moment; /** 年份值,Moment格式 */ value?: Moment; placeholder?: string; /** 展示近几年的数据,默认为 5 */ number?: number; /** 开始年份,默认为 2010 */ startYear?: number; /** 年份后缀, 默认‘年度’ */ suffix?: string; className?: string; style?: any; /** 不可选日期 */ disabledDate?: (currentDate?: Moment) => boolean; } export interface CombinePickerValueProps { picker?: PickerMode; type?: string; date: any[]; } export interface CombinePickerProps extends Omit { /** 组合选择回调 */ onChange?: (v: T) => void; /** 类型切换值 有日期类型、业务类型、日期 */ value?: T; /** 切换时日期默认值, 除季以外类型Moment[], 季度类型为{ year,quarter }[] */ switchedDefaultValue?: { [K in PickerMode]?: any[]; }; /** 日期类型选项 */ pickerOption?: PickerMode[]; /** 业务类型选项 */ typeOption?: SelectDataProps[]; } export interface DatePickerDecorator extends React.FC { TimePicker: React.ClassicComponentClass; RangePicker: React.FC; MonthPicker: React.FC; QuarterPicker: React.ClassicComponentClass; YearPicker: React.ClassicComponentClass; CombinePicker: React.FC; } export {};