diff --git a/checkout/src/arquivos/js/components/Footer.js b/checkout/src/arquivos/js/components/Footer.js index f7de61d..11c8a25 100644 --- a/checkout/src/arquivos/js/components/Footer.js +++ b/checkout/src/arquivos/js/components/Footer.js @@ -7,13 +7,12 @@ export default class Footer { async init() { await this.selectors(); - this.onUpdate(); + // this.ListProducts(); + await this.onUpdate(); this.footerCheckoutPayments(); this.footerCheckoutDevelopedBy(); - await this.ListProducts(); } - async selectors() { //Para verificar se o carrinho está vazio e remover a prateleira de produtos: // vocês devem olhar a doc fornecida no Desafio para aprender a usar o waitElement @@ -22,53 +21,41 @@ export default class Footer { this.Vtexpci = await waitElement(".footerCheckout__vtexpci"); this.DevelopedBy = await waitElement(".footerCheckout__developedBy"); this.sliderProducts = await waitElement(".footerCheckout__prateleira"); - - } - - 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 ListProducts() { - - this.sliderProducts.innerHTML += `

Você também pode gostar:

+ this.sliderProducts.innerHTML += `

Você também pode gostar:

`; - const response = await fetch("https://m3academy.myvtex.com/api/catalog_system/pub/products/search/?fq=productClusterIds:319") - .then((response) => response.json()); + const response = await fetch( + "https://m3academy.myvtex.com/api/catalog_system/pub/products/search/?fq=productClusterIds:319" + ).then((response) => response.json()); - response.forEach((produto) => { - const image = produto.items[0].images[0].imageUrl; - const name = produto.productName; - const footerCheckoutPrateleiraList = document.querySelector(".footerCheckout__plateleira__list"); + response.forEach((produto) => { + const image = produto.items[0].images[0].imageUrl; + const name = produto.productName; + const footerCheckoutPrateleiraList = document.querySelector( + ".footerCheckout__plateleira__list" + ); - footerCheckoutPrateleiraList.innerHTML += ` + footerCheckoutPrateleiraList.innerHTML += `
  • ${name}

    Ver produto
  • `; - }); - this.addCarrossel(); + }); + this.addCarrossel(); } - - async addCarrossel() { const elemento = await waitElement(".footerCheckout__plateleira__list"); $(elemento).slick({ @@ -77,20 +64,20 @@ export default class Footer { arrows: true, responsive: [ { - breakpoint: 1025, - settings: { - slidesToShow: 3, - slidesToShow: 3 - } + breakpoint: 1025, + settings: { + slidesToShow: 3, + slidesToShow: 3, + }, }, { - breakpoint: 377, - settings: { - slidesToShow: 2, - slidesToShow: 2 - } - } - ] + breakpoint: 377, + settings: { + slidesToShow: 2, + slidesToShow: 2, + }, + }, + ], }); } @@ -126,6 +113,42 @@ export default class Footer { `; } + 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 myCart = document.querySelector("#cart-title"); + let target = this.checkoutVazio; + let observer = new MutationObserver((mutations) => { + mutations.forEach(() => { + if (target.style.display == "none") { + this.sliderProducts.classList.remove("disable"); + myCart.classList.remove("disable"); + this.ListProducts(); + } else { + this.sliderProducts.classList.add("disable"); + myCart.classList.add("disable"); + this.sliderProducts.innerHTML = ""; + } + }); + + window.addEventListener("hashchange", () => { + if (window.location.hash == "#/cart") { + if (target.style.display == "none") { + this.sliderProducts.classList.remove("disable"); + this.sliderProducts.innerHTML = ""; + this.ListProducts(); + } + } else { + this.sliderProducts.classList.add("disable"); + this.sliderProducts.innerHTML = ""; + } + }); + }); + + observer.observe(this.checkoutVazio, { + attributes: true, + }); + } } - diff --git a/checkout/src/arquivos/sass/partials/_footer.scss b/checkout/src/arquivos/sass/partials/_footer.scss index 7a31209..2a6ad12 100644 --- a/checkout/src/arquivos/sass/partials/_footer.scss +++ b/checkout/src/arquivos/sass/partials/_footer.scss @@ -443,4 +443,7 @@ } } -// slick + +.disable { + display: none !important; +}