Skip to content

Commit c34ae9b

Browse files
author
Alexander Besse
committed
wesbos#15 Completed.
1 parent fd1d1ee commit c34ae9b

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

15 - LocalStorage/index-START.html

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,48 @@ <h2>LOCAL TAPAS</h2>
2828
<script>
2929
const addItems = document.querySelector('.add-items');
3030
const itemsList = document.querySelector('.plates');
31-
const items = [];
31+
const items = JSON.parse(localStorage.getItem('items')) || [];
32+
33+
function addItem(e) {
34+
e.preventDefault();
35+
const text = (this.querySelector('[name="item"]')).value;
36+
const item = {
37+
text,
38+
done: false,
39+
}
40+
41+
items.push(item);
42+
localStorage.setItem('items', JSON.stringify(items))
43+
populateList(items, itemsList);
44+
this.reset();
45+
}
46+
47+
function toggleDone(e) {
48+
const { target } = e;
49+
if(!target.matches('input')) return;
50+
const el = target;
51+
const { index } = el.dataset;
52+
items[index] .done = !items[index].done;
53+
localStorage.setItem('items', JSON.stringify(items))
54+
populateList(items, itemsList);
55+
}
56+
57+
function populateList(plates = [], platesList) {
58+
platesList.innerHTML = plates.map((plate, i) => {
59+
return `
60+
<li>
61+
<input type='checkbox' data-index='${i}' id="item${i}" ${plate.done ? 'checked' : ''} />
62+
<label for="item${i}">${plate.text}</label>
63+
</li>
64+
`;
65+
}).join("");
66+
}
67+
68+
addItems.addEventListener('submit', addItem);
69+
70+
populateList(items, itemsList);
71+
72+
itemsList.addEventListener('click', toggleDone);
3273

3374
</script>
3475

0 commit comments

Comments
 (0)