Skip to content

Commit 912a70a

Browse files
authored
Merge pull request angular-ui#1986 from boundlessgeo-yancy/1985-refresh-spinner-multiple
fix(spinner): add the refresh spinner to the select-multiple template
2 parents 32829a3 + 29f41e4 commit 912a70a

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

src/bootstrap/select-multiple.tpl.html

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<div class="ui-select-container ui-select-multiple ui-select-bootstrap dropdown form-control" ng-class="{open: $select.open}">
22
<div>
33
<div class="ui-select-match"></div>
4+
<span ng-show="$select.open && $select.refreshing && $select.spinnerEnabled" class="ui-select-refreshing {{$select.spinnerClass}}"></span>
45
<input type="search"
56
autocomplete="off"
67
autocorrect="off"

test/select.spec.js

+66
Original file line numberDiff line numberDiff line change
@@ -1878,6 +1878,10 @@ describe('ui-select tests', function () {
18781878
if (attrs.limit !== undefined) { attrsHtml += ' limit="' + attrs.limit + '"'; }
18791879
if (attrs.onSelect !== undefined) { attrsHtml += ' on-select="' + attrs.onSelect + '"'; }
18801880
if (attrs.removeSelected !== undefined) { attrsHtml += ' remove-selected="' + attrs.removeSelected + '"'; }
1881+
if (attrs.refresh !== undefined) { choicesAttrsHtml += ' refresh="' + attrs.refresh + '"'; }
1882+
if (attrs.refreshDelay !== undefined) { choicesAttrsHtml += ' refresh-delay="' + attrs.refreshDelay + '"'; }
1883+
if (attrs.spinnerEnabled !== undefined) { attrsHtml += ' spinner-enabled="' + attrs.spinnerEnabled + '"'; }
1884+
if (attrs.spinnerClass !== undefined) { attrsHtml += ' spinner-class="' + attrs.spinnerClass + '"'; }
18811885
}
18821886

18831887
return compileTemplate(
@@ -2988,6 +2992,68 @@ describe('ui-select tests', function () {
29882992
expect($(el).scope().$select.search).toEqual('');
29892993
});
29902994
});
2995+
2996+
describe('Test Spinner for promises', function () {
2997+
var deferred;
2998+
2999+
function getFromServer() {
3000+
deferred = $q.defer();
3001+
return deferred.promise;
3002+
}
3003+
it('should have a default value of false', function () {
3004+
var control = createUiSelectMultiple();
3005+
expect(control.scope().$select.spinnerEnabled).toEqual(false);
3006+
});
3007+
3008+
it('should have a set a value of true', function () {
3009+
var control = createUiSelectMultiple({ spinnerEnabled: true });
3010+
expect(control.scope().$select.spinnerEnabled).toEqual(true);
3011+
});
3012+
3013+
it('should have a default value of glyphicon-refresh ui-select-spin', function () {
3014+
var control = createUiSelectMultiple();
3015+
expect(control.scope().$select.spinnerClass).toEqual('glyphicon glyphicon-refresh ui-select-spin');
3016+
});
3017+
3018+
it('should have set a custom class value of randomclass', function () {
3019+
var control = createUiSelectMultiple({ spinnerClass: 'randomclass' });
3020+
expect(control.scope().$select.spinnerClass).toEqual('randomclass');
3021+
});
3022+
3023+
it('should not display spinner when disabled', function () {
3024+
scope.getFromServer = getFromServer;
3025+
var el = createUiSelectMultiple({ theme: 'bootstrap', refresh: "getFromServer($select.search)", refreshDelay: 0 });
3026+
openDropdown(el);
3027+
var spinner = el.find('.ui-select-refreshing');
3028+
expect(spinner.hasClass('ng-hide')).toBe(true);
3029+
setSearchText(el, 'a');
3030+
expect(spinner.hasClass('ng-hide')).toBe(true);
3031+
deferred.resolve();
3032+
scope.$digest();
3033+
expect(spinner.hasClass('ng-hide')).toBe(true);
3034+
});
3035+
3036+
it('should display spinner when enabled', function () {
3037+
scope.getFromServer = getFromServer;
3038+
var el = createUiSelectMultiple({ spinnerEnabled: true, theme: 'bootstrap', refresh: "getFromServer($select.search)", refreshDelay: 0 });
3039+
openDropdown(el);
3040+
var spinner = el.find('.ui-select-refreshing');
3041+
expect(spinner.hasClass('ng-hide')).toBe(true);
3042+
setSearchText(el, 'a');
3043+
expect(spinner.hasClass('ng-hide')).toBe(false);
3044+
deferred.resolve();
3045+
scope.$digest();
3046+
expect(spinner.hasClass('ng-hide')).toBe(true);
3047+
});
3048+
3049+
it('should not display spinner when enabled', function () {
3050+
var el = createUiSelectMultiple({ spinnerEnabled: true, theme: 'bootstrap', spinnerClass: 'randomclass' });
3051+
openDropdown(el);
3052+
var spinner = el.find('.ui-select-refreshing');
3053+
setSearchText(el, 'a');
3054+
expect(el.scope().$select.spinnerClass).toBe('randomclass');
3055+
});
3056+
});
29913057
});
29923058

29933059
it('should add an id to the search input field', function () {

0 commit comments

Comments
 (0)