menu.js
1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// menu backdrop
if ((($('html').hasClass('touch') && $('.menu').length) || $('.nav-drawer').length) && !$('.menu-backdrop').length) {
$('body').append('<div class="menu-backdrop"></div>');
};
var menuBD = document.getElementsByClassName('menu-backdrop')[0];
if (menuBD !== undefined) {
var menuBDTap = new Hammer(menuBD);
menuBDTap.on('tap', function(e) {
if ($('.menu.open').length) {
mReset();
};
});
};
// menu close
$(document).on('click', function(e) {
var $target = $(e.target);
if ($('.menu.open').length && !$target.is('.fbtn-container *, .menu *')) {
mReset();
};
});
function mReset() {
var $bd = $('body');
if ($bd.hasClass('menu-open')) {
$bd.removeClass('menu-open');
};
if ($bd.hasClass('nav-drawer-open')) {
$bd.removeClass('nav-drawer-open');
};
$('.menu-toggle').closest('li.active').removeClass('active');
if ($('.menu.open .menu-search-focus').length) {
$('.menu.open .menu-search-focus').blur();
};
$('.menu.open').removeClass('open');
}
// menu open
$(document).on('click', '.menu-toggle', function(e) {
e.preventDefault();
e.stopPropagation();
var $this = $(this),
$thisLi = $this.closest('li'),
$thisMenu = $(getTargetFromTrigger($this));
if ($thisLi.hasClass('active')) {
mReset();
} else {
mReset();
if ($thisMenu.hasClass('nav-drawer')) {
$('body').addClass('nav-drawer-open');
} else {
$('body').addClass('menu-open');
}
$thisLi.addClass('active');
$thisMenu.addClass('open');
if ($('.menu-search-focus', $thisMenu).length) {
$('.menu-search-focus', $thisMenu).focus();
};
}
});