diff --git a/src/components/filterComponent/filter.js b/src/components/filterComponent/filter.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/components/listComponent/list.js b/src/components/listComponent/list.js
index f6ee5af..631786c 100644
--- a/src/components/listComponent/list.js
+++ b/src/components/listComponent/list.js
@@ -1,20 +1,32 @@
import React from 'react';
-const List = ({ todos, deleteTd, set, deletedelements, allelements, activeelements }) => {
- const listItems = todos.map((todo, index) =>
-
-
{todo}
-
-
+const List = ({
+ todos,
+ toggleCompleted,
+ filterCompleted,
+ filterNotCompleted,
+ getHistory,
+}) => {
+ const listItems = todos.map((todo) =>
+ toggleCompleted(todo.id)}
+ style={{
+ textDecoration: todo.completed ? 'line-through' : 'none'
+ }}
+ >
+ {todo.text}
+
);
+
return (
-
-
-
+
+
+
);
}
diff --git a/src/components/mainscreenComponent/main.js b/src/components/mainscreenComponent/main.js
index 116e4ed..9d49453 100644
--- a/src/components/mainscreenComponent/main.js
+++ b/src/components/mainscreenComponent/main.js
@@ -1,30 +1,18 @@
-import React, { useState } from 'react';
+import React from 'react';
import List from '../listComponent/list';
import Input from '../inputComponent/input';
import useTodostate from '../useTodostate';
-let active;
-
const Main = () => {
const {
todos,
addTodo,
- deleteTodo,
- setTodo,
- deletedelement,
- allelement,
- activeelement,
+ toggleCompleted,
+ filterCompleted,
+ filterNotCompleted,
+ getHistory,
} = useTodostate([]);
- if (activeelement.length === 0) {
- active = allelement;
- } else {
- active = activeelement;
- }
-
-
-
-
return (
{
/>
);
diff --git a/src/components/useTodostate.js b/src/components/useTodostate.js
index 280b6f7..b79db92 100644
--- a/src/components/useTodostate.js
+++ b/src/components/useTodostate.js
@@ -1,30 +1,66 @@
-import React, { useState } from 'react';
+import { useState } from 'react';
-export default initialTodo => {
- const [todos, setTodos] = useState(initialTodo);
- const [allelement, setAllelement] = useState([]);
- const [deletedelement, setDeletedelement] = useState([]);
- const [activeelement, setActiveelement] = useState([]);
+let initialid = 0;
+
+const useTodostate = () => {
+ const [todos, setTodos] = useState([]);
+ const [history, setHistory] = useState([]);
return {
todos,
- deletedelement,
- allelement,
- activeelement,
+ history,
addTodo: todoText => {
- setTodos([...todos, todoText]);
- setAllelement([...allelement, todoText]);
+ const todo = {
+ // id: Date.now(),
+ id: initialid++,
+ text: todoText,
+ completed: false,
+ deleted: false,
+ };
+ setTodos([
+ ...todos,
+ todo,
+ ]);
+ setHistory([
+ ...history,
+ todo,
+ ]);
+ },
+ toggleCompleted: id => {
+ const toggled = history.map(todo =>
+ (todo.id === id)
+ ? { ...todo, completed: !todo.completed }
+ : todo
+ )
+ setHistory(toggled);
+ setTodos(toggled);
+ },
+ toggleDeleted: id => {
+ const toggled = history.map(todo => {
+ if (todo.id === id) {
+ return {
+ ...todo,
+ deleted: !todo.deleted
+ };
+ }
+ return todo;
+ });
+ setHistory(toggled);
+ setTodos(toggled);
},
- deleteTodo: deleteIndex => {
- const deletednewTodo = todos.filter((todo, index) => index !== deleteIndex);
- setActiveelement(deletednewTodo);
- setTodos(deletednewTodo);
- const deleted = todos.filter((todo, index) => index === deleteIndex);
- setDeletedelement([...deletedelement, deleted]);
+ filterCompleted: () => {
+ const completed = history.filter(todo => todo.completed === true);
+ setTodos(completed);
},
- setTodo: element => {
- setTodos(element);
+ filterNotCompleted: () => {
+ const completed = history.filter(todo => todo.completed === false);
+ setTodos(completed);
+ },
+ getHistory: () => {
+ setTodos(history);
},
};
};
+
+export default useTodostate;