From cc5e365abf96f7e47bd9b5fc906f693866e68c6a Mon Sep 17 00:00:00 2001 From: Lewis England Date: Mon, 22 May 2023 15:40:09 +0100 Subject: [PATCH] feat: allow adding tasks to a task list --- src/components/tasklist/group.jsx | 21 ++++++++++++++++++++- src/components/tasklist/item.jsx | 4 ++-- src/components/tasklist/list.jsx | 2 +- src/components/tasklist/taskbox.jsx | 22 ++++++++++++++++++++++ 4 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 src/components/tasklist/taskbox.jsx diff --git a/src/components/tasklist/group.jsx b/src/components/tasklist/group.jsx index 75e4bb0a..a05732e7 100644 --- a/src/components/tasklist/group.jsx +++ b/src/components/tasklist/group.jsx @@ -2,22 +2,41 @@ import { useState } from "react"; import ErrorBoundary from "components/errorboundry"; import List from "components/tasklist/list"; +import TaskBox from "components/tasklist/taskbox"; export default function TaskListGroup({groupDetail, groupUpdate}) { + const [taskCount, setTaskCount] = useState(0) const [group, setGroup] = useState(groupDetail) + const groupName = Object.keys(group)[0] const groupTasks = Object.values(group)[0] + const addTask = (value) => { + const newTask = { + title: value, + complete: false + }; + groupTasks.push(newTask) + + setGroup(group); + setTaskCount(groupTasks.length) + groupUpdate(); + } + const listUpdate = () => { setGroup(group) groupUpdate() } + return ( -
+

{groupName}

+ + +
); } diff --git a/src/components/tasklist/item.jsx b/src/components/tasklist/item.jsx index b6169891..29b3094a 100644 --- a/src/components/tasklist/item.jsx +++ b/src/components/tasklist/item.jsx @@ -4,7 +4,7 @@ export default function Item({taskDetail, taskUpdate}) { const [task, setTask] = useState(taskDetail) const toggleComplete = () => { - task.checked = !task.checked; + task.complete = !task.complete; setTask(task) taskUpdate() } @@ -13,7 +13,7 @@ export default function Item({taskDetail, taskUpdate}) {
  • - +
    {task.title}
    diff --git a/src/components/tasklist/list.jsx b/src/components/tasklist/list.jsx index 6466c23a..d0f860ae 100644 --- a/src/components/tasklist/list.jsx +++ b/src/components/tasklist/list.jsx @@ -11,7 +11,7 @@ export default function List({listDetail, listUpdate}) { } return ( -
      +
        {tasks.map((task) => ( ))} diff --git a/src/components/tasklist/taskbox.jsx b/src/components/tasklist/taskbox.jsx new file mode 100644 index 00000000..2c68d6b5 --- /dev/null +++ b/src/components/tasklist/taskbox.jsx @@ -0,0 +1,22 @@ +import {useState} from "react"; + +export default function TaskBox({submitAction}) { + // const [tasks, setTasks] = useState(listDetail) + const [formVal, setFormVal] = useState("") + // let inputValue = useRef(undefined) + + const handleSubmit = (event) => { + // Stop the form from submitting and refreshing the page. + event.preventDefault(); + submitAction(formVal); + setFormVal(""); + } + + return ( +
        +
        + setFormVal(e.target.value)} /> +
        +
        + ); +} \ No newline at end of file