@@ -15,14 +15,47 @@ let editID = "";
1515// ****** EVENT LISTENERS **********
1616// submit form
1717form . addEventListener ( "submit" , addItem ) ;
18+ // clear items
19+ clearBtn . addEventListener ( "click" , clearItems ) ;
1820
1921// ****** FUNCTIONS **********
2022function addItem ( e ) {
2123 e . preventDefault ( ) ;
2224 const value = grocery . value ;
2325 const id = new Date ( ) . getTime ( ) . toString ( ) ;
26+
2427 if ( value && ! editFlag ) {
25- console . log ( "add item to the list" ) ;
28+ const element = document . createElement ( "article" ) ;
29+ // add class
30+ element . classList . add ( "grocery-item" ) ;
31+ // add id
32+ const attr = document . createAttribute ( "data-id" ) ;
33+ attr . value = id ;
34+ element . setAttributeNode ( attr ) ;
35+ element . innerHTML = `<p class="title">${ value } </p>
36+ <div class="btn-container">
37+ <button type="button" class="edit-btn">
38+ <i class="fas fa-edit"></i>
39+ </button>
40+ <button type="button" class="delete-btn">
41+ <i class="fas fa-trash"></i>
42+ </button>
43+ </div>` ;
44+
45+ const deleteBtn = element . querySelector ( ".delete-btn" ) ;
46+ const editBtn = element . querySelector ( ".edit-btn" ) ;
47+ deleteBtn . addEventListener ( "click" , deleteItem ) ;
48+ editBtn . addEventListener ( "click" , editItem ) ;
49+ // append child
50+ list . appendChild ( element ) ;
51+ // display alert
52+ displayAlert ( "item added to the list" , "success" ) ;
53+ // show container
54+ container . classList . add ( "show-container" ) ;
55+ // add to local storage
56+ addToLocalStorage ( id , value ) ;
57+ // set back to default
58+ setBackToDefault ( ) ;
2659 } else if ( value && editFlag ) {
2760 console . log ( "editing" ) ;
2861 } else {
@@ -42,6 +75,71 @@ function displayAlert(text, action) {
4275 } , 1000 ) ;
4376}
4477
78+ // clear items
79+ function clearItems ( ) {
80+ const items = document . querySelectorAll ( ".grocery-item" ) ;
81+
82+ if ( items . length > 0 ) {
83+ items . forEach ( function ( item ) {
84+ list . removeChild ( item ) ;
85+ } ) ;
86+ }
87+ container . classList . remove ( "show-container" ) ;
88+ displayAlert ( "emptied list" , "danger" ) ;
89+ // localStorage.removeItem('list');
90+ }
91+
92+ // delete function
93+ function deleteItem ( e ) {
94+ const element = e . currentTarget . parentElement . parentElement ;
95+ const id = element . dataset . id ;
96+ list . removeChild ( element ) ;
97+
98+ if ( list . children . length === 0 ) {
99+ container . classList . remove ( "show-container" ) ;
100+ }
101+ displayAlert ( "item removed" , "danger" ) ;
102+ setBackToDefault ( ) ;
103+ // remove from local storage
104+ // removeFromLocalStorage(id);
105+ }
106+
107+ // edit function
108+ function editItem ( e ) {
109+ const element = e . currentTarget . parentElement . parentElement ;
110+
111+ // set edit items
112+ editElement = e . currentTarget . parentElement . previousElementSibling ;
113+ // set form value
114+ grocery . value = editElement . innerHTML ;
115+ let editFlag = true ;
116+ let editID = element . dataset . id ;
117+ submitBtn . textContent = "edit" ;
118+ }
119+
120+ // set back to default
121+ function setBackToDefault ( ) {
122+ console . log ( "set back to default" ) ;
123+ grocery . value = "" ;
124+ editFlag = false ;
125+ editID = "" ;
126+ submitBtn . textContent = "submit" ;
127+ }
128+
45129// ****** LOCAL STORAGE **********
130+ function addToLocalStorage ( id , value ) {
131+ //Check to if there is an existing todo list
132+ /* let todoList;
133+ if (!localStorage.getItem("todo-list")) {
134+ todoList = [];
135+ } else {
136+ todoList = JSON.parse(localStorage.getItem("todo-list"));
137+ }
138+
139+ todoList.push(todo);
140+ localStorage.setItem("todo-list", JSON.stringify(todoList)); */
141+ }
142+
143+ function removeFromLocalStorage ( id ) { }
46144
47145// ****** SETUP ITEMS **********
0 commit comments