@@ -22,13 +22,17 @@ <h2>LOCAL TAPAS</h2>
22
22
< form class ="add-items ">
23
23
< input type ="text " name ="item " placeholder ="Item Name " required >
24
24
< input type ="submit " value ="+ Add Item ">
25
+ < input class ="check-all " type ="button " value ="Check All ">
26
+ < input class ="uncheck-all " type ="button " value ="Uncheck All ">
27
+ < input class ="delete-all " type ="button " value ="Delete All ">
28
+
25
29
</ form >
26
30
</ div >
27
31
28
32
< script >
29
33
const addItems = document . querySelector ( '.add-items' ) ;
30
34
const itemsList = document . querySelector ( '.plates' ) ;
31
- const items = [ ] ;
35
+ var items = JSON . parse ( localStorage . getItem ( 'items' ) ) || [ ] ;
32
36
33
37
function addItem ( e ) {
34
38
e . preventDefault ( ) ;
@@ -40,23 +44,60 @@ <h2>LOCAL TAPAS</h2>
40
44
items . push ( item ) ;
41
45
this . reset ( ) ;
42
46
populateList ( items , itemsList ) ;
47
+ localStorage . setItem ( 'items' , JSON . stringify ( items ) ) ;
43
48
console . log ( text ) ;
44
49
}
45
50
46
51
function populateList ( plates = [ ] , plateslist ) {
47
52
plateslist . innerHTML = plates . map ( ( plate , i ) => {
48
53
return `
49
54
<li>
50
- <label>${ plate . text } </label>
55
+ <input type="checkbox" data-index=${ i } id="item${ i } " ${ plate . done ? 'checked' : '' } >
56
+ <label for="item${ i } ">${ plate . text } </label>
51
57
</li>
52
58
` ;
53
59
} ) . join ( '' ) ;
54
60
}
55
-
61
+
62
+ function toggleDone ( e ) {
63
+ if ( ! e . target . matches ( 'input' ) ) return ;
64
+ const el = e . target ;
65
+ const index = el . dataset . index ;
66
+ items [ index ] . done = ! items [ index ] . done ;
67
+ populateList ( items , itemsList ) ;
68
+ localStorage . setItem ( 'items' , JSON . stringify ( items ) ) ;
69
+ console . log ( el . dataset . index ) ;
70
+ }
56
71
addItems . addEventListener ( 'submit' , addItem ) ;
72
+ itemsList . addEventListener ( 'click' , toggleDone ) ;
73
+ populateList ( items , itemsList ) ;
57
74
75
+
76
+ const checkAllBtn = document . querySelector ( '.check-all' ) ;
77
+ const unCheckAllBtn = document . querySelector ( '.uncheck-all' ) ;
78
+ const deleteAllBtn = document . querySelector ( '.delete-all' ) ;
79
+
80
+ checkAllBtn . addEventListener ( 'click' , ( ) => {
81
+ items . forEach ( item => {
82
+ item . done = true ;
83
+ } ) ;
84
+ populateList ( items , itemsList ) ;
85
+ localStorage . setItem ( 'items' , JSON . stringify ( items ) ) ;
86
+ } ) ;
87
+
88
+ unCheckAllBtn . addEventListener ( 'click' , ( ) => {
89
+ items . forEach ( item => {
90
+ item . done = false ;
91
+ } ) ;
92
+ populateList ( items , itemsList ) ;
93
+ localStorage . setItem ( 'items' , JSON . stringify ( items ) ) ;
94
+ } ) ;
95
+
96
+ deleteAllBtn . addEventListener ( 'click' , ( ) => {
97
+ items = [ ] ;
98
+ populateList ( items , itemsList ) ;
99
+ localStorage . setItem ( 'items' , JSON . stringify ( items ) ) ;
100
+ } ) ;
58
101
</ script >
59
-
60
-
61
102
</ body >
62
103
</ html >
0 commit comments