Skip to content

Commit

Permalink
feat($ionicLoading): add $ionicLoadingConfig constant for default opt…
Browse files Browse the repository at this point in the history
…ions

Closes #1800
  • Loading branch information
ajoslin committed Jul 21, 2014
1 parent 7e20424 commit 26ca840
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 3 deletions.
7 changes: 7 additions & 0 deletions config/docs/templates/api_menu_version.template.html
Expand Up @@ -360,6 +360,13 @@
</a>
</li>
</ul>
<ul>
<li>
<a href="{{ page.versionHref }}/api/object/$ionicLoadingConfig/">
$ionicLoadingConfig
</a>
</li>
</ul>
</li>


Expand Down
28 changes: 26 additions & 2 deletions js/angular/service/loading.js
Expand Up @@ -32,8 +32,32 @@ var LOADING_SET_DEPRECATED = '$ionicLoading instance.setContent() has been depre
* });
* ```
*/
/**
* @ngdoc object
* @name $ionicLoadingConfig
* @module ionic
* @description
* Set the default options to be passed to the {@link ionic.service:$ionicLoading} service.
*
* @usage
* ```js
* var app = angular.module('myApp', ['ionic'])
* app.constant('$ionicLoadingConfig', {
* template: 'Default Loading Template...'
* });
* app.controller('AppCtrl', function($scope, $ionicLoading) {
* $scope.showLoading = function() {
* $ionicLoading.show(); //options default to values in $ionicLoadingConfig
* };
* });
* ```
*/
IonicModule
.constant('$ionicLoadingConfig', {
template: '<i class="ion-loading-d"></i>'
})
.factory('$ionicLoading', [
'$ionicLoadingConfig',
'$document',
'$ionicTemplateLoader',
'$ionicBackdrop',
Expand All @@ -42,7 +66,7 @@ IonicModule
'$log',
'$compile',
'$ionicPlatform',
function($document, $ionicTemplateLoader, $ionicBackdrop, $timeout, $q, $log, $compile, $ionicPlatform) {
function($ionicLoadingConfig, $document, $ionicTemplateLoader, $ionicBackdrop, $timeout, $q, $log, $compile, $ionicPlatform) {

var loaderInstance;
//default values
Expand Down Expand Up @@ -151,7 +175,7 @@ function($document, $ionicTemplateLoader, $ionicBackdrop, $timeout, $q, $log, $c
}

function showLoader(options) {
options || (options = {});
options = extend($ionicLoadingConfig || {}, options || {});
var delay = options.delay || options.showDelay || 0;

//If loading.show() was called previously, cancel it and show with our new options
Expand Down
29 changes: 28 additions & 1 deletion test/unit/angular/service/loading.unit.js
@@ -1,5 +1,8 @@
describe('$ionicLoading service', function() {
beforeEach(module('ionic'));
beforeEach(module('ionic', function($provide) {
//Set default options to blank for the sake of tests
$provide.constant('$ionicLoadingConfig', {});
}));
it('should reuse loader instance for getLoader', inject(function($ionicLoading) {
var loader = TestUtil.unwrapPromise($ionicLoading._getLoader());
var loader2 = TestUtil.unwrapPromise($ionicLoading._getLoader());
Expand Down Expand Up @@ -189,5 +192,29 @@ describe('$ionicLoading service', function() {
expect(deregisterSpy).toHaveBeenCalled();
}));
});
});
describe('$ionicLoadingConfig', function() {
beforeEach(module('ionic', function($provide) {
$provide.constant('$ionicLoadingConfig', {
template: 'some template'
});
}));

it('should use $ionicLoadingConfig options by default', inject(function($ionicLoading, $timeout) {
var loader = TestUtil.unwrapPromise($ionicLoading._getLoader());
$ionicLoading.show();
$timeout.flush();
expect(loader.element.text()).toBe('some template');
}));

it('should allow override', inject(function($ionicLoading, $timeout) {
var loader = TestUtil.unwrapPromise($ionicLoading._getLoader());
$ionicLoading.show({
template: 'some other template'
});
$timeout.flush();
expect(loader.element.text()).toBe('some other template');
}));

});

0 comments on commit 26ca840

Please sign in to comment.