assets/js/slimmenu.js in sparrow-jekyll-theme-0.1.1 vs assets/js/slimmenu.js in sparrow-jekyll-theme-0.1.2
- old
+ new
@@ -1,155 +1,155 @@
-/* Slightly modified version of jquery.slimmenu.js:
- * http://adnantopal.github.io/slimmenu/
- * Author: @adnantopal
- * Copyright 2013-2015, Adnan Topal (adnan.co)
- * Licensed under the MIT license.
-*/
-
-(function ($, window, document, undefined) {
- "use strict";
-
- var pluginName = 'slimmenu',
- oldWindowWidth = 0,
- defaults = {
- initiallyVisible: false,
- collapserTitle: 'Main Menu',
- animSpeed: 'medium',
- easingEffect: null,
- indentChildren: false,
- childrenIndenter: ' ',
- expandIcon: '<i>▼</i>',
- collapseIcon: '<i>▲</i>'
- };
-
- function Plugin(element, options) {
- this.element = element;
- this.$elem = $(this.element);
- this.options = $.extend(defaults, options);
- this.init();
- }
-
- Plugin.prototype = {
-
- init: function () {
- var $window = $(window),
- options = this.options,
- $menu = this.$elem,
- $collapser = '<div class="menu-collapser">' + options.collapserTitle + '<div class="collapse-button"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></div></div>',
- $menuCollapser;
-
- $menu.before($collapser);
- $menuCollapser = $menu.prev('.menu-collapser');
-
- $menu.on('click', '.sub-toggle', function (e) {
- e.preventDefault();
- e.stopPropagation();
-
- var $parentLi = $(this).closest('li');
-
- if ($(this).hasClass('expanded')) {
- $(this).removeClass('expanded').html(options.expandIcon);
- $parentLi.find('>ul').slideUp(options.animSpeed, options.easingEffect);
- } else {
- $(this).addClass('expanded').html(options.collapseIcon);
- $parentLi.find('>ul').slideDown(options.animSpeed, options.easingEffect);
- }
- });
-
- $menuCollapser.on('click', '.collapse-button', function (e) {
- e.preventDefault();
- $menu.slideToggle(options.animSpeed, options.easingEffect);
- });
-
- this.resizeMenu();
- $window.on('resize', this.resizeMenu.bind(this));
- $window.trigger('resize');
- },
-
- resizeMenu: function () {
- var self = this,
- $window = $(window),
- windowWidth = $window.width(),
- $options = this.options,
- $menu = $(this.element),
- $menuCollapser = $('body').find('.menu-collapser'),
- availableSpace = $menu.width() - 15,
- requiredSpace = 0;
-
- // Get initial state
- $menu.children().outerWidth(function(i, w) {
- requiredSpace += w;
- });
-
- if (window['innerWidth'] !== undefined) {
- if (window['innerWidth'] > windowWidth) {
- windowWidth = window['innerWidth'];
- }
- }
-
- if (windowWidth != oldWindowWidth) {
- oldWindowWidth = windowWidth;
-
- $menu.find('li').each(function () {
- if ($(this).has('ul').length) {
- if ($(this).addClass('has-submenu').has('.sub-toggle').length) {
- $(this).children('.sub-toggle').html($options.expandIcon);
- } else {
- $(this).addClass('has-submenu').append('<span class="sub-toggle">' + $options.expandIcon + '</span>');
- }
- }
-
- $(this).children('ul').hide().end().find('.sub-toggle').removeClass('expanded').html($options.expandIcon);
- });
-
- if (requiredSpace >= availableSpace) {
- if ($options.indentChildren) {
- $menu.find('ul').each(function () {
- var $depth = $(this).parents('ul').length;
- if (!$(this).children('li').children('a').has('i').length) {
- $(this).children('li').children('a').prepend(self.indent($depth, $options));
- }
- });
- }
-
- $menu.addClass('collapsed').find('li').has('ul').off('mouseenter mouseleave');
- $menuCollapser.show();
-
- if (!$options.initiallyVisible) {
- $menu.hide();
- }
- } else {
- $menu.find('li').has('ul')
- .on('mouseenter', function () {
- $(this).find('>ul').stop().slideDown($options.animSpeed, $options.easingEffect);
- })
- .on('mouseleave', function () {
- $(this).find('>ul').stop().slideUp($options.animSpeed, $options.easingEffect);
- });
-
- $menu.find('li > a > i').remove();
- $menu.removeClass('collapsed').show();
- $menuCollapser.hide();
- }
- }
- },
-
- indent: function (num, options) {
- var i = 0,
- $indent = '';
- for (; i < num; i++) {
- $indent += options.childrenIndenter;
- }
- return '<i>' + $indent + '</i> ';
- }
- };
-
- $.fn[pluginName] = function (options) {
- return this.each(function () {
- if (!$.data(this, 'plugin_' + pluginName)) {
- $.data(this, 'plugin_' + pluginName,
- new Plugin(this, options));
- }
- });
- };
-
+/* Slightly modified version of jquery.slimmenu.js:
+ * http://adnantopal.github.io/slimmenu/
+ * Author: @adnantopal
+ * Copyright 2013-2015, Adnan Topal (adnan.co)
+ * Licensed under the MIT license.
+*/
+
+(function ($, window, document, undefined) {
+ "use strict";
+
+ var pluginName = 'slimmenu',
+ oldWindowWidth = 0,
+ defaults = {
+ initiallyVisible: false,
+ collapserTitle: 'Main Menu',
+ animSpeed: 'medium',
+ easingEffect: null,
+ indentChildren: false,
+ childrenIndenter: ' ',
+ expandIcon: '<i>▼</i>',
+ collapseIcon: '<i>▲</i>'
+ };
+
+ function Plugin(element, options) {
+ this.element = element;
+ this.$elem = $(this.element);
+ this.options = $.extend(defaults, options);
+ this.init();
+ }
+
+ Plugin.prototype = {
+
+ init: function () {
+ var $window = $(window),
+ options = this.options,
+ $menu = this.$elem,
+ $collapser = '<div class="menu-collapser">' + options.collapserTitle + '<div class="collapse-button"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></div></div>',
+ $menuCollapser;
+
+ $menu.before($collapser);
+ $menuCollapser = $menu.prev('.menu-collapser');
+
+ $menu.on('click', '.sub-toggle', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+
+ var $parentLi = $(this).closest('li');
+
+ if ($(this).hasClass('expanded')) {
+ $(this).removeClass('expanded').html(options.expandIcon);
+ $parentLi.find('>ul').slideUp(options.animSpeed, options.easingEffect);
+ } else {
+ $(this).addClass('expanded').html(options.collapseIcon);
+ $parentLi.find('>ul').slideDown(options.animSpeed, options.easingEffect);
+ }
+ });
+
+ $menuCollapser.on('click', '.collapse-button', function (e) {
+ e.preventDefault();
+ $menu.slideToggle(options.animSpeed, options.easingEffect);
+ });
+
+ this.resizeMenu();
+ $window.on('resize', this.resizeMenu.bind(this));
+ $window.trigger('resize');
+ },
+
+ resizeMenu: function () {
+ var self = this,
+ $window = $(window),
+ windowWidth = $window.width(),
+ $options = this.options,
+ $menu = $(this.element),
+ $menuCollapser = $('body').find('.menu-collapser'),
+ availableSpace = $menu.width() - 15,
+ requiredSpace = 0;
+
+ // Get initial state
+ $menu.children().outerWidth(function(i, w) {
+ requiredSpace += w;
+ });
+
+ if (window['innerWidth'] !== undefined) {
+ if (window['innerWidth'] > windowWidth) {
+ windowWidth = window['innerWidth'];
+ }
+ }
+
+ if (windowWidth != oldWindowWidth) {
+ oldWindowWidth = windowWidth;
+
+ $menu.find('li').each(function () {
+ if ($(this).has('ul').length) {
+ if ($(this).addClass('has-submenu').has('.sub-toggle').length) {
+ $(this).children('.sub-toggle').html($options.expandIcon);
+ } else {
+ $(this).addClass('has-submenu').append('<span class="sub-toggle">' + $options.expandIcon + '</span>');
+ }
+ }
+
+ $(this).children('ul').hide().end().find('.sub-toggle').removeClass('expanded').html($options.expandIcon);
+ });
+
+ if (requiredSpace >= availableSpace) {
+ if ($options.indentChildren) {
+ $menu.find('ul').each(function () {
+ var $depth = $(this).parents('ul').length;
+ if (!$(this).children('li').children('a').has('i').length) {
+ $(this).children('li').children('a').prepend(self.indent($depth, $options));
+ }
+ });
+ }
+
+ $menu.addClass('collapsed').find('li').has('ul').off('mouseenter mouseleave');
+ $menuCollapser.show();
+
+ if (!$options.initiallyVisible) {
+ $menu.hide();
+ }
+ } else {
+ $menu.find('li').has('ul')
+ .on('mouseenter', function () {
+ $(this).find('>ul').stop().slideDown($options.animSpeed, $options.easingEffect);
+ })
+ .on('mouseleave', function () {
+ $(this).find('>ul').stop().slideUp($options.animSpeed, $options.easingEffect);
+ });
+
+ $menu.find('li > a > i').remove();
+ $menu.removeClass('collapsed').show();
+ $menuCollapser.hide();
+ }
+ }
+ },
+
+ indent: function (num, options) {
+ var i = 0,
+ $indent = '';
+ for (; i < num; i++) {
+ $indent += options.childrenIndenter;
+ }
+ return '<i>' + $indent + '</i> ';
+ }
+ };
+
+ $.fn[pluginName] = function (options) {
+ return this.each(function () {
+ if (!$.data(this, 'plugin_' + pluginName)) {
+ $.data(this, 'plugin_' + pluginName,
+ new Plugin(this, options));
+ }
+ });
+ };
+
}(jQuery, window, document));
\ No newline at end of file