feat: adiciona js no menu mobile

This commit is contained in:
Cainã Milech 2022-12-06 22:37:15 -03:00
parent d92f680d74
commit 93d69b5d98
2 changed files with 61 additions and 28 deletions

View File

@ -1,38 +1,42 @@
export default class Menu { export default class Menu {
constructor() { constructor() {
this.toggleMenuMobile(); this.selectors();
this.toggleSubCategories(); this.events();
} }
toggleMenuMobile() { selectors() {
$("#open-menu-button, .show-menu .option").on("click", function () { this.openMenuButton = $(".menu__button");
$(".menu-principal").addClass("mobile-open"); this.mainMenu = $(".main-menu");
$("header.header").addClass("menu-mobile-open"); this.closeMenuButton = $(".menu-header__close-button");
}); this.departmentLink = $(".main-menu__department-link");
this.returnButton = $(".submenu__return-button");
$("#close-menu-button").on("click", function () {
$(".menu-principal").removeClass("mobile-open");
$("header.header").removeClass("menu-mobile-open");
});
} }
toggleSubCategories() { events() {
$(".m3-dropdown > button").on("click", function (event) { this.openMenuButton.click(this.openMenu.bind(this));
event.preventDefault(); this.closeMenuButton.click(this.closeMenu.bind(this));
this.departmentLink.click(this.openSubmenu.bind(this));
if ($(this).parent().hasClass("sub-menu-open")) { this.returnButton.click(this.closeSubmenu.bind(this));
$(this).parent().removeClass("sub-menu-open");
} else {
$(this).parent().siblings().removeClass("sub-menu-open");
$(this).parent().addClass("sub-menu-open");
} }
$(this).parents("ul.itens").toggleClass("has-sub-menu-open"); openMenu() {
}); this.mainMenu.addClass("is-open");
}
$(".m3-dropdown .btn-voltar").on("click", function () { closeMenu() {
$(this).parents(".m3-dropdown").removeClass("sub-menu-open"); this.mainMenu.removeClass("is-open");
$(this).parents("ul.itens").removeClass("has-sub-menu-open"); }
});
openSubmenu(event) {
event.preventDefault(); //nao adicionar nada na url por ex #
const link = $(event.target); //para saber qual link foi clicado
link.siblings(".submenu").addClass("is-open"); //pegar o irmao
}
closeSubmenu(event) {
const button = $(event.target);
button.parents(".submenu").removeClass("is-open"); //pegar o pai submenu
} }
} }

View File

@ -12,6 +12,10 @@
} }
.menu-header { .menu-header {
@include mq(lg, min) {
display: none;
}
&__top-wrapper { &__top-wrapper {
display: flex; display: flex;
align-items: center; align-items: center;
@ -63,6 +67,12 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
background: $white-500; background: $white-500;
transition: transform 0.2s ease-in-out;
}
&.is-open {
/*quando o proprio main menu tiver essa classe, que vem no js, aplica.*/
transform: translateX(0); /*volta pra tela*/
} }
&__departments { &__departments {
@ -133,6 +143,12 @@
visibility: hidden; visibility: hidden;
} }
} }
i {
@include mq(lg, min) {
display: none;
}
}
} }
&__account-link { &__account-link {
@ -145,6 +161,10 @@
line-height: 12px; line-height: 12px;
color: $white-500; color: $white-500;
@include mq(lg, min) {
display: none;
}
i { i {
margin-right: 16px; margin-right: 16px;
} }
@ -179,6 +199,12 @@
opacity: 0; /*oculto parece q nao ta ali*/ opacity: 0; /*oculto parece q nao ta ali*/
pointer-events: none; /*mouse nao pode passar por ele*/ pointer-events: none; /*mouse nao pode passar por ele*/
transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out;
transition: left 0.2s ease-in-out;
}
&.is-open {
/*quando o proprio main menu tiver essa classe, que vem no js, aplica.*/
left: 0; /*volta pra tela*/
} }
&::before { &::before {
@ -208,9 +234,12 @@
border-width: 0 0 1px 0; border-width: 0 0 1px 0;
outline: 0; outline: 0;
text-align: left; text-align: left;
background: transparent; background: transparent;
@include mq(lg, min) {
display: none;
}
i { i {
margin-right: 8px; margin-right: 8px;
} }