1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-08-09 23:45:31 +02:00

fix: Close add card form if auto-open, little refactoring

This commit is contained in:
Maksim Eltyshev 2023-01-08 21:53:33 +01:00
parent fb2681f8c7
commit 3f72a1f691
6 changed files with 22 additions and 16 deletions

View file

@ -22,11 +22,10 @@ const CardAdd = React.memo(({ isOpened, onCreate, onClose }) => {
const nameField = useRef(null); const nameField = useRef(null);
const submit = useCallback( const submit = useCallback(
(openCard) => { (autoOpen) => {
const cleanData = { const cleanData = {
...data, ...data,
name: data.name.trim(), name: data.name.trim(),
open: openCard,
}; };
if (!cleanData.name) { if (!cleanData.name) {
@ -34,11 +33,16 @@ const CardAdd = React.memo(({ isOpened, onCreate, onClose }) => {
return; return;
} }
onCreate(cleanData); onCreate(cleanData, autoOpen);
setData(DEFAULT_DATA); setData(DEFAULT_DATA);
focusNameField();
if (autoOpen) {
onClose();
} else {
focusNameField();
}
}, },
[onCreate, data, setData, focusNameField], [onCreate, onClose, data, setData, focusNameField],
); );
const handleFieldKeyDown = useCallback( const handleFieldKeyDown = useCallback(
@ -47,8 +51,8 @@ const CardAdd = React.memo(({ isOpened, onCreate, onClose }) => {
case 'Enter': { case 'Enter': {
event.preventDefault(); event.preventDefault();
const openCard = event.ctrlKey; const autoOpen = event.ctrlKey;
submit(openCard); submit(autoOpen);
break; break;
} }

View file

@ -34,7 +34,7 @@ const mapDispatchToProps = (dispatch, { id }) =>
{ {
onUpdate: (data) => entryActions.updateList(id, data), onUpdate: (data) => entryActions.updateList(id, data),
onDelete: () => entryActions.deleteList(id), onDelete: () => entryActions.deleteList(id),
onCardCreate: (data) => entryActions.createCard(id, data), onCardCreate: (data, autoOpen) => entryActions.createCard(id, data, autoOpen),
}, },
dispatch, dispatch,
); );

View file

@ -1,10 +1,11 @@
import EntryActionTypes from '../constants/EntryActionTypes'; import EntryActionTypes from '../constants/EntryActionTypes';
const createCard = (listId, data) => ({ const createCard = (listId, data, autoOpen) => ({
type: EntryActionTypes.CARD_CREATE, type: EntryActionTypes.CARD_CREATE,
payload: { payload: {
listId, listId,
data, data,
autoOpen,
}, },
}); });

View file

@ -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... [Ctrl+Enter] to open', enterCardTitle: 'Enter card title... [Ctrl+Enter] to auto-open',
enterDescription: 'Enter description...', enterDescription: 'Enter description...',
enterFilename: 'Enter filename', enterFilename: 'Enter filename',
enterListTitle: 'Enter list title...', enterListTitle: 'Enter list title...',

View file

@ -7,12 +7,11 @@ import actions from '../../../actions';
import api from '../../../api'; import api from '../../../api';
import { createLocalId } from '../../../utils/local-id'; 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 { boardId } = yield select(selectors.selectListById, listId);
const { open, ...cleanData } = data;
const nextData = { const nextData = {
...cleanData, ...data,
position: yield select(selectors.selectNextCardPosition, listId), position: yield select(selectors.selectNextCardPosition, listId),
}; };
@ -34,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 (open) {
if (autoOpen) {
yield call(goToCard, card.id); yield call(goToCard, card.id);
} }
} }

View file

@ -5,8 +5,8 @@ import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* cardsWatchers() { export default function* cardsWatchers() {
yield all([ yield all([
takeEvery(EntryActionTypes.CARD_CREATE, ({ payload: { listId, data } }) => takeEvery(EntryActionTypes.CARD_CREATE, ({ payload: { listId, data, autoOpen } }) =>
services.createCard(listId, data), services.createCard(listId, data, autoOpen),
), ),
takeEvery(EntryActionTypes.CARD_CREATE_HANDLE, ({ payload: { card } }) => takeEvery(EntryActionTypes.CARD_CREATE_HANDLE, ({ payload: { card } }) =>
services.handleCardCreate(card), services.handleCardCreate(card),