mirror of
				https://github.com/dawidolko/Website-Templates.git
				synced 2025-10-31 08:23:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			120 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
|  * metismenu - v1.1.3
 | |
|  * Easy menu jQuery plugin for Twitter Bootstrap 3
 | |
|  * https://github.com/onokumus/metisMenu
 | |
|  *
 | |
|  * Made by Osman Nuri Okumus
 | |
|  * Under MIT License
 | |
|  */
 | |
| ;(function($, window, document, undefined) {
 | |
| 
 | |
|     var pluginName = "metisMenu",
 | |
|         defaults = {
 | |
|             toggle: true,
 | |
|             doubleTapToGo: false
 | |
|         };
 | |
| 
 | |
|     function Plugin(element, options) {
 | |
|         this.element = $(element);
 | |
|         this.settings = $.extend({}, defaults, options);
 | |
|         this._defaults = defaults;
 | |
|         this._name = pluginName;
 | |
|         this.init();
 | |
|     }
 | |
| 
 | |
|     Plugin.prototype = {
 | |
|         init: function() {
 | |
| 
 | |
|             var $this = this.element,
 | |
|                 $toggle = this.settings.toggle,
 | |
|                 obj = this;
 | |
| 
 | |
|             if (this.isIE() <= 9) {
 | |
|                 $this.find("li.active").has("ul").children("ul").collapse("show");
 | |
|                 $this.find("li").not(".active").has("ul").children("ul").collapse("hide");
 | |
|             } else {
 | |
|                 $this.find("li.active").has("ul").children("ul").addClass("collapse in");
 | |
|                 $this.find("li").not(".active").has("ul").children("ul").addClass("collapse");
 | |
|             }
 | |
| 
 | |
|             //add the "doubleTapToGo" class to active items if needed
 | |
|             if (obj.settings.doubleTapToGo) {
 | |
|                 $this.find("li.active").has("ul").children("a").addClass("doubleTapToGo");
 | |
|             }
 | |
| 
 | |
|             $this.find("li").has("ul").children("a").on("click" + "." + pluginName, function(e) {
 | |
|                 e.preventDefault();
 | |
| 
 | |
|                 //Do we need to enable the double tap
 | |
|                 if (obj.settings.doubleTapToGo) {
 | |
| 
 | |
|                     //if we hit a second time on the link and the href is valid, navigate to that url
 | |
|                     if (obj.doubleTapToGo($(this)) && $(this).attr("href") !== "#" && $(this).attr("href") !== "") {
 | |
|                         e.stopPropagation();
 | |
|                         document.location = $(this).attr("href");
 | |
|                         return;
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 $(this).parent("li").toggleClass("active").children("ul").collapse("toggle");
 | |
| 
 | |
|                 if ($toggle) {
 | |
|                     $(this).parent("li").siblings().removeClass("active").children("ul.in").collapse("hide");
 | |
|                 }
 | |
| 
 | |
|             });
 | |
|         },
 | |
| 
 | |
|         isIE: function() { //https://gist.github.com/padolsey/527683
 | |
|             var undef,
 | |
|                 v = 3,
 | |
|                 div = document.createElement("div"),
 | |
|                 all = div.getElementsByTagName("i");
 | |
| 
 | |
|             while (
 | |
|                 div.innerHTML = "<!--[if gt IE " + (++v) + "]><i></i><![endif]-->",
 | |
|                 all[0]
 | |
|             ) {
 | |
|                 return v > 4 ? v : undef;
 | |
|             }
 | |
|         },
 | |
| 
 | |
|         //Enable the link on the second click.
 | |
|         doubleTapToGo: function(elem) {
 | |
|             var $this = this.element;
 | |
| 
 | |
|             //if the class "doubleTapToGo" exists, remove it and return
 | |
|             if (elem.hasClass("doubleTapToGo")) {
 | |
|                 elem.removeClass("doubleTapToGo");
 | |
|                 return true;
 | |
|             }
 | |
| 
 | |
|             //does not exists, add a new class and return false
 | |
|             if (elem.parent().children("ul").length) {
 | |
|                  //first remove all other class
 | |
|                 $this.find(".doubleTapToGo").removeClass("doubleTapToGo");
 | |
|                 //add the class on the current element
 | |
|                 elem.addClass("doubleTapToGo");
 | |
|                 return false;
 | |
|             }
 | |
|         },
 | |
| 
 | |
|         remove: function() {
 | |
|             this.element.off("." + pluginName);
 | |
|             this.element.removeData(pluginName);
 | |
|         }
 | |
| 
 | |
|     };
 | |
| 
 | |
|     $.fn[pluginName] = function(options) {
 | |
|         this.each(function () {
 | |
|             var el = $(this);
 | |
|             if (el.data(pluginName)) {
 | |
|                 el.data(pluginName).remove();
 | |
|             }
 | |
|             el.data(pluginName, new Plugin(this, options));
 | |
|         });
 | |
|         return this;
 | |
|     };
 | |
| 
 | |
| })(jQuery, window, document); |