feat: cria js prateleira

This commit is contained in:
ThiagoDuutra 2022-12-15 21:34:26 -03:00
parent ffa3756bc7
commit 43eceebee2

View File

@ -7,10 +7,25 @@ export default class Footer {
async init() { async init() {
await this.selectors(); await this.selectors();
this.events();
this.createFooter(); this.createFooter();
this.addCarrossel(); this.addCarrossel();
this.createPrateleira(); this.createPrateleira();
this.onUpdate(); this.onUpdate();
this.createMainBtn();
}
events() {
window.addEventListener("hashchange", () => {
if (window.location.hash == "#/cart" && this.checkoutVazio.style.display == "none") {
this.footerCheckoutPrateleira.style.display = "flex";
}
if (window.location.hash != "#/cart") {
this.footerCheckoutPrateleira.style.display = "none";
}
});
addEventListener("resize", () => {
this.addCarrossel();
});
} }
async selectors() { async selectors() {
@ -74,7 +89,7 @@ export default class Footer {
`; `;
} }
createPrateleira() { async createPrateleira() {
const slickPrat = this.footerCheckoutPrateleira; const slickPrat = this.footerCheckoutPrateleira;
slickPrat.innerHTML = `<h2>Você também pode gostar:</h2> slickPrat.innerHTML = `<h2>Você também pode gostar:</h2>
<ul class="container-carrossel"></ul>`; <ul class="container-carrossel"></ul>`;
@ -102,30 +117,51 @@ export default class Footer {
item.link item.link
}">Ver Produto</button>`; }">Ver Produto</button>`;
slickPrat.children[1].appendChild(li); slickPrat.children[1].appendChild(li);
this.footerCheckoutPrateleira.classList.add("fetch");
}); });
})
.then(() => {
this.addCarrossel();
}); });
} }
createMainBtn() {
const btnMainEmpty = document.querySelector("#cart-choose-products");
const h2Empty = this.checkoutVazio.children[0];
btnMainEmpty.textContent = `CONTINUAR COMPRANDO`;
h2Empty.textContent = `SEU CARRINHO ESTÁ VAZIO`;
}
onUpdate() { onUpdate() {
//Função qeu fará a verificação se o carrinho está vazio para remover a prateleira de produtos: //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 // 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 // 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 target = this.checkoutVazio;
let list = this.footerCheckoutPrateleira;
if (target.style.display == "none" && window.location.hash == "#/cart") {
list.style.display = "flex";
this.createPrateleira();
} else {
list.style.display = "none";
}
let config = { childList: true, attributes: true }; let config = { childList: true, attributes: true };
let observer = new MutationObserver((mutations) => { let observer = new MutationObserver((mutations) => {
if (this.footerCheckoutPrateleira.classList.contains("fetch")) {
this.createPrateleira();
}
mutations.forEach(function (mutation) { mutations.forEach(function (mutation) {
if ( if (mutation.target.style.display != "none") {
mutation.target.style.display === "none" && list.style.display = "none";
window.location.href === "https://m3academy.myvtex.com/checkout/#/cart"
) {
} else { } else {
console.log("block"); list.style.display = "flex";
} }
}); });
}); });
observer.observe(target, config); observer.observe(target, config);
} }
async addCarrossel() { async addCarrossel() {
const elemento = await waitElement(".container-carrossel"); const elemento = await waitElement(".container-carrossel");
$(elemento).slick({ $(elemento).slick({