Add newTaskcardPrompt to create new task

This commit is contained in:
2020-03-30 17:21:51 +05:30
parent 1770328ad8
commit 04ad79d89f
3 changed files with 42 additions and 2 deletions
@@ -0,0 +1,29 @@
import React, { useState } from "react";
import { useDispatch } from "react-redux";
import { createTask } from "../../storeSlices/boardSlice";
import styles from "./TaskCard.module.css";
export function NewTaskCardPrompt({ listID }) {
const dispatch = useDispatch();
const [newCardText, setNewCardText] = useState("");
return (
<div className={styles.listContainer}>
<input
type="text"
placeholder="Create task"
value={newCardText}
onChange={e => setNewCardText(e.target.value)}
onKeyPress={e => {
if (newCardText.trim().length > 0 && e.key === "Enter") {
dispatch(createTask({ text: newCardText, listID }));
setNewCardText("");
}
}}
></input>
</div>
);
}
+2 -1
View File
@@ -4,6 +4,7 @@ import { useSelector, useDispatch } from "react-redux";
import { createList } from "../../storeSlices/boardSlice"; import { createList } from "../../storeSlices/boardSlice";
import { TaskCard } from "../TaskCard/TaskCard"; import { TaskCard } from "../TaskCard/TaskCard";
import { NewTaskCardPrompt } from "../TaskCard/NewTaskCardPrompt";
import styles from "./TaskList.module.css"; import styles from "./TaskList.module.css";
@@ -14,10 +15,10 @@ export function TaskList({ listData }) {
<div className={styles.listContainer}> <div className={styles.listContainer}>
<div className={styles.listName}>{listData.name}</div> <div className={styles.listName}>{listData.name}</div>
<div className={styles.cardsContainer}> <div className={styles.cardsContainer}>
{/* Refactor to card component */}
{listData.cards.map(cardData => ( {listData.cards.map(cardData => (
<TaskCard key={cardData.id} cardData={cardData} /> <TaskCard key={cardData.id} cardData={cardData} />
))} ))}
<NewTaskCardPrompt listID={listData.id} />
</div> </div>
</div> </div>
); );
+11 -1
View File
@@ -48,10 +48,20 @@ export const slice = createSlice({
name, name,
cards: [] cards: []
}); });
},
createTask: (state, action) => {
const { text: cardText, listID: parentListID } = action.payload;
const parentList = state.lists.find(({ id }) => id === parentListID);
parentList.cards.push({
id: `Card #${generateID()}`,
text: cardText
});
} }
} }
}); });
export const { createList } = slice.actions; export const { createList, createTask } = slice.actions;
export default slice.reducer; export default slice.reducer;