mirror of
https://github.com/empayre/fleet.git
synced 2024-11-08 09:43:51 +00:00
7d9906e5ea
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.
95 lines
2.3 KiB
JavaScript
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);
|