@@ -9,66 +9,154 @@ const restaurantMenu = [
9
9
} ,
10
10
{
11
11
id : 2 ,
12
- title : "diner double" ,
12
+ name : "diner double" ,
13
13
category : "lunch" ,
14
14
cost : 13.99 ,
15
15
image : '../images/restaurant-menu/item-2.jpeg' ,
16
16
desc : `vaporware iPhone mumblecore selvage raw denim slow-carb leggings gochujang helvetica man braid jianbing. Marfa thundercats ` ,
17
17
} ,
18
18
{
19
19
id : 3 ,
20
- title : "godzilla milkshake" ,
20
+ name : "godzilla milkshake" ,
21
21
category : "shakes" ,
22
22
cost : 6.99 ,
23
23
image : '../images/restaurant-menu/item-3.jpeg' ,
24
- desc : `ombucha chillwave fanny pack 3 wolf moon street art photo booth before they sold out organic viral.` ,
24
+ desc : `Ombucha chillwave fanny pack 3 wolf moon street art photo booth before they sold out organic viral.` ,
25
25
} ,
26
26
{
27
27
id : 4 ,
28
- title : "country delight" ,
28
+ name : "country delight" ,
29
29
category : "breakfast" ,
30
30
cost : 20.99 ,
31
31
image : '../images/restaurant-menu/item-4.jpeg' ,
32
32
desc : `Shabby chic keffiyeh neutra snackwave pork belly shoreditch. Prism austin mlkshk truffaut, ` ,
33
33
} ,
34
34
{
35
35
id : 5 ,
36
- title : "egg attack" ,
36
+ name : "egg attack" ,
37
37
category : "lunch" ,
38
38
cost : 22.99 ,
39
39
image : '../images/restaurant-menu/item-5.jpeg' ,
40
- desc : `franzen vegan pabst bicycle rights kickstarter pinterest meditation farm-to-table 90's pop-up ` ,
40
+ desc : `Franzen vegan pabst bicycle rights kickstarter pinterest meditation farm-to-table 90's pop-up ` ,
41
41
} ,
42
42
{
43
43
id : 6 ,
44
- title : "oreo dream" ,
44
+ name : "oreo dream" ,
45
45
category : "shakes" ,
46
46
cost : 18.99 ,
47
47
image : '../images/restaurant-menu/item-6.jpeg' ,
48
48
desc : `Portland chicharrones ethical edison bulb, palo santo craft beer chia heirloom iPhone everyday` ,
49
49
} ,
50
50
{
51
51
id : 7 ,
52
- title : "bacon overflow" ,
52
+ name : "bacon overflow" ,
53
53
category : "breakfast" ,
54
54
cost : 8.99 ,
55
55
image : '../images/restaurant-menu/item-7.jpeg' ,
56
- desc : `carry jianbing normcore freegan. Viral single-origin coffee live-edge, pork belly cloud bread iceland put a bird ` ,
56
+ desc : `Carry jianbing normcore freegan. Viral single-origin coffee live-edge, pork belly cloud bread iceland put a bird ` ,
57
57
} ,
58
58
{
59
59
id : 8 ,
60
- title : "american classic" ,
60
+ name : "american classic" ,
61
61
category : "lunch" ,
62
62
cost : 12.99 ,
63
63
image : '../images/restaurant-menu/item-8.jpeg' ,
64
- desc : `on it tumblr kickstarter thundercats migas everyday carry squid palo santo leggings. Food truck truffaut ` ,
64
+ desc : `On it tumblr kickstarter thundercats migas everyday carry squid palo santo leggings. Food truck truffaut ` ,
65
65
} ,
66
66
{
67
67
id : 9 ,
68
- title : "quarantine buddy" ,
68
+ name : "quarantine buddy" ,
69
69
category : "shakes" ,
70
70
cost : 16.99 ,
71
- image : '../images/restaurant-menu/item-9.jpeg' ,
72
- desc : `skateboard fam synth authentic semiotics. Live-edge lyft af, edison bulb yuccie crucifix microdosing.` ,
71
+ image : '../images/restaurant-menu/item-9.jpg' ,
72
+ desc : `Skateboard fam synth authentic semiotics. Live-edge lyft af, edison bulb yuccie crucifix microdosing.` ,
73
+ } ,
74
+ {
75
+ id : 10 ,
76
+ name : "Steak Dinner" ,
77
+ category : "dinner" ,
78
+ cost : 34.99 ,
79
+ image : '../images/restaurant-menu/item-10.jpeg' ,
80
+ desc : `Live-edge lyft af, edison bulb yuccie crucifix microdosing.` ,
81
+ }
82
+ ]
83
+
84
+ const menuItems = document . querySelector ( '.menu__items' )
85
+ const filterButtons = document . querySelector ( '.filter__buttons' )
86
+
87
+ function displayMenuItem ( menuItem ) {
88
+ let displayedMenu = menuItem . map ( ( item ) => {
89
+ return `<div class="menu__item item-menu">
90
+ <div class="item-menu__image">
91
+ <img src="${ item . image } " alt="${ item . name } ">
92
+ </div>
93
+ <div class="item-menu__info">
94
+ <div class="item-menu__head">
95
+ <div class="item-menu__name">${ item . name } </div>
96
+ <div class="item-menu__cost">$${ item . cost } </div>
97
+ </div>
98
+ <div class="item-menu__desc">${ item . desc } </div>
99
+ </div>
100
+ </div>`
101
+ } )
102
+
103
+ displayedMenu = displayedMenu . join ( '' )
104
+ menuItems . innerHTML = displayedMenu
105
+ }
106
+
107
+ function displayFilterButtons ( ) {
108
+ const categories = restaurantMenu . reduce ( ( values , item ) => {
109
+ if ( ! values . includes ( item . category ) ) {
110
+ values . push ( item . category )
111
+ }
112
+ return values
113
+ } , [ 'all' ] )
114
+
115
+ let categoryButtons = categories . map ( ( category ) => {
116
+ return `<button class="filter__btn" type="button"
117
+ data-id="${ category } ">${ category }
118
+ </button>`
119
+ } )
120
+
121
+ categoryButtons = categoryButtons . join ( '' )
122
+ filterButtons . innerHTML = categoryButtons
123
+ }
124
+
125
+ window . addEventListener ( 'DOMContentLoaded' , ( ) => {
126
+ displayMenuItem ( restaurantMenu )
127
+
128
+ displayFilterButtons ( )
129
+ } )
130
+
131
+ filterButtons . addEventListener ( 'click' , ( e ) => {
132
+ if ( e . target . closest ( '.filter__btn' ) ) {
133
+ const currentCategory = e . target . dataset . id
134
+
135
+ const filteredMenu = restaurantMenu . filter ( menuItem => {
136
+ if ( menuItem . category === currentCategory ) {
137
+ return menuItem
138
+ }
139
+ } )
140
+
141
+ if ( currentCategory === 'all' ) {
142
+ displayMenuItem ( restaurantMenu )
143
+ } else {
144
+ displayMenuItem ( filteredMenu )
145
+ }
146
+
73
147
}
74
- ]
148
+ } )
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
0 commit comments