import React from 'react'; import type { DatePickerViewProps, DatePickerColumnMode, } from '../date-picker-view/interface'; import { PopupHeaderProps, PopupPropsCommon } from '@xrnjs/ui'; export type DatePickerAction = 'cancel' | 'confirm' | 'overlay'; export type DatePickerRangeAction = 'cancel' | 'confirm' | 'overlay' | 'clear'; export type DatePickerRangeValue = [Date | null, Date | null]; export interface DatePickerSingleMethodProps extends Omit, Omit { /** * 顶部栏标题 */ title?: React.ReactNode; /** * 确认按钮文字 * @default '确认' */ confirmButtonText?: string; /** * 出现清空按钮 * @default false */ cancelable?: boolean; /** * 取消按钮文字 * @default '取消' */ cancelButtonText?: string; /** * 点击取消 */ onCancel?: (value: Date) => void; /** * 点击确定 */ onConfirm?: (value: Date) => void; /** * 点击遮罩层 */ onPressOverlay?: (value: Date) => void; /** * 关闭前的回调函数,返回 false 可阻止关闭,支持返回 Promise */ beforeClose?: ( action: DatePickerAction, value: Date ) => boolean | Promise; /** * Popup header */ CustomHeader?: PopupHeaderProps; /** * 当同时存在多个 provider 时,指定哪个 provider 触发打开 */ portalTag?: string; } export interface DatePickerRangeViewProps extends Omit< DatePickerViewProps, 'value' | 'defaultValue' | 'onChange' | 'mode' > { /** * 日期选择的类型 * @default 'Y-D' */ mode?: DatePickerColumnMode; /** * 默认时间组 */ defaultValue?: DatePickerRangeValue; /** * 选中时间组 */ value?: DatePickerRangeValue; /** * 初始值,只有初始化以及重置时生效 * @default [null, null] */ initialValue?: DatePickerRangeValue; /** * 确认按钮文字 * @default '确认' */ confirmButtonText?: string; /** * 重置按钮文字 * @default '重置' */ resetButtonText?: string; /** * 站位文案 * @default ['请选择', '请选择'] */ placeholder?: [string, string]; /** * 点击确定 */ onConfirm?: (values: DatePickerRangeValue) => void; /** * 触发改变 */ onChange?: (values: DatePickerRangeValue) => void; /** * 出现清空按钮 * @default false */ clearable?: boolean; /** * 点击清空按钮 */ onClear?: (values: DatePickerRangeValue) => void; /** * 清空按钮文字 * @default '清空' */ clearButtonText?: string; } export interface DatePickerRangeMethodProps extends Omit< DatePickerRangeViewProps, 'loading' | 'value' | 'onChange' | 'onConfirm' >, Omit { /** * 顶部栏标题 */ title?: React.ReactNode; /** * 点击取消 */ onCancel?: (values: DatePickerRangeValue) => void; /** * 点击确定 */ onConfirm?: (values: DatePickerRangeValue) => void; /** * 点击遮罩层 */ onPressOverlay?: (values: DatePickerRangeValue) => void; /** * 关闭前的回调函数,返回 false 可阻止关闭,支持返回 Promise */ beforeClose?: ( action: DatePickerRangeAction, value: DatePickerRangeValue ) => boolean | Promise; /** * Popup header */ CustomHeader?: PopupHeaderProps; } export interface DatePickerInstance { (p: DatePickerSingleMethodProps): Promise<{ action: DatePickerAction; value: Date; }>; range: (p: DatePickerRangeMethodProps) => Promise<{ action: DatePickerRangeAction; values: DatePickerRangeValue; }>; RangeView: React.FC; }