@@ -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