File tree Expand file tree Collapse file tree 1 file changed +42
-1
lines changed Expand file tree Collapse file tree 1 file changed +42
-1
lines changed Original file line number Diff line number Diff line change @@ -28,7 +28,48 @@ <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' ) ) || [ ] ;
32+
33+ function addItem ( e ) {
34+ e . preventDefault ( ) ;
35+ const text = ( this . querySelector ( '[name="item"]' ) ) . value ;
36+ const item = {
37+ text,
38+ done : false ,
39+ }
40+
41+ items . push ( item ) ;
42+ localStorage . setItem ( 'items' , JSON . stringify ( items ) )
43+ populateList ( items , itemsList ) ;
44+ this . reset ( ) ;
45+ }
46+
47+ function toggleDone ( e ) {
48+ const { target } = e ;
49+ if ( ! target . matches ( 'input' ) ) return ;
50+ const el = target ;
51+ const { index } = el . dataset ;
52+ items [ index ] . done = ! items [ index ] . done ;
53+ localStorage . setItem ( 'items' , JSON . stringify ( items ) )
54+ populateList ( items , itemsList ) ;
55+ }
56+
57+ function populateList ( plates = [ ] , platesList ) {
58+ platesList . innerHTML = plates . map ( ( plate , i ) => {
59+ return `
60+ <li>
61+ <input type='checkbox' data-index='${ i } ' id="item${ i } " ${ plate . done ? 'checked' : '' } />
62+ <label for="item${ i } ">${ plate . text } </label>
63+ </li>
64+ ` ;
65+ } ) . join ( "" ) ;
66+ }
67+
68+ addItems . addEventListener ( 'submit' , addItem ) ;
69+
70+ populateList ( items , itemsList ) ;
71+
72+ itemsList . addEventListener ( 'click' , toggleDone ) ;
3273
3374</ script >
3475
You can’t perform that action at this time.
0 commit comments