From c4f80924357da072d115ae42f4befc163e8ba957 Mon Sep 17 00:00:00 2001 From: James Seppi Date: Thu, 22 Oct 2015 10:19:09 -0500 Subject: [PATCH 1/2] fix incorrect class target --- angular-dropdowns.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/angular-dropdowns.js b/angular-dropdowns.js index a6e79cf..86a8f2d 100644 --- a/angular-dropdowns.js +++ b/angular-dropdowns.js @@ -1,7 +1,7 @@ /** * @license MIT http://jseppi.mit-license.org/license.html */ -(function (window, angular, undefined) { +(function (window, angular) { 'use strict'; var dd = angular.module('ngDropdowns', []); @@ -173,7 +173,7 @@ var onEvent = function (event) { event.stopPropagation(); if (!$scope.dropdownDisabled) { - DropdownService.toggleActive($element); + DropdownService.toggleActive(tpl); } }; From 02da84fb9ad8bb1db9bd107b5d8753592735768c Mon Sep 17 00:00:00 2001 From: James Seppi Date: Thu, 22 Oct 2015 11:45:03 -0500 Subject: [PATCH 2/2] fix broken focus/click interaction, fixes #66 --- angular-dropdowns.js | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/angular-dropdowns.js b/angular-dropdowns.js index 86a8f2d..4d1152b 100644 --- a/angular-dropdowns.js +++ b/angular-dropdowns.js @@ -85,17 +85,22 @@ $scope.dropdownOnchange({ selected: selected }); + $element[0].blur(); //trigger blur to clear active }; - var onEvent = function (event) { + $element.bind('click', function (event) { event.stopPropagation(); + }); + + $element.bind('focus', function () { if (!$scope.dropdownDisabled) { DropdownService.toggleActive($element); } - }; + }); - $element.bind('click', onEvent); - $element.bind('focus', onEvent); + $element.bind('blur', function () { + DropdownService.clearActive(); + }); $scope.$on('$destroy', function () { DropdownService.unregister($element); @@ -170,14 +175,12 @@ }); }; - var onEvent = function (event) { + $element.bind('click', function (event) { event.stopPropagation(); if (!$scope.dropdownDisabled) { DropdownService.toggleActive(tpl); } - }; - - $element.bind('click', onEvent); + }); $scope.$on('$destroy', function () { DropdownService.unregister(tpl); @@ -223,16 +226,6 @@ }); }); - body.bind('keydown', function (evt) { - var code = evt.keyCode || evt.which; - //on tab, remove 'active' any dropdown element - if (code === 9) { - angular.forEach(_dropdowns, function (el) { - el.removeClass('active'); - }); - } - }); - service.register = function (ddEl) { _dropdowns.push(ddEl); }; @@ -255,6 +248,16 @@ ddEl.toggleClass('active'); }; + service.clearActive = function () { + angular.forEach(_dropdowns, function (el) { + el.removeClass('active'); + }); + }; + + service.isActive = function (ddEl) { + return ddEl.hasClass('active'); + }; + return service; } ]);