UNPKG

@material/react-text-field

Version:
66 lines (65 loc) 3.23 kB
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 {};