mirror of
https://github.com/plankanban/planka.git
synced 2025-08-09 23:45:31 +02:00
feat: Added feature - open card once created with Ctrl+Enter
This commit is contained in:
parent
6021d67a00
commit
f5d83d0456
3 changed files with 28 additions and 20 deletions
|
@ -21,36 +21,42 @@ const CardAdd = React.memo(({ isOpened, onCreate, onClose }) => {
|
||||||
|
|
||||||
const nameField = useRef(null);
|
const nameField = useRef(null);
|
||||||
|
|
||||||
const submit = useCallback(() => {
|
const submit = useCallback(
|
||||||
const cleanData = {
|
(openCard) => {
|
||||||
...data,
|
const cleanData = {
|
||||||
name: data.name.trim(),
|
...data,
|
||||||
};
|
name: data.name.trim(),
|
||||||
|
open: openCard,
|
||||||
|
};
|
||||||
|
|
||||||
if (!cleanData.name) {
|
if (!cleanData.name) {
|
||||||
nameField.current.ref.current.select();
|
nameField.current.ref.current.select();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
onCreate(cleanData);
|
onCreate(cleanData);
|
||||||
|
setData(DEFAULT_DATA);
|
||||||
setData(DEFAULT_DATA);
|
focusNameField();
|
||||||
focusNameField();
|
},
|
||||||
}, [onCreate, data, setData, focusNameField]);
|
[onCreate, data, setData, focusNameField],
|
||||||
|
);
|
||||||
|
|
||||||
const handleFieldKeyDown = useCallback(
|
const handleFieldKeyDown = useCallback(
|
||||||
(event) => {
|
(event) => {
|
||||||
switch (event.key) {
|
switch (event.key) {
|
||||||
case 'Enter':
|
case 'Enter': {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
submit();
|
const openCard = event.ctrlKey;
|
||||||
|
submit(openCard);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'Escape':
|
}
|
||||||
|
case 'Escape': {
|
||||||
onClose();
|
onClose();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -84,7 +84,7 @@ export default {
|
||||||
editUsername_title: 'Edit Username',
|
editUsername_title: 'Edit Username',
|
||||||
email: 'E-mail',
|
email: 'E-mail',
|
||||||
emailAlreadyInUse: 'E-mail already in use',
|
emailAlreadyInUse: 'E-mail already in use',
|
||||||
enterCardTitle: 'Enter card title...',
|
enterCardTitle: 'Enter card title... [Ctrl+Enter] to open',
|
||||||
enterDescription: 'Enter description...',
|
enterDescription: 'Enter description...',
|
||||||
enterFilename: 'Enter filename',
|
enterFilename: 'Enter filename',
|
||||||
enterListTitle: 'Enter list title...',
|
enterListTitle: 'Enter list title...',
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { call, put, select } from 'redux-saga/effects';
|
import { call, put, select } from 'redux-saga/effects';
|
||||||
|
|
||||||
import { goToBoard } from './router';
|
import { goToBoard, goToCard } from './router';
|
||||||
import request from '../request';
|
import request from '../request';
|
||||||
import selectors from '../../../selectors';
|
import selectors from '../../../selectors';
|
||||||
import actions from '../../../actions';
|
import actions from '../../../actions';
|
||||||
|
@ -33,8 +33,10 @@ export function* createCard(listId, data) {
|
||||||
yield put(actions.createCard.failure(localId, error));
|
yield put(actions.createCard.failure(localId, error));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
yield put(actions.createCard.success(localId, card));
|
yield put(actions.createCard.success(localId, card));
|
||||||
|
if (data.open) {
|
||||||
|
yield call(goToCard, card.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function* handleCardCreate(card) {
|
export function* handleCardCreate(card) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue