choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
289 lines (288 loc) • 13.3 kB
TypeScript
import React, { CSSProperties, KeyboardEventHandler, ReactNode } from 'react';
import PropTypes from 'prop-types';
import moment, { Moment, MomentInput } from 'moment';
import { TimeStep } from 'choerodon-ui/dataset/interface';
import TriggerField, { TriggerFieldProps } from '../trigger-field/TriggerField';
import { ValidationMessages } from '../validator/Validator';
import { ViewMode } from './enum';
import { FieldType } from '../data-set/enum';
import Field from '../data-set/Field';
import { RenderProps } from '../field/FormField';
export declare type RenderFunction = (props: object, text: string, currentDate: Moment, selected: Moment) => ReactNode;
export { TimeStep };
export declare type TimeZone = string | ((moment: Moment) => string);
export interface DatePickerProps extends TriggerFieldProps {
/**
* 显示模式date|dateTime|time|year|month|week
*/
mode?: ViewMode;
/**
* 单元格渲染
*/
cellRenderer?: (mode: ViewMode) => RenderFunction | undefined;
filter?: (currentDate: Moment, selected: Moment, mode?: ViewMode) => boolean;
min?: MomentInput | null;
max?: MomentInput | null;
step?: TimeStep;
renderExtraFooter?: () => ReactNode;
extraFooterPlacement?: 'top' | 'bottom';
/**
* 时区显示
*/
timeZone?: TimeZone;
/**
* 编辑器在下拉框中显示
*/
editorInPopup?: boolean;
/**
* 默认显示
*/
defaultTime?: Moment | [Moment, Moment];
}
export interface DatePickerKeyboardEvent {
handleKeyDownRight: KeyboardEventHandler<any>;
handleKeyDownLeft: KeyboardEventHandler<any>;
handleKeyDownDown: KeyboardEventHandler<any>;
handleKeyDownUp: KeyboardEventHandler<any>;
handleKeyDownEnd: KeyboardEventHandler<any>;
handleKeyDownHome: KeyboardEventHandler<any>;
handleKeyDownPageUp: KeyboardEventHandler<any>;
handleKeyDownPageDown: KeyboardEventHandler<any>;
handleKeyDownEnter: KeyboardEventHandler<any>;
}
export default class DatePicker extends TriggerField<DatePickerProps> implements DatePickerKeyboardEvent {
static displayName: string;
static propTypes: {
id: PropTypes.Requireable<string>;
size: PropTypes.Requireable<import("../core/enum").Size>;
suffixCls: PropTypes.Requireable<string>;
prefixCls: PropTypes.Requireable<string>;
title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
disabled: PropTypes.Requireable<boolean>;
hidden: PropTypes.Requireable<boolean>;
autoFocus: PropTypes.Requireable<boolean>;
accessKey: PropTypes.Requireable<string | boolean>;
dir: PropTypes.Requireable<string>;
contentEditable: PropTypes.Requireable<string | boolean>;
draggable: PropTypes.Requireable<string | boolean>;
style: PropTypes.Requireable<object>;
className: PropTypes.Requireable<string>;
tabIndex: PropTypes.Requireable<number>;
lang: PropTypes.Requireable<string>;
spellCheck: PropTypes.Requireable<boolean>;
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
onClick: PropTypes.Requireable<(...args: any[]) => any>;
onDoubleClick: PropTypes.Requireable<(...args: any[]) => any>;
onMouseUp: PropTypes.Requireable<(...args: any[]) => any>;
onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
onMouseMove: PropTypes.Requireable<(...args: any[]) => any>;
onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
onMouseOut: PropTypes.Requireable<(...args: any[]) => any>;
onContextMenu: PropTypes.Requireable<(...args: any[]) => any>;
onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
dataSet: PropTypes.Requireable<object>;
_inTable: PropTypes.Requireable<boolean>;
type: PropTypes.Requireable<string>;
name: PropTypes.Requireable<string>;
value: PropTypes.Requireable<any>;
defaultValue: PropTypes.Requireable<any>;
required: PropTypes.Requireable<boolean>;
readOnly: PropTypes.Requireable<boolean>;
form: PropTypes.Requireable<string>;
dataIndex: PropTypes.Requireable<number>;
multiple: PropTypes.Requireable<boolean>;
range: PropTypes.Requireable<boolean | (string | null | undefined)[]>;
rowSpan: PropTypes.Requireable<number>;
newLine: PropTypes.Requireable<boolean>;
colSpan: PropTypes.Requireable<number>;
validator: PropTypes.Requireable<(...args: any[]) => any>;
onInvalid: PropTypes.Requireable<(...args: any[]) => any>;
help: PropTypes.Requireable<string>;
showHelp: PropTypes.Requireable<import("../field/enum").ShowHelp>;
renderer: PropTypes.Requireable<(...args: any[]) => any>;
validationRenderer: PropTypes.Requireable<(...args: any[]) => any>;
maxTagPlaceholder: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
maxTagCount: PropTypes.Requireable<number>;
maxTagTextLength: PropTypes.Requireable<number>;
pristine: PropTypes.Requireable<boolean>;
trim: PropTypes.Requireable<import("../data-set/enum").FieldTrim>;
onBeforeChange: PropTypes.Requireable<(...args: any[]) => any>;
onChange: PropTypes.Requireable<(...args: any[]) => any>;
onInput: PropTypes.Requireable<(...args: any[]) => any>;
onEnterDown: PropTypes.Requireable<(...args: any[]) => any>;
fieldClassName: PropTypes.Requireable<string>;
highlight: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
highlightRenderer: PropTypes.Requireable<(...args: any[]) => any>;
useColon: PropTypes.Requireable<boolean>;
showValidation: PropTypes.Requireable<string>;
placeholder: PropTypes.Requireable<string | (string | null | undefined)[]>;
minLength: PropTypes.Requireable<number>;
maxLength: PropTypes.Requireable<number>;
pattern: PropTypes.Requireable<string | object>;
autoComplete: PropTypes.Requireable<string>;
prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
clearButton: PropTypes.Requireable<boolean>;
addonBefore: PropTypes.Requireable<PropTypes.ReactNodeLike>;
addonBeforeStyle: PropTypes.Requireable<object>;
addonAfter: PropTypes.Requireable<PropTypes.ReactNodeLike>;
addonAfterStyle: PropTypes.Requireable<object>;
restrict: PropTypes.Requireable<string | object>;
isFlat: PropTypes.Requireable<boolean>;
valueChangeAction: PropTypes.Requireable<import("../text-field/enum").ValueChangeAction>;
wait: PropTypes.Requireable<number>;
waitType: PropTypes.Requireable<import("../core/enum").WaitType>;
groupClassName: PropTypes.Requireable<string>;
showLengthInfo: PropTypes.Requireable<boolean>;
border: PropTypes.Requireable<boolean>;
popupContent: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
popupCls: PropTypes.Requireable<string>;
popupStyle: PropTypes.Requireable<object>;
popupPlacement: PropTypes.Requireable<string>;
trigger: React.Requireable<any>;
triggerShowDelay: PropTypes.Requireable<number>;
triggerHiddenDelay: PropTypes.Requireable<number>;
onPopupHiddenChange: PropTypes.Requireable<(...args: any[]) => any>;
getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
getPopupAlignTarget: PropTypes.Requireable<(...args: any[]) => any>;
tabIntoPopupContent: PropTypes.Requireable<boolean>;
viewMode: PropTypes.Requireable<string>;
/**
* 日期格式,如 `YYYY-MM-DD HH:mm:ss`
*/
format: PropTypes.Requireable<string>;
/**
* 显示模式date|dateTime|time|year|month|week
*/
mode: PropTypes.Requireable<string>;
/**
* 单元格渲染
*/
cellRenderer: PropTypes.Requireable<(...args: any[]) => any>;
/**
* 日期过滤
*/
filter: PropTypes.Requireable<(...args: any[]) => any>;
/**
* 最小日期
*/
min: PropTypes.Requireable<any>;
/**
* 最大日期
*/
max: PropTypes.Requireable<any>;
/**
* 时间步距
*/
step: PropTypes.Requireable<PropTypes.InferProps<{
hour: PropTypes.Requireable<number>;
minute: PropTypes.Requireable<number>;
second: PropTypes.Requireable<number>;
}>>;
/**
* 时区显示
*/
timeZone: PropTypes.Requireable<string | ((...args: any[]) => any)>;
/**
* 编辑器在下拉框中显示
*/
editorInPopup: PropTypes.Requireable<boolean>;
};
static defaultProps: {
suffixCls: string;
mode: ViewMode;
clearButton: boolean;
popupPlacement: string;
triggerShowDelay: number;
triggerHiddenDelay: number;
viewMode: string;
multiple: boolean;
border: boolean;
valueChangeAction: import("../text-field/enum").ValueChangeAction;
waitType: import("../core/enum").WaitType;
readOnly: boolean;
disabled: boolean;
noValidate: boolean;
trim: import("../data-set/enum").FieldTrim;
};
get value(): any | undefined;
set value(value: any | undefined);
get defaultValidationMessages(): ValidationMessages;
get min(): Moment | undefined | null;
get max(): Moment | undefined | null;
view: DatePickerKeyboardEvent | null;
selectedDate?: Moment;
mode?: ViewMode;
popupRangeEditor?: HTMLInputElement | null;
savePopupRangeEditor(node: HTMLInputElement | null): void;
isEditable(): boolean;
isEditableLike(): boolean;
getOmitPropsKeys(): string[];
getOtherProps(): any;
getObservableProps(props: any, context: any): any;
defaultRenderer(props: RenderProps): ReactNode;
getDefaultTime(): [Moment, Moment];
getDefaultViewMode(): ViewMode.time | ViewMode.dateTime | ViewMode.week | ViewMode.date | ViewMode.date | ViewMode.month | ViewMode.year;
getPopupClassName(defaultClassName: string | undefined): string | undefined;
getPopupEditor(): JSX.Element | undefined;
getPopupContent(): JSX.Element;
getCellRenderer(mode: ViewMode): RenderFunction | undefined;
getTriggerIconFont(): string;
getFieldType(): FieldType;
getViewMode(): ViewMode;
toMoment(item: Moment | Date | string | undefined, field?: Field | undefined, noCheck?: boolean): Moment | undefined;
checkMoment(item: any): moment.Moment | undefined;
compare(oldValue: any, newValue: any): boolean;
setText(text?: string): void;
afterSetValue(): void;
momentToTimestamp(value: any): any;
getSelectedDate(): Moment;
getLimit(minOrMax: 'min' | 'max'): Moment | undefined;
getLimitWithType(limit: Moment, minOrMax: 'min' | 'max'): Moment;
getPopupStyleFromAlign(): CSSProperties | undefined;
handleSelectedDateChange(selectedDate: Moment, mode?: ViewMode): void;
handelViewModeChange(mode: ViewMode): void;
handlePopupAnimateAppear(): void;
handlePopupAnimateEnd(key: any, exists: any): void;
handleSelect(date: Moment, expand?: boolean): void;
handleKeyDown(e: any): void;
handleKeyDownHome(e: any): void;
handleKeyDownEnd(e: any): void;
handleKeyDownLeft(e: any): void;
handleKeyDownRight(e: any): void;
handleKeyDownUp(e: any): void;
handleKeyDownDown(e: any): void;
handleKeyDownPageUp(e: any): void;
handleKeyDownPageDown(e: any): void;
handleKeyDownEnter(_e: any): void;
handleKeyDownEsc(e: any): void;
handleKeyDownTab(): void;
handleKeyDownSpace(e: any): void;
handleEnterDown(e: any): void;
prepareSetValue(...value: any[]): void;
syncValueOnBlur(value: any): void;
getValueKey(v: any): any;
exchangeRangeValue(start: Moment, end: Moment): void;
changeSelectedDate(selectedDate: Moment): void;
isSelected(date: Moment): boolean;
unChoose(date: Moment): void;
/**
*
* @param date 返回的时间
* @param expand 是否保持时间选择器的展开
*/
choose(date: Moment, expand?: boolean): void;
setRangeTarget(target: any): void;
getValidDate(date: Moment): Moment;
isLowerRange(m1: any, m2: any): boolean;
isUnderRange(date: Moment, mode?: ViewMode): boolean;
isValidDate(currentDate: Moment, selected: Moment): boolean;
isValidNowDate(selected: Moment): boolean;
getValidatorProp(key: string): any;
renderLengthInfo(): ReactNode;
}