//@flow import React from "react"; import classNames from "classnames"; import { LabelWithHelpIcon } from "../index"; type Props = { label?: string, placeholder?: string, value?: string, type?: string, autofocus?: boolean, onChange: string => void, onReturnPressed?: () => void, validationError: boolean, errorMessage: string, disabled?: boolean, helpText?: string }; class InputField extends React.Component { static defaultProps = { type: "text", placeholder: "" }; field: ?HTMLInputElement; componentDidMount() { if (this.props.autofocus && this.field) { this.field.focus(); } } handleInput = (event: SyntheticInputEvent) => { this.props.onChange(event.target.value); }; handleKeyPress = (event: SyntheticKeyboardEvent) => { const onReturnPressed = this.props.onReturnPressed; if (!onReturnPressed) { return; } if (event.key === "Enter") { event.preventDefault(); onReturnPressed(); } }; render() { const { type, placeholder, value, validationError, errorMessage, disabled, label, helpText } = this.props; const errorView = validationError ? "is-danger" : ""; const helper = validationError ? (

{errorMessage}

) : ( "" ); return (
{ this.field = input; }} className={classNames("input", errorView)} type={type} placeholder={placeholder} value={value} onChange={this.handleInput} onKeyPress={this.handleKeyPress} disabled={disabled} />
{helper}
); } } export default InputField;