forked from M3-Academy/m3-academy-template-checkout
develop #5
@ -3,57 +3,75 @@ import { waitElement } from "m3-utils";
|
|||||||
export default class Footer {
|
export default class Footer {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.init();
|
this.init();
|
||||||
this.requestShelf();
|
|
||||||
this.addCarrossel();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async init() {
|
async init() {
|
||||||
|
this.list = await this.requestApi();
|
||||||
await this.selectors();
|
await this.selectors();
|
||||||
// this.onUpdate();
|
// this.onUpdate();
|
||||||
this.requestShelf();
|
this.createShelf();
|
||||||
|
this.shelfList = await waitElement(".footerCheckout__shelfList");
|
||||||
|
this.shelfItens();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
this.addCarrossel();
|
this.addCarrossel();
|
||||||
}
|
}
|
||||||
|
|
||||||
async selectors() {
|
async selectors() {
|
||||||
this.itensShelf = await waitElement(".footerCheckout__prateleira", {
|
this.itensShelf = await waitElement(".footerCheckout__prateleira", {
|
||||||
timeout: 5000,
|
timeout: 5000,
|
||||||
interval: 1000})
|
interval: 1000,
|
||||||
// this.itensShelf = await waitElement(".empty-cart-content")
|
|
||||||
//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
|
|
||||||
// this.checkoutVazio = await waitElement(".container-cart", {
|
|
||||||
|
|
||||||
// });
|
|
||||||
}
|
|
||||||
|
|
||||||
requestShelf() {
|
|
||||||
let prateleira= this.itensShelf;
|
|
||||||
prateleira.innerHTML = `
|
|
||||||
<p class="footerChekout__prateleira-title">Você também pode gostar</p>
|
|
||||||
<ul class="carrosel-ul"></ul>
|
|
||||||
`;
|
|
||||||
const api = "https://m3academy.myvtex.com/api/catalog_system/pub/products/search/?fq=productClusterIds:319";
|
|
||||||
const prodUl = document.querySelector("carrosel-ul")
|
|
||||||
fetch(api)
|
|
||||||
.then((response) => response.json())
|
|
||||||
.then(function(data) {
|
|
||||||
return data.map(function(item) {
|
|
||||||
let li = document.createElement("li")
|
|
||||||
li.setAttribute("id", item.productId)
|
|
||||||
li.innerHTML = `
|
|
||||||
<img src="${item.items[0].images[0].imageUrl}" alt="${item.productName}" />
|
|
||||||
<p class="product-name">${item.productName}</p>
|
|
||||||
<div class="product-variation">${item.items.map((name) => {
|
|
||||||
return `<a name="product-variationvariation" class="product-variationvariation">${name.name}</a>`
|
|
||||||
|
|
||||||
}).join("")}</div>
|
|
||||||
<button class="show-product">Ver produto</button>
|
|
||||||
`;
|
|
||||||
prateleira.children[1].appendChild(li);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createShelf() {
|
||||||
|
if(this.itensShelf) {
|
||||||
|
this.itensShelf.innerHTML = `
|
||||||
|
<div class="footerCheckout__prateleira-title">
|
||||||
|
<h2>Você também pode gostar:</h2>
|
||||||
|
</div>
|
||||||
|
<ul class="footerCheckout__shelfList"></ul>
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async shelfItens() {
|
||||||
|
let structure = "";
|
||||||
|
|
||||||
|
this.list.forEach((response) => {
|
||||||
|
const sku = response.skus.map((item) => `<li>${item}</li>`);
|
||||||
|
|
||||||
|
structure += `
|
||||||
|
<li>
|
||||||
|
<figure><img src ="${response.img}"/></figure>
|
||||||
|
<figcaption>${response.name}</figcaption>
|
||||||
|
<div><ul>${sku}</ul></div>
|
||||||
|
<button type="button"><a href="${response.link}">Ver Produto</a></button>
|
||||||
|
</li>
|
||||||
|
`
|
||||||
|
})
|
||||||
|
this.shelfList.innerHTML = structure
|
||||||
|
}
|
||||||
|
|
||||||
|
async requestApi() {
|
||||||
|
const api =
|
||||||
|
"https://m3academy.myvtex.com/api/catalog_system/pub/products/search/?fq=productClusterIds:319";
|
||||||
|
return fetch(api)
|
||||||
|
.then((response) => response.json())
|
||||||
|
.then((data) => {
|
||||||
|
const prodInfo = data.map((response) => ({
|
||||||
|
name: response.productName,
|
||||||
|
skus: response.items.map((item) => item.name),
|
||||||
|
img: response.items[0].images[0].imageUrl,
|
||||||
|
link: response.link,
|
||||||
|
}));
|
||||||
|
return prodInfo
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
@ -69,12 +87,11 @@ export default class Footer {
|
|||||||
observer.observe(target, config);
|
observer.observe(target, config);
|
||||||
}
|
}
|
||||||
async addCarrossel() {
|
async addCarrossel() {
|
||||||
const elemento = await waitElement(".carrosel-ul");
|
const elemento = await waitElement(".footerCheckout__shelfList");
|
||||||
$(elemento).slick({
|
$(elemento).slick({
|
||||||
slidesToShow: 4,
|
slidesToShow: 4,
|
||||||
slidesToScroll: 1,
|
slidesToScroll: 1,
|
||||||
arrows: true,
|
arrows: true,
|
||||||
variableWidth: true,
|
|
||||||
infinite: false,
|
infinite: false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user