@@ -21,14 +21,51 @@ <h2>LOCAL TAPAS</h2>
2121 </ ul >
2222 < form class ="add-items ">
2323 < input type ="text " name ="item " placeholder ="Item Name " required >
24- < input type ="submit " value ="+ Add Item ">
24+ < input type ="submit " value ="+ Add Item ">
2525 </ form >
2626 </ div >
2727
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 renderList ( items , itemsList ) {
34+ itemsList . innerHTML = items . map ( ( item , i ) => {
35+ return `
36+ <li>
37+ <input type="checkbox" data-index=${ i } id="item${ i } " ${ item . done ? 'checked' : '' } />
38+ <label for="item${ i } ">${ item . text } </label>
39+ </li>`
40+ } ) . join ( '' ) ;
41+ }
42+
43+ function submitListener ( e ) {
44+ e . preventDefault ( ) ;
45+ const text = ( this . querySelector ( '[name=item]' ) ) . value ;
46+ items . push ( {
47+ text,
48+ done : false
49+ } ) ;
50+ localStorage . setItem ( 'items' , JSON . stringify ( items ) ) ;
51+ renderList ( items , itemsList ) ;
52+ this . reset ( ) ;
53+ }
54+
55+ function listClickListener ( e ) {
56+ if ( ! e . target . matches ( 'input' ) ) {
57+ return ;
58+ }
59+ console . log ( e ) ;
60+ const index = e . target . dataset . index ;
61+ items [ index ] . done = ! items [ index ] . done ;
62+ localStorage . setItem ( 'items' , JSON . stringify ( items ) ) ;
63+ renderList ( items , itemsList ) ;
64+ }
65+
66+ addItems . addEventListener ( 'submit' , submitListener ) ;
67+ itemsList . addEventListener ( 'click' , listClickListener ) ;
68+ renderList ( items , itemsList ) ;
3269
3370</ script >
3471
0 commit comments