fleet/frontend/pages/ForgotPasswordPage/ForgotPasswordPage.jsx

99 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import { noop } from 'lodash';
import componentStyles from './styles';
import {
clearForgotPasswordErrors,
forgotPasswordAction,
} from '../../redux/nodes/components/ForgotPasswordPage/actions';
import debounce from '../../utilities/debounce';
import ForgotPasswordForm from '../../components/forms/ForgotPasswordForm';
import Icon from '../../components/icons/Icon';
import StackedWhiteBoxes from '../../components/StackedWhiteBoxes';
export class ForgotPasswordPage extends Component {
static propTypes = {
dispatch: PropTypes.func,
email: PropTypes.string,
error: PropTypes.string,
};
static defaultProps = {
dispatch: noop,
};
onSubmit = debounce((formData) => {
const { dispatch } = this.props;
return dispatch(forgotPasswordAction(formData));
})
clearErrors = () => {
const { dispatch } = this.props;
return dispatch(clearForgotPasswordErrors);
}
renderContent = () => {
const { clearErrors } = this;
const { email, error } = this.props;
const {
emailSentButtonWrapperStyles,
emailSentIconStyles,
emailSentTextStyles,
emailSentTextWrapperStyles,
emailTextStyles,
} = componentStyles;
if (email) {
return (
<div>
<div style={emailSentTextWrapperStyles}>
<p style={emailSentTextStyles}>
An email was sent to
<span style={emailTextStyles}> {email}</span>.
Click the link on the email to proceed with the password reset process.
</p>
</div>
<div style={emailSentButtonWrapperStyles}>
<Icon name="check" style={emailSentIconStyles} />
EMAIL SENT
</div>
</div>
);
}
return (
<ForgotPasswordForm
clearErrors={clearErrors}
error={error}
onSubmit={this.onSubmit}
/>
);
}
render () {
const leadText = 'If youve forgotten your password enter your email below and we will email you a link so that you can reset your password.';
const whiteBoxOverrideStyles = {
headerWrapper: { textAlign: 'left' },
};
return (
<StackedWhiteBoxes
headerText="Forgot Password"
leadText={leadText}
previousLocation="/login"
style={whiteBoxOverrideStyles}
>
{this.renderContent()}
</StackedWhiteBoxes>
);
}
}
const mapStateToProps = (state) => {
return state.components.ForgotPasswordPage;
};
export default connect(mapStateToProps)(ForgotPasswordPage);