fleet/frontend/pages/RegistrationPage/RegistrationPage.jsx
noahtalerman 7d9906e5ea
Update Fleet setup styles (#78)
This PR is part of the UI Refresh #38.

The goal of this PR is to update the styles of the Fleet setup (onboarding) flow.
2020-12-02 09:59:44 -05:00

95 lines
2.3 KiB
JavaScript

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { max, noop } from 'lodash';
import { push } from 'react-router-redux';
import Breadcrumbs from 'pages/RegistrationPage/Breadcrumbs';
import paths from 'router/paths';
import RegistrationForm from 'components/forms/RegistrationForm';
import { setup } from 'redux/nodes/auth/actions';
import { showBackgroundImage } from 'redux/nodes/app/actions';
import EnsureUnauthenticated from 'components/EnsureUnauthenticated';
import fleetLogoText from '../../../assets/images/fleet-logo-text-white.svg';
export class RegistrationPage extends Component {
static propTypes = {
dispatch: PropTypes.func.isRequired,
};
static defaultProps = {
dispatch: noop,
};
constructor (props) {
super(props);
this.state = {
page: 1,
pageProgress: 1,
};
return false;
}
componentWillMount () {
const { dispatch } = this.props;
dispatch(showBackgroundImage);
return false;
}
onNextPage = () => {
const { page, pageProgress } = this.state;
const nextPage = page + 1;
this.setState({
page: nextPage,
pageProgress: max([nextPage, pageProgress]),
});
return false;
}
onRegistrationFormSubmit = (formData) => {
const { dispatch } = this.props;
const { MANAGE_HOSTS } = paths;
return dispatch(setup(formData))
.then(() => { return dispatch(push(MANAGE_HOSTS)); })
.catch(() => { return false; });
}
onSetPage = (page) => {
const { pageProgress } = this.state;
if (page > pageProgress) {
return false;
}
this.setState({ page });
return false;
}
render () {
const { page, pageProgress } = this.state;
const { onRegistrationFormSubmit, onNextPage, onSetPage } = this;
return (
<div className="registration-page">
<img
alt="Fleet logo"
src={fleetLogoText}
className="registration-page__logo"
/>
<Breadcrumbs onClick={onSetPage} page={page} pageProgress={pageProgress} />
<RegistrationForm page={page} onNextPage={onNextPage} onSubmit={onRegistrationFormSubmit} />
</div>
);
}
}
const ConnectedComponent = connect()(RegistrationPage);
export default EnsureUnauthenticated(ConnectedComponent);