@@ -18,7 +18,7 @@ uis.controller('uiSelectCtrl',
18
18
ctrl . refreshDelay = uiSelectConfig . refreshDelay ;
19
19
ctrl . paste = uiSelectConfig . paste ;
20
20
21
- ctrl . removeSelected = false ; //If selected item(s) should be removed from dropdown list
21
+ ctrl . removeSelected = uiSelectConfig . removeSelected ; //If selected item(s) should be removed from dropdown list
22
22
ctrl . closeOnSelect = true ; //Initialized inside uiSelect directive link function
23
23
ctrl . skipFocusser = false ; //Set to true to avoid returning focus to ctrl when item is selected
24
24
ctrl . search = EMPTY_SEARCH ;
@@ -240,9 +240,9 @@ uis.controller('uiSelectCtrl',
240
240
} else {
241
241
if ( data !== undefined ) {
242
242
var filteredItems = data . filter ( function ( i ) {
243
- return selectedItems . every ( function ( selectedItem ) {
243
+ return angular . isArray ( selectedItems ) ? selectedItems . every ( function ( selectedItem ) {
244
244
return ! angular . equals ( i , selectedItem ) ;
245
- } ) ;
245
+ } ) : ! angular . equals ( i , selectedItems ) ;
246
246
} ) ;
247
247
ctrl . setItemsFn ( filteredItems ) ;
248
248
}
@@ -317,6 +317,11 @@ uis.controller('uiSelectCtrl',
317
317
return isActive ;
318
318
} ;
319
319
320
+ var _isItemSelected = function ( item ) {
321
+ return ( ctrl . selected && angular . isArray ( ctrl . selected ) &&
322
+ ctrl . selected . filter ( function ( selection ) { return angular . equals ( selection , item ) ; } ) . length > 0 ) ;
323
+ } ;
324
+
320
325
ctrl . isDisabled = function ( itemScope ) {
321
326
322
327
if ( ! ctrl . open ) return ;
@@ -325,9 +330,9 @@ uis.controller('uiSelectCtrl',
325
330
var isDisabled = false ;
326
331
var item ;
327
332
328
- if ( itemIndex >= 0 && ! angular . isUndefined ( ctrl . disableChoiceExpression ) ) {
333
+ if ( itemIndex >= 0 && ( ! angular . isUndefined ( ctrl . disableChoiceExpression ) || ctrl . multiple ) ) {
329
334
item = ctrl . items [ itemIndex ] ;
330
- isDisabled = ! ! ( itemScope . $eval ( ctrl . disableChoiceExpression ) ) ; // force the boolean value
335
+ isDisabled = ! ! ( itemScope . $eval ( ctrl . disableChoiceExpression ) ) || _isItemSelected ( item ) ; // force the boolean value
331
336
item . _uiSelectChoiceDisabled = isDisabled ; // store this for later reference
332
337
}
333
338
@@ -375,7 +380,7 @@ uis.controller('uiSelectCtrl',
375
380
}
376
381
}
377
382
// search ctrl.selected for dupes potentially caused by tagging and return early if found
378
- if ( ctrl . selected && angular . isArray ( ctrl . selected ) && ctrl . selected . filter ( function ( selection ) { return angular . equals ( selection , item ) ; } ) . length > 0 ) {
383
+ if ( _isItemSelected ( item ) ) {
379
384
ctrl . close ( skipFocusser ) ;
380
385
return ;
381
386
}
0 commit comments