import React from 'react'; import PropTypes from 'prop-types'; /* !- Contexts */ import { bindFormContexts } from '../context'; /* !- React Elements */ import Field from '../formField'; /** * Input Component * * @extends Field */ class Input extends Field { /** * @private * @override * @emits * @param {SytheticEvent} event * @return {void} */ onChangeInputHandler = (event) => { this.onChangeHandler(event.target.value, event); } /* !- Renders */ /** * This method is called when render the Component instance. * @override * @return {ReactElement} */ render() { const { intl, multipleData, complete, preload } = this.props; const multipleDataText = () => intl ? intl.formatMessage({ id: multipleData }) : multipleData; return super.render() || (
{ this.label }
{ this.state.prefix &&
{this.state.prefix}
} { this.element = ref; }} data-name={this.props.name} /> { this.state.postfix &&
{this.state.postfix}
}
{ this.state.error &&
{this.state.error}
}
); } } /** * propTypes * @override * @type {Object} */ Input.propTypes = { ...Input.propTypes, /** * Specifies the type of input to display such as "password" or "email". */ type: PropTypes.oneOf(['text', 'password', 'email', 'date', 'tel', 'number', 'datetime-local']), /** * Regular expression to input validator */ regexp: PropTypes.string, /** * Override the inline-styles of the TextField's underline element. */ underlineStyle: PropTypes.objectOf(PropTypes.string), prefix: PropTypes.oneOfType([ PropTypes.element, PropTypes.string, ]), postfix: PropTypes.oneOfType([ PropTypes.element, PropTypes.string, ]), /** * Special placeholder, when state.value type is array */ multipleData: PropTypes.string, }; /** * defaultProps * @override * @type {Object} */ Input.defaultProps = { ...Input.defaultProps, type: 'text', underlineStyle: {}, regexp: '', prefix: '', postfix: '', }; export default bindFormContexts(Input);