import { Component } from 'react'; import PropTypes from 'prop-types'; import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; import { defineMessages, injectIntl } from 'react-intl'; import Form from '../../lib/Form'; import { required, email } from '../../helpers/validation-helpers'; import Input from '../ui/Input'; import Button from '../ui/Button'; import Link from '../ui/Link'; import Infobox from '../ui/Infobox'; import globalMessages from '../../i18n/globalMessages'; const messages = defineMessages({ headline: { id: 'password.headline', defaultMessage: 'Reset password', }, emailLabel: { id: 'password.email.label', defaultMessage: 'Email address', }, successInfo: { id: 'password.successInfo', defaultMessage: 'Your new password was sent to your email address', }, noUser: { id: 'password.noUser', defaultMessage: 'No user with that email address was found', }, signupLink: { id: 'password.link.signup', defaultMessage: 'Create a free account', }, loginLink: { id: 'password.link.login', defaultMessage: 'Sign in to your account', }, }); class Password extends Component { static propTypes = { onSubmit: PropTypes.func.isRequired, isSubmitting: PropTypes.bool.isRequired, signupRoute: PropTypes.string.isRequired, loginRoute: PropTypes.string.isRequired, status: MobxPropTypes.arrayOrObservableArray.isRequired, }; form = new Form( { fields: { email: { label: this.props.intl.formatMessage(messages.emailLabel), value: '', validators: [required, email], }, }, }, this.props.intl, ); submit(e) { e.preventDefault(); this.form.submit({ onSuccess: form => { this.props.onSubmit(form.values()); }, onError: () => {}, }); } render() { const { form } = this; const { intl } = this.props; const { isSubmitting, signupRoute, loginRoute, status } = this.props; return (
this.submit(e)}>

{intl.formatMessage(messages.headline)}

{status.length > 0 && status.includes('sent') && ( {intl.formatMessage(messages.successInfo)} )} {status.length > 0 && status.includes('no-user') && (

{intl.formatMessage(messages.noUser)}

)} {isSubmitting ? (
); } } export default injectIntl(observer(Password));