import { FC, ReactNode, FocusEvent } from 'react'; import { Ref, StateOperation } from '@befe/brick-utils'; import { Input } from '@befe/brick-comp-input'; import { UiTimePanel } from '../ui-comps/ui-time-panel'; import { SafeChainInvoker } from '../utils/safe-chain-invoker'; export interface PartialInputProps { disabled?: boolean; status?: 'normal' | 'error'; /** * default 值 : 请选择时间 */ placeholder?: string; } export interface TimePickerProps extends PartialTimePickerIconProps, PartialInputProps { /** * 自定义 class */ className?: string; /** * 当前时间,使用 TimePicker.TimeValue 创建 */ value?: TimeValue; /** * 默认时间,使用 TimePicker.TimeValue 创建 */ defaultValue?: TimeValue; /** * 时间选择器面板的额外 className */ popupClassName?: string; /** * 尺寸 */ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'; /** * 是否显示秒 */ showSecond?: boolean; /** * 值变化时的回调 */ onChange?: (value: TimeValue) => void; clearable?: boolean; onFocus?: (e: FocusEvent) => void; onBlur?: (e: FocusEvent) => void; } export interface TimePickerState { hour?: number; minute?: number; second?: number; open: boolean; isUserInput: boolean; } export interface PartialTimePickerIconProps { iconSvg?: FC; iconNode?: ReactNode; } declare function getTimeText(showSecond: boolean, hour?: number, minute?: number, second?: number): string; export declare function validateTimeText(text: string): boolean; declare function extractFromTimeText(text: string): { hour?: undefined; minute?: undefined; second?: undefined; } | { hour: number; minute: number; second: number; }; export declare class TimeValue { showSecond: boolean; hour?: number; minute?: number; second?: number; constructor(hour?: number, minute?: number, second?: number, showSecond?: boolean); static isValid(text: string): boolean; static fromText(text: string, showSecond?: boolean): TimeValue; toText(): string; toValue(): { hour: undefined; minute: undefined; second: undefined; } | { hour: number; minute: number; second: number | undefined; }; } export declare function createTimePicker({ iconSvg: defaultIconSvg, iconNode: defaultIconNode, }: PartialTimePickerIconProps): { new (props: never): { state: TimePickerState; isClickedOnPanel: boolean; initialSelect: { enabled: boolean; hour: boolean; minute: boolean; second: boolean; }; listenerGroup: import("@befe/brick-utils").ListenerGroup; stateUserInput: StateOperation; stateOpen: StateOperation; refInput: Ref; refInputWrapper: Ref; refPanel: Ref; refPanelWrapper: Ref; checkClickOnInput: SafeChainInvoker; checkClickOnPanel: SafeChainInvoker; isInitialSelected: () => boolean; readonly size: "xs" | "sm" | "md" | "lg" | "xl" | undefined; readonly className: string; readonly popupClassName: string; readonly shouldShowPanel: boolean; checkCouldClosePanel: (propName: 'hour' | 'minute' | 'second') => void; triggerChange(state: { hour?: number; minute?: number; second?: number; }): void; handleTextChange: (text: string) => void; handleFocusOnInput: (e: FocusEvent) => void; handleBlurFromInput: (e: FocusEvent) => void; handlePanelChange: UiTimePanel['props']['onChange']; getSnapshotBeforeUpdate: () => any | null; componentDidMount(): void; componentWillUnmount(): void; componentDidUpdate(): void; render(): import("react/jsx-runtime").JSX.Element; context: any; setState(state: TimePickerState | ((prevState: Readonly, props: Readonly) => TimePickerState | Pick | null) | Pick | null, callback?: (() => void) | undefined): void; forceUpdate(callback?: (() => void) | undefined): void; readonly props: Readonly & Readonly<{ children?: ReactNode; }>; refs: { [key: string]: import("react").ReactInstance; }; shouldComponentUpdate?(nextProps: Readonly, nextState: Readonly, nextContext: any): boolean; componentDidCatch?(error: Error, errorInfo: import("react").ErrorInfo): void; componentWillMount?(): void; UNSAFE_componentWillMount?(): void; componentWillReceiveProps?(nextProps: Readonly, nextContext: any): void; UNSAFE_componentWillReceiveProps?(nextProps: Readonly, nextContext: any): void; componentWillUpdate?(nextProps: Readonly, nextState: Readonly, nextContext: any): void; UNSAFE_componentWillUpdate?(nextProps: Readonly, nextState: Readonly, nextContext: any): void; }; displayName: string; defaultProps: TimePickerProps; TimeValue: typeof TimeValue; getTimeText: typeof getTimeText; validateTimeText: typeof validateTimeText; extractFromTimeText: typeof extractFromTimeText; getInitialSelect: (enabled: boolean) => { enabled: boolean; hour: boolean; minute: boolean; second: boolean; }; getDerivedStateFromProps(nextProps: TimePickerProps): Partial; contextType?: import("react").Context | undefined; }; export {};