From 27be99d359d66e0a5e946e9a4593324078ceabc1 Mon Sep 17 00:00:00 2001 From: dovchar Date: Fri, 15 Mar 2024 13:15:26 +0200 Subject: [PATCH 1/2] pull requst issue-1 --- App.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 App.js diff --git a/App.js b/App.js new file mode 100644 index 0000000..c056b5c --- /dev/null +++ b/App.js @@ -0,0 +1,27 @@ +import React, { useEffect, useState } from 'react'; +import TaskForm from './TaskForm'; +import TaskList from './TaskList'; +import { fetchTasks } from './api'; + +const App = () => { + const [tasks, setTasks] = useState([]); + + const loadTasks = async () => { + const tasks = await fetchTasks(); + setTasks(tasks); + }; + + useEffect(() => { + loadTasks(); + }, []); + + return ( +
+

Todo List

+ + +
+ ); +}; + +export default App; From f9d8ec99576fbdbc8454dd0dab8279c7ed274e10 Mon Sep 17 00:00:00 2001 From: Dmytro Date: Wed, 14 Aug 2024 17:06:42 +0300 Subject: [PATCH 2/2] new commit --- App.js | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/App.js b/App.js index c056b5c..f927186 100644 --- a/App.js +++ b/App.js @@ -25,3 +25,92 @@ const App = () => { }; export default App; + +import React, { useState } from 'react'; +import { createTask } from './api'; + +const TaskForm = ({ onTaskAdded }) => { + const [task, setTask] = useState(''); + + const handleSubmit = async (e) => { + e.preventDefault(); + if (!task) return; + await createTask({ name: task }); + setTask(''); + onTaskAdded(); + }; + + return ( +
+

Todo List

+
+ setTask(e.target.value)} + placeholder="Enter todo" + className="border-2 border-gray-300 bg-white h-10 px-5 pr-16 rounded-lg text-sm focus:outline-none" + /> + +
+
+ ); +}; + +export default TaskForm; + +const TaskList = ({ tasks, onEdit, onDelete, onToggleComplete }) => { + return ( +
+
+

TODO

+
+ {tasks.filter(task => !task.completed).map((task) => ( +
+
+ onToggleComplete(task.id)} + className="mr-2" + /> + {task.name} +
+
+ + +
+
+ ))} +
+
+
+

COMPLETED

+
+ {tasks.filter(task => task.completed).map((task) => ( +
+
+ onToggleComplete(task.id)} + className="mr-2" + /> + {task.name} +
+
+ + +
+
+ ))} +
+
+
+ ); +}; + +export default TaskList; +