From 85a050a0acb4c1cb36238b026fa656e5719a7962 Mon Sep 17 00:00:00 2001 From: Tamlyn Rhodes <tamlyn@tamlyn.org> Date: Tue, 17 Apr 2018 17:23:02 +0100 Subject: [PATCH] feat: add progress bar to submission form Also organise the submission form files and routes. --- app/app.js | 2 +- app/components/index.js | 8 ------- .../{ => AuthorDetails}/AuthorDetails.js | 5 ++++- .../{ => AuthorDetails}/AuthorDetails.md | 0 .../{ => AuthorDetails}/AuthorDetailsPage.js | 0 .../AuthorDetailsSchema.js | 0 .../{ => FileUploads}/FileUploads.js | 7 +++++-- .../{ => FileUploads}/FileUploads.md | 0 .../{ => FileUploads}/FileUploadsPage.js | 0 .../ManuscriptMetadataPage.js | 5 ++++- app/components/submission/ProgressBar.js | 21 +++++++++++++++++++ .../ReviewerSuggestions.js | 7 +++++-- .../ReviewerSuggestions.md | 0 .../ReviewerSuggestionsPage.js | 0 .../ReviewerSuggestionsSchema.js | 0 app/components/submission/SubmissionPage.js | 20 ++++++++++++++++++ app/routes.js | 20 +++--------------- 17 files changed, 63 insertions(+), 32 deletions(-) rename app/components/submission/{ => AuthorDetails}/AuthorDetails.js (94%) rename app/components/submission/{ => AuthorDetails}/AuthorDetails.md (100%) rename app/components/submission/{ => AuthorDetails}/AuthorDetailsPage.js (100%) rename app/components/submission/{ => AuthorDetails}/AuthorDetailsSchema.js (100%) rename app/components/submission/{ => FileUploads}/FileUploads.js (81%) rename app/components/submission/{ => FileUploads}/FileUploads.md (100%) rename app/components/submission/{ => FileUploads}/FileUploadsPage.js (100%) rename app/components/submission/{ => ManuscriptMetadata}/ManuscriptMetadataPage.js (71%) create mode 100644 app/components/submission/ProgressBar.js rename app/components/submission/{ => ReviewerSuggestions}/ReviewerSuggestions.js (87%) rename app/components/submission/{ => ReviewerSuggestions}/ReviewerSuggestions.md (100%) rename app/components/submission/{ => ReviewerSuggestions}/ReviewerSuggestionsPage.js (100%) rename app/components/submission/{ => ReviewerSuggestions}/ReviewerSuggestionsSchema.js (100%) create mode 100644 app/components/submission/SubmissionPage.js diff --git a/app/app.js b/app/app.js index 1dc096d..90a0a19 100644 --- a/app/app.js +++ b/app/app.js @@ -9,7 +9,7 @@ import { configureStore, Root } from 'pubsweet-client' import theme from '@pubsweet/elife-theme' import Routes from './routes' -import * as AuthorDetailsSchema from './components/submission/AuthorDetailsSchema' +import * as AuthorDetailsSchema from './components/submission/AuthorDetails/AuthorDetailsSchema' theme.space = [ 0, diff --git a/app/components/index.js b/app/components/index.js index 7f08b3e..e83465d 100644 --- a/app/components/index.js +++ b/app/components/index.js @@ -4,11 +4,3 @@ export { } from './global/AuthenticatedComponent' export { default as Dashboard } from './dashboard/Dashboard' export { default as LoginPage } from './login/LoginPage' -export { default as AuthorDetailsPage } from './submission/AuthorDetailsPage' -export { default as FileUploadsPage } from './submission/FileUploadsPage' -export { - default as ManuscriptMetadataPage, -} from './submission/ManuscriptMetadataPage' -export { - default as ReviewerSuggestionsPage, -} from './submission/ReviewerSuggestionsPage' diff --git a/app/components/submission/AuthorDetails.js b/app/components/submission/AuthorDetails/AuthorDetails.js similarity index 94% rename from app/components/submission/AuthorDetails.js rename to app/components/submission/AuthorDetails/AuthorDetails.js index efa02b9..7fb8681 100644 --- a/app/components/submission/AuthorDetails.js +++ b/app/components/submission/AuthorDetails/AuthorDetails.js @@ -2,9 +2,10 @@ import React from 'react' import { Flex, Box } from 'grid-styled' import { Button, Heading, H1 } from '@pubsweet/ui' -import ValidatedField from '../ui/atoms/ValidatedField' +import ValidatedField from '../../ui/atoms/ValidatedField' import { emptyAssignee } from './AuthorDetailsSchema' +import ProgressBar from '../ProgressBar' class AuthorDetails extends React.Component { constructor() { @@ -28,6 +29,8 @@ class AuthorDetails extends React.Component { return ( <form noValidate onSubmit={handleSubmit}> + <ProgressBar currentStep={0} /> + <H1>Are you handling this submission?</H1> <Flex> diff --git a/app/components/submission/AuthorDetails.md b/app/components/submission/AuthorDetails/AuthorDetails.md similarity index 100% rename from app/components/submission/AuthorDetails.md rename to app/components/submission/AuthorDetails/AuthorDetails.md diff --git a/app/components/submission/AuthorDetailsPage.js b/app/components/submission/AuthorDetails/AuthorDetailsPage.js similarity index 100% rename from app/components/submission/AuthorDetailsPage.js rename to app/components/submission/AuthorDetails/AuthorDetailsPage.js diff --git a/app/components/submission/AuthorDetailsSchema.js b/app/components/submission/AuthorDetails/AuthorDetailsSchema.js similarity index 100% rename from app/components/submission/AuthorDetailsSchema.js rename to app/components/submission/AuthorDetails/AuthorDetailsSchema.js diff --git a/app/components/submission/FileUploads.js b/app/components/submission/FileUploads/FileUploads.js similarity index 81% rename from app/components/submission/FileUploads.js rename to app/components/submission/FileUploads/FileUploads.js index a303f9b..d678ee2 100644 --- a/app/components/submission/FileUploads.js +++ b/app/components/submission/FileUploads/FileUploads.js @@ -1,11 +1,14 @@ import React from 'react' import { Flex, Box } from 'grid-styled' import { H1 } from '@pubsweet/ui' -import FileUpload from '../ui/atoms/FileUpload' -import ButtonLink from '../ui/atoms/ButtonLink' +import FileUpload from '../../ui/atoms/FileUpload' +import ButtonLink from '../../ui/atoms/ButtonLink' +import ProgressBar from '../ProgressBar' const FileUploads = () => ( <React.Fragment> + <ProgressBar currentStep={1} /> + <H1>Upload your manuscript and cover letter</H1> <Flex flexDirection="column"> diff --git a/app/components/submission/FileUploads.md b/app/components/submission/FileUploads/FileUploads.md similarity index 100% rename from app/components/submission/FileUploads.md rename to app/components/submission/FileUploads/FileUploads.md diff --git a/app/components/submission/FileUploadsPage.js b/app/components/submission/FileUploads/FileUploadsPage.js similarity index 100% rename from app/components/submission/FileUploadsPage.js rename to app/components/submission/FileUploads/FileUploadsPage.js diff --git a/app/components/submission/ManuscriptMetadataPage.js b/app/components/submission/ManuscriptMetadata/ManuscriptMetadataPage.js similarity index 71% rename from app/components/submission/ManuscriptMetadataPage.js rename to app/components/submission/ManuscriptMetadata/ManuscriptMetadataPage.js index e13ed46..233c78d 100644 --- a/app/components/submission/ManuscriptMetadataPage.js +++ b/app/components/submission/ManuscriptMetadata/ManuscriptMetadataPage.js @@ -1,9 +1,12 @@ import React from 'react' import { H1 } from '@pubsweet/ui' -import ButtonLink from '../ui/atoms/ButtonLink' +import ButtonLink from '../../ui/atoms/ButtonLink' +import ProgressBar from '../ProgressBar' export default () => ( <React.Fragment> + <ProgressBar currentStep={2} /> + <H1>Help us get your work seen by the right people</H1> <ButtonLink primary to="/submit/suggestions"> diff --git a/app/components/submission/ProgressBar.js b/app/components/submission/ProgressBar.js new file mode 100644 index 0000000..afec1ef --- /dev/null +++ b/app/components/submission/ProgressBar.js @@ -0,0 +1,21 @@ +import React from 'react' +import { Steps } from '@pubsweet/ui' +import { Box } from 'grid-styled' +import PropTypes from 'prop-types' + +const ProgressBar = ({ currentStep }) => ( + <Box mx="auto" width={500}> + <Steps currentStep={currentStep}> + <Steps.Step /> + <Steps.Step /> + <Steps.Step /> + <Steps.Step /> + </Steps> + </Box> +) + +ProgressBar.propTypes = { + currentStep: PropTypes.number.isRequired, +} + +export default ProgressBar diff --git a/app/components/submission/ReviewerSuggestions.js b/app/components/submission/ReviewerSuggestions/ReviewerSuggestions.js similarity index 87% rename from app/components/submission/ReviewerSuggestions.js rename to app/components/submission/ReviewerSuggestions/ReviewerSuggestions.js index 7d128c4..e2e9cfa 100644 --- a/app/components/submission/ReviewerSuggestions.js +++ b/app/components/submission/ReviewerSuggestions/ReviewerSuggestions.js @@ -2,11 +2,14 @@ import React from 'react' import { Flex, Box } from 'grid-styled' import { Button, H1 } from '@pubsweet/ui' -import ValidatedField from '../ui/atoms/ValidatedField' -import ButtonLink from '../ui/atoms/ButtonLink' +import ValidatedField from '../../ui/atoms/ValidatedField' +import ButtonLink from '../../ui/atoms/ButtonLink' +import ProgressBar from '../ProgressBar' const ReviewerSuggestions = ({ handleSubmit }) => ( <form noValidate onSubmit={handleSubmit}> + <ProgressBar currentStep={3} /> + <H1>Who would you like to review your work?</H1> <ValidatedField label="Suggested editor(s)" name="suggestedEditors" /> diff --git a/app/components/submission/ReviewerSuggestions.md b/app/components/submission/ReviewerSuggestions/ReviewerSuggestions.md similarity index 100% rename from app/components/submission/ReviewerSuggestions.md rename to app/components/submission/ReviewerSuggestions/ReviewerSuggestions.md diff --git a/app/components/submission/ReviewerSuggestionsPage.js b/app/components/submission/ReviewerSuggestions/ReviewerSuggestionsPage.js similarity index 100% rename from app/components/submission/ReviewerSuggestionsPage.js rename to app/components/submission/ReviewerSuggestions/ReviewerSuggestionsPage.js diff --git a/app/components/submission/ReviewerSuggestionsSchema.js b/app/components/submission/ReviewerSuggestions/ReviewerSuggestionsSchema.js similarity index 100% rename from app/components/submission/ReviewerSuggestionsSchema.js rename to app/components/submission/ReviewerSuggestions/ReviewerSuggestionsSchema.js diff --git a/app/components/submission/SubmissionPage.js b/app/components/submission/SubmissionPage.js new file mode 100644 index 0000000..f84b2bc --- /dev/null +++ b/app/components/submission/SubmissionPage.js @@ -0,0 +1,20 @@ +import React from 'react' +import { Route, Switch } from 'react-router-dom' +import AuthorDetailsPage from './AuthorDetails/AuthorDetailsPage' +import FileUploadsPage from './FileUploads/FileUploadsPage' +import ManuscriptMetadataPage from './ManuscriptMetadata/ManuscriptMetadataPage' +import ReviewerSuggestionsPage from './ReviewerSuggestions/ReviewerSuggestionsPage' + +const SubmissionPage = ({ match }) => ( + <Switch> + <Route component={FileUploadsPage} path={`${match.path}/upload`} /> + <Route component={ManuscriptMetadataPage} path={`${match.path}/metadata`} /> + <Route + component={ReviewerSuggestionsPage} + path={`${match.path}/suggestions`} + /> + <Route component={AuthorDetailsPage} /> + </Switch> +) + +export default SubmissionPage diff --git a/app/routes.js b/app/routes.js index ae0c3fa..0218bd9 100644 --- a/app/routes.js +++ b/app/routes.js @@ -5,12 +5,9 @@ import { AppBar, AuthenticatedComponent, Dashboard, - AuthorDetailsPage, - FileUploadsPage, LoginPage, - ManuscriptMetadataPage, - ReviewerSuggestionsPage, } from './components' +import SubmissionPage from './components/submission/SubmissionPage' const Routes = () => ( <Switch> @@ -18,19 +15,8 @@ const Routes = () => ( <AuthenticatedComponent> <AppBar /> <Switch> - <Route component={AuthorDetailsPage} exact path="/submit" /> - <Route component={FileUploadsPage} exact path="/submit/upload" /> - <Route - component={ManuscriptMetadataPage} - exact - path="/submit/metadata" - /> - <Route - component={ReviewerSuggestionsPage} - exact - path="/submit/suggestions" - /> - <Route component={Dashboard} path="/" /> + <Route component={SubmissionPage} path="/submit" /> + <Route component={Dashboard} /> </Switch> </AuthenticatedComponent> </Switch> -- GitLab