@@ -46,7 +46,7 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
4646 template += '<li ng-class="{\'active\': isChecked(getPropertyForObject(option,settings.idProp)) && settings.styleActive}" role="presentation" ng-repeat="option in options | filter:getFilter(input.searchFilter)">' ;
4747 }
4848
49- template += '<a ng-keydown="keyDownLink($event)" role="menuitem" class="option" tabindex="-1" ng-click="setSelectedItem(getPropertyForObject(option,settings.idProp))">' ;
49+ template += '<a ng-keydown="keyDownLink($event)" role="menuitem" class="option" tabindex="-1" ng-click="setSelectedItem(getPropertyForObject(option,settings.idProp), false, true )">' ;
5050
5151 if ( checkboxes ) {
5252 template += '<div class="checkbox"><label><input class="checkboxInput" type="checkbox" ng-click="checkboxClick($event, getPropertyForObject(option,settings.idProp))" ng-checked="isChecked(getPropertyForObject(option,settings.idProp))" /> <span mf-dropdown-static-include="{{settings.template}}"></div></label></span></a>' ;
@@ -85,7 +85,7 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
8585 } ;
8686
8787 $scope . checkboxClick = function ( $event , id ) {
88- $scope . setSelectedItem ( id ) ;
88+ $scope . setSelectedItem ( id , false , true ) ;
8989 $event . stopImmediatePropagation ( ) ;
9090 } ;
9191
@@ -269,19 +269,20 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
269269
270270 $scope . selectAll = function ( ) {
271271 var searchResult ;
272- $scope . deselectAll ( false ) ;
272+ $scope . deselectAll ( true ) ;
273273 $scope . externalEvents . onSelectAll ( ) ;
274274
275275 searchResult = $filter ( 'filter' ) ( $scope . options , $scope . getFilter ( $scope . input . searchFilter ) ) ;
276276 angular . forEach ( searchResult , function ( value ) {
277- $scope . setSelectedItem ( value [ $scope . settings . idProp ] , true ) ;
277+ $scope . setSelectedItem ( value [ $scope . settings . idProp ] , true , false ) ;
278278 } ) ;
279+ $scope . externalEvents . onSelectionChanged ( ) ;
279280 } ;
280281
281- $scope . deselectAll = function ( sendEvent ) {
282- sendEvent = sendEvent || true ;
282+ $scope . deselectAll = function ( dontSendEvent ) {
283+ dontSendEvent = dontSendEvent || false ;
283284
284- if ( sendEvent ) {
285+ if ( ! dontSendEvent ) {
285286 $scope . externalEvents . onDeselectAll ( ) ;
286287 }
287288
@@ -290,9 +291,12 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
290291 } else {
291292 $scope . selectedModel . splice ( 0 , $scope . selectedModel . length ) ;
292293 }
294+ if ( ! dontSendEvent ) {
295+ $scope . externalEvents . onSelectionChanged ( ) ;
296+ }
293297 } ;
294298
295- $scope . setSelectedItem = function ( id , dontRemove ) {
299+ $scope . setSelectedItem = function ( id , dontRemove , fireSelectionChange ) {
296300 var findObj = getFindObj ( id ) ;
297301 var finalObj = null ;
298302
@@ -325,7 +329,9 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
325329 }
326330 }
327331 }
328- $scope . externalEvents . onSelectionChanged ( ) ;
332+ if ( fireSelectionChange ) {
333+ $scope . externalEvents . onSelectionChanged ( ) ;
334+ }
329335 } ;
330336
331337 $scope . isChecked = function ( id ) {
@@ -348,7 +354,7 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
348354 if ( event . keyCode === 13 || event . keyCode === 32 ) { // enter
349355 event . preventDefault ( ) ;
350356 if ( ! ! sourceScope . option ) {
351- $scope . setSelectedItem ( $scope . getPropertyForObject ( sourceScope . option , $scope . settings . idProp ) ) ;
357+ $scope . setSelectedItem ( $scope . getPropertyForObject ( sourceScope . option , $scope . settings . idProp ) , false , true ) ;
352358 } else if ( event . srcElement . id === 'deselectAll' ) {
353359 $scope . deselectAll ( ) ;
354360 } else if ( event . srcElement . id === 'selectAll' ) {
@@ -430,7 +436,7 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co
430436 if ( $scope . settings . selectionLimit === 1 && $scope . settings . enableSearch ) {
431437 searchResult = $filter ( 'filter' ) ( $scope . options , $scope . getFilter ( searchFilter ) ) ;
432438 if ( searchResult . length === 1 ) {
433- $scope . setSelectedItem ( $scope . getPropertyForObject ( searchResult [ 0 ] , $scope . settings . idProp ) ) ;
439+ $scope . setSelectedItem ( $scope . getPropertyForObject ( searchResult [ 0 ] , $scope . settings . idProp ) , false , true ) ;
434440 }
435441 } else if ( $scope . settings . enableSearch ) {
436442 $scope . selectAll ( ) ;
0 commit comments