forked from M3-Academy/m3-academy-template-checkout
feat: Adiciona observer e hashchange na prateleira
This commit is contained in:
parent
0f69bd969c
commit
b83b190547
@ -8,10 +8,8 @@ export default class Footer {
|
|||||||
async init() {
|
async init() {
|
||||||
await this.selectors();
|
await this.selectors();
|
||||||
await this.carrinho();
|
await this.carrinho();
|
||||||
this.requestApi();
|
this.prateleira();
|
||||||
this.addCarrossel();
|
this.onUpdate();
|
||||||
|
|
||||||
// this.onUpdate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async selectors() {
|
async selectors() {
|
||||||
@ -27,15 +25,32 @@ export default class Footer {
|
|||||||
this.footerPrateleira = await waitElement(".footerCheckout__prateleira");
|
this.footerPrateleira = await waitElement(".footerCheckout__prateleira");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async prateleira() {
|
||||||
|
if (this.checkoutVazio.style.display == "none") {
|
||||||
|
this.requestApi();
|
||||||
|
this.addCarrossel();
|
||||||
|
window.addEventListener("hashchange", () => {
|
||||||
|
if (window.location.hash !== "#/cart") {
|
||||||
|
this.removePrateleira();
|
||||||
|
}
|
||||||
|
if (window.location.hash == "#/cart") {
|
||||||
|
this.requestApi();
|
||||||
|
this.addCarrossel();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async removePrateleira() {
|
||||||
|
let prateleira = this.footerPrateleira;
|
||||||
|
prateleira.innerHTML = ``;
|
||||||
|
}
|
||||||
|
|
||||||
async requestApi() {
|
async requestApi() {
|
||||||
let prateleira = this.footerPrateleira;
|
let prateleira = this.footerPrateleira;
|
||||||
prateleira.innerHTML = `<h2>Você também pode gostar:</h2>
|
prateleira.innerHTML = `<h2>Você também pode gostar:</h2>
|
||||||
<ul class=carrosel-items></ul>`;
|
<ul class=carrosel-items></ul>`;
|
||||||
|
|
||||||
/*let prateleira = `<h2>TESTE</h2>
|
|
||||||
<ul class=carrosel-items></ul>`;
|
|
||||||
this.footerPrateleira.innerHTML = prateleira;*/
|
|
||||||
|
|
||||||
const url = `https://m3academy.myvtex.com/api/catalog_system/pub/products/search/?fq=productClusterIds:319`;
|
const url = `https://m3academy.myvtex.com/api/catalog_system/pub/products/search/?fq=productClusterIds:319`;
|
||||||
fetch(url)
|
fetch(url)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
@ -62,7 +77,8 @@ export default class Footer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async addCarrossel() {
|
async addCarrossel() {
|
||||||
const prateleira = await waitElement(".carrosel-items");
|
const prateleira = await waitElement(".carrosel-items", { timeout: 4000, interval: 500 });
|
||||||
|
|
||||||
if (window.screen.width > 1024) {
|
if (window.screen.width > 1024) {
|
||||||
$(prateleira).slick({
|
$(prateleira).slick({
|
||||||
slidesToShow: 4,
|
slidesToShow: 4,
|
||||||
@ -73,25 +89,32 @@ export default class Footer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
carrinho() {
|
async onUpdate() {
|
||||||
this.fraseCarrinhoVazio.innerHTML = `seu carrinho está vazio`;
|
|
||||||
this.continuarCompra.innerHTML = `continuar comprando`;
|
|
||||||
this.frete.innerHTML = `Frete`;
|
|
||||||
this.unidade.innerHTML = `Unidade`;
|
|
||||||
}
|
|
||||||
|
|
||||||
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 config = { childList: true, attributes: true };
|
let config = { childList: true, attributes: true };
|
||||||
let observer = new MutationObserver((mutations) => {
|
let observer = new MutationObserver((mutations) => {
|
||||||
mutations.forEach(function (mutation) {
|
mutations.map((mutation) => {
|
||||||
console.log(mutation.type);
|
const display = mutation.target.attributes.style.nodeValue;
|
||||||
|
console.log(mutation);
|
||||||
|
|
||||||
|
if (display == "display: none;") {
|
||||||
|
this.prateleira();
|
||||||
|
} else if (display == "display: block;") {
|
||||||
|
this.removePrateleira();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
observer.observe(target, config);
|
observer.observe(target, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
carrinho() {
|
||||||
|
this.fraseCarrinhoVazio.innerHTML = `seu carrinho está vazio`;
|
||||||
|
this.continuarCompra.innerHTML = `continuar comprando`;
|
||||||
|
this.frete.innerHTML = `Frete`;
|
||||||
|
this.unidade.innerHTML = `Unidade`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -529,7 +529,9 @@ h1#orderform-title {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*PAGAMENTO*/
|
||||||
.payment-data {
|
.payment-data {
|
||||||
|
/*ICONE DE EDITAR CAIXA*/
|
||||||
.payment-edit-link {
|
.payment-edit-link {
|
||||||
display: flex !important;
|
display: flex !important;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
@ -551,21 +553,6 @@ h1#orderform-title {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*position: relative;
|
|
||||||
.accordion-group {
|
|
||||||
&::before {
|
|
||||||
content: "";
|
|
||||||
display: flex;
|
|
||||||
width: 20.26px;
|
|
||||||
height: 20.89px;
|
|
||||||
background: url("https://agenciamagma.vteximg.com.br/arquivos/lapisM3Academy.png")
|
|
||||||
no-repeat center center;
|
|
||||||
background-size: contain;
|
|
||||||
cursor: pointer;
|
|
||||||
position: absolute;
|
|
||||||
left: 90%;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-client-info-pj {
|
.box-client-info-pj {
|
||||||
|
Loading…
Reference in New Issue
Block a user