const bindAll = require('lodash.bindall'); const classNames = require('classnames'); const React = require('react'); const PropTypes = require('prop-types'); import {Formik} from 'formik'; const {injectIntl, intlShape} = require('react-intl'); const emailValidator = require('email-validator'); const JoinFlowStep = require('./join-flow-step.jsx'); const FormikInput = require('../../components/formik-forms/formik-input.jsx'); require('./join-flow-steps.scss'); class EmailStep extends React.Component { constructor (props) { super(props); bindAll(this, [ 'handleValidSubmit', 'validateEmailIfPresent', 'validateForm' ]); } validateEmailIfPresent (email) { if (!email) return null; // skip validation if email is blank; null indicates valid const localResult = emailValidator.validate(email); if (localResult) { return null; // TODO: validate email address remotely } return this.props.intl.formatMessage({id: 'registration.validationEmailInvalid'}); } validateForm () { return {}; } handleValidSubmit (formData, formikBag) { formikBag.setSubmitting(false); this.props.onNextStep(formData); } render () { return ( {props => { const { errors, handleSubmit, isSubmitting, validateField } = props; return ( validateField('email')} // eslint-disable-line react/jsx-no-bind /> ); }} ); } } EmailStep.propTypes = { intl: intlShape, onNextStep: PropTypes.func }; module.exports = injectIntl(EmailStep);