Cria a lógica de funcionamento do menu mobile

This commit is contained in:
Andrea Matsunaga 2022-12-10 21:54:53 -03:00
parent 0afab6d8c8
commit f7f5a421e6
3 changed files with 165 additions and 29 deletions

View File

@ -1,38 +1,48 @@
import { isSmallerThen991 } from 'Helpers/MediasMatch'
export default class Menu {
constructor() {
this.toggleMenuMobile();
this.toggleSubCategories();
this.selectors();
this.events();
}
toggleMenuMobile() {
$("#open-menu-button, .show-menu .option").on("click", function () {
$(".menu-principal").addClass("mobile-open");
$("header.header").addClass("menu-mobile-open");
});
$("#close-menu-button").on("click", function () {
$(".menu-principal").removeClass("mobile-open");
$("header.header").removeClass("menu-mobile-open");
});
selectors() {
this.openMenuButton = $('.menu__menu-button');
this.mainMenu = $('.main-menu');
this.closeMenuButton = $('.menu-header__close-button');
this.departmentLink = $('.main-menu__department-link');
this.returnButton = $('.submenu__return-button');
}
toggleSubCategories() {
$(".m3-dropdown > button").on("click", function (event) {
event.preventDefault();
events() {
this.openMenuButton.click(this.openMenu.bind(this));
this.closeMenuButton.click(this.closeMenu.bind(this));
this.returnButton.click(this.closeSubmenu);
if ($(this).parent().hasClass("sub-menu-open")) {
$(this).parent().removeClass("sub-menu-open");
} else {
$(this).parent().siblings().removeClass("sub-menu-open");
$(this).parent().addClass("sub-menu-open");
}
if(isSmallerThen991) {
this.departmentLink.click(this.openSubmenu);
}
}
$(this).parents("ul.itens").toggleClass("has-sub-menu-open");
});
openMenu() {
this.mainMenu.addClass('is-open');
}
$(".m3-dropdown .btn-voltar").on("click", function () {
$(this).parents(".m3-dropdown").removeClass("sub-menu-open");
$(this).parents("ul.itens").removeClass("has-sub-menu-open");
});
closeMenu() {
this.mainMenu.removeClass('is-open');
}
openSubmenu(event) {
event.preventDefault();
const link = $(event.target);
link.siblings('.submenu').addClass('is-open');
}
closeSubmenu(event) {
const button = $(event.target);
button.parents('.submenu').removeClass('is-open');
}
}

View File

@ -14,6 +14,10 @@
.menu-header {
@include mq(lg, min) {
display: none;
}
&__top-wrapper {
display: flex;
align-items: center;
@ -63,6 +67,11 @@
width: 100%;
height: 100%;
background: $white-500;
transition: transform .2s ease-in-out;
}
&.is-open {
transform: translateX(0);
}
&__departments {
@ -133,6 +142,12 @@
visibility: hidden;
}
}
i {
@include mq(lg, min) {
display: none;
}
}
}
&__account-link {
@ -145,6 +160,10 @@
color: $white-500;
background: $black-500;
@include mq(lg, min) {
display: none;
}
i {
margin-right: 16px;
}
@ -162,6 +181,7 @@
overflow: auto;
padding-bottom: 34px;
background: $white-500;
transition: left 0.2s ease-in-out;
}
@include mq(lg, min) {
@ -176,6 +196,10 @@
transition: all 0.2s ease-in-out;
}
&.is-open {
left: 0;
}
&::before {
content: '';
position: absolute;
@ -206,6 +230,10 @@
text-align: left;
background: transparent;
@include mq(lg, min) {
display: none;
}
i {
margin-right: 8px;
}

View File

@ -27,10 +27,10 @@
<i class="sprite sprite-menu-left-arrow-icon"></i>
VOLTAR
</button>
<div class="container">
<h2 class="submenu__title">LOREM IPSUM</h2>
<h2 class="submenu__title">LOREM IPSUM 01</h2>
<div class="submenu__categories-wrapper">
<ul class="submenu__categories">
@ -77,6 +77,55 @@
LOREM IPSUM
<i class="sprite sprite-menu-mobile-arrow-icon"></i>
</a>
<div class="submenu">
<button class="submenu__return-button">
<i class="sprite sprite-menu-left-arrow-icon"></i>
VOLTAR
</button>
<div class="container">
<h2 class="submenu__title">LOREM IPSUM 02</h2>
<div class="submenu__categories-wrapper">
<ul class="submenu__categories">
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
</ul>
<ul class="submenu__categories">
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
</ul>
</div>
<a class="submenu__see-all" href="#">
VER TODOS
<i class="sprite sprite-menu-arrow-icon"></i>
</a>
</div>
</div>
</li>
<li class="main-menu__department">
@ -84,6 +133,55 @@
LOREM IPSUM
<i class="sprite sprite-menu-mobile-arrow-icon"></i>
</a>
<div class="submenu">
<button class="submenu__return-button">
<i class="sprite sprite-menu-left-arrow-icon"></i>
VOLTAR
</button>
<div class="container">
<h2 class="submenu__title">LOREM IPSUM 03</h2>
<div class="submenu__categories-wrapper">
<ul class="submenu__categories">
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
</ul>
<ul class="submenu__categories">
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
<li class="submenu__category">
<a class="submenu__category-link" href="#">Lorem Ipsum</a>
</li>
</ul>
</div>
<a class="submenu__see-all" href="#">
VER TODOS
<i class="sprite sprite-menu-arrow-icon"></i>
</a>
</div>
</div>
</li>
</ul>