Skip to content

Commit 80a64f3

Browse files
committed
added solution to localStorage
1 parent 12bb6b8 commit 80a64f3

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

15 - LocalStorage/index-START.html

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,46 @@ <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')) || [];
3232

33+
function addItem(e){
34+
e.preventDefault();
35+
36+
const text = (this.querySelector('[name=item]')).value;
37+
38+
const item = {
39+
text: text, //ES6 text shorthand
40+
done: false
41+
};
42+
items.push(item);
43+
populateList(items,itemsList);
44+
localStorage.setItem('items', JSON.stringify(items));
45+
this.reset();
46+
}
47+
48+
function populateList(plates = [], platesList){
49+
platesList.innerHTML = plates.map((plate,i) => {
50+
return `
51+
<li>
52+
<input type="checkbox" data-index = "${i}" id="item${i}" ${plate.done ? 'checked="true"' : ''}"/>
53+
<label for="item${i}">${plate.text}</label>
54+
</li>
55+
`;
56+
}).join('');
57+
}
58+
59+
function toggleDone(e){
60+
if (!e.target.matches('input')) return;
61+
const el = e.target;
62+
const index = el.dataset.index;
63+
items[index].done = !items[index].done;
64+
localStorage.setItem('items', JSON.stringify(items));
65+
populateList(items,itemsList);
66+
}
67+
68+
addItems.addEventListener('submit', addItem );
69+
itemsList.addEventListener('click', toggleDone);
70+
populateList(items,itemsList);
3371
</script>
3472

3573

0 commit comments

Comments
 (0)