-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.js
More file actions
81 lines (67 loc) · 2.54 KB
/
index.js
File metadata and controls
81 lines (67 loc) · 2.54 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
let form = document.querySelector("form");
let ul = document.querySelector("ul");
let cardsData = JSON.parse(localStorage.getItem("cards")) || [];
form.addEventListener("submit", (event) => {
event.preventDefault();
let title = event.target.elements.title.value;
let category = event.target.elements.category.value;
cardsData.push({ title, category });
localStorage.setItem("cards", JSON.stringify(cardsData));
createUi(cardsData, ul);
});
function handleEdit(event, info, id, label) {
let elm = event.target;
let input = document.createElement("input");
input.value = info;
input.addEventListener("keyup", (e) => {
if (e.keyCode === 13) {
let updatedValue = e.target.value;
cardsData[id][label] = updatedValue;
createUi();
localStorage.setItem("cards", JSON.stringify(cardsData));
}
});
input.addEventListener("blur", (e) => {
let updatedValue = e.target.value;
cardsData[id][label] = updatedValue;
createUi();
localStorage.setItem("cards", JSON.stringify(cardsData));
});
let parent = event.target.parentElement;
parent.replaceChild(input, elm);
}
function createUi(data = cardsData, root = ul) {
root.innerHTML = "";
let fragment = new DocumentFragment();
data.forEach((cardsInfo, index) => {
let cardContainer = document.createElement("div");
cardContainer.classList.add("card-container");
let li = document.createElement("li");
let p = document.createElement("p");
p.addEventListener("dblclick", (event) => {
handleEdit(event, cardsInfo.category, index, 'category');
});
p.innerText = cardsInfo.category;
let h2 = document.createElement("h2");
h2.innerText = cardsInfo.title;
h2.addEventListener("dblclick", (event) => {
handleEdit(event, cardsInfo.title, index, 'title');
});
li.append(h2, p);
cardContainer.appendChild(li);
let delButton = document.createElement("button");
delButton.innerText = "DELETE";
delButton.addEventListener("click", () => {
// Remove the card from the array
cardsData.splice(index, 1);
// Update localStorage
localStorage.setItem("cards", JSON.stringify(cardsData));
// Update the UI
createUi();
});
cardContainer.appendChild(delButton);
fragment.appendChild(cardContainer);
});
root.append(fragment);
}
createUi(cardsData, ul);