-
Notifications
You must be signed in to change notification settings - Fork 467
/
Copy pathAppUi.js
65 lines (58 loc) · 1.48 KB
/
AppUi.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import React from 'react';
import { TodoCounter } from '../TodoCounter';
import { TodoSearch } from '../TodoSearch';
import { TodoList } from '../TodoList';
import { TodoItem } from '../TodoItem';
import { TodosLoading } from '../TodosLoading';
import { TodosError } from '../TodosError';
import { EmptyTodos } from '../EmptyTodos';
import { CreateTodoButton } from '../CreateTodoButton';
import { Modal } from '../Modal';
import { TodoForm } from '../TodoForm';
import { TodoContext } from '../TodoContext';
function AppUI() {
const {
loading,
error,
searchedTodos,
completeTodo,
deleteTodo,
openModal,
setOpenModal,
} = React.useContext(TodoContext);
return (
<>
<TodoCounter />
<TodoSearch />
<TodoList>
{loading && (
<>
<TodosLoading />
<TodosLoading />
<TodosLoading />
</>
)}
{error && <TodosError/>}
{(!loading && searchedTodos.length === 0) && <EmptyTodos />}
{searchedTodos.map(todo => (
<TodoItem
key={todo.text}
text={todo.text}
completed={todo.completed}
onComplete={() => completeTodo(todo.text)}
onDelete={() => deleteTodo(todo.text)}
/>
))}
</TodoList>
<CreateTodoButton
setOpenModal={setOpenModal}
/>
{openModal && (
<Modal>
<TodoForm/>
</Modal>
)}
</>
);
}
export { AppUI };