import React from 'react'; import { Form, Icon } from '@edx/paragon'; import { ExpandMore } from '@edx/paragon/icons'; import PropTypes from 'prop-types'; const FormFieldRenderer = (props) => { let formField = null; const { errorMessage, fieldData, onChangeHandler, isRequired, value, } = props; const handleFocus = (e) => { if (props.handleFocus) { props.handleFocus(e); } }; const handleOnBlur = (e) => { if (props.handleBlur) { props.handleBlur(e); } }; switch (fieldData.type) { case 'select': { if (!fieldData.options) { return null; } formField = ( onChangeHandler(e)} trailingElement={} floatingLabel={fieldData.label} onBlur={handleOnBlur} onFocus={handleFocus} > {fieldData.options.map(option => ( ))} {isRequired && errorMessage && ( {errorMessage} )} ); break; } case 'textarea': { formField = ( onChangeHandler(e)} floatingLabel={fieldData.label} onBlur={handleOnBlur} onFocus={handleFocus} /> {isRequired && errorMessage && ( {errorMessage} )} ); break; } case 'text': { formField = ( onChangeHandler(e)} floatingLabel={fieldData.label} onBlur={handleOnBlur} onFocus={handleFocus} /> {isRequired && errorMessage && ( {errorMessage} )} ); break; } case 'checkbox': { formField = ( onChangeHandler(e)} onBlur={handleOnBlur} onFocus={handleFocus} > {fieldData.label} {isRequired && errorMessage && ( {errorMessage} )} ); break; } default: break; } return formField; }; FormFieldRenderer.defaultProps = { value: '', handleBlur: null, handleFocus: null, errorMessage: '', isRequired: false, }; FormFieldRenderer.propTypes = { fieldData: PropTypes.shape({ type: PropTypes.string, label: PropTypes.string, name: PropTypes.string, }).isRequired, onChangeHandler: PropTypes.func.isRequired, handleBlur: PropTypes.func, handleFocus: PropTypes.func, errorMessage: PropTypes.string, isRequired: PropTypes.bool, value: PropTypes.string, }; export default FormFieldRenderer;