From a63c6cadc35644a2f8bb6121810429e3ba13c133 Mon Sep 17 00:00:00 2001 From: Chengrongrong Date: Wed, 4 Nov 2020 15:58:27 +0800 Subject: [PATCH] Update angular-bootstrap-multiselect.js add if selectionLimit == 1 is the user maybe need swap items --- dist/angular-bootstrap-multiselect.js | 60 +++++++++++++++++++-------- 1 file changed, 42 insertions(+), 18 deletions(-) diff --git a/dist/angular-bootstrap-multiselect.js b/dist/angular-bootstrap-multiselect.js index f5fa3c8..3b2c6a1 100644 --- a/dist/angular-bootstrap-multiselect.js +++ b/dist/angular-bootstrap-multiselect.js @@ -43,6 +43,7 @@ $scope.selectionLimit = $scope.selectionLimit || 0; $scope.searchLimit = $scope.searchLimit || 25; + $scope.searchFilter = ''; $scope.resolvedOptions = []; @@ -120,20 +121,29 @@ watcher(); // Clean watcher } }); - + // Rong add process pre-fill data to display text content + function getReturnText(items){ + var totalSelected = angular.isDefined(items) ? items.length : 0; + if (totalSelected === 0) { + return $scope.labels && $scope.labels.select ? $scope.labels.select : ($scope.placeholder || 'Select'); + } else { + return totalSelected + ' ' + ($scope.labels && $scope.labels.itemsSelected ? $scope.labels.itemsSelected : 'selected'); + } + } $scope.getButtonText = function () { if ($scope.selectedOptions && $scope.selectedOptions.length === 1) { - return $scope.getDisplay($scope.selectedOptions[0]); - } - if ($scope.selectedOptions && $scope.selectedOptions.length > 1) { - var totalSelected = angular.isDefined($scope.selectedOptions) ? $scope.selectedOptions.length : 0; - if (totalSelected === 0) { - return $scope.labels && $scope.labels.select ? $scope.labels.select : ($scope.placeholder || 'Select'); - } else { - return totalSelected + ' ' + ($scope.labels && $scope.labels.itemsSelected ? $scope.labels.itemsSelected : 'selected'); - } + return $scope.getDisplay($scope.selectedOptions[0]); + }else if($scope.selectedOptions && $scope.selectedOptions.length == 0 && $ngModelCtrl.$viewValue && $ngModelCtrl.$viewValue.length == 1){ + // Rong add process pre-fill data to display text content + return $scope.getDisplay($ngModelCtrl.$viewValue[0]); + } // if + + if($scope.selectedOptions && $scope.selectedOptions.length > 1){ + return getReturnText($scope.selectedOptions) + }else if($ngModelCtrl.$viewValue && $ngModelCtrl.$viewValue.length > 1){ // Rong add process pre-fill data to display text content + return getReturnText($ngModelCtrl.$viewValue) } else { - return $scope.labels && $scope.labels.select ? $scope.labels.select : ($scope.placeholder || 'Select'); + return $scope.labels && $scope.labels.select ? $scope.labels.select : ($scope.placeholder || 'Select'); } }; @@ -156,10 +166,23 @@ if (currentlySelected) { $scope.unselectedOptions.push($scope.selectedOptions[selectedIndex]); $scope.selectedOptions.splice(selectedIndex, 1); - } else if (!currentlySelected && ($scope.selectionLimit === 0 || $scope.selectedOptions.length < $scope.selectionLimit)) { - var unselectedIndex = $scope.unselectedOptions.indexOf(item); - $scope.unselectedOptions.splice(unselectedIndex, 1); - $scope.selectedOptions.push(item); + } else if (!currentlySelected && ($scope.selectionLimit === 0 || $scope.selectedOptions.length < $scope.selectionLimit || $scope.selectionLimit == 1)) { + // Rong add if selectionLimit == 1 is the user maybe need swap items + if($scope.selectionLimit == 1){ + $scope.selectedOptions = [item]; + }else{ + var unselectedIndex = $scope.unselectedOptions.indexOf(item); + $scope.unselectedOptions.splice(unselectedIndex, 1); + $scope.selectedOptions.push(item); + } + + // type only number, but not input string + if(typeof($scope.selectionLimit) == 'number'){ + var _length = $scope.selectedOptions.length; + if($scope.selectionLimit == _length){ + $scope.open = false; + } // if + } // if } }; @@ -251,7 +274,8 @@ angular.module("multiselect.html", []).run(["$templateCache", function ($templat " {{getButtonText()}} \n" + " \n" + "