-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainFusion.js
More file actions
193 lines (141 loc) · 6.67 KB
/
MainFusion.js
File metadata and controls
193 lines (141 loc) · 6.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
const menuEmail = document.querySelector('.navbar-email');
const desktopMenu= document.querySelector('.desktop-menu');
const menuHamburger= document.querySelector('.menu');
const mobilmenu= document.querySelector('.mobile-menu');
const product_detail_close= document.querySelector('.product-detail-close');
const carrito_compras= document.querySelector('.navbar-shopping-cart');//esta es la clase general pero llama a la clase "aside"
const shoppinCartContainer= document.querySelector('#shoppinCartContainer');
const CardsContainer= document.querySelector('.cards-container');
const product_detailContainer= document.querySelector('#product-detail');
menuEmail.addEventListener('click', toggleDesktopMenu);
menuHamburger.addEventListener('click', togglemobilmenu);//inicialmente se escucha cuando le den click al elemento en cuestión
carrito_compras.addEventListener('click', toggle_carrito_compras);
// document.addEventListener("click", (e)=>{
// if(e.target.matches(".mobile-menu"))
// alert("click fuera del elemento");
// });
function toggleDesktopMenu() {
const isasideclosed= shoppinCartContainer.classList.contains('inactive');
if (!isasideclosed) {
shoppinCartContainer.classList.add('inactive');
}
desktopMenu.classList.toggle('inactive')
console.log('menuHamburger');
}
function togglemobilmenu() {
product_detailContainer.classList.add('inactive');
const isasideclosed= shoppinCartContainer.classList.contains('inactive');
if (!isasideclosed) {
shoppinCartContainer.classList.add('inactive');
}
mobilmenu.classList.toggle('inactive')//se hace el llamado a la clase inactive la cual mediante la funsión toggle se le añade
}
function toggle_carrito_compras() {//el carrito de compras es manejado por la variable aside para recordar eso
const ismobileMenuclosed = mobilmenu.classList.contains('inactive');
const isdesktopMenuclosed = desktopMenu.classList.contains('inactive');
if (!isdesktopMenuclosed) {
desktopMenu.classList.add('inactive');
}
if (!ismobileMenuclosed) {
mobilmenu.classList.add('inactive');
}
/////////cierra el product datail si esta abierto
const isproduct_detailContainerClosed = product_detailContainer.classList.contains('inactive');
if (!isproduct_detailContainerClosed) {
product_detailContainer.classList.add('inactive');
}
if (!ismobileMenuclosed) {
mobilmenu.classList.add('inactive');
}
shoppinCartContainer.classList.toggle('inactive');
}
function openProductDeatailAside() {
shoppinCartContainer.classList.add('inactive');//para este caso de estas 2 funciones se puede hacer el cierre de esta forma por que no es un toggle
product_detailContainer.classList.remove('inactive');//utilizamos remove para quitarle la clase inactive al elemento
}
function closeProductDeatailAside() {
product_detailContainer.classList.add('inactive');
}
const productlist = [];
productlist.push({
id:1,
name:'bike',
price:120,
image:'https://images.pexels.com/photos/276517/pexels-photo-276517.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940'
});
productlist.push({
id:2,
name:'pantalla',
price:320,
image:'https://images.pexels.com/photos/276517/pexels-photo-276517.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940'
});
productlist.push({
id:3,
name:'telefonos',
price:150,
image:'https://images.pexels.com/photos/276517/pexels-photo-276517.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940'
});
productlist.push({
id:4,
name:'bike',
price:120,
image:'https://images.pexels.com/photos/276517/pexels-photo-276517.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940'
});
productlist.push({
id:5,
name:'pantalla',
price:320,
image:'https://images.pexels.com/photos/276517/pexels-photo-276517.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940'
});
productlist.push({
id:6,
name:'telefonos',
price:150,
image:'https://images.pexels.com/photos/276517/pexels-photo-276517.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940'
});
/*<div class="product-card">
<img src="https://images.pexels.com/photos/276517/pexels-photo-276517.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="">
<div class="product-info">
<div>
<p>$120,00</p>
<p>Bike</p>
</div>
<figure>
<img src="./icons/bt_add_to_cart.svg" alt="">
</figure>
</div>
</div> -->*/
function renderProducts(arr) {
for (product of arr){//este tipo de for mas simplificado nos arroja cada obejteo almacenado dentro de un array
// maquetacion de todos los elementos HTML desde javascript
const productCard= document.createElement('div');
productCard.classList.add('product-card');
const productimg= document.createElement('img');
productimg.setAttribute('src',product.image);
productimg.addEventListener('click',openProductDeatailAside);
product_detail_close.addEventListener('click',closeProductDeatailAside);
const productInf= document.createElement('div');
productInf.classList.add('product-info');
const productInfDiv= document.createElement('div');
const productPrice= document.createElement('p');
productPrice.innerText='$ '+ product.price;
const productName= document.createElement('p');
productName.innerText= product.name;
const productInfoFigure= document.createElement('figure');
const productImgCart= document.createElement('img');
productImgCart.setAttribute('src','./icons/bt_add_to_cart.svg');
// unificación de hijos y padres desde javascript
productInfoFigure.append(productImgCart);
productInfDiv.append(productPrice,productName);
productInf.append(productInfDiv);
productCard.append(productimg,productInf);
CardsContainer.appendChild(productCard);
// productCard.appendChild(productimg); //el apendchil solo permite añadir un hijo mientras que apend permite añadir todos los hijos que sean necesarios
// productCard.appendChild(productInf);
// productInf.appendChild(productInfDiv);
// productInf.appendChild(productInfoFigure);
// productInfDiv.appendChild(productPrice);
// productInfDiv.appendChild(productName);
// productInfoFigure.appendChild(productImgCart);
}
}renderProducts(productlist);