From a4e16ee3679db855496b21fc52fd6ce01fdc939d Mon Sep 17 00:00:00 2001 From: Alexandru Munteanu <alexandru.munt@gmail.com> Date: Wed, 11 Apr 2018 11:17:27 +0300 Subject: [PATCH] feat(invite-reviewers): add users to the invite dropdown --- .../src/components/Dashboard/DashboardPage.js | 2 +- .../src/components/Dashboard/TestComponent.js | 9 +++++++++ .../src/components/Dashboard/withFactory.js | 13 +++++++++++++ .../src/components/Reviewers/ReviewerForm.js | 14 ++++++++++---- .../src/components/Reviewers/ReviewersSelect.js | 5 +++-- packages/xpub-faraday/config/default.js | 2 +- 6 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 packages/components-faraday/src/components/Dashboard/TestComponent.js create mode 100644 packages/components-faraday/src/components/Dashboard/withFactory.js diff --git a/packages/components-faraday/src/components/Dashboard/DashboardPage.js b/packages/components-faraday/src/components/Dashboard/DashboardPage.js index 6c657a9e4..3aa057755 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardPage.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardPage.js @@ -14,7 +14,7 @@ import withFilters from './withFilters' import { getHandlingEditors } from '../../redux/editors' export default compose( - ConnectPage(() => [actions.getCollections()]), + ConnectPage(() => [actions.getCollections(), actions.getUsers()]), connect( state => { const { collections, conversion } = state diff --git a/packages/components-faraday/src/components/Dashboard/TestComponent.js b/packages/components-faraday/src/components/Dashboard/TestComponent.js new file mode 100644 index 000000000..1a5c24a81 --- /dev/null +++ b/packages/components-faraday/src/components/Dashboard/TestComponent.js @@ -0,0 +1,9 @@ +import React from 'react' + +import withFactory from './withFactory' + +const TestComponent = ({ ceva, ...rest }) => <div>{ceva}</div> + +export default withFactory(props => ({ + ceva: 'hai sa vedem', +}))(TestComponent) diff --git a/packages/components-faraday/src/components/Dashboard/withFactory.js b/packages/components-faraday/src/components/Dashboard/withFactory.js new file mode 100644 index 000000000..30fffc01c --- /dev/null +++ b/packages/components-faraday/src/components/Dashboard/withFactory.js @@ -0,0 +1,13 @@ +import { createFactory } from 'react' + +const withFactory = propsMapper => BaseComponent => { + const factory = createFactory(BaseComponent) + const WithFactory = props => + factory( + typeof propsMapper === 'function' ? propsMapper(props) : propsMapper, + ) + + return WithFactory +} + +export default withFactory diff --git a/packages/components-faraday/src/components/Reviewers/ReviewerForm.js b/packages/components-faraday/src/components/Reviewers/ReviewerForm.js index 0b7487bcf..6ad7b65a5 100644 --- a/packages/components-faraday/src/components/Reviewers/ReviewerForm.js +++ b/packages/components-faraday/src/components/Reviewers/ReviewerForm.js @@ -1,4 +1,5 @@ import React from 'react' +import { get } from 'lodash' import { connect } from 'react-redux' import styled from 'styled-components' import { th, Button } from '@pubsweet/ui' @@ -6,8 +7,8 @@ import { compose, withHandlers } from 'recompose' import { reduxForm, change as changeForm, initialize } from 'redux-form' import { ReviewersSelect } from './' -import { ValidatedTextField } from '../AuthorList/FormItems' import { inviteReviewer } from '../../redux/reviewers' +import { ValidatedTextField } from '../AuthorList/FormItems' // const emailRegex = new RegExp( // /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i, //eslint-disable-line @@ -16,10 +17,10 @@ import { inviteReviewer } from '../../redux/reviewers' // const emailValidator = value => // emailRegex.test(value) ? undefined : 'Invalid email' -const ReviewerForm = ({ clearForm, selectReviewer, handleSubmit }) => ( +const ReviewerForm = ({ clearForm, selectReviewer, handleSubmit, users }) => ( <Root> <Row> - <ReviewersSelect onSelect={selectReviewer} /> + <ReviewersSelect onSelect={selectReviewer} values={users} /> <ValidatedTextField isRequired label="Last name*" name="lastName" /> </Row> <Row> @@ -36,7 +37,12 @@ const ReviewerForm = ({ clearForm, selectReviewer, handleSubmit }) => ( ) export default compose( - connect(null, { changeForm, initialize, inviteReviewer }), + connect( + state => ({ + users: get(state, 'users.users') || [], + }), + { changeForm, initialize, inviteReviewer }, + ), reduxForm({ form: 'inviteReviewer', onSubmit: (values, dispatch, { inviteReviewer }) => {}, diff --git a/packages/components-faraday/src/components/Reviewers/ReviewersSelect.js b/packages/components-faraday/src/components/Reviewers/ReviewersSelect.js index 287fdf62f..32d23d46f 100644 --- a/packages/components-faraday/src/components/Reviewers/ReviewersSelect.js +++ b/packages/components-faraday/src/components/Reviewers/ReviewersSelect.js @@ -143,7 +143,7 @@ const RenderRoot = styled.div` max-width: calc(${th('gridUnit')} * 14); ` -const SuggestionItem = styled.div` +const SuggestionItem = styled.span` align-items: center; align-self: stretch; background-color: transparent; @@ -152,6 +152,7 @@ const SuggestionItem = styled.div` justify-content: flex-start; height: calc(${th('subGridUnit')} * 6); padding-left: calc(${th('subGridUnit')} * 2); + white-space: nowrap; &:hover { background-color: ${th('colorSecondary')}; @@ -174,8 +175,8 @@ const SuggestionsContainer = styled.div` position: absolute; padding-top: calc(${th('subGridUnit')} * 2); top: 68px; - width: 380px; max-height: calc(${th('subGridUnit')} * 6 * 4); + width: calc(${th('gridUnit')} * 16); ` const FormLabel = styled.span` diff --git a/packages/xpub-faraday/config/default.js b/packages/xpub-faraday/config/default.js index c4f458ba4..9671e5bef 100644 --- a/packages/xpub-faraday/config/default.js +++ b/packages/xpub-faraday/config/default.js @@ -39,7 +39,7 @@ module.exports = { 'pubsweet-client': { API_ENDPOINT: '/api', 'login-redirect': '/', - 'redux-log': false, + 'redux-log': true, theme: process.env.PUBSWEET_THEME, }, 'mail-transport': { -- GitLab