diff --git a/client/src/components/List/CardAdd.jsx b/client/src/components/List/CardAdd.jsx index e8f05867..bdfc3536 100755 --- a/client/src/components/List/CardAdd.jsx +++ b/client/src/components/List/CardAdd.jsx @@ -22,11 +22,10 @@ const CardAdd = React.memo(({ isOpened, onCreate, onClose }) => { const nameField = useRef(null); const submit = useCallback( - (openCard) => { + (autoOpen) => { const cleanData = { ...data, name: data.name.trim(), - open: openCard, }; if (!cleanData.name) { @@ -34,11 +33,16 @@ const CardAdd = React.memo(({ isOpened, onCreate, onClose }) => { return; } - onCreate(cleanData); + onCreate(cleanData, autoOpen); setData(DEFAULT_DATA); - focusNameField(); + + if (autoOpen) { + onClose(); + } else { + focusNameField(); + } }, - [onCreate, data, setData, focusNameField], + [onCreate, onClose, data, setData, focusNameField], ); const handleFieldKeyDown = useCallback( @@ -47,8 +51,8 @@ const CardAdd = React.memo(({ isOpened, onCreate, onClose }) => { case 'Enter': { event.preventDefault(); - const openCard = event.ctrlKey; - submit(openCard); + const autoOpen = event.ctrlKey; + submit(autoOpen); break; } diff --git a/client/src/containers/ListContainer.js b/client/src/containers/ListContainer.js index 95ee90c8..cb2f6a00 100755 --- a/client/src/containers/ListContainer.js +++ b/client/src/containers/ListContainer.js @@ -34,7 +34,7 @@ const mapDispatchToProps = (dispatch, { id }) => { onUpdate: (data) => entryActions.updateList(id, data), onDelete: () => entryActions.deleteList(id), - onCardCreate: (data) => entryActions.createCard(id, data), + onCardCreate: (data, autoOpen) => entryActions.createCard(id, data, autoOpen), }, dispatch, ); diff --git a/client/src/entry-actions/cards.js b/client/src/entry-actions/cards.js index c3e9eb25..d73b2476 100755 --- a/client/src/entry-actions/cards.js +++ b/client/src/entry-actions/cards.js @@ -1,10 +1,11 @@ import EntryActionTypes from '../constants/EntryActionTypes'; -const createCard = (listId, data) => ({ +const createCard = (listId, data, autoOpen) => ({ type: EntryActionTypes.CARD_CREATE, payload: { listId, data, + autoOpen, }, }); diff --git a/client/src/locales/en/core.js b/client/src/locales/en/core.js index 2a07ca26..16935fe3 100644 --- a/client/src/locales/en/core.js +++ b/client/src/locales/en/core.js @@ -84,7 +84,7 @@ export default { editUsername_title: 'Edit Username', email: 'E-mail', emailAlreadyInUse: 'E-mail already in use', - enterCardTitle: 'Enter card title... [Ctrl+Enter] to open', + enterCardTitle: 'Enter card title... [Ctrl+Enter] to auto-open', enterDescription: 'Enter description...', enterFilename: 'Enter filename', enterListTitle: 'Enter list title...', diff --git a/client/src/sagas/core/services/cards.js b/client/src/sagas/core/services/cards.js index 42801091..40c3db83 100644 --- a/client/src/sagas/core/services/cards.js +++ b/client/src/sagas/core/services/cards.js @@ -7,12 +7,11 @@ import actions from '../../../actions'; import api from '../../../api'; import { createLocalId } from '../../../utils/local-id'; -export function* createCard(listId, data) { +export function* createCard(listId, data, autoOpen) { const { boardId } = yield select(selectors.selectListById, listId); - const { open, ...cleanData } = data; const nextData = { - ...cleanData, + ...data, position: yield select(selectors.selectNextCardPosition, listId), }; @@ -34,8 +33,10 @@ export function* createCard(listId, data) { yield put(actions.createCard.failure(localId, error)); return; } + yield put(actions.createCard.success(localId, card)); - if (open) { + + if (autoOpen) { yield call(goToCard, card.id); } } diff --git a/client/src/sagas/core/watchers/cards.js b/client/src/sagas/core/watchers/cards.js index 6a5d0889..02905150 100644 --- a/client/src/sagas/core/watchers/cards.js +++ b/client/src/sagas/core/watchers/cards.js @@ -5,8 +5,8 @@ import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* cardsWatchers() { yield all([ - takeEvery(EntryActionTypes.CARD_CREATE, ({ payload: { listId, data } }) => - services.createCard(listId, data), + takeEvery(EntryActionTypes.CARD_CREATE, ({ payload: { listId, data, autoOpen } }) => + services.createCard(listId, data, autoOpen), ), takeEvery(EntryActionTypes.CARD_CREATE_HANDLE, ({ payload: { card } }) => services.handleCardCreate(card),