diff --git a/checkout/src/arquivos/js/components/Header.js b/checkout/src/arquivos/js/components/Header.js index 6744524..bfa1e44 100644 --- a/checkout/src/arquivos/js/components/Header.js +++ b/checkout/src/arquivos/js/components/Header.js @@ -8,14 +8,174 @@ export default class Header { async init() { await this.selectors(); - console.log(this.item); + this.events(); + this.createProgressBar(); + await this.progressBarProgress(); } async selectors() { - this.item = await waitElement("#my-element", { + this.item = await waitElement("#progressBar", { //#my-element pode ser a class ou o id do elemento html qeu vocÊ quer pegar timeout: 5000, // vai esperar 5 segundos antes de rejeitar a promise interval: 1000, // vai verificar a cada 1 segundo se o elemento existe }); + this.header = await waitElement(".headerCheckout"); + this.progressBar = await waitElement("#progressBar"); + } + events() { + addEventListener("resize", () => { + this.createProgressBar(); + this.progressBarProgress(); + }); + } + createProgressBar() { + if (this.progressBar && window.innerWidth > 1024) { + this.progressBar.innerHTML = ` + + `; + } + if (this.progressBar && window.innerWidth <= 1024) { + this.progressBar.innerHTML = ``; + } + } + async progressBarProgress() { + this.circle1 = await waitElement(".progress-bar-circle-1"); + this.circle2 = await waitElement(".progress-bar-circle-2"); + this.circle3 = await waitElement(".progress-bar-circle-3"); + if (this.progressBar && window.innerWidth > 1024) { + const progressBarList = document.querySelectorAll("#progressBar ul li"); + progressBarList.forEach((li) => { + if (window.location.href === "https://m3academy.myvtex.com/checkout/#/cart") { + if (this.circle1) { + this.circle1.classList.add("active"); + } + if (this.circle2) { + if (this.circle2.classList.contains("active")) { + this.circle2.classList.remove("active"); + } + } + if (this.circle3) { + if (this.circle3.classList.contains("active")) { + this.circle3.classList.remove("active"); + } + } + } else if ( + window.location.href === "https://m3academy.myvtex.com/checkout/#/email" || + window.location.href === "https://m3academy.myvtex.com/checkout/#/profile" || + window.location.href === "https://m3academy.myvtex.com/checkout/#/shipping" + ) { + if (this.circle1) { + if (this.circle1.classList.contains("active")) { + this.circle1.classList.remove("active"); + } + console.log("email shipping"); + console.log(this.circle1); + if (this.circle2) { + this.circle2.classList.add("active"); + console.log("teste dados"); + } + console.log(this.circle2); + console.log(this.circle3); + if (this.circle3) { + if (this.circle3.classList.contains("active")) { + this.circle3.classList.remove("active"); + } + } + } + } else if ( + window.location.href === "https://m3academy.myvtex.com/checkout/#/payment" + ) { + if (this.circle1) { + if (this.circle1.classList.contains("active")) { + this.circle1.classList.remove("active"); + } + } + if (this.circle2) { + if (this.circle2.classList.contains("active")) { + this.circle2.classList.remove("active"); + } + } + if (this.circle3) { + this.circle3.classList.add("active"); + } + } + window.addEventListener("hashchange", () => { + if (window.location.hash == "#/cart") { + if (this.circle1) { + this.circle1.classList.add("active"); + } + if (this.circle2) { + if (this.circle2.classList.contains("active")) { + this.circle2.classList.remove("active"); + } + } + if (this.circle3) { + if (this.circle3.classList.contains("active")) { + this.circle3.classList.remove("active"); + } + } + } else if ( + window.location.hash == "#/email" || + window.location.hash == "#/profile" || + window.location.hash == "#/shipping" + ) { + if (this.circle1) { + if (this.circle1.classList.contains("active")) { + this.circle1.classList.remove("active"); + } + } + if (this.circle2) { + this.circle2.classList.add("active"); + } + if (this.circle3) { + if (this.circle3.classList.contains("active")) { + this.circle3.classList.remove("active"); + } + } + } else if (window.location.hash == "#/payment") { + if (this.circle1) { + if (this.circle1.classList.contains("active")) { + this.circle1.classList.remove("active"); + } + } + if (this.circle2) { + if (this.circle2.classList.contains("active")) { + this.circle2.classList.remove("active"); + } + } + if (this.circle3) { + this.circle3.classList.add("active"); + } + } + }); + }); + } } } diff --git a/checkout/src/arquivos/sass/lib/_slick.scss b/checkout/src/arquivos/sass/lib/_slick.scss index 74460fb..1cacbf0 100644 --- a/checkout/src/arquivos/sass/lib/_slick.scss +++ b/checkout/src/arquivos/sass/lib/_slick.scss @@ -18,7 +18,7 @@ position: relative; overflow: hidden; display: block; - margin: 0; + margin: 0 -16px; padding: 0; &:focus { @@ -65,6 +65,7 @@ float: left; height: 100%; min-height: 1px; + margin: 0 8px 56px 8px; outline: none; [dir="rtl"] & { float: right; @@ -95,6 +96,9 @@ height: auto; border: 1px solid transparent; } + @media (max-width: 1024px) { + margin: 0px 7.5px 56px 7.5px; + } } .slick-arrow { font-size: 0; @@ -104,11 +108,31 @@ background: url("https://agenciamagma.vteximg.com.br/arquivos/arrow-left-mini-M3Academy.svg") no-repeat center center; z-index: 4; + top: 167px; + border: none; left: 10px; + @include mq(tv, min) { + background: url("https://agenciamagma.vteximg.com.br/arquivos/arrow-left-M3Academy.svg") + no-repeat center center; + top: 313px; + width: 26px; + height: 58px; + } } .slick-next { + background: url("https://agenciamagma.vteximg.com.br/arquivos/arrow-right-mini-M3Academy.svg") + no-repeat center center; + top: 167px; z-index: 4; + border: none; right: 10px; + @include mq(tv, min) { + background: url("https://agenciamagma.vteximg.com.br/arquivos/arrow-right-M3Academy.svg") + no-repeat center center; + top: 313px; + width: 26px; + height: 58px; + } } .slick-arrow.slick-hidden { display: none; diff --git a/checkout/src/arquivos/sass/partials/_header.scss b/checkout/src/arquivos/sass/partials/_header.scss index 8b44777..29f8467 100644 --- a/checkout/src/arquivos/sass/partials/_header.scss +++ b/checkout/src/arquivos/sass/partials/_header.scss @@ -1,36 +1,172 @@ -/* _header.scss */ .headerCheckout { .container { width: auto !important; } &__wrapper { - align-items: center; display: flex; - justify-content: space-between; + align-items: center; + justify-content: space-around; + padding: 16px; + border-bottom: 1px solid $black; + + @media (min-width: 1025px) { + padding: 33.5px 0; + } + + @media (min-width: 2500px) { + padding: 33.5px 0; + } + } + .progress-bar { + display: flex; + flex-direction: column; + right: 31.5%; + top: 33%; + @media (max-width: 1024px) { + display: none; + } + @media (min-width: 2500px) { + right: 41%; + } + + .containerLi { + display: flex; + position: relative; + align-items: center; + } + ul { + display: flex; + margin: 0; + gap: 100px; + list-style: none; + } + + p { + margin-bottom: 0; + } + + &-text { + font-family: $font-family-secundary; + font-weight: 400; + font-size: 12px; + line-height: 14px; + + @media (min-width: 2500px) { + font-size: 24px; + line-height: 28px; + } + } + + &-line-1, + &-line-2 { + position: absolute; + width: 171px; + top: 82%; + left: 55%; + border: 1px solid $black; + z-index: 0; + + @media (min-width: 2500px) { + width: 240px; + top: 79%; + left: 55%; + } + } + + &-line-2 { + width: 166px; + left: -223%; + + @media (min-width: 2500px) { + width: 230px; + left: -143%; + } + } + + &-circle-1, + &-circle-2, + &-circle-3 { + display: flex; + height: 10px; + width: 10px; + align-self: center; + background: $white; + border: 1px solid $black; + border-radius: 50%; + margin-left: 40%; + margin-top: 9px; + padding: 0; + + @media (min-width: 2500px) { + height: 22px; + width: 22px; + } + } + + .active { + background: $black; + } } &__logo { - img { - height: 52px; - width: auto; + width: 45.35%; + + @media (min-width: 1025px) { + width: 17.059%; + } + + @media (min-width: 1025px) { + width: 15.28%; + + img { + width: 100%; + } + } + @media (min-width: 2500px) { + width: 19.22%; } } &__safeBuy { + justify-content: flex-end; + display: flex; + align-items: center; + + @media (min-width: 1025px) { + width: 15.5%; + } + + @media (min-width: 2500px) { + width: 20%; + } + span { - align-items: center; - display: flex; + min-width: fit-content; + height: 50%; text-transform: uppercase; font-family: $font-family; font-style: normal; font-weight: normal; font-size: 12px; - line-height: 14px; + line-height: 16px; color: $color-gray; + margin-left: 8px; + + @media (min-width: 2500px) { + font-style: normal; + font-weight: 400; + font-size: 24px; + line-height: 33px; + } } - i { - margin-right: 8px; + img { + width: 4.5%; + min-width: 12px; + + @media (min-width: 2500px) { + width: 6.1%; + } } } }