@material/react-text-field
Version:
Material Components React Text Field
66 lines (65 loc) • 3.23 kB
TypeScript
import React from 'react';
import { MDCTextFieldFoundation } from '@material/textfield/foundation';
export interface InputProps<T extends HTMLElement = HTMLInputElement> {
className?: string;
inputType?: 'input' | 'textarea';
isValid?: boolean;
foundation?: MDCTextFieldFoundation;
syncInput?: (inputInstance: Input<T>) => void;
onBlur?: Pick<React.HTMLProps<T>, 'onBlur'>;
onChange?: Pick<React.HTMLProps<T>, 'onChange'>;
onFocus?: Pick<React.HTMLProps<T>, 'onFocus'>;
onMouseDown?: Pick<React.HTMLProps<T>, 'onMouseDown'>;
onTouchStart?: Pick<React.HTMLProps<T>, 'onTouchStart'>;
setDisabled?: (disabled: boolean) => void;
setInputId?: (id: string | number) => void;
handleFocusChange?: (isFocused: boolean) => void;
}
declare type InputElementProps = Exclude<React.HTMLProps<HTMLInputElement>, 'ref'>;
declare type TextareaElementProps = Exclude<React.HTMLProps<HTMLTextAreaElement>, 'ref'>;
declare type Props<T extends HTMLElement = HTMLInputElement> = InputProps<T> & (T extends HTMLInputElement ? InputElementProps : TextareaElementProps);
interface InputState {
wasUserTriggeredChange: boolean;
isMounted: boolean;
}
export default class Input<T extends HTMLElement = HTMLInputElement> extends React.Component<Props<T>, InputState> {
inputElement_: React.RefObject<T extends HTMLInputElement ? HTMLInputElement : HTMLTextAreaElement>;
static defaultProps: {
className: string;
inputType: string;
disabled: boolean;
id: string;
setDisabled: () => void;
setInputId: () => void;
handleFocusChange: () => void;
value: string;
};
state: {
wasUserTriggeredChange: boolean;
isMounted: boolean;
};
componentDidMount(): void;
componentDidUpdate(prevProps: Props<T>, prevState: InputState): void;
/**
* This method is for any initialization logic the depends on the foundation.
* Any other initialization logic should belong in the componentDidMount.
*/
private initializeComponentWithFoundation;
valueToString(value?: string | string[] | number): string;
readonly classes: string;
readonly inputElement: (T extends HTMLInputElement ? HTMLInputElement : HTMLTextAreaElement) | null;
handleFocus: (evt: React.FocusEvent<T extends HTMLInputElement ? HTMLInputElement : HTMLTextAreaElement>) => void;
handleBlur: (evt: React.FocusEvent<T extends HTMLInputElement ? HTMLInputElement : HTMLTextAreaElement>) => void;
handleMouseDown: (evt: React.MouseEvent<T extends HTMLInputElement ? HTMLInputElement : HTMLTextAreaElement, MouseEvent>) => void;
handleTouchStart: (evt: React.TouchEvent<T extends HTMLInputElement ? HTMLInputElement : HTMLTextAreaElement>) => void;
handleChange: (evt: React.FormEvent<T extends HTMLInputElement ? HTMLInputElement : HTMLTextAreaElement>) => void;
handleValidationAttributeUpdate: (nextProps: Props<T>) => void;
isBadInput: () => boolean | null;
isValid: () => boolean | Props<T>["isValid"] | undefined;
isDisabled: () => boolean;
getMaxLength: () => number;
getInputType: () => string;
getValue: () => string;
render(): JSX.Element;
}
export {};