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;