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

Commit 06ad3bd

Browse files
Jose Martinezpkozlowski-opensource
Jose Martinez
authored andcommitted
fix(dropdown): ensure on-toggle works when is-open is not used
This fixes an issue where on-toggle doesn't get called on the first click if the is-open attribute is not used. Closes #2121
1 parent cc07cdd commit 06ad3bd

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/dropdown/dropdown.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ angular.module('ui.bootstrap.dropdown', [])
9393
}
9494

9595
setIsOpen($scope, isOpen);
96-
if (angular.isDefined(wasOpen) && isOpen !== wasOpen) {
96+
if (angular.isDefined(isOpen) && isOpen !== wasOpen) {
9797
toggleInvoker($scope, { open: !!isOpen });
9898
}
9999
});

src/dropdown/test/dropdown.spec.js

+20
Original file line numberDiff line numberDiff line change
@@ -253,4 +253,24 @@ describe('dropdownToggle', function() {
253253
expect($rootScope.toggleHandler).toHaveBeenCalledWith(true);
254254
});
255255
});
256+
257+
describe('`on-toggle` without is-open', function() {
258+
beforeEach(function() {
259+
$rootScope.toggleHandler = jasmine.createSpy('toggleHandler');
260+
element = $compile('<li class="dropdown" on-toggle="toggleHandler(open)"><a dropdown-toggle></a><ul><li>Hello</li></ul></li>')($rootScope);
261+
$rootScope.$digest();
262+
});
263+
264+
it('should not have been called initially', function() {
265+
expect($rootScope.toggleHandler).not.toHaveBeenCalled();
266+
});
267+
268+
it('should call it when clicked', function() {
269+
clickDropdownToggle();
270+
expect($rootScope.toggleHandler).toHaveBeenCalledWith(true);
271+
272+
clickDropdownToggle();
273+
expect($rootScope.toggleHandler).toHaveBeenCalledWith(false);
274+
});
275+
});
256276
});

0 commit comments

Comments
 (0)