Files
wyczarujprezent.pl/themes/charme/modules/an_megamenu/views/js/front.js
2024-10-28 22:14:22 +01:00

114 lines
3.8 KiB
JavaScript

/*js*/
function right_position() {
$('#amegamenu .adropdown').each(function (index, element) {
var this_offset_right = 0,
container_offset_right = 0,
this_offset_left = 0,
container_offset_left = 0;
this_offset_right = Math.floor($(this).offset().left + $(this).outerWidth(true));
container_offset_right = Math.floor($(".header-top .container").offset().left + $(".header-top .container").outerWidth())-15;
this_offset_left = Math.floor($(this).offset().left);
container_offset_left = Math.floor($(".header-top .container").offset().left)+15;
if (this_offset_left < container_offset_left ){
$(this).offset({left: container_offset_left});
}
if (this_offset_right > container_offset_right){
$(this).offset({left: (container_offset_right-$(this).outerWidth(true))});
}
});
}
function dropdown_scroll() {
let windowHeight = $(window).height();
$('#amegamenu .adropdown').each(function (index, element) {
let el_pos = $(this).offset().top - $(window).scrollTop(),
el_height = $(this).outerHeight(true);
if (el_height + el_pos + 15 > windowHeight) {
$(this).addClass('dropdown-scroll');
$(this).css('height', windowHeight - el_pos - 15 + 'px');
} else {
$(this).removeClass('dropdown-scroll');
$(this).css('height', 'auto');
}
});
}
$(document).ready(function () {
// open modal
btn = $('#menu-icon'),
modal = $('.amegamenu_mobile-cover, .amegamenu_mobile-modal, #mobile_top_menu_wrapper');
btn.off();
btn.on('click', function(event) {
$('html').addClass('amegamenu_mobile-open');
modal.fadeIn();
});
// close modal
$('.amegamenu_mobile-modal').click(function() {
var select = $('#mobile_top_menu_wrapper');
if ($(event.target).closest(select).length)
return;
modal.fadeOut(function () {
$('html').removeClass('amegamenu_mobile-open');
$('.menu-active').removeClass('menu-active').delay(300).queue(function(){
$('.mobile_item_wrapper.open').removeClass('open').dequeue();;
});
$('#mobile_top_menu_wrapper').attr('data-level', 0);
});
});
$('.megamenu_mobile-btn-close').on('click', function(event) {
modal.fadeOut(function () {
$('html').removeClass('amegamenu_mobile-open');
$('#mobile_top_menu_wrapper .open').removeClass('open');
$('#mobile_top_menu_wrapper .menu-active').removeClass('menu-active');
$('#mobile_top_menu_wrapper').attr('data-level', 0);
});
});
var timerId_0=false;
if($('#amegamenu').length >0){
right_position();
$(window).on('load resize scroll', function() {
clearTimeout(timerId_0);
timerId_0 = setTimeout(function () {
right_position();
dropdown_scroll();
},10);
});
}
// mobile
$(".arrow_down").on("click",function(){
$(this).css("display","none");
$(this).next().css("display","inline");
$(this).closest(".amenu-item").find(".adropdown-mobile").slideDown();
});
$(".arrow_up").on("click",function(){
$(this).css("display","none");
$(this).prev().css("display","inline");
$(this).closest(".amenu-item").find(".adropdown-mobile").slideUp();
});
$('.mobile-toggler, .amenu-nolink, .mobile_item_wrapper>span').on('click', function() {
$('#mobile_top_menu_wrapper').attr('data-level', +$('#mobile_top_menu_wrapper').attr('data-level') + 1);
$('.amegamenu_mobile-modal').animate({scrollTop: 0},100);
$(this).closest('.mobile_item_wrapper').addClass('open').delay(50).queue(function(){
$(this).closest('.mobile_item_wrapper').next('.adropdown-mobile').addClass('menu-active').dequeue();
});
});
$('.mobile_item_wrapper .amenu-nolink').on('click', function(e) {
e.preventDefault();
});
$('.megamenu_mobile-btn-back').on('click', function() {
$('.menu-active').removeClass('menu-active').delay(300).queue(function(){
$(this).prev('.mobile_item_wrapper.open').removeClass('open').dequeue();;
});
$('#mobile_top_menu_wrapper').attr('data-level', +$('#mobile_top_menu_wrapper').attr('data-level') - 1);
});
});