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

Commit bdf18ef

Browse files
committed
Merge branch 'Fix-1.7.0'
2 parents 2e46083 + 628b3cd commit bdf18ef

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

src/angularjs-dropdown-multiselect.js

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)