forked from M3-Academy/m3-academy-template-checkout
feat: adiciona prateleira com slick
This commit is contained in:
parent
1cf74c1973
commit
6c8b821e8c
BIN
checkout/src/arquivos/assets/imgs/arrowleft.png
Normal file
BIN
checkout/src/arquivos/assets/imgs/arrowleft.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 526 B |
BIN
checkout/src/arquivos/assets/imgs/arrowright.png
Normal file
BIN
checkout/src/arquivos/assets/imgs/arrowright.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 515 B |
@ -8,8 +8,11 @@ export default class Footer {
|
|||||||
|
|
||||||
async init() {
|
async init() {
|
||||||
await this.selectors();
|
await this.selectors();
|
||||||
// this.onUpdate();
|
window.addEventListener("hashchange", this.addPrateleira.bind(this));
|
||||||
this.addPrateleira();
|
|
||||||
|
$(window).on("orderFormUpdated.vtex", this.addPrateleira.bind(this));
|
||||||
|
|
||||||
|
/* this.addPrateleira(); */
|
||||||
this.addStamps();
|
this.addStamps();
|
||||||
this.addCarrossel();
|
this.addCarrossel();
|
||||||
}
|
}
|
||||||
@ -21,20 +24,7 @@ export default class Footer {
|
|||||||
this.prateleira = await waitElement(".footerCheckout__prateleira");
|
this.prateleira = await waitElement(".footerCheckout__prateleira");
|
||||||
}
|
}
|
||||||
|
|
||||||
onUpdate() {
|
async onUpdate() {}
|
||||||
//Função qeu fará a verificação se o carrinho está vazio para remover a prateleira de produtos:
|
|
||||||
// vocês devem olhar a doc fornecida no Desafio para aprender a usar a MutationObserver
|
|
||||||
// sempre que o carrinho estiver vazio o elemento chcekoutVazio fica display: none e isso pode ser usado como atributo para a MutationObserver
|
|
||||||
let target = this.checkoutVazio;
|
|
||||||
let config = { childList: true, attributes: true };
|
|
||||||
let observer = new MutationObserver((mutations) => {
|
|
||||||
mutations.forEach(function (mutation) {
|
|
||||||
console.log(mutation.type);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
observer.observe(target, config);
|
|
||||||
}
|
|
||||||
async addCarrossel(elemento) {
|
async addCarrossel(elemento) {
|
||||||
$(elemento).slick({
|
$(elemento).slick({
|
||||||
slidesToShow: 4,
|
slidesToShow: 4,
|
||||||
@ -48,36 +38,73 @@ export default class Footer {
|
|||||||
.then((response) => response.json())
|
.then((response) => response.json())
|
||||||
.then((response) => response)
|
.then((response) => response)
|
||||||
.catch((err) => console.error(err));
|
.catch((err) => console.error(err));
|
||||||
console.log(orderForm);
|
/* console.log(orderForm); */
|
||||||
orderForm.forEach((element) => {
|
orderForm.forEach((element) => {
|
||||||
const containerProduto = document.createElement("div");
|
const containerProduto = document.createElement("div");
|
||||||
containerProduto.innerHTML = `<div> <img src=${
|
containerProduto.classList.add("container-produto");
|
||||||
|
containerProduto.innerHTML = `<img class="product-img" src=${
|
||||||
element.items[0].images[0].imageUrl
|
element.items[0].images[0].imageUrl
|
||||||
} > <span>${element.productName} </span> <div class="btn-tamanho"> ${element.items.map(
|
} > <span class="span-item-name">${
|
||||||
(item) => {
|
element.productName
|
||||||
return `<button>${item.name}</button>`;
|
} </span> <div class="btn-tamanho"> ${element.items
|
||||||
}
|
.map((item) => {
|
||||||
)} </div>
|
const name = item.name;
|
||||||
|
/* console.log(item.name); */
|
||||||
|
return `<button class="btn-item-name">${name}</button>`;
|
||||||
|
})
|
||||||
|
.join("")} </div>
|
||||||
|
|
||||||
<a href=${element.link}>Ver produto</a>
|
<a class="btn-item-link" href=${element.link}>Ver produto</a>
|
||||||
|
|
||||||
</div>`;
|
`;
|
||||||
|
|
||||||
container.appendChild(containerProduto);
|
container.appendChild(containerProduto);
|
||||||
element.items.forEach((item) => {
|
element.items.forEach((item) => {
|
||||||
console.log(item);
|
/* console.log(item); */
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
async addPrateleira() {
|
async addPrateleira() {
|
||||||
const slickContainer = document.createElement("div");
|
const slickContainer = document.createElement("div");
|
||||||
|
const url = window.location.hash;
|
||||||
|
const orderForm = await fetch("/api/checkout/pub/orderForm/")
|
||||||
|
.then((response) => response.json())
|
||||||
|
.then((response) => response)
|
||||||
|
.catch((err) => console.error(err));
|
||||||
|
console.log(orderForm.items);
|
||||||
|
if (orderForm.items.length > 0 && url === "#/cart") {
|
||||||
|
const titlePrateleira = document.createElement("h2");
|
||||||
|
titlePrateleira.classList.add("title-prateleira");
|
||||||
|
titlePrateleira.innerText = "Você também pode gostar:";
|
||||||
|
this.prateleira.appendChild(titlePrateleira);
|
||||||
|
|
||||||
this.prateleira.appendChild(slickContainer);
|
this.prateleira.appendChild(slickContainer);
|
||||||
await this.apiProducts(slickContainer);
|
await this.apiProducts(slickContainer);
|
||||||
await this.addCarrossel(slickContainer);
|
await this.addCarrossel(slickContainer);
|
||||||
console.log(this.prateleira);
|
} else {
|
||||||
|
slickContainer.remove();
|
||||||
|
console.log(slickContainer);
|
||||||
|
const slickInitialize = document.querySelector(".slick-initialized");
|
||||||
|
slickInitialize.remove();
|
||||||
|
const titleh2 = document.querySelector(".title-prateleira");
|
||||||
|
titleh2.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async addStamps() {
|
async addStamps() {
|
||||||
|
const stampsContainer3 = await waitElement(".footerCheckout__developedBy");
|
||||||
|
const query3 = document.querySelectorAll(".footerCheckout__developedBy");
|
||||||
|
const arr3 = Array.from(query3);
|
||||||
|
const cardList3 = ["logoVTEXM3Academy.png", "logoM3M3Academy.png"];
|
||||||
|
query3[0].innerHTML = "";
|
||||||
|
cardList3.forEach(function (item, index) {
|
||||||
|
query3[0].innerHTML += `<span>${
|
||||||
|
index === 0 ? "Powered By" : "Developed By"
|
||||||
|
}</span> <img style="width: 42px; height: 16px; " src=${
|
||||||
|
"https://agenciamagma.vteximg.com.br/arquivos/" + item
|
||||||
|
} alt="">`;
|
||||||
|
});
|
||||||
|
|
||||||
const stampsContainer2 = await waitElement(".footerCheckout__vtexpci");
|
const stampsContainer2 = await waitElement(".footerCheckout__vtexpci");
|
||||||
const query2 = document.querySelectorAll(".footerCheckout__vtexpci");
|
const query2 = document.querySelectorAll(".footerCheckout__vtexpci");
|
||||||
const arr2 = Array.from(query2);
|
const arr2 = Array.from(query2);
|
||||||
@ -90,7 +117,6 @@ export default class Footer {
|
|||||||
const stampsContainer = await waitElement(".footerCheckout__payments");
|
const stampsContainer = await waitElement(".footerCheckout__payments");
|
||||||
const query = document.querySelectorAll(".footerCheckout__payments");
|
const query = document.querySelectorAll(".footerCheckout__payments");
|
||||||
const arr = Array.from(query);
|
const arr = Array.from(query);
|
||||||
console.log(arr);
|
|
||||||
|
|
||||||
const cardList = [
|
const cardList = [
|
||||||
"masterCardM3Academy.png",
|
"masterCardM3Academy.png",
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.slick-track {
|
.slick-track {
|
||||||
|
margin-bottom: 56px;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
@ -101,14 +102,24 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
.slick-prev {
|
.slick-prev {
|
||||||
|
width: 14px;
|
||||||
|
height: 29px;
|
||||||
|
border: none;
|
||||||
background: url("https://agenciamagma.vteximg.com.br/arquivos/arrow-left-mini-M3Academy.svg")
|
background: url("https://agenciamagma.vteximg.com.br/arquivos/arrow-left-mini-M3Academy.svg")
|
||||||
no-repeat center center;
|
no-repeat center center;
|
||||||
z-index: 4;
|
z-index: 4;
|
||||||
left: 10px;
|
left: 12px;
|
||||||
|
bottom: 228px;
|
||||||
}
|
}
|
||||||
.slick-next {
|
.slick-next {
|
||||||
|
width: 14px;
|
||||||
|
height: 29px;
|
||||||
|
border: none;
|
||||||
|
background: url("https://agenciamagma.vteximg.com.br/arquivos/arrow-right-mini-M3Academy.svg")
|
||||||
|
no-repeat center center;
|
||||||
z-index: 4;
|
z-index: 4;
|
||||||
right: 10px;
|
right: 12px;
|
||||||
|
bottom: 228px;
|
||||||
}
|
}
|
||||||
.slick-arrow.slick-hidden {
|
.slick-arrow.slick-hidden {
|
||||||
display: none;
|
display: none;
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
/* _prateleira.scss */
|
/* _prateleira.scss */
|
||||||
.prateleira-title {
|
.title-prateleira {
|
||||||
|
color: black;
|
||||||
|
margin: 20px 0 20px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: "Tenor Sans";
|
font-family: "Tenor Sans";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
@ -7,3 +9,70 @@
|
|||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
line-height: 38px;
|
line-height: 38px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-item-name {
|
||||||
|
border: none;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #00c8ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
font-family: "Open Sans";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 13px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-item-link {
|
||||||
|
padding: 12px 75px;
|
||||||
|
color: #ffffff;
|
||||||
|
font-family: "Open Sans";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 13px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: #00c8ff;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-tamanho {
|
||||||
|
gap: 5px;
|
||||||
|
display: flex;
|
||||||
|
width: 242px;
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.span-item-name {
|
||||||
|
font-family: "Open Sans";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.span-item-name {
|
||||||
|
margin: 20px 0 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
width: 242px;
|
||||||
|
/* margin: 20px 28px; */
|
||||||
|
font-family: "Open Sans";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .bora {
|
||||||
|
margin: 50px;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
.product-img {
|
||||||
|
width: 242px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container-produto {
|
||||||
|
display: flex !important;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user