-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
120 lines (107 loc) · 3.49 KB
/
index.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
const container = document.querySelector('.container');
function TodoList() {
const [todo, setTodo] = React.useState('');
const [todoArray, setTodoArray] = React.useState([]);
const [edit, setEdit] = React.useState({});
const [warnMsg, setWarnMsg] = React.useState('');
// create
function createTodo(e) {
e.preventDefault();
if (!todo) {
return setWarnMsg('You need provide todo');
}
function createId() {
return Date.now();
}
if (edit.id) {
const updateTodo = {
...edit,
description: todo,
done: false
};
const searchIndex = todoArray.findIndex(function (todo) {
return todo.id == edit.id;
});
const updateTodos = [...todoArray];
updateTodos[searchIndex] = updateTodo;
setTodoArray(updateTodos);
return cancelEdit();
} else {
setTodoArray([...todoArray, {
id: createId(),
description: todo,
done: false
}]);
}
setTodo('');
setWarnMsg('');
}
// edit
function editTodo(todo) {
setEdit(todo);
setTodo(todo.description);
}
// delete
function deleteTodo(todoId) {
const filterTodo = todoArray.filter(function (todo) {
return todo.id != todoId;
});
setTodoArray(filterTodo);
if (edit.id) {
cancelEdit();
}
}
// cancelEdit
function cancelEdit() {
setTodo('');
setEdit({});
setWarnMsg('');
}
function checkTodo(todo) {
const updateTodo = {
...todo,
done: todo.done ? false : true
};
const searchIndex = todoArray.findIndex(function (todoCurrent) {
return todoCurrent.id == todo.id;
});
const updateTodos = [...todoArray];
updateTodos[searchIndex] = updateTodo;
return setTodoArray(updateTodos);
}
return React.createElement("div", null, React.createElement("h1", {
className: "title"
}, "Todo List"), React.createElement("form", {
onSubmit: createTodo
}, React.createElement("textarea", {
type: "text",
value: todo,
placeholder: warnMsg || 'Learning React',
onChange: function (e) {
setTodo(e.target.value);
}
}), React.createElement("button", {
className: "form-button-1",
type: "submit"
}, edit.id ? 'edit' : 'add'), edit.id && React.createElement("button", {
className: "form-button-2",
onClick: cancelEdit
}, "cancel")), todoArray.map(function (getTodo) {
return React.createElement("div", {
className: "todolistAll",
key: getTodo.id
}, React.createElement("div", {
className: getTodo.done ? 'check' : ''
}, getTodo.description), React.createElement("button", {
className: "todolistAll-btn-1",
onClick: checkTodo.bind(this, getTodo)
}, "Check"), React.createElement("button", {
className: "todolistAll-btn-2",
onClick: editTodo.bind(this, getTodo)
}, "Edit"), React.createElement("button", {
className: "todolistAll-btn-3",
onClick: deleteTodo.bind(this, getTodo.id)
}, "Delete"));
}));
}
ReactDOM.render(React.createElement(TodoList, null), container);