-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
95 lines (82 loc) · 3.16 KB
/
script.js
File metadata and controls
95 lines (82 loc) · 3.16 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
document.addEventListener("DOMContentLoaded", () =>
{
const taskInput = document.getElementById("task-input");
const addTaskBtn = document.getElementById("add-task-btn");
const taskList = document.getElementById("task-list");
const emptyImage = document.querySelector(".empty-image");
const todosContainer = document.querySelector(".todos-container");
const toggleEmptyState = () => {
};
const saveTaskToLocalStorage = () => {
const task = Array.from(taskList.querySelectorAll("li")).map(li => ({
text: li.querySelector("span").textContent,
completed: li.querySelector(".checkbox").checked
}));
localStorage.setItem("tasks", JSON.stringify(task));
};
const loadTasksFromLocalStorage = () => {
const savedTasks = JSON.parse(localStorage.getItem("tasks")) || [];
savedTasks.forEach(({ text, completed }) => AddTask(text, completed, false));
toggleEmptyState();
// updateProgess();
}
const AddTask = (text, completed = false) => {
const taskText = text || taskInput.value.trim();
console.log("Añadiendo tarea:", taskText);
if(!taskText) {
console.log(taskText)
return;
}
const li = document.createElement("li");
li.innerHTML = `
<input type="checkbox" class="checkbox" ${completed ? "checked" : ""} />
<span>${taskText}</span>
<div class="task-buttons">
<button class="edit-btn"><i class="fa-solid fa-pen"></i></button>
<button class="delete-btn"><i class="fa-solid fa-trash"></i></button>
</div>
`;
const checkbox = li.querySelector(".checkbox");
const editBtn = li.querySelector(".edit-btn");
if (completed) {
li.classList.add("completed");
editBtn.disabled = true;
editBtn.style.opacity = "0.5";
editBtn.style.pointerEvents = "none";
}
checkbox.addEventListener("change", () => {
const isChecked = checkbox.checked;
li.classList.toggle("completed", isChecked);
editBtn.disabled = isChecked;
editBtn.style.opacity = isChecked ? "0.5" : "1";
editBtn.style.pointerEvents = isChecked ? "none" : "auto";
// updateProgess();
saveTaskToLocalStorage();
});
editBtn.addEventListener("click", () => {
if(!checkbox.checked) {
taskInput.value = li.querySelector("span").textContent;
li.remove();
toggleEmptyState();
saveTaskToLocalStorage();
}
})
li.querySelector(".delete-btn").addEventListener("click", () => {
li.classList.add("falling");
setTimeout(() => {
li.remove();
toggleEmptyState();
}, 400);
saveTaskToLocalStorage();
});
taskList.appendChild(li);
taskInput.value = "";
// updateProgess(checkCompletion);
saveTaskToLocalStorage();
};
addTaskBtn.addEventListener("click", (e) => {
e.preventDefault();
AddTask();
});
loadTasksFromLocalStorage();
});