diff --git a/src/features/TaskCard/CreateOrEditTaskCard.js b/src/features/TaskCard/CreateOrEditTaskCard.js index 9d2b789..96d45bc 100644 --- a/src/features/TaskCard/CreateOrEditTaskCard.js +++ b/src/features/TaskCard/CreateOrEditTaskCard.js @@ -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,8 +98,21 @@ export function CreateOrEditTaskCard({ onChange={e => setNewCardText(e.target.value)} >
- - +
+ + +
+ {/* Show delete button onlyin edit mode */} + {!isCreateMode ? ( +
+ +
+ ) : null}
)} diff --git a/src/features/TaskCard/TaskCard.module.css b/src/features/TaskCard/TaskCard.module.css index 0d916d6..f84756c 100644 --- a/src/features/TaskCard/TaskCard.module.css +++ b/src/features/TaskCard/TaskCard.module.css @@ -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; +} diff --git a/src/storeSlices/boardSlice.js b/src/storeSlices/boardSlice.js index 91e445e..112fd98 100644 --- a/src/storeSlices/boardSlice.js +++ b/src/storeSlices/boardSlice.js @@ -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;