-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
114 lines (92 loc) · 2.81 KB
/
index.js
File metadata and controls
114 lines (92 loc) · 2.81 KB
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
const taskInput = document.getElementById("taskInput");
const taskForm = document.getElementById("taskForm");
const taskContainer = document.querySelector(".taskContainer");
let tasks = [];
const storedTasks = localStorage.getItem("tasks");
if (storedTasks) {
tasks = JSON.parse(storedTasks);
renderTasks();
}
function saveTasks() {
localStorage.setItem("tasks", JSON.stringify(tasks));
}
function renderTasks() {
taskContainer.innerHTML = "";
tasks.forEach((task) => {
let taskList = document.createElement("li");
taskList.classList.add("tasks");
let completeBtn = document.createElement("button");
completeBtn.classList.add("icon-btn", "complete-btn");
completeBtn.textContent = "✓";
let deleteBtn = document.createElement("button");
deleteBtn.classList.add("icon-btn", "delete-btn");
deleteBtn.textContent = "🗑";
let editBtn = document.createElement("button");
editBtn.classList.add("icon-btn", "edit-btn");
editBtn.textContent = "✏️";
let textSpan;
if (task.isEditing) {
const editInput = document.createElement("input");
editInput.type = "text";
editInput.value = task.taskName;
editInput.classList.add("edit-input");
taskList.appendChild(editInput);
editBtn.textContent = "💾"; // save icon
} else {
textSpan = document.createElement("span");
textSpan.classList.add("task-text");
textSpan.textContent = task.taskName;
if (task.completed) {
textSpan.classList.add("completed");
}
taskList.appendChild(textSpan);
}
taskList.appendChild(completeBtn);
taskList.appendChild(deleteBtn);
taskList.appendChild(editBtn);
taskContainer.appendChild(taskList);
completeBtn.addEventListener("click", function (e) {
task.completed = !task.completed;
saveTasks();
renderTasks();
});
deleteBtn.addEventListener("click", function (e) {
tasks = tasks.filter((t) => t.id !== task.id);
saveTasks();
renderTasks();
});
editBtn.addEventListener("click", function (e) {
if (!task.isEditing) {
task.isEditing = true;
renderTasks();
} else {
const editInput = taskList.querySelector("input");
const updatedValue = editInput.value.trim();
if (updatedValue !== "") {
task.taskName = updatedValue;
}
task.isEditing = false;
saveTasks();
renderTasks();
}
});
});
}
taskForm.addEventListener("submit", function (e) {
e.preventDefault();
addTask();
});
function addTask() {
let newTask = taskInput.value.trim();
if (newTask === "") return;
let taskObj = {
id: Date.now(),
taskName: newTask,
completed: false,
isEditing: false,
};
tasks.push(taskObj);
saveTasks();
taskInput.value = "";
renderTasks();
}