From 92245e8bc70f8d2e48036b7ba088551d07db29ca Mon Sep 17 00:00:00 2001 From: fat Date: Thu, 16 May 2013 12:50:06 -0700 Subject: change dropdown strategy to use an overlay - fixes mobile click anywhere + allows for firefox middle click --- js/dropdown.js | 133 +++++++++++++++++++--------------------------- js/tests/unit/dropdown.js | 6 +-- 2 files changed, 58 insertions(+), 81 deletions(-) (limited to 'js') diff --git a/js/dropdown.js b/js/dropdown.js index 342625074..c3ad78895 100644 --- a/js/dropdown.js +++ b/js/dropdown.js @@ -18,123 +18,101 @@ * ============================================================ */ -!function ($) { +!function ($) { "use strict"; - "use strict"; // jshint ;_; + // DROPDOWN CLASS DEFINITION + // ========================= - /* DROPDOWN CLASS DEFINITION - * ========================= */ - - var toggle = '[data-toggle=dropdown]' - , Dropdown = function (element) { - var $el = $(element).on('click.dropdown.data-api', this.toggle) - $('html').on('click.dropdown.data-api', function () { - $el.parent().removeClass('open') - }) - } - - Dropdown.prototype = { - - constructor: Dropdown - - , toggle: function (e) { - var $this = $(this) - , $parent - , isActive - - if ($this.is('.disabled, :disabled')) return - - $parent = getParent($this) + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } - isActive = $parent.hasClass('open') + Dropdown.prototype.toggle = function (e) { + var $this = $(this) - clearMenus() + if ($this.is('.disabled, :disabled')) return - if (!isActive) { - $parent.toggleClass('open') - } + var $parent = getParent($this) + var isActive = $parent.hasClass('open') - $this.focus() + clearMenus() - return false + if (!isActive) { + $('