TaskCard - Add delete button

This commit is contained in:
2020-03-30 21:07:19 +05:30
parent a69342b71e
commit 8dda94e5da
3 changed files with 57 additions and 9 deletions
+24 -1
View File
@@ -1,6 +1,6 @@
import React, { useState } from "react";
import { useDispatch } from "react-redux";
import { createTask, editTask } from "../../storeSlices/boardSlice";
import { createTask, editTask, deleteTask } from "../../storeSlices/boardSlice";
import useAutoHeightTextArea from "../../utils/useAutoHeightTextArea";
import styles from "./TaskCard.module.css";
@@ -62,6 +62,16 @@ export function CreateOrEditTaskCard({
parentOnCancel();
};
const onDelete = () => {
const confirmDelete = window.confirm(
"Do you really want to delete the task?"
);
if (confirmDelete) {
const payload = { cardID: cardID, listID };
dispatch(deleteTask(payload));
}
};
/*
---------
Render here
@@ -88,9 +98,22 @@ export function CreateOrEditTaskCard({
onChange={e => setNewCardText(e.target.value)}
></textarea>
<div className={styles.createActionBtnContainer}>
<div className={styles.createActionBtnRow}>
<input type="submit" value="Save" disabled={!isTextNonEmpty} />
<input type="button" value="Cancel" onClick={onCancel} />
</div>
{/* Show delete button onlyin edit mode */}
{!isCreateMode ? (
<div className={styles.createActionBtnRow}>
<input
className={styles.deleteTaskBtn}
type="button"
value="Delete task"
onClick={onDelete}
/>
</div>
) : null}
</div>
</form>
)}
</div>
+19 -5
View File
@@ -26,20 +26,34 @@
}
.createActionBtnContainer {
display: flex;
justify-content: space-evenly;
margin-bottom: 12px;
}
.createActionBtnContainer > input {
.createActionBtnRow {
display: flex;
justify-content: space-evenly;
margin: 4px 0;
}
.createActionBtnRow:first-child {
margin-top: 0;
}
.createActionBtnRow > input {
flex: 1 0 50px;
margin: 0 8px;
padding: 4px 0;
}
.createActionBtnContainer > input:first-child {
.createActionBtnRow > input:first-child {
margin-left: 0;
}
.createActionBtnContainer > input:last-child {
.createActionBtnRow > input:last-child {
margin-right: 0;
}
.deleteTaskBtn {
color: #f44335;
font-size: 0.85em;
}
+12 -1
View File
@@ -75,10 +75,21 @@ export const slice = createSlice({
const existingCard = parentList.cards.find(({ id }) => id === cardID);
existingCard.text = cardText;
},
deleteTask: (state, action) => {
const { text: cardText, cardID, listID: parentListID } = action.payload;
const parentList = state.lists.find(({ id }) => id === parentListID);
const existingCardIndex = parentList.cards.findIndex(({ id }) => id === cardID);
if (existingCardIndex > -1) {
parentList.cards.splice(existingCardIndex, 1);
}
}
}
});
export const { createList, createTask, editList, editTask } = slice.actions;
export const { createList, createTask, editList, editTask, deleteTask } = slice.actions;
export default slice.reducer;