forked from M3-Academy/m3-academy-template-checkout
Desafio 4 M3 Academy #1
@ -6,14 +6,26 @@ export default class Footer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async init() {
|
async init() {
|
||||||
|
this.list = await this.fetchPrateleira();
|
||||||
await this.selectors();
|
await this.selectors();
|
||||||
// this.onUpdate();
|
// this.onUpdate();
|
||||||
|
this.createPrateleira();
|
||||||
|
this.prateleira = await waitElement(".footerCheckout__carrossel-itens");
|
||||||
|
this.itensPrateleira();
|
||||||
|
|
||||||
|
this.addCarrossel();
|
||||||
|
|
||||||
|
this.creditCardIconsHTML();
|
||||||
|
this.developedByIconsHTML();
|
||||||
}
|
}
|
||||||
|
|
||||||
async selectors() {
|
async selectors() {
|
||||||
//Para verificar se o carrinho está vazio e remover a prateleira de produtos:
|
this.itensShelf = await waitElement(".footerCheckout__prateleira", {
|
||||||
// vocês devem olhar a doc fornecida no Desafio para aprender a usar o waitElement
|
timeout: 5000,
|
||||||
this.checkoutVazio = await waitElement(".empty-cart-content");
|
interval: 1000,
|
||||||
|
});
|
||||||
|
this.creditCardIcons = await waitElement(".footerCheckout__stamps");
|
||||||
|
this.developedByIcons = await waitElement(".footerCheckout__developedBy");
|
||||||
}
|
}
|
||||||
|
|
||||||
onUpdate() {
|
onUpdate() {
|
||||||
@ -30,11 +42,95 @@ export default class Footer {
|
|||||||
|
|
||||||
observer.observe(target, config);
|
observer.observe(target, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createPrateleira() {
|
||||||
|
if (this.itensShelf) {
|
||||||
|
this.itensShelf.innerHTML = `
|
||||||
|
<div class="footerCheckout__prateleira-title">
|
||||||
|
<h2>Você também pode gostar:</h2>
|
||||||
|
</div>
|
||||||
|
<ul class="footerCheckout__carrossel-itens"></ul>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async itensPrateleira() {
|
||||||
|
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.prateleira.innerHTML = structure;
|
||||||
|
}
|
||||||
|
|
||||||
|
async fetchPrateleira() {
|
||||||
|
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;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
async addCarrossel() {
|
async addCarrossel() {
|
||||||
const elemento = await waitElement("#my-element");
|
const elemento = await waitElement(".footerCheckout__carrossel-itens");
|
||||||
$(elemento).slick({
|
$(elemento).slick({
|
||||||
slidesToShow: 4,
|
slidesToShow: 4,
|
||||||
slidesToScroll: 1,
|
slidesToScroll: 1,
|
||||||
|
arrows: true,
|
||||||
|
infinite: false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
creditCardIconsHTML() {
|
||||||
|
this.creditCardIcons.innerHTML = `
|
||||||
|
<li><img src="https://agenciamagma.vteximg.com.br/arquivos/masterCardM3Academy.png" alt="Mastercard"></li>
|
||||||
|
<li><img src="https://agenciamagma.vteximg.com.br/arquivos/visaM3Academy.png" alt=""></li>
|
||||||
|
<li><img src="https://agenciamagma.vteximg.com.br/arquivos/amexM3Academy.png" alt="American Express"></li>
|
||||||
|
<li><img src="https://agenciamagma.vteximg.com.br/arquivos/eloM3Academy.png" alt="Elo"></li>
|
||||||
|
<li><img src="https://agenciamagma.vteximg.com.br/arquivos/hiperCardM3Academy.png" alt="Hipercard"></li>
|
||||||
|
<li><img src="https://agenciamagma.vteximg.com.br/arquivos/payPalM3Academy.png" alt="PayPal"></li>
|
||||||
|
<li><img src="https://agenciamagma.vteximg.com.br/arquivos/boletoM3Academy.png" alt="Boleto"></li>
|
||||||
|
<li><span class="footerCheckout__stamps__divider"></span></li>
|
||||||
|
<li class="vtex-pci"><img src="https://agenciamagma.vteximg.com.br/arquivos/vtexPCIM3Academy.png" alt="PCI VTEX"></li>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
developedByIconsHTML() {
|
||||||
|
this.developedByIcons.innerHTML = `
|
||||||
|
<li>
|
||||||
|
<div class="by-vtex">
|
||||||
|
<a href="https://vtex.com.br-pt/">
|
||||||
|
<span>Powered By</span>
|
||||||
|
</a>
|
||||||
|
<img class="vtex-logo" src="https://agenciamagma.vteximg.com.br/arquivos/logoVTEXM3Academy.png" alt="VTEX" />
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<div class="by-m3">
|
||||||
|
<a href="https://vtex.com.br-pt/">
|
||||||
|
<span>Developed By</span>
|
||||||
|
</a>
|
||||||
|
<img class="m3-logo" src="https://agenciamagma.vteximg.com.br/arquivos/logoM3M3Academy.png" alt="M3" />
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,30 +8,69 @@
|
|||||||
&__wrapper {
|
&__wrapper {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin: 0;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
|
@media (min-width: 1200px) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include mq(md, max) {
|
||||||
|
margin: 0 0 0 9px;
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-img {
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
}
|
}
|
||||||
|
|
||||||
&__address {
|
&__address {
|
||||||
color: $color-gray2;
|
|
||||||
font-family: $font-family;
|
font-family: $font-family;
|
||||||
font-style: normal;
|
color: $color-gray2;
|
||||||
font-weight: normal;
|
margin: 27px 0 24px 0;
|
||||||
|
width: 269px;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
line-height: 12px;
|
line-height: 12px;
|
||||||
text-transform: capitalize;
|
text-transform: capitalize;
|
||||||
max-width: 40%;
|
|
||||||
|
|
||||||
@include mq(md, max) {
|
@include mq(md, max) {
|
||||||
margin-bottom: 24px;
|
margin-bottom: 24px;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@include mq(xl, min) {
|
||||||
|
font-family: $font-family;
|
||||||
|
color: $color-black;
|
||||||
|
width: 537px;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 27px;
|
||||||
|
text-transform: capitalize;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include mq(md, max) {
|
||||||
|
margin: 0px 0 16px 7px;
|
||||||
|
font-family: $font-family;
|
||||||
|
color: $color-black;
|
||||||
|
font-size: 10px;
|
||||||
|
line-height: 14px;
|
||||||
|
width: 269px;
|
||||||
|
text-transform: capitalize;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&__stamps {
|
&__stamps {
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
justify-self: center;
|
justify-self: center;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
|
width: 404px;
|
||||||
|
margin: 16px 189px 16px 137px;
|
||||||
|
|
||||||
@include mq(md, max) {
|
@include mq(md, max) {
|
||||||
align-self: center;
|
align-self: center;
|
||||||
@ -39,33 +78,61 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&__divider {
|
&__divider {
|
||||||
background-color: $color-gray4;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
background-color: $color-gray4;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
margin: 0 8px;
|
margin: 0 8px;
|
||||||
width: 1px;
|
width: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@include mq(xl, min) {
|
||||||
|
width: 690px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include mq(md, max) {
|
||||||
|
width: 342px;
|
||||||
|
margin: 16px 0 16px 0;
|
||||||
|
order: -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&__developedBy {
|
&__developedBy {
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
list-style-type: none;
|
align-items: center;
|
||||||
|
width: 217px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
list-style-type: none;
|
||||||
|
|
||||||
li:last-child {
|
.vtex-rigth1 {
|
||||||
margin-left: 16px;
|
width: 15%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vtex-rigth2 {
|
||||||
|
width: 8%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list {
|
||||||
|
@include mq(xl, min) {
|
||||||
|
font-family: "Open Sans";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 25px;
|
||||||
|
width: 388px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include mq(md, max) {
|
||||||
|
margin: 0 0 16px 7px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
align-items: center;
|
|
||||||
color: $color-gray2;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
font-family: $font-family;
|
font-family: $font-family;
|
||||||
font-style: normal;
|
color: $color-gray2;
|
||||||
font-weight: normal;
|
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
line-height: 12px;
|
line-height: 12px;
|
||||||
|
align-items: center;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
|
Loading…
Reference in New Issue
Block a user