/** * Plugin Authoring * * @author Leonam Bernini / ADMAKE * **/ ;(function( $ ){ "use strict"; $.fn.ADMAKEmenu = function( params ) { // Default options var options = $.extend({ boxDefault : '#top-menu .container-fluid', menu : '.menu', btnMobile : '.btn-menu-xs', boxMobile : '#menu-mobile', boxRecebeMobile : '#menu-mobile .recebe-menu', widthTablet : 991, }, params); // Plugin variables var $self = this; // Put your DOM elements here var elements = { $body : $('body'), $boxDefault : $(options.boxDefault), $boxMobile : $(options.boxMobile), $boxRecebeMobile : $(options.boxRecebeMobile), $btnMobile : $(options.btnMobile), }; var methods = { init : function(){ methods.ajustaMenu(); events.resizeWindow(); events.btnMobileAction(); events.fechaMenu(); }, ajustaMenu : function(){ if( $( window ).width() > options.widthTablet ){ if( !elements.$body.hasClass('versao-desktop') && elements.$body.hasClass('versao-mobile') ){ elements.$boxDefault.html( $( options.menu, $(options.boxRecebeMobile) ) ); elements.$body.addClass('versao-desktop').removeClass('versao-mobile').removeClass('menu-ativo'); } }else{ if( !elements.$body.hasClass('versao-mobile') ){ elements.$boxRecebeMobile.html( $( options.menu, $(options.boxDefault) ) ); elements.$body.addClass('versao-mobile').removeClass('versao-desktop'); } } }, controlaMenuMobile : function(esconder){ var e = elements.$boxMobile; if( e.is(':visible') || esconder === true ){ elements.$body.find("header").css("position","relative"); elements.$body.find("header").css("background-color","transparent"); elements.$btnMobile.find("i").addClass("fa-bars"); elements.$btnMobile.find("i").removeClass("fa-times"); e.removeClass('show-menu').addClass('hide-menu'); e.fadeOut( function(){ elements.$body.removeClass('menu-ativo'); }); }else{ elements.$body.find("header").css("position","fixed"); elements.$body.find("header").css("background-color","#FFF"); elements.$btnMobile.find("i").removeClass("fa-bars"); elements.$btnMobile.find("i").addClass("fa-times"); e.removeClass('hide-menu').addClass('show-menu'); e.fadeIn( function(){ elements.$body.addClass('menu-ativo'); }); } }, }; // Plugin events var events = { resizeWindow : function(){ window.onresize = function() { methods.ajustaMenu(); }; }, btnMobileAction : function(){ elements.$btnMobile.click( function(){ methods.controlaMenuMobile(); }); }, fechaMenu : function(){ $(document).on( 'click', 'body.menu-ativo', function(event){ if (!$(event.target).closest("#menu-mobile").length) { methods.controlaMenuMobile(true); } }); }, }; methods.init(); }; })( jQuery );