choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
133 lines (132 loc) • 5.06 kB
TypeScript
import React, { ChangeEventHandler, Component, CSSProperties, FormEventHandler, ReactNode } from 'react';
import PropTypes from 'prop-types';
import Group from './Group';
import Search from './Search';
import TextArea from './TextArea';
import { Size } from '../_util/enum';
import { ConfigContextValue } from '../config-provider/ConfigContext';
export interface AbstractInputProps {
prefixCls?: string;
className?: string;
defaultValue?: any;
value?: any;
tabIndex?: number;
style?: CSSProperties;
label?: ReactNode;
showLengthInfo?: boolean;
showPasswordEye?: boolean;
}
export interface InputProps extends AbstractInputProps {
placeholder?: string;
copy?: boolean;
type?: string;
id?: string;
name?: string;
size?: Size;
maxLength?: number;
disabled?: boolean;
readOnly?: boolean;
addonBefore?: ReactNode;
addonAfter?: ReactNode;
onPressEnter?: FormEventHandler<HTMLInputElement>;
onKeyDown?: FormEventHandler<HTMLInputElement>;
onKeyUp?: FormEventHandler<HTMLInputElement>;
onChange?: ChangeEventHandler<HTMLInputElement>;
onClick?: FormEventHandler<HTMLInputElement>;
onFocus?: FormEventHandler<HTMLInputElement>;
onBlur?: FormEventHandler<HTMLInputElement>;
onInput?: FormEventHandler<HTMLInputElement>;
onCopy?: (value: any) => void;
autoComplete?: string;
prefix?: ReactNode;
suffix?: ReactNode;
spellCheck?: boolean;
autoFocus?: boolean;
focused?: boolean;
border?: boolean;
}
export interface InputState {
value?: any;
focused?: boolean;
showPasswordEye?: boolean;
showPassword?: boolean;
}
export default class Input extends Component<InputProps, any> {
static displayName: string;
static get contextType(): React.Context<ConfigContextValue>;
static Group: typeof Group;
static Search: typeof Search;
static TextArea: typeof TextArea;
static defaultProps: {
type: string;
disabled: boolean;
readOnly: boolean;
showLengthInfo: boolean;
showPasswordEye: boolean;
border: boolean;
};
static propTypes: {
type: PropTypes.Requireable<string>;
id: PropTypes.Requireable<string | number>;
label: PropTypes.Requireable<PropTypes.ReactNodeLike>;
size: PropTypes.Requireable<Size>;
maxLength: PropTypes.Requireable<string | number>;
disabled: PropTypes.Requireable<boolean>;
value: PropTypes.Requireable<any>;
defaultValue: PropTypes.Requireable<any>;
className: PropTypes.Requireable<string>;
addonBefore: PropTypes.Requireable<PropTypes.ReactNodeLike>;
addonAfter: PropTypes.Requireable<PropTypes.ReactNodeLike>;
prefixCls: PropTypes.Requireable<string>;
autosize: PropTypes.Requireable<boolean | object>;
onPressEnter: PropTypes.Requireable<(...args: any[]) => any>;
onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
copy: PropTypes.Requireable<boolean>;
onCopy: PropTypes.Requireable<(...args: any[]) => any>;
readOnly: PropTypes.Requireable<boolean>;
focused: PropTypes.Requireable<boolean>;
border: PropTypes.Requireable<boolean>;
showLengthInfo: PropTypes.Requireable<boolean>;
showPasswordEye: PropTypes.Requireable<boolean>;
};
context: ConfigContextValue;
state: InputState;
input: HTMLInputElement;
rendered: HTMLDivElement;
prefix: HTMLSpanElement;
suffix: HTMLSpanElement;
constructor(props: any, context: ConfigContextValue);
handleKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
componentDidMount(): void;
componentWillReceiveProps(nextProps: InputProps): void;
componentDidUpdate(): void;
setRenderedStyle(): void;
handleFocus: (e: React.FocusEvent<HTMLInputElement>) => void;
handleBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
handleChange: (e: any) => void;
handleCopy: () => void;
handleTogglePassword: () => void;
saveInput: (node: HTMLInputElement) => void;
saveRenderedRef: (node: HTMLDivElement) => void;
savePrefix: (node: HTMLSpanElement) => void;
saveSuffix: (node: HTMLSpanElement) => void;
focus(): void;
blur(): void;
getPrefixCls(): string;
getInputClassName(): string;
renderCopyIcon(): JSX.Element | null;
renderShowPassword(): JSX.Element | null;
renderInput(): JSX.Element;
getLengthInfo(): JSX.Element | null;
getLabel(): {} | null | undefined;
renderFloatLabel(): ReactNode;
getSizeClassName(name: string): string;
hasValue(): boolean;
renderPlaceholder(): JSX.Element | undefined;
render(): JSX.Element;
}