From 24f2193daa5f636e7d71e2d1124880ebd13a169c Mon Sep 17 00:00:00 2001 From: ravishivt Date: Wed, 2 Mar 2016 11:31:21 -0800 Subject: [PATCH] This is an update to the original fixes proposed in #647 without dist/ files based off the latest ui-select v0.14.9 release. --- src/uiSelectController.js | 6 +++++- src/uiSelectMultipleDirective.js | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/uiSelectController.js b/src/uiSelectController.js index 6814ff5b3..275978815 100644 --- a/src/uiSelectController.js +++ b/src/uiSelectController.js @@ -223,7 +223,11 @@ uis.controller('uiSelectCtrl', ctrl.setItemsFn(data); }else{ if ( data !== undefined ) { - var filteredItems = data.filter(function(i) {return selectedItems && selectedItems.indexOf(i) < 0;}); + var filteredItems = data.filter(function(i) { + return selectedItems.every(function(selectedItem) { + return !angular.equals(i, selectedItem); + }); + }); ctrl.setItemsFn(filteredItems); } } diff --git a/src/uiSelectMultipleDirective.js b/src/uiSelectMultipleDirective.js index 6a73cd49b..d70b72c4c 100644 --- a/src/uiSelectMultipleDirective.js +++ b/src/uiSelectMultipleDirective.js @@ -299,9 +299,19 @@ uis.directive('uiSelectMultiple', ['uiSelectMinErr','$timeout', function(uiSelec stashArr = stashArr.slice(1,stashArr.length); } newItem = $select.tagging.fct($select.search); - newItem.isTag = true; - // verify the the tag doesn't match the value of an existing item - if ( stashArr.filter( function (origItem) { return angular.equals( origItem, $select.tagging.fct($select.search) ); } ).length > 0 ) { + // verify the new tag doesn't match the value of a possible selection choice or an already selected item. + if ( + stashArr.some(function (origItem) { + return angular.equals(origItem, $select.tagging.fct($select.search)); + }) || + $select.selected.some(function (origItem) { + return angular.equals(origItem, newItem); + }) + ) { + scope.$evalAsync(function () { + $select.activeIndex = 0; + $select.items = items; + }); return; } newItem.isTag = true;