From ccdb4a186b220b28bcafac89adee08c35cc1cf2c Mon Sep 17 00:00:00 2001 From: Pascal Herbert Date: Thu, 19 Jun 2014 16:21:39 +0200 Subject: [PATCH] Update bootstrap-hover-dropdown to v2.0.10 Update bootstrap-hover-dropdown to v2.0.10 --- .../2.0.10/bootstrap-hover-dropdown.js | 111 ++++++++++++++++++ .../2.0.10/bootstrap-hover-dropdown.min.js | 13 ++ .../bootstrap-hover-dropdown/package.json | 2 +- 3 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 ajax/libs/bootstrap-hover-dropdown/2.0.10/bootstrap-hover-dropdown.js create mode 100644 ajax/libs/bootstrap-hover-dropdown/2.0.10/bootstrap-hover-dropdown.min.js diff --git a/ajax/libs/bootstrap-hover-dropdown/2.0.10/bootstrap-hover-dropdown.js b/ajax/libs/bootstrap-hover-dropdown/2.0.10/bootstrap-hover-dropdown.js new file mode 100644 index 000000000..521ef3568 --- /dev/null +++ b/ajax/libs/bootstrap-hover-dropdown/2.0.10/bootstrap-hover-dropdown.js @@ -0,0 +1,111 @@ +/** + * Project: Bootstrap Hover Dropdown + * Author: Cameron Spear + * Contributors: Mattia Larentis + * + * Dependencies: Bootstrap's Dropdown plugin, jQuery + * + * A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience. + * + * License: MIT + * + * http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/ + */ +;(function ($, window, undefined) { + // outside the scope of the jQuery plugin to + // keep track of all dropdowns + var $allDropdowns = $(); + + // if instantlyCloseOthers is true, then it will instantly + // shut other nav items when a new one is hovered over + $.fn.dropdownHover = function (options) { + // don't do anything if touch is supported + // (plugin causes some issues on mobile) + if('ontouchstart' in document) return this; // don't want to affect chaining + + // the element we really care about + // is the dropdown-toggle's parent + $allDropdowns = $allDropdowns.add(this.parent()); + + return this.each(function () { + var $this = $(this), + $parent = $this.parent(), + defaults = { + delay: 500, + instantlyCloseOthers: true + }, + data = { + delay: $(this).data('delay'), + instantlyCloseOthers: $(this).data('close-others') + }, + showEvent = 'show.bs.dropdown', + hideEvent = 'hide.bs.dropdown', + // shownEvent = 'shown.bs.dropdown', + // hiddenEvent = 'hidden.bs.dropdown', + settings = $.extend(true, {}, defaults, options, data), + timeout; + + $parent.hover(function (event) { + // so a neighbor can't open the dropdown + if(!$parent.hasClass('open') && !$this.is(event.target)) { + // stop this event, stop executing any code + // in this callback but continue to propagate + return true; + } + + openDropdown(event); + }, function () { + timeout = window.setTimeout(function () { + $parent.removeClass('open'); + $this.trigger(hideEvent); + }, settings.delay); + }); + + // this helps with button groups! + $this.hover(function (event) { + // this helps prevent a double event from firing. + // see https://github.com/CWSpear/bootstrap-hover-dropdown/issues/55 + if(!$parent.hasClass('open') && !$parent.is(event.target)) { + // stop this event, stop executing any code + // in this callback but continue to propagate + return true; + } + + openDropdown(event); + }); + + // handle submenus + $parent.find('.dropdown-submenu').each(function (){ + var $this = $(this); + var subTimeout; + $this.hover(function () { + window.clearTimeout(subTimeout); + $this.children('.dropdown-menu').show(); + // always close submenu siblings instantly + $this.siblings().children('.dropdown-menu').hide(); + }, function () { + var $submenu = $this.children('.dropdown-menu'); + subTimeout = window.setTimeout(function () { + $submenu.hide(); + }, settings.delay); + }); + }); + + function openDropdown(event) { + $allDropdowns.find(':focus').blur(); + + if(settings.instantlyCloseOthers === true) + $allDropdowns.removeClass('open'); + + window.clearTimeout(timeout); + $parent.addClass('open'); + $this.trigger(showEvent); + } + }); + }; + + $(document).ready(function () { + // apply dropdownHover to all elements with the data-hover="dropdown" attribute + $('[data-hover="dropdown"]').dropdownHover(); + }); +})(jQuery, this); diff --git a/ajax/libs/bootstrap-hover-dropdown/2.0.10/bootstrap-hover-dropdown.min.js b/ajax/libs/bootstrap-hover-dropdown/2.0.10/bootstrap-hover-dropdown.min.js new file mode 100644 index 000000000..51a81ef1c --- /dev/null +++ b/ajax/libs/bootstrap-hover-dropdown/2.0.10/bootstrap-hover-dropdown.min.js @@ -0,0 +1,13 @@ +/** + * Project: Bootstrap Hover Dropdown + * Author: Cameron Spear + * Contributors: Mattia Larentis + * + * Dependencies: Bootstrap's Dropdown plugin, jQuery + * + * A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience. + * + * License: MIT + * + * http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/ + */(function(e,t,n){var r=e();e.fn.dropdownHover=function(n){if("ontouchstart"in document)return this;r=r.add(this.parent());return this.each(function(){function h(e){r.find(":focus").blur();l.instantlyCloseOthers===!0&&r.removeClass("open");t.clearTimeout(c);s.addClass("open");i.trigger(a)}var i=e(this),s=i.parent(),o={delay:500,instantlyCloseOthers:!0},u={delay:e(this).data("delay"),instantlyCloseOthers:e(this).data("close-others")},a="show.bs.dropdown",f="hide.bs.dropdown",l=e.extend(!0,{},o,n,u),c;s.hover(function(e){if(!s.hasClass("open")&&!i.is(e.target))return!0;h(e)},function(){c=t.setTimeout(function(){s.removeClass("open");i.trigger(f)},l.delay)});i.hover(function(e){if(!s.hasClass("open")&&!s.is(e.target))return!0;h(e)});s.find(".dropdown-submenu").each(function(){var n=e(this),r;n.hover(function(){t.clearTimeout(r);n.children(".dropdown-menu").show();n.siblings().children(".dropdown-menu").hide()},function(){var e=n.children(".dropdown-menu");r=t.setTimeout(function(){e.hide()},l.delay)})})})};e(document).ready(function(){e('[data-hover="dropdown"]').dropdownHover()})})(jQuery,this); \ No newline at end of file diff --git a/ajax/libs/bootstrap-hover-dropdown/package.json b/ajax/libs/bootstrap-hover-dropdown/package.json index f9fa62b48..8eeaef207 100644 --- a/ajax/libs/bootstrap-hover-dropdown/package.json +++ b/ajax/libs/bootstrap-hover-dropdown/package.json @@ -1,7 +1,7 @@ { "name": "bootstrap-hover-dropdown", "filename": "bootstrap-hover-dropdown.min.js", - "version": "2.0.2", + "version": "2.0.10", "description": "An unofficial Bootstrap plugin to enable Bootstrap dropdowns to activate on hover and provide a nice user experience.", "main": "./twitter-bootstrap-hover-dropdown.js", "keywords": [