This repository has been archived on 2021-11-24. You can view files and clone it, but cannot push or open issues or pull requests.
2021-08-23 10:26:02 +02:00

86 lines
2.9 KiB
JavaScript

/*!
* Bootstrap submenu fix
* Version: 1.2
* Author web-master72
*/
(function($){
$(window).on('load', function() {
var navBreakpoint = 991,
mobileTest;
/* ---------------------------------------------- /*
* Mobile detect
/* ---------------------------------------------- */
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
mobileTest = true;
} else {
mobileTest = false;
}
/* ---------------------------------------------- /*
* Nav hover/click dropdown
/* ---------------------------------------------- */
$(window).resize(function(){
var width = Math.max($(window).width(), window.innerWidth);
var menuItem = $('.menu-item-has-children').not('.mega-menu-col');
// Remove old margins from sub-menus
menuItem.children('.sub-menu, .mega-menu').css('margin-left', '');
if ( width > navBreakpoint ) {
menuItem.removeClass('sub-menu-open');
}
if ( (width > navBreakpoint) && (mobileTest !== true) ) {
menuItem.children('a').unbind('click');
menuItem.unbind('mouseenter mouseleave');
menuItem.on({
mouseenter: function () {
$(this).addClass('sub-menu-open');
},
mouseleave: function () {
$(this).removeClass('sub-menu-open');
}
});
} else {
menuItem.unbind('mouseenter mouseleave');
menuItem.children('a').unbind('click').click(function(e) {
e.preventDefault();
$(this).parent().toggleClass('sub-menu-open');
// If device has big screen
if ( (width > navBreakpoint) && (mobileTest == true) ) {
$(this).parent().siblings().removeClass('sub-menu-open');
$(this).parent().siblings().find('.sub-menu-open').removeClass('sub-menu-open');
}
});
}
// if ( (width > navBreakpoint) && (mobileTest !== true) ) {
if (width >= navBreakpoint) {
menuItem.children('.sub-menu, .mega-menu').each(function() {
var a = $(this).offset();
var b = $(this).width() + a.left;
var c = width - (b + 30);
if ( (b + 30) > width ) {
$(this).css('margin-left', c);
} else {
$(this).css('margin-left', '');
}
});
}
}).resize();
});
})(jQuery);