Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b1adea1

Browse files
committed
adding script wesbos#15
1 parent bfca6fa commit b1adea1

File tree

2 files changed

+82
-2
lines changed

2 files changed

+82
-2
lines changed

15 - LocalStorage/index-START.html

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,92 @@ <h2>LOCAL TAPAS</h2>
2323
<input type="text" name="item" placeholder="Item Name" required>
2424
<input type="submit" value="+ Add Item">
2525
</form>
26+
<div>
27+
<button onclick="checkAll()">Check All</button>
28+
<button onclick="uncheckAll()">Uncheck All</button>
29+
<button onclick="deleteList()">Delete List</button>
30+
</div>
2631
</div>
2732

2833
<script>
2934
const addItems = document.querySelector('.add-items');
3035
const itemsList = document.querySelector('.plates');
31-
const items = [];
36+
const items = JSON.parse(localStorage.getItem('items')) || [];
37+
38+
function checkAll() {
39+
items.forEach(item => {
40+
item.done = true;
41+
});
42+
populateList(items, itemsList);
43+
localStorage.setItem('items',JSON.stringify(items));
44+
}
45+
46+
function uncheckAll() {
47+
items.forEach(item => {
48+
item.done = false;
49+
});
50+
populateList(items, itemsList);
51+
localStorage.setItem('items',JSON.stringify(items));
52+
}
53+
54+
function deleteList() {
55+
//Remove items from list
56+
while(items.length > 0) {
57+
items.pop();
58+
}
59+
//Add input to the items list
60+
populateList(items, itemsList);
61+
//Save item into local storage
62+
localStorage.setItem('items',JSON.stringify(items))
63+
}
64+
65+
function addItem(e) {
66+
//Stops page reloading on form submission
67+
e.preventDefault();
68+
//Gets the value of the input
69+
const text = (this.querySelector('[name=item]')).value;
70+
71+
const item = {
72+
text, //ES6 shortcut property
73+
done: false
74+
}
75+
//Add input to item list
76+
items.push(item);
77+
//Add input to the items list
78+
populateList(items, itemsList);
79+
//Save item into local storage
80+
localStorage.setItem('items',JSON.stringify(items));
81+
//Resets the input of the form input
82+
this.reset();
83+
}
84+
85+
function populateList(plates = [], platesList) {
86+
platesList.innerHTML = plates.map((plate, i) => {
87+
return `
88+
<li>
89+
<input type="checkbox" data-index=${i} id="item${i}" ${plate.done ? 'checked' : ''} />
90+
<label for="item${i}">${plate.text}</label>
91+
</li>
92+
`;
93+
}).join('');
94+
}
95+
96+
function toggleDone(e) {
97+
if(!e.target.matches('input')) return; //skip unless its the input
98+
const el = e.target;
99+
const index = el.dataset.index;
100+
//Change the done property
101+
items[index].done = !items[index].done;
102+
//Update local storage
103+
localStorage.setItem('items',JSON.stringify(items));
104+
//Update the UI
105+
populateList(items, itemsList);
106+
}
107+
108+
addItems.addEventListener('submit', addItem);
109+
itemsList.addEventListener('click', toggleDone);
110+
111+
populateList(items, itemsList);
32112

33113
</script>
34114

15 - LocalStorage/style.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
}
6565

6666
.plates input:checked + label:before {
67-
content: '🌮';
67+
content: '';
6868
}
6969

7070
.add-items {

0 commit comments

Comments
 (0)