File tree Expand file tree Collapse file tree 2 files changed +20
-3
lines changed Expand file tree Collapse file tree 2 files changed +20
-3
lines changed Original file line number Diff line number Diff 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 ( ) ;
Original file line number Diff line number Diff 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 ) ;
You can’t perform that action at this time.
0 commit comments