From 041c13b92ddfa67ed2cab8fe097ead171a14de84 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Thu, 31 Aug 2017 12:17:29 -0400 Subject: [PATCH] Don't close when clicking on disabled or headings --- dist/shoelace.js | 2 +- source/js/dropdowns.js | 28 +++++++++++++++------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/dist/shoelace.js b/dist/shoelace.js index 0a8152e68..c4055e437 100644 --- a/dist/shoelace.js +++ b/dist/shoelace.js @@ -5,7 +5,7 @@ Released under the MIT license Source: https://github.com/claviska/shoelace-css */ -!function(){"use strict";if("undefined"==typeof jQuery&&"undefined"==typeof Zepto)throw new Error("Shoelace dropdowns require either jQuery or Zepto.");("function"==typeof jQuery?jQuery:Zepto)(function(e){e(document).on("click",function(t){var i=e(t.target).closest(".dropdown").get(0),r=i?e(t.target).closest(".dropdown-trigger").get(0):null,o=(i?e(t.target).closest(".dropdown-menu").get(0):null)?e(t.target).closest("a").get(0):null;if(r){if(e(".dropdown.active").not(i).removeClass("active").trigger("hide"),e(r).is(".disabled, :disabled"))return;e(i).toggleClass("active").trigger(e(i).is(".active")?"show":"hide")}else{if(o)return e(i).removeClass("active").trigger("hide"),e(o).is(".disabled")||e(i).trigger("select",o),void t.preventDefault();e(".dropdown.active").removeClass("active").trigger("hide")}}).on("keydown",function(t){27===t.keyCode&&e(".dropdown.active").removeClass("active").trigger("hide")})})}(),/*! +!function(){"use strict";if("undefined"==typeof jQuery&&"undefined"==typeof Zepto)throw new Error("Shoelace dropdowns require either jQuery or Zepto.");("function"==typeof jQuery?jQuery:Zepto)(function(e){e(document).on("click",function(t){var i=e(t.target).closest(".dropdown").get(0),r=i?e(t.target).closest(".dropdown-trigger").get(0):null,o=(i?e(t.target).closest(".dropdown-menu").get(0):null)?e(t.target).closest("a").get(0):null;if(r){if(e(".dropdown.active").not(i).removeClass("active").trigger("hide"),e(r).is(".disabled, :disabled"))return;e(i).toggleClass("active").trigger(e(i).is(".active")?"show":"hide")}else if(o){if(t.preventDefault(),e(o).is(".disabled"))return;e(i).removeClass("active").trigger("hide").trigger("select",o)}else i||e(".dropdown.active").removeClass("active").trigger("hide")}).on("keydown",function(t){27===t.keyCode&&e(".dropdown.active").removeClass("active").trigger("hide")})})}(),/*! Shoelace.css tabs 1.0.0-beta22 (c) A Beautiful Site, LLC diff --git a/source/js/dropdowns.js b/source/js/dropdowns.js index 6b8579f33..ff0ff4a1d 100644 --- a/source/js/dropdowns.js +++ b/source/js/dropdowns.js @@ -65,25 +65,27 @@ // If the user selected a menu item, close the dropdown and fire the select event if(selectedItem) { - $(dropdown) - .removeClass('active') - .trigger('hide'); - - // Don't select disabled menu items - if(!$(selectedItem).is('.disabled')) { - $(dropdown).trigger('select', selectedItem); - } - // Prevent the page from scrolling since menu items are #links event.preventDefault(); + // Don't select disabled menu items + if($(selectedItem).is('.disabled')) return; + + // Trigger a selection + $(dropdown) + .removeClass('active') + .trigger('hide') + .trigger('select', selectedItem); + return; } - // If the user didn't click a trigger or a menu item, hide any active dropdowns - $('.dropdown.active') - .removeClass('active') - .trigger('hide'); + // If the click wasn't in a dropdown, hide any active dropdowns + if(!dropdown) { + $('.dropdown.active') + .removeClass('active') + .trigger('hide'); + } }) .on('keydown', function(event) { // Close dropdowns on escape