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 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);
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;
}

View file

@ -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,
);

View file

@ -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,
},
});

View file

@ -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...',

View file

@ -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);
}
}

View file

@ -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),