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

Commit 914f2d8

Browse files
authored
Merge branch 'master' into 625_refreshOnActive
2 parents 119b072 + b549db9 commit 914f2d8

6 files changed

+254
-64
lines changed

docs/partials/_header.html

+10-10
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@
55
<title>AngularJS ui-select</title>
66

77
<!--
8-
IE8 support, see AngularJS Internet Explorer Compatibility http://docs.angularjs.org/guide/ie
8+
IE8 support, see AngularJS Internet Explorer Compatibility https://docs.angularjs.org/guide/ie
99
For Firefox 3.6, you will also need to include jQuery and ECMAScript 5 shim
1010
-->
1111
<!--[if lt IE 9]>
12-
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.js"></script>
13-
<script src="http://cdnjs.cloudflare.com/ajax/libs/es5-shim/2.2.0/es5-shim.js"></script>
12+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.js"></script>
13+
<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/2.2.0/es5-shim.js"></script>
1414
<script>
1515
document.createElement('ui-select');
1616
document.createElement('ui-select-match');
1717
document.createElement('ui-select-choices');
1818
</script>
1919
<![endif]-->
2020

21-
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>
22-
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-sanitize.js"></script>
21+
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>
22+
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-sanitize.js"></script>
2323

2424
<!-- ui-select files -->
2525
<script src="./dist/select.js"></script>
@@ -28,11 +28,11 @@
2828
<script src="./assets/demo.js"></script>
2929

3030
<!-- themes -->
31-
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.css">
32-
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.css">
33-
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.8.5/css/selectize.default.css">
34-
<!-- <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.8.5/css/selectize.bootstrap2.css"> -->
35-
<!--<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.8.5/css/selectize.bootstrap3.css">-->
31+
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.css">
32+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.css">
33+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.8.5/css/selectize.default.css">
34+
<!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.8.5/css/selectize.bootstrap2.css"> -->
35+
<!--<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.8.5/css/selectize.bootstrap3.css">-->
3636

3737
<style>
3838
body {

src/uiSelectChoicesDirective.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,6 @@ uis.directive('uiSelectChoices',
5959
$select.onHighlightCallback = attrs.onHighlight;
6060
$select.dropdownPosition = attrs.position ? attrs.position.toLowerCase() : uiSelectConfig.dropdownPosition;
6161

62-
scope.$on('$destroy', function() {
63-
choices.remove();
64-
});
65-
6662
scope.$watch('$select.search', function(newValue) {
6763
if(newValue && !$select.open && $select.multiple) $select.activate(false, true);
6864
$select.activeIndex = $select.tagging.isActivated ? -1 : 0;
@@ -84,7 +80,7 @@ uis.directive('uiSelectChoices',
8480
tElement.attr('role', 'listbox');
8581
$select.refresh(attrs.refresh);
8682
} else {
87-
tElement.removeAttr('role');
83+
element.removeAttr('role');
8884
}
8985
});
9086
};

src/uiSelectController.js

+13-13
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ uis.controller('uiSelectCtrl',
2121
ctrl.refreshing = false;
2222
ctrl.spinnerEnabled = uiSelectConfig.spinnerEnabled;
2323
ctrl.spinnerClass = uiSelectConfig.spinnerClass;
24-
2524
ctrl.removeSelected = uiSelectConfig.removeSelected; //If selected item(s) should be removed from dropdown list
2625
ctrl.closeOnSelect = true; //Initialized inside uiSelect directive link function
2726
ctrl.skipFocusser = false; //Set to true to avoid returning focus to ctrl when item is selected
@@ -430,16 +429,6 @@ uis.controller('uiSelectCtrl',
430429
_resetSearchInput();
431430
$scope.$broadcast('uis:select', item);
432431

433-
var locals = {};
434-
locals[ctrl.parserResult.itemName] = item;
435-
436-
$timeout(function(){
437-
ctrl.onSelectCallback($scope, {
438-
$item: item,
439-
$model: ctrl.parserResult.modelMapper($scope, locals)
440-
});
441-
});
442-
443432
if (ctrl.closeOnSelect) {
444433
ctrl.close(skipFocusser);
445434
}
@@ -572,11 +561,22 @@ uis.controller('uiSelectCtrl',
572561
switch (key) {
573562
case KEY.DOWN:
574563
if (!ctrl.open && ctrl.multiple) ctrl.activate(false, true); //In case its the search input in 'multiple' mode
575-
else if (ctrl.activeIndex < ctrl.items.length - 1) { ctrl.activeIndex++; }
564+
else if (ctrl.activeIndex < ctrl.items.length - 1) {
565+
var idx = ++ctrl.activeIndex;
566+
while(_isItemDisabled(ctrl.items[idx]) && idx < ctrl.items.length) {
567+
ctrl.activeIndex = ++idx;
568+
}
569+
}
576570
break;
577571
case KEY.UP:
572+
var minActiveIndex = (ctrl.search.length === 0 && ctrl.tagging.isActivated) ? -1 : 0;
578573
if (!ctrl.open && ctrl.multiple) ctrl.activate(false, true); //In case its the search input in 'multiple' mode
579-
else if (ctrl.activeIndex > 0 || (ctrl.search.length === 0 && ctrl.tagging.isActivated && ctrl.activeIndex > -1)) { ctrl.activeIndex--; }
574+
else if (ctrl.activeIndex > minActiveIndex) {
575+
var idxmin = --ctrl.activeIndex;
576+
while(_isItemDisabled(ctrl.items[idxmin]) && idxmin > minActiveIndex) {
577+
ctrl.activeIndex = --idxmin;
578+
}
579+
}
580580
break;
581581
case KEY.TAB:
582582
if (!ctrl.multiple || ctrl.open) ctrl.select(ctrl.items[ctrl.activeIndex], true);

src/uiSelectMultipleDirective.js

+9
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,15 @@ uis.directive('uiSelectMultiple', ['uiSelectMinErr','$timeout', function(uiSelec
178178
return;
179179
}
180180
$select.selected.push(item);
181+
var locals = {};
182+
locals[$select.parserResult.itemName] = item;
183+
184+
$timeout(function(){
185+
$select.onSelectCallback(scope, {
186+
$item: item,
187+
$model: $select.parserResult.modelMapper(scope, locals)
188+
});
189+
});
181190
$selectMultiple.updateModel();
182191
});
183192

src/uiSelectSingleDirective.js

+9
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,15 @@ uis.directive('uiSelectSingle', ['$timeout','$compile', function($timeout, $comp
5151

5252
scope.$on('uis:select', function (event, item) {
5353
$select.selected = item;
54+
var locals = {};
55+
locals[$select.parserResult.itemName] = item;
56+
57+
$timeout(function(){
58+
$select.onSelectCallback(scope, {
59+
$item: item,
60+
$model: $select.parserResult.modelMapper(scope, locals)
61+
});
62+
});
5463
});
5564

5665
scope.$on('uis:close', function (event, skipFocusser) {

0 commit comments

Comments
 (0)