-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
90 lines (77 loc) · 2.89 KB
/
script.js
File metadata and controls
90 lines (77 loc) · 2.89 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
// Initialize
const taskList = document.getElementById("taskList");
const taskInput = document.getElementById("taskInput");
// Functions
const getCookie = (name) => {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
return parts.length === 2 ? parts.pop().split(';').shift() : null;
};
const setCookie = (name, value, days) => {
const expires = new Date(Date.now() + days * 864e5).toUTCString();
document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/`;
};
const addTask = () => {
const taskInputValue = taskInput.value.trim();
if (taskInputValue) {
const listItem = document.createElement("li");
listItem.innerHTML = `<input type='checkbox'><label>${taskInputValue}</label>`;
taskList.appendChild(listItem);
updateCookies();
taskInput.value = "";
}
};
const deleteTask = () => {
if (confirm("Validez-vous la suppression ?")) {
document.querySelectorAll("input[type='checkbox']:checked").forEach(el => el.parentNode.remove());
updateCookies();
}
};
const clearTasks = () => {
taskList.innerHTML = "";
setCookie("taskList", "", 7);
};
const updateCookies = () => {
const tasks = Array.from(taskList.children).map(item => {
const label = item.querySelector("label").innerText;
const checked = item.querySelector("input[type='checkbox']").checked;
return { label, checked };
});
setCookie("taskList", JSON.stringify(tasks), 7);
};
const loadTasks = () => {
const savedTasks = getCookie("taskList");
if (savedTasks) {
const tasks = JSON.parse(decodeURIComponent(savedTasks));
tasks.forEach(task => {
const listItem = document.createElement("li");
listItem.innerHTML = `<input type='checkbox' ${task.checked ? 'checked' : ''}><label>${task.label}</label>`;
taskList.appendChild(listItem);
});
}
};
// Events
window.onload = loadTasks;
taskInput.addEventListener("keypress", (event) => {
if (event.key === "Enter") {
event.preventDefault();
addTask();
}
});
document.addEventListener("keydown", (event) => {
if (event.key === "Delete" && document.activeElement !== taskInput) {
event.preventDefault();
deleteTask();
}
});
taskList.addEventListener("change", (event) => {
if (event.target.type === 'checkbox') {
event.target.parentElement.classList.toggle("checked", event.target.checked);
updateCookies(); // Update cookies on checkbox change
}
});
const toggleFlexDisplay = (display) => {
document.querySelectorAll(".flex").forEach(el => el.style.display = display);
};
window.addEventListener("beforeprint", () => toggleFlexDisplay("none"));
window.addEventListener("afterprint", () => toggleFlexDisplay("flex"));