UNPKG

@douyinfe/semi-ui

Version:

A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.

95 lines (94 loc) 5.23 kB
import React from 'react'; import PropTypes from 'prop-types'; import DateInputFoundation, { DateInputAdapter, DateInputFoundationProps, RangeType, InsetInputChangeProps, InsetInputChangeFoundationProps } from '@douyinfe/semi-foundation/lib/cjs/datePicker/inputFoundation'; import { noop } from '@douyinfe/semi-foundation/lib/cjs/utils/function'; import { ValueType } from '@douyinfe/semi-foundation/lib/cjs/datePicker/foundation'; import BaseComponent, { BaseProps } from '../_base/baseComponent'; export interface DateInputProps extends DateInputFoundationProps, BaseProps { insetLabel?: React.ReactNode; prefix?: React.ReactNode; onClick?: (e: React.MouseEvent<HTMLInputElement>) => void; onChange?: (value: string, e: React.MouseEvent<HTMLInputElement>) => void; onEnterPress?: (e: React.KeyboardEvent<HTMLInputElement>) => void; onBlur?: (e: React.MouseEvent<HTMLInputElement>) => void; onFocus?: (e: React.MouseEvent<HTMLInputElement>, rangeType?: RangeType) => void; onClear?: (e: React.MouseEvent<HTMLDivElement>) => void; onInsetInputChange?: (options: InsetInputChangeProps) => void; value?: Date[]; inputRef?: React.RefObject<HTMLInputElement>; rangeInputStartRef?: React.RefObject<HTMLInputElement>; rangeInputEndRef?: React.RefObject<HTMLInputElement>; showClearIgnoreDisabled?: boolean; } export default class DateInput extends BaseComponent<DateInputProps, {}> { static propTypes: { borderless: PropTypes.Requireable<boolean>; onClick: PropTypes.Requireable<(...args: any[]) => any>; onChange: PropTypes.Requireable<(...args: any[]) => any>; onEnterPress: PropTypes.Requireable<(...args: any[]) => any>; onBlur: PropTypes.Requireable<(...args: any[]) => any>; onClear: PropTypes.Requireable<(...args: any[]) => any>; onFocus: PropTypes.Requireable<(...args: any[]) => any>; value: PropTypes.Requireable<any[]>; disabled: PropTypes.Requireable<boolean>; type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "monthRange" | "dateTimeRange">; showClear: PropTypes.Requireable<boolean>; format: PropTypes.Requireable<string>; inputStyle: PropTypes.Requireable<object>; inputReadOnly: PropTypes.Requireable<boolean>; insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>; validateStatus: PropTypes.Requireable<string>; prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>; prefixCls: PropTypes.Requireable<string>; dateFnsLocale: PropTypes.Validator<object>; placeholder: PropTypes.Requireable<NonNullable<string | any[]>>; rangeInputFocus: PropTypes.Requireable<NonNullable<string | boolean>>; rangeInputStartRef: PropTypes.Requireable<object>; rangeInputEndRef: PropTypes.Requireable<object>; rangeSeparator: PropTypes.Requireable<string>; insetInput: PropTypes.Requireable<NonNullable<boolean | object>>; insetInputValue: PropTypes.Requireable<object>; defaultPickerValue: PropTypes.Requireable<NonNullable<string | number | object>>; }; static defaultProps: { borderless: boolean; showClear: boolean; onClick: typeof noop; onChange: typeof noop; onEnterPress: typeof noop; onBlur: typeof noop; onClear: typeof noop; onFocus: typeof noop; type: string; inputStyle: {}; inputReadOnly: boolean; prefixCls: "semi-datepicker"; rangeSeparator: " ~ "; }; foundation: DateInputFoundation; constructor(props: DateInputProps); get adapter(): DateInputAdapter; componentDidMount(): void; componentWillUnmount(): void; formatText(value: ValueType): string; handleChange: (value: string, e: React.ChangeEvent<HTMLInputElement>) => void; handleEnterPress: (e: React.KeyboardEvent<HTMLInputElement>) => void; handleInputClear: (e: React.MouseEvent<HTMLDivElement>) => void; handleRangeInputChange: (rangeStart: string, rangeEnd: string, e: React.ChangeEvent) => void; handleRangeInputClear: React.MouseEventHandler<HTMLDivElement>; handleRangeInputEnterPress: (e: React.KeyboardEvent<HTMLInputElement>, rangeStart: string, rangeEnd: string) => void; handleRangeInputEndKeyPress: (e: React.KeyboardEvent<HTMLInputElement>) => void; handleRangeInputFocus: (e: React.MouseEvent<HTMLElement>, rangeType: RangeType) => void; handleRangeStartFocus: React.MouseEventHandler<HTMLElement>; handleInsetInputChange: (options: InsetInputChangeFoundationProps) => void; getRangeInputValue: (rangeStart: string, rangeEnd: string) => string; renderRangePrefix(): React.JSX.Element; renderRangeSeparator(rangeStart: string, rangeEnd: string): React.JSX.Element; renderRangeClearBtn(rangeStart: string, rangeEnd: string): React.JSX.Element; renderRangeSuffix(suffix: React.ReactNode): React.JSX.Element; renderRangeInput(rangeProps: DateInputProps): React.JSX.Element; isRenderMultipleInputs(): boolean; renderInputInset(): React.JSX.Element; renderTriggerInput(): React.JSX.Element; render(): React.JSX.Element; }