UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

289 lines (288 loc) 13.3 kB
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; }