diff --git a/packages/component-wizard/src/components/ButtonGroup.js b/packages/component-wizard/src/components/ButtonGroup.js index c1b89cc9694a9dcc2b215dca0b75fb27acb850f4..e9f3060072eda41d799992089e169f4c08d2e3ee 100644 --- a/packages/component-wizard/src/components/ButtonGroup.js +++ b/packages/component-wizard/src/components/ButtonGroup.js @@ -1,6 +1,6 @@ import React from 'react' import { compose, withHandlers } from 'recompose' -import classnames from 'classnames' +import { Button } from '@pubsweet/ui' import classes from './ButtonGroup.local.scss' @@ -15,21 +15,13 @@ const ButtonGroup = ({ buttons, handleOnClick, disabled }) => buttons && buttons.length > 0 ? ( <div className={classes.container}> {buttons.map(btn => ( - <button - className={classnames({ - [classes.button]: true, - [classes.next]: btn.action === BUTTON_ACTIONS.next, - [classes.finish]: btn.action === BUTTON_ACTIONS.finish, - [classes.disabled]: - disabled && - (btn.action !== BUTTON_ACTIONS.cancel && - btn.action !== BUTTON_ACTIONS.back), - })} + <Button key={btn.label} onClick={handleOnClick(btn.action)} + primary={btn.action !== 'back' && btn.action !== 'cancel'} > {btn.label} - </button> + </Button> ))} </div> ) : null diff --git a/packages/component-wizard/src/components/Wizard.js b/packages/component-wizard/src/components/Wizard.js index b14fbc60a995548fbb0ad640b5ded0c30ef93d36..2348e53962c453edf7c3b23e730d2d9044cf2fc7 100644 --- a/packages/component-wizard/src/components/Wizard.js +++ b/packages/component-wizard/src/components/Wizard.js @@ -1,13 +1,13 @@ import React from 'react' import classnames from 'classnames' import { withJournal } from 'xpub-journal' -import { AbstractEditor } from 'xpub-edit' import { reduxForm, Field } from 'redux-form' -import { TextField, YesOrNo, Menu, Checkbox } from '@pubsweet/ui' import { compose, withHandlers, withState } from 'recompose' +import { ValidatedField } from '@pubsweet/ui' +import { required } from 'xpub-validators' import classes from './Wizard.local.scss' -import { Dropdown, Steps, SortableList, ButtonGroup } from './' +import { Steps, SortableList, ButtonGroup } from './' const { Step } = Steps @@ -19,22 +19,31 @@ const items = [ { name: '5gicuta' }, ] -const renderField = ({ renderComponent, input, ...rest }) => { - console.log('Render field', input, rest) - return React.createElement(renderComponent, { ...rest, ...input }) +const validate = values => { + const errors = {} + return errors } +const renderField = ({ renderComponent: Comp, input, ...rest }) => ( + <ValidatedField + component={() => <Comp {...input} {...rest} />} + name={rest.fieldId} + required + validate={[required]} + /> +) + const WizardStep = ({ children: stepChildren, title, buttons, nextStep, prevStep, - onSubmit, + handleSubmit, ...rest }) => ( <div className={classnames(classes.step)}> - <form onSubmit={onSubmit}> + <form onSubmit={handleSubmit}> <h3>{title}</h3> {stepChildren && stepChildren.map((child, index) => ( @@ -45,6 +54,7 @@ const WizardStep = ({ {...child} /> ))} + <button type="submit">Next</button> </form> <ButtonGroup buttons={buttons} onBack={prevStep} onNext={nextStep} /> </div> @@ -53,9 +63,14 @@ const WizardStep = ({ const FormStep = compose( reduxForm({ form: 'wizard', - onSubmit: () => console.log('am dat surmit'), destroyOnUnmount: false, forceUnregisterOnUnmount: true, + validate, + onSubmit: (values, dispatch, { nextStep, isFinal }) => { + if (!isFinal) { + nextStep() + } + }, }), )(WizardStep) @@ -65,9 +80,6 @@ const Wizard = ({ step, nextStep, prevStep, - listItems, - renderChild, - handleSubmit, ...rest }) => ( <div className={classnames(classes.container)}> @@ -78,10 +90,9 @@ const Wizard = ({ </Steps> <FormStep {...wizard[step]} + isFinal={step === wizard.length - 1} nextStep={nextStep} - onSubmit={handleSubmit} prevStep={prevStep} - renderChild={renderChild} /> </div> ) @@ -97,8 +108,9 @@ export default compose( }), withHandlers({ getSteps: ({ journal: { wizard } }) => () => wizard.map(w => w.label), - nextStep: ({ changeStep, journal: { wizard } }) => () => - changeStep(step => (step === wizard.length ? step : step + 1)), + nextStep: ({ changeStep, journal: { wizard } }) => () => { + changeStep(step => (step === wizard.length - 1 ? step : step + 1)) + }, prevStep: ({ changeStep }) => () => changeStep(step => (step <= 0 ? step : step - 1)), }), diff --git a/packages/xpub-faraday/api/db/development/CURRENT b/packages/xpub-faraday/api/db/development/CURRENT index c16f179ffd3840d2c86f839bb557cbb748255b5b..f405c4b597b9cfe33e2975bb9f3b949cc51f1e95 100644 --- a/packages/xpub-faraday/api/db/development/CURRENT +++ b/packages/xpub-faraday/api/db/development/CURRENT @@ -1 +1 @@ -MANIFEST-000156 +MANIFEST-000162 diff --git a/packages/xpub-faraday/api/db/development/LOG b/packages/xpub-faraday/api/db/development/LOG index 176c0c324df518187da46029e7a9359c63b3b056..3bd35ff65bb432b82574c891a466a521ddb72d69 100644 --- a/packages/xpub-faraday/api/db/development/LOG +++ b/packages/xpub-faraday/api/db/development/LOG @@ -1,5 +1,5 @@ -2018/01/12-13:50:08.231595 70000c302000 Recovering log #154 -2018/01/12-13:50:08.232541 70000c302000 Level-0 table #157: started -2018/01/12-13:50:08.233098 70000c302000 Level-0 table #157: 237 bytes OK -2018/01/12-13:50:08.233908 70000c302000 Delete type=3 #152 -2018/01/12-13:50:08.234059 70000c302000 Delete type=0 #154 +2018/01/12-14:35:19.911319 70001307d000 Recovering log #161 +2018/01/12-14:35:19.912463 70001307d000 Level-0 table #163: started +2018/01/12-14:35:19.912996 70001307d000 Level-0 table #163: 237 bytes OK +2018/01/12-14:35:19.913780 70001307d000 Delete type=3 #159 +2018/01/12-14:35:19.913972 70001307d000 Delete type=0 #161 diff --git a/packages/xpub-faraday/api/db/development/LOG.old b/packages/xpub-faraday/api/db/development/LOG.old index afc31de34e65db2261ea06d7e6e2f3ec5fc657ec..dfc75080e9e867d524fc28a21bfa1f3dcb6040d8 100644 --- a/packages/xpub-faraday/api/db/development/LOG.old +++ b/packages/xpub-faraday/api/db/development/LOG.old @@ -1,14 +1,5 @@ -2018/01/12-13:39:21.891350 70000d8d6000 Recovering log #151 -2018/01/12-13:39:21.892244 70000d8d6000 Level-0 table #153: started -2018/01/12-13:39:21.892709 70000d8d6000 Level-0 table #153: 237 bytes OK -2018/01/12-13:39:21.894383 70000d8d6000 Delete type=0 #151 -2018/01/12-13:39:21.894571 70000d8d6000 Delete type=3 #149 -2018/01/12-13:39:21.895409 70000d959000 Compacting 4@0 + 1@1 files -2018/01/12-13:39:21.896309 70000d959000 Generated table #155@0: 11 keys, 1463 bytes -2018/01/12-13:39:21.896335 70000d959000 Compacted 4@0 + 1@1 files => 1463 bytes -2018/01/12-13:39:21.896502 70000d959000 compacted to: files[ 0 1 0 0 0 0 0 ] -2018/01/12-13:39:21.896617 70000d959000 Delete type=2 #142 -2018/01/12-13:39:21.897278 70000d959000 Delete type=2 #147 -2018/01/12-13:39:21.898247 70000d959000 Delete type=2 #153 -2018/01/12-13:39:21.898532 70000d959000 Delete type=2 #150 -2018/01/12-13:39:21.898768 70000d959000 Delete type=2 #144 +2018/01/12-14:32:13.255236 70000e0f3000 Recovering log #158 +2018/01/12-14:32:13.256323 70000e0f3000 Level-0 table #160: started +2018/01/12-14:32:13.256930 70000e0f3000 Level-0 table #160: 237 bytes OK +2018/01/12-14:32:13.258255 70000e0f3000 Delete type=0 #158 +2018/01/12-14:32:13.258600 70000e0f3000 Delete type=3 #156 diff --git a/packages/xpub-faraday/app/config/journal/submit-wizard.js b/packages/xpub-faraday/app/config/journal/submit-wizard.js index fa278669c8c7fee2c17d0eb1203b250b1c2e5683..03e86b7ec272935061973d882e4efc227570ecb6 100644 --- a/packages/xpub-faraday/app/config/journal/submit-wizard.js +++ b/packages/xpub-faraday/app/config/journal/submit-wizard.js @@ -1,8 +1,23 @@ +import React from 'react' import { AbstractEditor, TitleEditor } from 'xpub-edit' -import { Menu, Checkbox, CheckboxGroup, YesOrNo, TextField } from '@pubsweet/ui' +import { + Menu, + CheckboxGroup, + YesOrNo, + TextField, + Supplementary, +} from '@pubsweet/ui' +import uploadFile from 'xpub-upload' import { articleSections, articleTypes, declarations } from './' +const yesNoWithLabel = ({ label, ...rest }) => ( + <div> + <label>{label}</label> + <YesOrNo {...rest} /> + </div> +) + const wizard = [ { label: 'Journal details', @@ -13,6 +28,7 @@ const wizard = [ renderComponent: Menu, label: 'Journal', options: articleTypes, + required: true, }, { fieldId: 'subject', @@ -36,11 +52,7 @@ const wizard = [ action: 'cancel', }, { - label: 'Back', - action: 'back', - }, - { - label: 'Next step >', + label: 'Next step', action: 'next', }, ], @@ -63,7 +75,7 @@ const wizard = [ action: 'back', }, { - label: 'Next step >', + label: 'Next step', action: 'next', }, ], @@ -102,7 +114,7 @@ const wizard = [ // }, { fieldId: 'step3-4', - renderComponent: YesOrNo, + renderComponent: yesNoWithLabel, label: 'Is there a potential conflict of interest?', }, { @@ -117,15 +129,34 @@ const wizard = [ action: 'back', }, { - label: 'Next step >', + label: 'Next step', action: 'next', }, ], }, - /* { label: 'Files upload', title: 'Manuscript Files Upload', + children: [ + { + fieldId: 'mainManuscripts', + label: 'Main Manuscript', + renderComponent: Supplementary, + uploadFile, + }, + { + fieldId: 'supplementalFiles', + label: 'Supplemental Files', + renderComponent: Supplementary, + uploadFile, + }, + { + fieldId: 'coverLetter', + label: 'Cover Letter', + renderComponent: Supplementary, + uploadFile, + }, + ], buttons: [ { label: 'Back', @@ -137,7 +168,6 @@ const wizard = [ }, ], }, - */ ] export default wizard