From 7ae6ddf3d9c18fdf6d15c2a7da66b471aad6a07a Mon Sep 17 00:00:00 2001 From: Bogdan Cochior <bogdan.cochior@thinslices.com> Date: Tue, 4 Sep 2018 16:44:08 +0300 Subject: [PATCH] refactor(visual): add feedback for dashboard and appbar --- packages/component-faraday-ui/src/AppBar.js | 38 ++++- packages/component-faraday-ui/src/AppBar.md | 138 +++++++++++++----- .../src/components/Dashboard/Dashboard.js | 14 -- .../components/Dashboard/DashboardItems.js | 1 + .../src/components/Dashboard/DashboardPage.js | 11 +- packages/hindawi-theme/src/index.js | 4 +- packages/xpub-faraday/app/FaradayApp.js | 18 ++- .../app/config/journal/metadata.js | 2 +- .../xpub-faraday/static/logo-hindawi@2x.png | Bin 0 -> 16735 bytes 9 files changed, 151 insertions(+), 75 deletions(-) create mode 100755 packages/xpub-faraday/static/logo-hindawi@2x.png diff --git a/packages/component-faraday-ui/src/AppBar.js b/packages/component-faraday-ui/src/AppBar.js index d4bf4f108..bca602b1c 100644 --- a/packages/component-faraday-ui/src/AppBar.js +++ b/packages/component-faraday-ui/src/AppBar.js @@ -1,13 +1,19 @@ import React from 'react' -import { th } from '@pubsweet/ui-toolkit' -import { H2 } from '@pubsweet/ui' +import { get } from 'lodash' import styled from 'styled-components' -import { compose, setDisplayName } from 'recompose' +import { H2, Button } from '@pubsweet/ui' +import { th } from '@pubsweet/ui-toolkit' +import { compose, setDisplayName, withProps } from 'recompose' +import { Item } from 'pubsweet-component-faraday-ui' const AppBar = ({ logo: Logo, menu: Menu, + createDraft, + canCreateDraft, + currentUser = {}, fixed = true, + isSubmit, autosave: Autosave, journal: { metadata: { backgroundImage, nameText } }, }) => ( @@ -17,7 +23,24 @@ const AppBar = ({ <Logo /> </LogoContainer> <RightContainer> - <Autosave /> + <Item mr={2}> + <Autosave /> + </Item> + {createDraft && + !isSubmit && + currentUser.user && ( + <Button + data-test="new-manuscript" + disabled={!canCreateDraft} + ml={2} + mr={5} + onClick={createDraft} + primary + size="small" + > + SUBMIT + </Button> + )} <Menu /> </RightContainer> </Root> @@ -29,7 +52,12 @@ AppBar.defaultProps = { menu: () => <div />, } -export default compose(setDisplayName('AppBar'))(AppBar) +export default compose( + withProps(({ location = {}, submitPath = '/submit' }) => ({ + isSubmit: get(location, 'pathname', '').includes(submitPath), + })), + setDisplayName('AppBar'), +)(AppBar) // #region styles const RightContainer = styled.div` diff --git a/packages/component-faraday-ui/src/AppBar.md b/packages/component-faraday-ui/src/AppBar.md index 6ff9d430f..1c1b61c6d 100644 --- a/packages/component-faraday-ui/src/AppBar.md +++ b/packages/component-faraday-ui/src/AppBar.md @@ -6,43 +6,47 @@ const currentUser = { admin: true, username: 'cocojambo', firstName: 'Alex', - lastName: 'Munteanu' - } -}; + lastName: 'Munteanu', + }, +} const autosave = { - isFetching: true -}; + isFetching: true, +} -const HindawiLogo = () => <Logo - onClick={() => console.log('Hindawi best publish!')} - title="Hindawi" - src="https://upload.wikimedia.org/wikipedia/en/thumb/c/ca/Hindawi.svg/1200px-Hindawi.svg.png" -/>; +const HindawiLogo = () => ( + <Logo + onClick={() => console.log('Hindawi best publish!')} + title="Hindawi" + src="https://upload.wikimedia.org/wikipedia/en/thumb/c/ca/Hindawi.svg/1200px-Hindawi.svg.png" + /> +) -const MenuComponent = () => <AppBarMenu +const MenuComponent = () => ( + <AppBarMenu currentUser={currentUser} goTo={path => console.log(`navigating to ${path}`)} logout={() => console.log('logging out')} - />; + /> +) -const AutosaveComponent = () => <AutosaveIndicator - isVisible - autosave={autosave} - />; +const AutosaveComponent = () => ( + <AutosaveIndicator isVisible autosave={autosave} /> +) -<AppBar +;<AppBar autosave={AutosaveComponent} logo={HindawiLogo} menu={MenuComponent} journal={{ metadata: { - nameText:'Chemistry Awesomeness', - backgroundImage: 'https://images.hindawi.com/journals/jchem/jchem.banner.jpg' + nameText: 'Chemistry Awesomeness', + backgroundImage: + 'https://images.hindawi.com/journals/jchem/jchem.banner.jpg', }, }} fixed={false} - /> +/> ``` Without a journal background. @@ -53,41 +57,95 @@ const currentUser = { admin: true, username: 'cocojambo', firstName: 'Alex', - lastName: 'Munteanu' - } -}; + lastName: 'Munteanu', + }, +} -const HindawiLogo = () => <Logo - onClick={() => console.log('Hindawi best publish!')} - title="Hindawi" - src="https://upload.wikimedia.org/wikipedia/en/thumb/c/ca/Hindawi.svg/1200px-Hindawi.svg.png" -/>; +const HindawiLogo = () => ( + <Logo + onClick={() => console.log('Hindawi best publish!')} + title="Hindawi" + src="https://upload.wikimedia.org/wikipedia/en/thumb/c/ca/Hindawi.svg/1200px-Hindawi.svg.png" + /> +) const autosave = { isFetching: false, lastUpdate: new Date(), -}; +} -const MenuComponent = () => <AppBarMenu - currentUser={currentUser} - goTo={path => console.log(`navigating to ${path}`)} - logout={() => console.log('logging out')} - />; +const MenuComponent = () => ( + <AppBarMenu + currentUser={currentUser} + goTo={path => console.log(`navigating to ${path}`)} + logout={() => console.log('logging out')} + /> +) -const AutosaveComponent = () => <AutosaveIndicator - isVisible - autosave={autosave} - />; +const AutosaveComponent = () => ( + <AutosaveIndicator isVisible autosave={autosave} /> +) -<AppBar +;<AppBar autosave={AutosaveComponent} logo={HindawiLogo} menu={MenuComponent} journal={{ metadata: { - nameText:'Chemistry Awesomeness', + nameText: 'Chemistry Awesomeness', }, }} fixed={false} +/> +``` + +With submit manuscript button + +```js +const currentUser = { + user: { + admin: true, + username: 'cocojambo', + firstName: 'Alex', + lastName: 'Munteanu', + }, +} + +const HindawiLogo = () => ( + <Logo + onClick={() => console.log('Hindawi best publish!')} + title="Hindawi" + src="https://upload.wikimedia.org/wikipedia/en/thumb/c/ca/Hindawi.svg/1200px-Hindawi.svg.png" /> +) + +const autosave = { + isFetching: false, + lastUpdate: new Date(), +} + +const MenuComponent = () => ( + <AppBarMenu + currentUser={currentUser} + goTo={path => console.log(`navigating to ${path}`)} + logout={() => console.log('logging out')} + /> +) + +const AutosaveComponent = () => ( + <AutosaveIndicator isVisible autosave={autosave} /> +) + +;<AppBar + autosave={AutosaveComponent} + logo={HindawiLogo} + menu={MenuComponent} + createDraft={() => alert('Submit manuscript')} + journal={{ + metadata: { + nameText: 'Chemistry Awesomeness', + }, + }} + fixed={false} +/> ``` diff --git a/packages/components-faraday/src/components/Dashboard/Dashboard.js b/packages/components-faraday/src/components/Dashboard/Dashboard.js index 7fa751167..e61e16d1d 100644 --- a/packages/components-faraday/src/components/Dashboard/Dashboard.js +++ b/packages/components-faraday/src/components/Dashboard/Dashboard.js @@ -1,30 +1,16 @@ import React, { Fragment } from 'react' -import { Button } from '@pubsweet/ui' import { compose, withProps } from 'recompose' -import { Row } from 'pubsweet-component-faraday-ui' import { DashboardItems, DashboardFilters } from './' const Dashboard = ({ deleteProject, dashboardItems, - canCreateDraft, getFilterOptions, changeFilterValue, - createDraftSubmission, getDefaultFilterValue, }) => ( <Fragment> - <Row alignItems="center" justify="flex-end"> - <Button - data-test="new-manuscript" - disabled={!canCreateDraft} - onClick={createDraftSubmission} - primary - > - Submit - </Button> - </Row> <DashboardFilters changeFilterValue={changeFilterValue} getDefaultFilterValue={getDefaultFilterValue} diff --git a/packages/components-faraday/src/components/Dashboard/DashboardItems.js b/packages/components-faraday/src/components/Dashboard/DashboardItems.js index 428d5dd06..b43ac4287 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardItems.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardItems.js @@ -55,6 +55,7 @@ export default compose( const Root = styled.div` height: calc(100vh - 204px); overflow-y: auto; + overflow-x: hidden; div[open] { width: auto; } diff --git a/packages/components-faraday/src/components/Dashboard/DashboardPage.js b/packages/components-faraday/src/components/Dashboard/DashboardPage.js index ee51f5000..944329379 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardPage.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardPage.js @@ -6,12 +6,8 @@ import { ConnectPage } from 'xpub-connect' import { withRouter } from 'react-router-dom' import { compose, withContext } from 'recompose' import { newestFirst, selectCurrentUser } from 'xpub-selectors' -import { createDraftSubmission } from 'pubsweet-component-wizard/src/redux/conversion' -import { - userNotConfirmed, - getUserPermissions, -} from 'pubsweet-component-faraday-selectors' +import { getUserPermissions } from 'pubsweet-component-faraday-selectors' import { Dashboard } from './' import { priorityFilter, orderFilter, withFiltersHOC } from '../Filters' @@ -22,7 +18,6 @@ export default compose( state => { const { collections, conversion } = state const currentUser = selectCurrentUser(state) - const canCreateDraft = !userNotConfirmed(state) const sortedCollections = newestFirst(collections) const dashboard = { @@ -47,14 +42,12 @@ export default compose( conversion, collections, currentUser, - canCreateDraft, userPermissions, } }, - (dispatch, { history }) => ({ + dispatch => ({ deleteProject: collection => dispatch(actions.deleteCollection(collection)), - createDraftSubmission: () => dispatch(createDraftSubmission(history)), }), ), withRouter, diff --git a/packages/hindawi-theme/src/index.js b/packages/hindawi-theme/src/index.js index e57df7559..f2d28cd17 100644 --- a/packages/hindawi-theme/src/index.js +++ b/packages/hindawi-theme/src/index.js @@ -57,7 +57,7 @@ const hindawiTheme = { appBar: { boxShadow: '0 2px 3px 0 rgba(25, 102, 141, 0.19)', colorBackground: '#ffffff', - height: '60px', + height: '70px', zIndex: 1000, }, @@ -94,7 +94,7 @@ const hindawiTheme = { defaultHeight: '40px', mediumHeight: '30px', - smallHeight: '20px', + smallHeight: '24px', minWidth: '120px', mediumMinWidth: '100px', diff --git a/packages/xpub-faraday/app/FaradayApp.js b/packages/xpub-faraday/app/FaradayApp.js index e8065ef3d..68d625269 100644 --- a/packages/xpub-faraday/app/FaradayApp.js +++ b/packages/xpub-faraday/app/FaradayApp.js @@ -13,6 +13,8 @@ import { AppBarMenu, AutosaveIndicator, } from 'pubsweet-component-faraday-ui' +import { userNotConfirmed } from 'pubsweet-component-faraday-selectors' +import { createDraftSubmission } from 'pubsweet-component-wizard/src/redux/conversion' const App = ({ autosave, @@ -21,6 +23,7 @@ const App = ({ children, logout, currentUser, + ...rest }) => ( <Root className="faraday-root"> <AppBar @@ -31,9 +34,11 @@ const App = ({ successText="Progress Saved" /> )} + currentUser={currentUser} journal={journal} logo={() => ( <Logo + height={54} onClick={() => goTo('/')} src={get(journal, 'metadata.logo')} title="Hindawi" @@ -42,21 +47,26 @@ const App = ({ menu={() => ( <AppBarMenu currentUser={currentUser} goTo={goTo} logout={logout} /> )} + {...rest} /> <MainContainer className="faraday-main">{children}</MainContainer> </Root> ) export default compose( + withRouter, + withJournal, connect( state => ({ autosave: state.autosave, currentUser: state.currentUser, + canCreateDraft: !userNotConfirmed(state), + }), + (dispatch, { history }) => ({ + logout: () => dispatch(actions.logoutUser()), + createDraft: () => dispatch(createDraftSubmission(history)), }), - { logout: actions.logoutUser }, ), - withJournal, - withRouter, withHandlers({ goTo: ({ history }) => path => { history.push(path) @@ -77,7 +87,7 @@ const MainContainer = styled.div` display: flex; flex-direction: column; overflow-y: auto; - padding: calc(${th('appBar.height')} + ${th('gridUnit')} * 3) + padding: calc(${th('appBar.height')} + ${th('gridUnit')} * 2.5) calc(${th('gridUnit')} * 12) calc(${th('gridUnit')} * 2); ` // #endregion diff --git a/packages/xpub-faraday/app/config/journal/metadata.js b/packages/xpub-faraday/app/config/journal/metadata.js index d55bc4c7f..c01df20fb 100644 --- a/packages/xpub-faraday/app/config/journal/metadata.js +++ b/packages/xpub-faraday/app/config/journal/metadata.js @@ -1,6 +1,6 @@ export default { issn: '2474-7394', - logo: '/assets/hindawi-logo.png', + logo: '/assets/logo-hindawi@2x.png', nameText: 'Faraday Journal', email: 'faraday@hindawi.com', mts: { diff --git a/packages/xpub-faraday/static/logo-hindawi@2x.png b/packages/xpub-faraday/static/logo-hindawi@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..ab4bf2641c10d5233b11627fc39c3f43cae41de7 GIT binary patch literal 16735 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 literal 0 HcmV?d00001 -- GitLab