From 0260af560317ca3ffa784149c9954787c93b259d Mon Sep 17 00:00:00 2001 From: Alexandru Munteanu <alexandru.munt@gmail.com> Date: Wed, 23 May 2018 15:29:59 +0300 Subject: [PATCH] chore(dashboard): various improvements --- .../src/components/AuthorList/FormItems.js | 24 ++++----- .../src/components/Dashboard/AbstractModal.js | 37 +++++++------- .../src/components/Dashboard/AssignHEModal.js | 21 ++++---- .../src/components/Dashboard/Dashboard.js | 25 ++++------ .../src/components/Dashboard/DashboardCard.js | 50 +++++++------------ .../components/Dashboard/DashboardFilters.js | 12 ++--- .../components/Dashboard/DashboardItems.js | 4 +- .../src/components/Dashboard/DashboardPage.js | 2 +- .../Dashboard/EditorInChiefActions.js | 28 +++++------ .../Dashboard/HandlingEditorActions.js | 12 ++--- .../Dashboard/HandlingEditorSection.js | 2 +- .../components/Dashboard/ReviewerDecision.js | 8 +-- .../src/components/Dashboard/index.js | 5 ++ 13 files changed, 108 insertions(+), 122 deletions(-) diff --git a/packages/components-faraday/src/components/AuthorList/FormItems.js b/packages/components-faraday/src/components/AuthorList/FormItems.js index 960400135..5a069af67 100644 --- a/packages/components-faraday/src/components/AuthorList/FormItems.js +++ b/packages/components-faraday/src/components/AuthorList/FormItems.js @@ -1,7 +1,7 @@ import React from 'react' import { required } from 'xpub-validators' -import styled, { withTheme, css } from 'styled-components' -import { TextField, Menu, ValidatedField, Icon } from '@pubsweet/ui' +import styled, { css } from 'styled-components' +import { TextField, Menu, ValidatedField, Icon, th } from '@pubsweet/ui' export const ValidatedTextField = ({ label, @@ -36,21 +36,21 @@ export const Label = ({ label, value }) => ( </LabelRoot> ) -export const DragHandle = withTheme(({ theme }) => ( +export const DragHandle = () => ( <DragHandleRoot> - <Icon color={theme.colorPrimary}>chevron_up</Icon> - <Icon color={theme.colorPrimary} size={3}> + <Icon primary>chevron_up</Icon> + <Icon primary size={3}> menu </Icon> - <Icon color={theme.colorPrimary}>chevron_down</Icon> + <Icon primary>chevron_down</Icon> </DragHandleRoot> -)) +) // #region styled-components const defaultText = css` - color: ${({ theme }) => theme.colorText}; - font-size: ${({ theme }) => theme.fontSizeBaseSmall}; - font-family: ${({ theme }) => theme.fontReading}; + color: ${th('colorText')}; + font-size: ${th('fontSizeBaseSmall')}; + font-family: ${th('fontReading')}; ` const ValidatedTextFieldRoot = styled.div` @@ -70,7 +70,7 @@ const StyledLabel = styled.span` const DragHandleRoot = styled.div` align-items: center; - border-right: ${({ theme }) => theme.borderDefault}; + border-right: ${th('borderDefault')}; cursor: move; display: flex; flex-direction: column; @@ -81,7 +81,7 @@ const LabelRoot = styled.div` display: flex; flex: 1; flex-direction: column; - margin: 5px; + margin: ${th('subGridUnit')}; width: ${({ width }) => `${width || 150}px`}; span:first-child { diff --git a/packages/components-faraday/src/components/Dashboard/AbstractModal.js b/packages/components-faraday/src/components/Dashboard/AbstractModal.js index 4ae9f2774..e4a6eb11b 100644 --- a/packages/components-faraday/src/components/Dashboard/AbstractModal.js +++ b/packages/components-faraday/src/components/Dashboard/AbstractModal.js @@ -1,12 +1,12 @@ import React from 'react' import { get } from 'lodash' -import { Icon } from '@pubsweet/ui' -import styled, { css, withTheme } from 'styled-components' +import { Icon, th } from '@pubsweet/ui' +import styled, { css } from 'styled-components' -const AbstractModal = ({ metadata, hideModal, theme }) => ( +const AbstractModal = ({ metadata, hideModal }) => ( <Root> <CloseIcon onClick={hideModal}> - <Icon color={theme.colorPrimary}>x</Icon> + <Icon primary>x</Icon> </CloseIcon> <Title dangerouslySetInnerHTML={{ __html: get(metadata, 'title') }} /> <Subtitle>Abstract</Subtitle> @@ -14,28 +14,29 @@ const AbstractModal = ({ metadata, hideModal, theme }) => ( </Root> ) -export default withTheme(AbstractModal) +export default AbstractModal // #region styled-components const defaultText = css` - color: ${({ theme }) => theme.colorText}; - font-family: ${({ theme }) => theme.fontReading}; - font-size: ${({ theme }) => theme.fontSizeBaseSmall}; + color: ${th('colorText')}; + font-family: ${th('fontReading')}; + font-size: ${th('fontSizeBaseSmall')}; ` const Root = styled.div` - background-color: ${({ theme }) => theme.backgroundColor}; - padding: 50px 32px 32px 32px; - border: ${({ theme }) => theme.borderDefault}; - position: relative; - width: 600px; + background-color: ${th('backgroundColor')}; + border: ${th('borderDefault')}; max-height: 500px; + padding: ${th('gridUnit')}; + padding-top: calc(${th('gridUnit')} * 2); + position: relative; overflow-y: scroll; + width: 600px; ` const Title = styled.div` ${defaultText}; - font-size: ${({ theme }) => theme.fontSizeBase}; + font-size: ${th('fontSizeBase')}; text-align: left; ` @@ -43,21 +44,21 @@ const Subtitle = styled.div` ${defaultText}; font-weight: bold; line-height: 1.57; - margin-bottom: 8px; + margin-bottom: ${th('subGridUnit')}; text-align: left; ` const Content = styled.div` ${defaultText}; line-height: 1.57; - margin-top: 10px; + margin-top: calc(${th('subGridUnit')} * 2); text-align: left; ` const CloseIcon = styled.div` cursor: pointer; position: absolute; - top: 5px; - right: 5px; + top: ${th('subGridUnit')}; + right: ${th('subGridUnit')}; ` // #endregion diff --git a/packages/components-faraday/src/components/Dashboard/AssignHEModal.js b/packages/components-faraday/src/components/Dashboard/AssignHEModal.js index 813ee6cea..eb201ac3b 100644 --- a/packages/components-faraday/src/components/Dashboard/AssignHEModal.js +++ b/packages/components-faraday/src/components/Dashboard/AssignHEModal.js @@ -4,14 +4,14 @@ import React from 'react' import { get } from 'lodash' import { compose } from 'recompose' import { connect } from 'react-redux' +import styled from 'styled-components' import { actions } from 'pubsweet-client' import { th, Icon, Spinner } from '@pubsweet/ui' -import styled, { withTheme } from 'styled-components' import { - selectHandlingEditors, selectFetching, assignHandlingEditor, + selectHandlingEditors, } from '../../redux/editors' class AssignHEModal extends React.Component { @@ -34,21 +34,21 @@ class AssignHEModal extends React.Component { assignEditor = email => () => { const { - assignHandlingEditor, - collectionId, showModal, hideModal, + collectionId, setModalError, getCollections, + assignHandlingEditor, } = this.props assignHandlingEditor(email, collectionId).then( () => { getCollections() hideModal() showModal({ + cancelText: 'OK', type: 'confirmation', title: 'Assignation Sent', - cancelText: 'OK', }) }, e => { @@ -61,12 +61,12 @@ class AssignHEModal extends React.Component { render() { const { searchInput } = this.state - const { editors, hideModal, theme, isFetching } = this.props + const { editors, hideModal, isFetching } = this.props const filteredEditors = this.filterEditors(editors) return ( <RootModal> <CloseIcon data-test="icon-modal-hide" onClick={hideModal}> - <Icon color={theme.colorPrimary}>x</Icon> + <Icon primary>x</Icon> </CloseIcon> <ModalTitle>Assign Handling Editor</ModalTitle> <ModalHeader> @@ -118,11 +118,10 @@ export default compose( }), { assignHandlingEditor, - updateCollection: actions.updateCollection, getCollections: actions.getCollections, + updateCollection: actions.updateCollection, }, ), - withTheme, )(AssignHEModal) // #region styled-components @@ -141,8 +140,8 @@ const SubtitleRow = styled.div` const CloseIcon = styled.div` cursor: pointer; position: absolute; - top: 5px; - right: 5px; + top: ${th('subGridUnit')}; + right: ${th('subGridUnit')}; ` const EditorDetails = styled.div` diff --git a/packages/components-faraday/src/components/Dashboard/Dashboard.js b/packages/components-faraday/src/components/Dashboard/Dashboard.js index 422d289e1..c0d8486c6 100644 --- a/packages/components-faraday/src/components/Dashboard/Dashboard.js +++ b/packages/components-faraday/src/components/Dashboard/Dashboard.js @@ -1,23 +1,22 @@ import React from 'react' -import { Button } from '@pubsweet/ui' import styled from 'styled-components' +import { Button, th } from '@pubsweet/ui' import { compose, withHandlers } from 'recompose' -import DashboardItems from './DashboardItems' -import DashboardFilters from './DashboardFilters' +import { DashboardItems, DashboardFilters } from './' const Dashboard = ({ - createDraftSubmission, - currentUser, - dashboard, - deleteProject, filters, getItems, + dashboard, + currentUser, + filterItems, + filterValues, + deleteProject, getFilterOptions, changeFilterValue, - filterValues, - filterItems, showAbstractModal, + createDraftSubmission, ...rest }) => ( <Root> @@ -55,10 +54,10 @@ export default compose( }, getItems: ({ filters, - filterValues = {}, - currentUser, dashboard, + currentUser, filterItems, + filterValues = {}, }) => () => filterItems(dashboard.all).sort((a, b) => { if (filterValues.order === 'newest') return a.created - b.created < 0 @@ -68,7 +67,6 @@ export default compose( )(Dashboard) // #region styles - const Root = styled.div` display: flex; flex-direction: column; @@ -82,7 +80,7 @@ const Header = styled.div` ` const Heading = styled.div` - color: ${({ theme }) => theme.colorPrimary}; + color: ${th('colorPrimary')}; font-size: 1.6em; text-transform: uppercase; ` @@ -90,5 +88,4 @@ const Heading = styled.div` const HeaderButtons = styled.div` display: flex; ` - // #endregion diff --git a/packages/components-faraday/src/components/Dashboard/DashboardCard.js b/packages/components-faraday/src/components/Dashboard/DashboardCard.js index a9af74ea5..e15472b73 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardCard.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardCard.js @@ -167,18 +167,6 @@ const DashboardCard = ({ ) : null } -// const isHEToManuscript = (state, collectionId) => { -// const currentUserId = get(state, 'currentUser.user.id') -// const collections = get(state, 'collections') || [] -// const collection = collections.find(c => c.id === collectionId) || {} -// const collectionInvitations = get(collection, 'invitations') || [] -// const userInvitation = collectionInvitations.find( -// i => i.role === 'handlingEditor' && i.userId === currentUserId, -// ) - -// return userInvitation ? userInvitation.isAccepted : false -// } - export default compose( getContext({ journal: PropTypes.object, currentUser: PropTypes.object }), withTheme, @@ -209,8 +197,8 @@ export default compose( project, }) => () => { showModal({ - title: 'Are you sure you want to delete this submission?', confirmText: 'Delete', + title: 'Are you sure you want to delete this submission?', onConfirm: () => { deleteProject(project).then(hideModal, e => { setModalError( @@ -243,25 +231,25 @@ const ActionButtons = styled(Button)` background-color: ${th('colorPrimary')}; color: ${th('colorTextReverse')}; display: flex; - padding: 4px 8px; + height: calc(${th('subGridUnit')} * 5); + padding: calc(${th('subGridUnit')} / 2) ${th('subGridUnit')}; text-align: center; - height: calc(${th('subGridUnit')}*5); ` const LeftDetails = styled.div` + align-items: center; display: flex; flex-direction: row; justify-content: flex-start; - align-items: center; flex: ${({ flex }) => flex || 1}; flex-wrap: wrap; ` const RightDetails = styled.div` + align-items: center; display: flex; flex-direction: row; justify-content: flex-end; - align-items: center; flex: ${({ flex }) => flex || 1}; flex-wrap: wrap; ` @@ -285,7 +273,7 @@ const ListView = styled.div` const ManuscriptId = styled.div` ${defaultText}; - margin-right: 8px; + margin-right: ${th('subGridUnit')}; text-align: left; text-transform: uppercase; white-space: nowrap; @@ -297,7 +285,7 @@ const Details = styled.div` cursor: pointer; display: flex; ${defaultText}; - margin-left: 16px; + margin-left: calc(${th('subGridUnit')} * 2); text-decoration: underline; text-align: center; text-transform: uppercase; @@ -306,7 +294,7 @@ const Details = styled.div` const ClickableIcon = styled.div` cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')}; - margin: 0 7px; + margin: 0 ${th('subGridUnit')}; svg { stroke: ${({ disabled, theme }) => @@ -320,7 +308,7 @@ const Card = styled.div` display: flex; flex-direction: column; justify-content: flex-start; - margin-bottom: 10px; + margin-bottom: calc(${th('subGridUnit')} * 2); background-color: ${th('backgroundColorReverse')}; ` @@ -328,31 +316,32 @@ const Top = styled.div` display: flex; flex-direction: row; align-items: center; - padding: 10px; + padding: calc(${th('subGridUnit')} * 2); width: 100%; box-sizing: border-box; flex-wrap: wrap; ` const Bottom = styled.div` + box-sizing: border-box; display: flex; flex-direction: row; - padding: 0 10px 10px 10px; - width: 100%; - box-sizing: border-box; - justify-content: space-between; flex-wrap: wrap; + justify-content: space-between; + padding: calc(${th('subGridUnit')} * 2); + padding-top: 0; + width: 100%; ` const ManuscriptType = styled.div` ${defaultText}; - padding: 6px 4px; - margin-left: 10px; + flex: 1; + margin-left: calc(${th('subGridUnit')} * 2); + padding: ${th('subGridUnit')} calc(${th('subGridUnit')} / 2); text-align: right; text-transform: capitalize; text-overflow: ellipsis; - white-space: nowrap; overflow: hidden; - flex: 1; + white-space: nowrap; ` const Title = styled.div` @@ -383,5 +372,4 @@ const DateField = styled.span` margin: 0 ${th('subGridUnit')}; text-align: left; ` - // #endregion diff --git a/packages/components-faraday/src/components/Dashboard/DashboardFilters.js b/packages/components-faraday/src/components/Dashboard/DashboardFilters.js index 3f9ebd4e4..88f5737f4 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardFilters.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardFilters.js @@ -1,15 +1,15 @@ import React from 'react' +import styled from 'styled-components' import { Menu, th } from '@pubsweet/ui' import { compose, withHandlers } from 'recompose' -import styled from 'styled-components' const DashboardFilters = ({ view, status, - createdAt, listView, - changeFilter, + createdAt, changeSort, + changeFilter, getFilterOptions, changeFilterValue, }) => ( @@ -59,8 +59,8 @@ const Root = styled.div` color: ${th('colorPrimary')}; display: flex; justify-content: space-between; - margin: calc(${th('subGridUnit')}*2) 0; - padding-bottom: calc(${th('subGridUnit')}*2); + margin: calc(${th('subGridUnit')} * 2) 0; + padding-bottom: calc(${th('subGridUnit')} * 2); ` const FiltersContainer = styled.div` @@ -78,7 +78,7 @@ const FilterGroup = styled.div` align-items: flex-start; display: flex; flex-direction: column; - margin-left: calc(${th('subGridUnit')}*2); + margin-left: calc(${th('subGridUnit')} * 2); ` // #endregion diff --git a/packages/components-faraday/src/components/Dashboard/DashboardItems.js b/packages/components-faraday/src/components/Dashboard/DashboardItems.js index 2fe126199..8e898b79a 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardItems.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardItems.js @@ -8,8 +8,8 @@ const DashboardItem = withVersion(Item) const DashboardItems = ({ list, - listView = true, deleteProject, + listView = true, showAbstractModal, }) => ( <div> @@ -36,7 +36,6 @@ const DashboardItems = ({ export default DashboardItems // #region styles - const Empty = styled.div` display: flex; justify-content: center; @@ -45,5 +44,4 @@ const Empty = styled.div` const Section = styled.div` margin: 0.5em 0; ` - // #endregion diff --git a/packages/components-faraday/src/components/Dashboard/DashboardPage.js b/packages/components-faraday/src/components/Dashboard/DashboardPage.js index 9e4a831bc..48dd1bfd3 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardPage.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardPage.js @@ -9,7 +9,7 @@ import { compose, withContext } from 'recompose' import { newestFirst, selectCurrentUser } from 'xpub-selectors' import { createDraftSubmission } from 'pubsweet-component-wizard/src/redux/conversion' -import Dashboard from './Dashboard' +import { Dashboard } from './' import withFilters from './withFilters' import { getHandlingEditors } from '../../redux/editors' diff --git a/packages/components-faraday/src/components/Dashboard/EditorInChiefActions.js b/packages/components-faraday/src/components/Dashboard/EditorInChiefActions.js index 1bac07026..e627c51b5 100644 --- a/packages/components-faraday/src/components/Dashboard/EditorInChiefActions.js +++ b/packages/components-faraday/src/components/Dashboard/EditorInChiefActions.js @@ -3,29 +3,28 @@ import { get } from 'lodash' import { connect } from 'react-redux' import { actions } from 'pubsweet-client' import { Icon, Button, th } from '@pubsweet/ui' +import styled, { css } from 'styled-components' import { compose, withHandlers } from 'recompose' -import styled, { css, withTheme } from 'styled-components' import { withModal, - ConfirmationModal, SuccessModal, + ConfirmationModal, } from 'pubsweet-component-modal/src/components' import { handleError } from './../utils' import { + selectFetching, revokeHandlingEditor, assignHandlingEditor, - selectFetching, } from '../../redux/editors' import HEModal from './AssignHEModal' const EditorInChiefActions = ({ project, - theme, - getHandlingEditor, - showConfirmModal, showHEModal, + showConfirmModal, + getHandlingEditor, }) => { const handlingEditor = getHandlingEditor() const isAccepted = get(handlingEditor, 'isAccepted') @@ -40,10 +39,10 @@ const EditorInChiefActions = ({ <HEName>{get(handlingEditor, 'name')}</HEName> <HEActions data-test="eic-after-assign"> <div onClick={showConfirmModal('resend')}> - <Icon color={theme.colorPrimary}>refresh-cw</Icon> + <Icon primary>refresh-cw</Icon> </div> <div onClick={showConfirmModal('cancel')}> - <Icon color={theme.colorPrimary}>x-circle</Icon> + <Icon primary>x-circle</Icon> </div> </HEActions> </HEActions> @@ -73,7 +72,6 @@ export default compose( assignHandlingEditor, getCollections: actions.getCollections, }), - withTheme, withModal({ modalKey: 'confirmHE', modalComponent: CardModal, @@ -83,14 +81,14 @@ export default compose( }), withHandlers({ showConfirmModal: ({ - showModal, project, - revokeHandlingEditor, - assignHandlingEditor, - getHandlingEditor, + showModal, hideModal, setModalError, getCollections, + getHandlingEditor, + revokeHandlingEditor, + assignHandlingEditor, }) => actionType => { const editor = get(project, 'handlingEditor') const invitation = project.invitations.find(i => i.userId === editor.id) @@ -170,9 +168,9 @@ const HEActions = styled.div` const AssignButton = styled(Button)` ${defaultText}; align-items: center; - color: ${th('colorTextReverse')}; background-color: ${th('colorPrimary')}; - height: calc(${th('subGridUnit')}*5); + color: ${th('colorTextReverse')}; + height: calc(${th('subGridUnit')} * 5); text-align: center; text-transform: uppercase; ` diff --git a/packages/components-faraday/src/components/Dashboard/HandlingEditorActions.js b/packages/components-faraday/src/components/Dashboard/HandlingEditorActions.js index 5bacddb1c..f7f60384a 100644 --- a/packages/components-faraday/src/components/Dashboard/HandlingEditorActions.js +++ b/packages/components-faraday/src/components/Dashboard/HandlingEditorActions.js @@ -62,12 +62,12 @@ export default compose( }), withHandlers({ showHEModal: ({ - currentUser, + project, showModal, hideModal, - project, - getCollections, + currentUser, setModalError, + getCollections, }) => modalType => { const invitation = project.invitations.find( i => i.userId === currentUser.id, @@ -119,7 +119,7 @@ const DecisionButton = styled(Button)` primary ? th('colorTextReverse') : th('colorPrimary')}; background-color: ${({ primary }) => primary ? th('colorPrimary') : th('backgroundColorReverse')}; - height: calc(${th('subGridUnit')}*5); + height: calc(${th('subGridUnit')} * 5); text-align: center; ` @@ -128,8 +128,8 @@ const DeclineRoot = styled.div` background-color: ${th('backgroundColor')}; display: flex; flex-direction: column; - justify-content: space-between; height: calc(${th('gridUnit')} * 13); + justify-content: space-between; padding: calc(${th('subGridUnit')} * 7); width: calc(${th('gridUnit')} * 24); @@ -137,7 +137,7 @@ const DeclineRoot = styled.div` color: ${th('colorPrimary')}; font-size: ${th('fontSizeHeading5')}; font-family: ${th('fontHeading')}; - margin-bottom: 25px; + margin-bottom: ${th('gridUnit')}; } & textarea { diff --git a/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js b/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js index 6ea7ce628..be460ccff 100644 --- a/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js +++ b/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js @@ -1,6 +1,6 @@ import React from 'react' -import { th } from '@pubsweet/ui' import { get } from 'lodash' +import { th } from '@pubsweet/ui' import styled, { css } from 'styled-components' import { EditorInChiefActions, HandlingEditorActions } from './' diff --git a/packages/components-faraday/src/components/Dashboard/ReviewerDecision.js b/packages/components-faraday/src/components/Dashboard/ReviewerDecision.js index ac8a19493..d42dfb765 100644 --- a/packages/components-faraday/src/components/Dashboard/ReviewerDecision.js +++ b/packages/components-faraday/src/components/Dashboard/ReviewerDecision.js @@ -85,12 +85,12 @@ const defaultText = css` const DecisionButton = styled(Button)` ${defaultText}; - align-items: center; - color: ${({ primary }) => - primary ? th('colorTextReverse') : th('colorPrimary')}); + align-items: center; background-color: ${({ primary }) => primary ? th('colorPrimary') : th('backgroundColorReverse')}; - height: calc(${th('subGridUnit')}*5); + color: ${({ primary }) => + primary ? th('colorTextReverse') : th('colorPrimary')}); + height: calc(${th('subGridUnit')} * 5); text-align: center; ` // #endregion diff --git a/packages/components-faraday/src/components/Dashboard/index.js b/packages/components-faraday/src/components/Dashboard/index.js index 25397e39b..77a53a836 100644 --- a/packages/components-faraday/src/components/Dashboard/index.js +++ b/packages/components-faraday/src/components/Dashboard/index.js @@ -1,7 +1,12 @@ import DashboardPage from './DashboardPage' +export { default as Dashboard } from './Dashboard' +export { default as AbstractModal } from './AbstractModal' export { default as AuthorTooltip } from './AuthorTooltip' +export { default as DashboardCard } from './DashboardCard' +export { default as DashboardItems } from './DashboardItems' export { default as ReviewerDecision } from './ReviewerDecision' +export { default as DashboardFilters } from './DashboardFilters' export { default as EditorInChiefActions } from './EditorInChiefActions' export { default as HandlingEditorActions } from './HandlingEditorActions' export { default as HandlingEditorSection } from './HandlingEditorSection' -- GitLab