123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598 |
- // ------------------------------------------------------------------------------ //
- //
- // Template name : Bootsnav - Multi Purpose Header
- // Categorie : Bootstrap Menu in CSS
- // Author : adamnurdin01
- // Version : v.1.2
- // Created : 2016-06-02
- // Last update : 2016-10-19
- //
- // ------------------------------------------------------------------------------ //
-
- (function ($) {
- "use strict";
-
- var bootsnav = {
- initialize: function() {
- this.event();
- this.hoverDropdown();
- this.navbarSticky();
- this.navbarScrollspy();
- },
- event : function(){
-
- // ------------------------------------------------------------------------------ //
- // Variable
- // ------------------------------------------------------------------------------ //
- var getNav = $("nav.navbar.bootsnav");
-
- // ------------------------------------------------------------------------------ //
- // Navbar Sticky
- // ------------------------------------------------------------------------------ //
- var navSticky = getNav.hasClass("navbar-sticky");
- if( navSticky ){
- // Wraped navigation
- getNav.wrap("<div class='wrap-sticky'></div>");
- }
-
- // ------------------------------------------------------------------------------ //
- // Navbar Center
- // ------------------------------------------------------------------------------ //
- if( getNav.hasClass("brand-center")){
- var postsArr = new Array(),
- index = $("nav.brand-center"),
- $postsList = index.find('ul.navbar-nav');
-
- index.prepend("<span class='storage-name' style='display:none;'></span>");
-
- //Create array of all posts in lists
- index.find('ul.navbar-nav > li').each(function(){
- if( $(this).hasClass("active") ){
- var getElement = $("a", this).eq(0).text();
- $(".storage-name").html(getElement);
- }
- postsArr.push($(this).html());
- });
-
- //Split the array at this point. The original array is altered.
- var firstList = postsArr.splice(0, Math.round(postsArr.length / 2)),
- secondList = postsArr,
- ListHTML = '';
-
- var createHTML = function(list){
- ListHTML = '';
- for (var i = 0; i < list.length; i++) {
- ListHTML += '<li>' + list[i] + '</li>'
- }
- }
-
- //Generate HTML for first list
- createHTML(firstList);
- $postsList.html(ListHTML);
- index.find("ul.nav").first().addClass("navbar-left");
-
- //Generate HTML for second list
- createHTML(secondList);
- //Create new list after original one
- $postsList.after('<ul class="nav navbar-nav"></ul>').next().html(ListHTML);
- index.find("ul.nav").last().addClass("navbar-right");
-
- //Wrap navigation menu
- index.find("ul.nav.navbar-left").wrap("<div class='col-half left'></div>");
- index.find("ul.nav.navbar-right").wrap("<div class='col-half right'></div>");
-
- //Selection Class
- index.find('ul.navbar-nav > li').each(function(){
- var dropDown = $("ul.dropdown-menu", this),
- megaMenu = $("ul.megamenu-content", this);
- dropDown.closest("li").addClass("dropdown");
- megaMenu.closest("li").addClass("megamenu-fw");
- });
-
- var getName = $(".storage-name").html();
- if( !getName == "" ){
- $( "ul.navbar-nav > li:contains('" + getName + "')" ).addClass("active");
- }
- }
-
-
- // ------------------------------------------------------------------------------ //
- // Navbar Sidebar
- // ------------------------------------------------------------------------------ //
- if( getNav.hasClass("navbar-sidebar")){
- // Add Class to body
- $("body").addClass("wrap-nav-sidebar");
- getNav.wrapInner("<div class='scroller'></div>");
- }else{
- $(".bootsnav").addClass("on");
- }
-
- // ------------------------------------------------------------------------------ //
- // Menu Center
- // ------------------------------------------------------------------------------ //
- if( getNav.find("ul.nav").hasClass("navbar-center")){
- getNav.addClass("menu-center");
- }
-
- // ------------------------------------------------------------------------------ //
- // Navbar Full
- // ------------------------------------------------------------------------------ //
- if( getNav.hasClass("navbar-full")){
- // Add Class to body
- $("nav.navbar.bootsnav").find("ul.nav").wrap("<div class='wrap-full-menu'></div>");
- $(".wrap-full-menu").wrap("<div class='nav-full'></div>");
- $("ul.nav.navbar-nav").prepend("<li class='close-full-menu'><a href='#'><i class='fa fa-times'></i></a></li>");
- }else if( getNav.hasClass("navbar-mobile")){
- getNav.removeClass("no-full");
- }else{
- getNav.addClass("no-full");
- }
-
- // ------------------------------------------------------------------------------ //
- // Navbar Mobile
- // ------------------------------------------------------------------------------ //
- if( getNav.hasClass("navbar-mobile")){
- // Add Class to body
- $('.navbar-collapse').on('shown.bs.collapse', function() {
- $("body").addClass("side-right");
- });
- $('.navbar-collapse').on('hide.bs.collapse', function() {
- $("body").removeClass("side-right");
- });
-
- $(window).on("resize", function(){
- $("body").removeClass("side-right");
- });
- }
-
- // ------------------------------------------------------------------------------ //
- // Navbar Fixed
- // ------------------------------------------------------------------------------ //
- if( getNav.hasClass("no-background")){
- $(window).on("scroll", function(){
- var scrollTop = $(window).scrollTop();
- if(scrollTop >34){
- $(".navbar-fixed").removeClass("no-background");
- }else {
- $(".navbar-fixed").addClass("no-background");
- }
- });
- }
-
- // ------------------------------------------------------------------------------ //
- // Navbar Fixed
- // ------------------------------------------------------------------------------ //
- if( getNav.hasClass("navbar-transparent")){
- $(window).on("scroll", function(){
- var scrollTop = $(window).scrollTop();
- if(scrollTop >34){
- $(".navbar-fixed").removeClass("navbar-transparent");
- }else {
- $(".navbar-fixed").addClass("navbar-transparent");
- }
- });
- }
-
- // ------------------------------------------------------------------------------ //
- // Button Cart
- // ------------------------------------------------------------------------------ //
- $(".btn-cart").on("click", function(e){
- e.stopPropagation();
- });
-
- // ------------------------------------------------------------------------------ //
- // Toggle Search
- // ------------------------------------------------------------------------------ //
- $("nav.navbar.bootsnav .attr-nav").each(function(){
- $("li.search > a", this).on("click", function(e){
- e.preventDefault();
- $(".top-search").slideToggle();
- });
- });
- $(".input-group-addon.close-search").on("click", function(){
- $(".top-search").slideUp();
- });
-
- // ------------------------------------------------------------------------------ //
- // Toggle Side Menu
- // ------------------------------------------------------------------------------ //
- $("nav.navbar.bootsnav .attr-nav").each(function(){
- $("li.side-menu > a", this).on("click", function(e){
- e.preventDefault();
- $("nav.navbar.bootsnav > .side").toggleClass("on");
- $("body").toggleClass("on-side");
- });
- });
- $(".side .close-side").on("click", function(e){
- e.preventDefault();
- $("nav.navbar.bootsnav > .side").removeClass("on");
- $("body").removeClass("on-side");
- });
-
-
-
- // ------------------------------------------------------------------------------ //
- // Wrapper
- // ------------------------------------------------------------------------------ //
- $("body").wrapInner( "<div class='wrapper'></div>");
- },
-
-
- // ------------------------------------------------------------------------------ //
- // Change dropdown to hover on dekstop
- // ------------------------------------------------------------------------------ //
- hoverDropdown : function(){
- var getNav = $("nav.navbar.bootsnav"),
- getWindow = $(window).width(),
- getHeight = $(window).height(),
- getIn = getNav.find("ul.nav").data("in"),
- getOut = getNav.find("ul.nav").data("out");
-
- if( getWindow < 991 ){
-
- // Height of scroll navigation sidebar
- $(".scroller").css("height", "auto");
-
- // Disable mouseenter event
- $("nav.navbar.bootsnav ul.nav").find("li.dropdown").off("mouseenter");
- $("nav.navbar.bootsnav ul.nav").find("li.dropdown").off("mouseleave");
- $("nav.navbar.bootsnav ul.nav").find(".title").off("mouseenter");
- $("nav.navbar.bootsnav ul.nav").off("mouseleave");
- $(".navbar-collapse").removeClass("animated");
-
- // Enable click event
- $("nav.navbar.bootsnav ul.nav").each(function(){
- $(".dropdown-menu", this).addClass("animated");
- $(".dropdown-menu", this).removeClass(getOut);
-
- // Dropdown Fade Toggle
- $("a.dropdown-toggle", this).off('click');
- $("a.dropdown-toggle", this).on('click', function (e) {
- e.stopPropagation();
- $(this).closest("li.dropdown").find(".dropdown-menu").first().stop().fadeToggle().toggleClass(getIn);
- $(this).closest("li.dropdown").first().toggleClass("on");
- return false;
- });
-
- // Hidden dropdown action
- $('li.dropdown', this).each(function () {
- $(this).find(".dropdown-menu").stop().fadeOut();
- $(this).on('hidden.bs.dropdown', function () {
- $(this).find(".dropdown-menu").stop().fadeOut();
- });
- return false;
- });
-
- // Megamenu style
- $(".megamenu-fw", this).each(function(){
- $(".col-menu", this).each(function(){
- $(".content", this).addClass("animated");
- $(".content", this).stop().fadeOut();
- $(".title", this).off("click");
- $(".title", this).on("click", function(){
- $(this).closest(".col-menu").find(".content").stop().fadeToggle().addClass(getIn);
- $(this).closest(".col-menu").toggleClass("on");
- return false;
- });
-
- $(".content", this).on("click", function(e){
- e.stopPropagation();
- });
- });
- });
- });
-
- // Hidden dropdown
- var cleanOpen = function(){
- $('li.dropdown', this).removeClass("on");
- $(".dropdown-menu", this).stop().fadeOut();
- $(".dropdown-menu", this).removeClass(getIn);
- $(".col-menu", this).removeClass("on");
- $(".col-menu .content", this).stop().fadeOut();
- $(".col-menu .content", this).removeClass(getIn);
- }
-
- // Hidden om mouse leave
- $("nav.navbar.bootsnav").on("mouseleave", function(){
- cleanOpen();
- });
-
- // Enable click atribute navigation
- $("nav.navbar.bootsnav .attr-nav").each(function(){
- $(".dropdown-menu", this).removeClass("animated");
- $("li.dropdown", this).off("mouseenter");
- $("li.dropdown", this).off("mouseleave");
- $("a.dropdown-toggle", this).off('click');
- $("a.dropdown-toggle", this).on('click', function (e) {
- e.stopPropagation();
- $(this).closest("li.dropdown").find(".dropdown-menu").first().stop().fadeToggle();
- $(".navbar-toggle").each(function(){
- $(".fa", this).removeClass("fa-times");
- $(".fa", this).addClass("fa-bars");
- $(".navbar-collapse").removeClass("in");
- $(".navbar-collapse").removeClass("on");
- });
- });
-
- $(this).on("mouseleave", function(){
- $(".dropdown-menu", this).stop().fadeOut();
- $("li.dropdown", this).removeClass("on");
- return false;
- });
- });
-
- // Toggle Bars
- $(".navbar-toggle").each(function(){
- $(this).off("click");
- $(this).on("click", function(){
- $(".fa", this).toggleClass("fa-bars");
- $(".fa", this).toggleClass("fa-times");
- cleanOpen();
- });
- });
-
- }else if( getWindow > 991 ){
- // Height of scroll navigation sidebar
- $(".scroller").css("height", getHeight + "px");
-
- // Navbar Sidebar
- if( getNav.hasClass("navbar-sidebar")){
- // Hover effect Sidebar Menu
- $("nav.navbar.bootsnav ul.nav").each(function(){
- $("a.dropdown-toggle", this).off('click');
- $("a.dropdown-toggle", this).on('click', function (e) {
- e.stopPropagation();
- });
-
- $(".dropdown-menu", this).addClass("animated");
- $("li.dropdown", this).on("mouseenter", function(){
- $(".dropdown-menu", this).eq(0).removeClass(getOut);
- $(".dropdown-menu", this).eq(0).stop().fadeIn().addClass(getIn);
- $(this).addClass("on");
- return false;
- });
-
- $(".col-menu").each(function(){
- $(".content", this).addClass("animated");
- $(".title", this).on("mouseenter", function(){
- $(this).closest(".col-menu").find(".content").stop().fadeIn().addClass(getIn);
- $(this).closest(".col-menu").addClass("on");
- return false;
- });
- });
-
- $(this).on("mouseleave", function(){
- $(".dropdown-menu", this).stop().removeClass(getIn);
- $(".dropdown-menu", this).stop().addClass(getOut).fadeOut();
- $(".col-menu", this).find(".content").stop().fadeOut().removeClass(getIn);
- $(".col-menu", this).removeClass("on");
- $("li.dropdown", this).removeClass("on");
- return false;
- });
- });
- }else{
- // Hover effect Default Menu
- $("nav.navbar.bootsnav ul.nav").each(function(){
- $("a.dropdown-toggle", this).off('click');
- $("a.dropdown-toggle", this).on('click', function (e) {
- e.stopPropagation();
- });
-
- $(".megamenu-fw", this).each(function(){
- $(".title", this).off("click");
- $("a.dropdown-toggle", this).off("click");
- $(".content").removeClass("animated");
- });
-
- $(".dropdown-menu", this).addClass("animated");
- $("li.dropdown", this).on("mouseenter", function(){
- $(".dropdown-menu", this).eq(0).removeClass(getOut);
- $(".dropdown-menu", this).eq(0).stop().fadeIn().addClass(getIn);
- $(this).addClass("on");
- return false;
- });
-
- $("li.dropdown", this).on("mouseleave", function(){
- $(".dropdown-menu", this).eq(0).removeClass(getIn);
- $(".dropdown-menu", this).eq(0).stop().fadeOut().addClass(getOut);
- $(this).removeClass("on");
- });
-
- $(this).on("mouseleave", function(){
- $(".dropdown-menu", this).removeClass(getIn);
- $(".dropdown-menu", this).eq(0).stop().fadeOut().addClass(getOut);
- $("li.dropdown", this).removeClass("on");
- return false;
- });
- });
- }
-
- // ------------------------------------------------------------------------------ //
- // Hover effect Atribute Navigation
- // ------------------------------------------------------------------------------ //
- $("nav.navbar.bootsnav .attr-nav").each(function(){
- $("a.dropdown-toggle", this).off('click');
- $("a.dropdown-toggle", this).on('click', function (e) {
- e.stopPropagation();
- });
-
- $(".dropdown-menu", this).addClass("animated");
- $("li.dropdown", this).on("mouseenter", function(){
- $(".dropdown-menu", this).eq(0).removeClass(getOut);
- $(".dropdown-menu", this).eq(0).stop().fadeIn().addClass(getIn);
- $(this).addClass("on");
- return false;
- });
-
- $("li.dropdown", this).on("mouseleave", function(){
- $(".dropdown-menu", this).eq(0).removeClass(getIn);
- $(".dropdown-menu", this).eq(0).stop().fadeOut().addClass(getOut);
- $(this).removeClass("on");
- });
-
- $(this).on("mouseleave", function(){
- $(".dropdown-menu", this).removeClass(getIn);
- $(".dropdown-menu", this).eq(0).stop().fadeOut().addClass(getOut);
- $("li.dropdown", this).removeClass("on");
- return false;
- });
- });
- }
-
- // ------------------------------------------------------------------------------ //
- // Menu Fullscreen
- // ------------------------------------------------------------------------------ //
- if( getNav.hasClass("navbar-full")){
- var windowHeight = $(window).height(),
- windowWidth = $(window).width();
-
- $(".nav-full").css("height", windowHeight + "px");
- $(".wrap-full-menu").css("height", windowHeight + "px");
- $(".wrap-full-menu").css("width", windowWidth + "px");
-
- $(".navbar-collapse").addClass("animated");
- $(".navbar-toggle").each(function(){
- var getId = $(this).data("target");
- $(this).off("click");
- $(this).on("click", function(e){
- e.preventDefault();
- $(getId).removeClass(getOut);
- $(getId).addClass("in");
- $(getId).addClass(getIn);
- return false;
- });
-
- $("li.close-full-menu").on("click", function(e){
- e.preventDefault();
- $(getId).addClass(getOut);
- setTimeout(function(){
- $(getId).removeClass("in");
- $(getId).removeClass(getIn);
- }, 500);
- return false;
- });
- });
- }
- },
-
- // ------------------------------------------------------------------------------ //
- // Navbar Sticky
- // ------------------------------------------------------------------------------ //
- navbarSticky : function(){
- var getNav = $("nav.navbar.bootsnav"),
- navSticky = getNav.hasClass("navbar-sticky");
-
- if( navSticky ){
-
- // Set Height Navigation
- var getHeight = getNav.height();
- $(".wrap-sticky").height(getHeight);
-
- // Windown on scroll
- var getOffset = $(".wrap-sticky").offset().top;
- $(window).on("scroll", function(){
- var scrollTop = $(window).scrollTop();
- if(scrollTop > getOffset){
- getNav.addClass("sticked");
- }else {
- getNav.removeClass("sticked");
- }
- });
- }
- },
-
- // ------------------------------------------------------------------------------ //
- // Navbar Scrollspy
- // ------------------------------------------------------------------------------ //
- navbarScrollspy : function(){
- var navScrollSpy = $(".navbar-scrollspy"),
- $body = $('body'),
- getNav = $('nav.navbar.bootsnav'),
- offset = getNav.outerHeight();
-
- if( navScrollSpy.length ){
- $body.scrollspy({target: '.navbar', offset: offset });
-
- // Animation Scrollspy
- $('.scroll').on('click', function(event) {
- event.preventDefault();
-
- // Active link
- $('.scroll').removeClass("active");
- $(this).addClass("active");
-
- // Remove navbar collapse
- $(".navbar-collapse").removeClass("in");
-
- // Toggle Bars
- $(".navbar-toggle").each(function(){
- $(".fa", this).removeClass("fa-times");
- $(".fa", this).addClass("fa-bars");
- });
-
- // Scroll
- var scrollTop = $(window).scrollTop(),
- $anchor = $(this).find('a'),
- $section = $($anchor.attr('href')).offset().top,
- $window = $(window).width(),
- $minusDesktop = getNav.data("minus-value-desktop"),
- $minusMobile = getNav.data("minus-value-mobile"),
- $speed = getNav.data("speed");
-
- if( $window > 992 ){
- var $position = $section - $minusDesktop;
- }else{
- var $position = $section - $minusMobile;
- }
-
- $('html, body').stop().animate({
- scrollTop: $position
- }, $speed);
- });
-
- // Activate Navigation
- var fixSpy = function() {
- var data = $body.data('bs.scrollspy');
- if (data) {
- offset = getNav.outerHeight();
- data.options.offset = offset;
- $body.data('bs.scrollspy', data);
- $body.scrollspy('refresh');
- }
- }
-
- // Activate Navigation on resize
- var resizeTimer;
- $(window).on('resize', function() {
- clearTimeout(resizeTimer);
- var resizeTimer = setTimeout(fixSpy, 200);
- });
- }
- }
- };
-
- // Initialize
- $(document).ready(function(){
- bootsnav.initialize();
- });
-
- // Reset on resize
- $(window).on("resize", function(){
- bootsnav.hoverDropdown();
- setTimeout(function(){
- bootsnav.navbarSticky();
- }, 500);
-
- // Toggle Bars
- $(".navbar-toggle").each(function(){
- $(".fa", this).removeClass("fa-times");
- $(".fa", this).addClass("fa-bars");
- $(this).removeClass("fixed");
- });
- $(".navbar-collapse").removeClass("in");
- $(".navbar-collapse").removeClass("on");
- $(".navbar-collapse").removeClass("bounceIn");
- });
-
- }(jQuery));
|