import React, { Component } from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; const baseClass = 'form-field'; class FormField extends Component { static propTypes = { children: PropTypes.node, className: PropTypes.string, error: PropTypes.string, hint: PropTypes.oneOfType([PropTypes.array, PropTypes.node, PropTypes.string]), label: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.node]), name: PropTypes.string, type: PropTypes.string, }; renderLabel = () => { const { error, label, name } = this.props; const labelWrapperClasses = classnames( `${baseClass}__label`, { [`${baseClass}__label--error`]: error }, ); if (!label) { return false; } return ( ); } renderHint = () => { const { hint } = this.props; if (hint) { return {hint}; } return false; } render () { const { renderLabel, renderHint } = this; const { children, className, type } = this.props; const formFieldClass = classnames(baseClass, { [`${baseClass}--${type}`]: type, }, className); return (
{renderLabel()} {children} {renderHint()}
); } } export default FormField;