From f5d83d04566248d39f1f7f39c80922f4ac443024 Mon Sep 17 00:00:00 2001 From: RAR Date: Sun, 8 Jan 2023 03:26:16 +0100 Subject: [PATCH] feat: Added feature - open card once created with Ctrl+Enter --- client/src/components/List/CardAdd.jsx | 40 ++++++++++++++----------- client/src/locales/en/core.js | 2 +- client/src/sagas/core/services/cards.js | 6 ++-- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/client/src/components/List/CardAdd.jsx b/client/src/components/List/CardAdd.jsx index d457f66f..e8f05867 100755 --- a/client/src/components/List/CardAdd.jsx +++ b/client/src/components/List/CardAdd.jsx @@ -21,36 +21,42 @@ const CardAdd = React.memo(({ isOpened, onCreate, onClose }) => { const nameField = useRef(null); - const submit = useCallback(() => { - const cleanData = { - ...data, - name: data.name.trim(), - }; + const submit = useCallback( + (openCard) => { + const cleanData = { + ...data, + name: data.name.trim(), + open: openCard, + }; - if (!cleanData.name) { - nameField.current.ref.current.select(); - return; - } + if (!cleanData.name) { + nameField.current.ref.current.select(); + return; + } - onCreate(cleanData); - - setData(DEFAULT_DATA); - focusNameField(); - }, [onCreate, data, setData, focusNameField]); + onCreate(cleanData); + setData(DEFAULT_DATA); + focusNameField(); + }, + [onCreate, data, setData, focusNameField], + ); const handleFieldKeyDown = useCallback( (event) => { switch (event.key) { - case 'Enter': + case 'Enter': { event.preventDefault(); - submit(); + const openCard = event.ctrlKey; + submit(openCard); break; - case 'Escape': + } + case 'Escape': { onClose(); break; + } default: } }, diff --git a/client/src/locales/en/core.js b/client/src/locales/en/core.js index bccb869b..2a07ca26 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...', + enterCardTitle: 'Enter card title... [Ctrl+Enter] to 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 a75844d2..03488a14 100644 --- a/client/src/sagas/core/services/cards.js +++ b/client/src/sagas/core/services/cards.js @@ -1,6 +1,6 @@ import { call, put, select } from 'redux-saga/effects'; -import { goToBoard } from './router'; +import { goToBoard, goToCard } from './router'; import request from '../request'; import selectors from '../../../selectors'; import actions from '../../../actions'; @@ -33,8 +33,10 @@ export function* createCard(listId, data) { yield put(actions.createCard.failure(localId, error)); return; } - yield put(actions.createCard.success(localId, card)); + if (data.open) { + yield call(goToCard, card.id); + } } export function* handleCardCreate(card) {