import React from 'react'; import PropTypes from 'prop-types'; import { FastField, Field, getIn } from 'formik'; export class CalendarInputField extends React.Component { renderFormField = (props) => { const { fieldPath, component } = this.props; const { form: { values, errors, setFieldValue }, } = props; const value = getIn(values, fieldPath, ''); const error = errors && fieldPath in errors ? errors[fieldPath] : null; const onChange = (value, name) => { setFieldValue(name, value); }; const newProps = { error: error, form: props.form, onChange: onChange, value: value, }; return component(newProps); }; render() { const { optimized, fieldPath } = this.props; const FormikField = optimized ? FastField : Field; return <FormikField name={fieldPath} component={this.renderFormField} />; } } CalendarInputField.propTypes = { fieldPath: PropTypes.string.isRequired, component: PropTypes.func.isRequired, optimized: PropTypes.bool, }; CalendarInputField.defaultProps = { optimized: false, };