From ccc0be830492ec2cbeb4cad3ba58ea67112f1158 Mon Sep 17 00:00:00 2001 From: Joshua Wilborn Date: Mon, 13 Mar 2017 14:45:52 -0400 Subject: [PATCH 1/4] uib-dropdown-toggle re-focusing on outside click [REOPEN] #6459 --- src/dropdown/dropdown.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/dropdown/dropdown.js b/src/dropdown/dropdown.js index 2560e282e8..829429b863 100644 --- a/src/dropdown/dropdown.js +++ b/src/dropdown/dropdown.js @@ -99,17 +99,22 @@ angular.module('ui.bootstrap.dropdown', ['ui.bootstrap.multiMap', 'ui.bootstrap. return; } - var dropdownElement = openScope.getDropdownElement(); - if (evt && openScope.getAutoClose() === 'outsideClick' && - dropdownElement && dropdownElement[0].contains(evt.target)) { - return; + var dropdownElement = openScope.getDropdownElement(), noFocus; + + if (evt && openScope.getAutoClose() === 'outsideClick') { + if (dropdownElement && dropdownElement[0].contains(evt.target)) { + return; + } else { + // Close dropdown without changing focus; + noFocus = true; + } } - openScope.focusToggleElement(); + !noFocus && openScope.focusToggleElement(); openScope.isOpen = false; if (!$rootScope.$$phase) { - openScope.$apply(); + openScope.$apply(); } }; From 98dcb9554d9944269272e460fe56b90967a940ae Mon Sep 17 00:00:00 2001 From: Joshua J Wilborn Date: Mon, 13 Mar 2017 14:54:01 -0400 Subject: [PATCH 2/4] Input refocusing on outside click #6459 uib-dropdown-toggle re-focusing on outside click [REOPEN] #6459 --- src/dropdown/dropdown.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/dropdown/dropdown.js b/src/dropdown/dropdown.js index 2560e282e8..4fc7735fc7 100644 --- a/src/dropdown/dropdown.js +++ b/src/dropdown/dropdown.js @@ -99,13 +99,18 @@ angular.module('ui.bootstrap.dropdown', ['ui.bootstrap.multiMap', 'ui.bootstrap. return; } - var dropdownElement = openScope.getDropdownElement(); - if (evt && openScope.getAutoClose() === 'outsideClick' && - dropdownElement && dropdownElement[0].contains(evt.target)) { - return; + var dropdownElement = openScope.getDropdownElement(), noFocus; + + if (evt && openScope.getAutoClose() === 'outsideClick') { + if (dropdownElement && dropdownElement[0].contains(evt.target)) { + return; + } else { + // Close dropdown without changing focus; + noFocus = true; + } } - openScope.focusToggleElement(); + !noFocus && openScope.focusToggleElement(); openScope.isOpen = false; if (!$rootScope.$$phase) { From 3ea714fc70667cb6fd6de9075dc33ece67949eec Mon Sep 17 00:00:00 2001 From: Joshua Wilborn Date: Mon, 13 Mar 2017 15:20:13 -0400 Subject: [PATCH 3/4] chore(dropdown): Input refocusing on outside click #6459 --- src/dropdown/dropdown.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/dropdown/dropdown.js b/src/dropdown/dropdown.js index 829429b863..3c63b81947 100644 --- a/src/dropdown/dropdown.js +++ b/src/dropdown/dropdown.js @@ -104,13 +104,14 @@ angular.module('ui.bootstrap.dropdown', ['ui.bootstrap.multiMap', 'ui.bootstrap. if (evt && openScope.getAutoClose() === 'outsideClick') { if (dropdownElement && dropdownElement[0].contains(evt.target)) { return; - } else { - // Close dropdown without changing focus; - noFocus = true; - } + } + // Close dropdown without changing focus; + noFocus = true; } - !noFocus && openScope.focusToggleElement(); + if (!noFocus) { + openScope.focusToggleElement(); + } openScope.isOpen = false; if (!$rootScope.$$phase) { From fbda708d90ac9462a78d09a912dbf2823415c0bd Mon Sep 17 00:00:00 2001 From: Joshua J Wilborn Date: Mon, 13 Mar 2017 15:21:35 -0400 Subject: [PATCH 4/4] chore(dropdown): Input refocusing on outside click #6459 Fixed to pass unit tests --- src/dropdown/dropdown.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/dropdown/dropdown.js b/src/dropdown/dropdown.js index 4fc7735fc7..3c63b81947 100644 --- a/src/dropdown/dropdown.js +++ b/src/dropdown/dropdown.js @@ -104,17 +104,18 @@ angular.module('ui.bootstrap.dropdown', ['ui.bootstrap.multiMap', 'ui.bootstrap. if (evt && openScope.getAutoClose() === 'outsideClick') { if (dropdownElement && dropdownElement[0].contains(evt.target)) { return; - } else { - // Close dropdown without changing focus; - noFocus = true; - } + } + // Close dropdown without changing focus; + noFocus = true; } - !noFocus && openScope.focusToggleElement(); + if (!noFocus) { + openScope.focusToggleElement(); + } openScope.isOpen = false; if (!$rootScope.$$phase) { - openScope.$apply(); + openScope.$apply(); } };