Skip to content
This repository was archived by the owner on May 29, 2019. It is now read-only.

Commit 3ac3b48

Browse files
bekospkozlowski-opensource
authored andcommitted
fix(dropdown): close after selecting an item
Fixes #2130 Closes #2140
1 parent 5b41e47 commit 3ac3b48

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

Diff for: src/dropdown/dropdown.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ angular.module('ui.bootstrap.dropdown', [])
2929
};
3030

3131
var closeDropdown = function( evt ) {
32-
if (evt && evt.isDefaultPrevented()) {
32+
var toggleElement = openScope.getToggleElement();
33+
if ( evt && toggleElement && toggleElement[0].contains(evt.target) ) {
3334
return;
3435
}
3536

@@ -76,6 +77,10 @@ angular.module('ui.bootstrap.dropdown', [])
7677
return scope.isOpen;
7778
};
7879

80+
scope.getToggleElement = function() {
81+
return self.toggleElement;
82+
};
83+
7984
scope.focusToggleElement = function() {
8085
if ( self.toggleElement ) {
8186
self.toggleElement[0].focus();

Diff for: src/dropdown/test/dropdown.spec.js

+14-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ describe('dropdownToggle', function() {
1111

1212
var clickDropdownToggle = function(elm) {
1313
elm = elm || element;
14-
elm.find('a').click();
14+
elm.find('a[dropdown-toggle]').click();
1515
};
1616

1717
var triggerKeyDown = function (element, keyCode) {
@@ -26,7 +26,7 @@ describe('dropdownToggle', function() {
2626

2727
describe('basic', function() {
2828
function dropdown() {
29-
return $compile('<li class="dropdown"><a href dropdown-toggle></a><ul><li>Hello</li></ul></li>')($rootScope);
29+
return $compile('<li class="dropdown"><a href dropdown-toggle></a><ul><li><a href>Hello</a></li></ul></li>')($rootScope);
3030
}
3131

3232
beforeEach(function() {
@@ -41,6 +41,18 @@ describe('dropdownToggle', function() {
4141
expect(element.hasClass('open')).toBe(false);
4242
});
4343

44+
it('should toggle when an option is clicked', function() {
45+
$document.find('body').append(element);
46+
expect(element.hasClass('open')).toBe(false);
47+
clickDropdownToggle();
48+
expect(element.hasClass('open')).toBe(true);
49+
50+
var optionEl = element.find('ul > li').eq(0).find('a').eq(0);
51+
optionEl.click();
52+
expect(element.hasClass('open')).toBe(false);
53+
element.remove();
54+
});
55+
4456
it('should close on document click', function() {
4557
clickDropdownToggle();
4658
expect(element.hasClass('open')).toBe(true);

0 commit comments

Comments
 (0)