2 * angular-spinner version 0.8.0
4 * Copyright (C) 2013, 2014, 2015, Uri Shaked and contributors.
12 function factory(angular, Spinner) {
15 .module('angularSpinner', [])
17 .constant('SpinJSSpinner', Spinner)
19 .provider('usSpinnerConfig', function () {
20 var _config = {}, _themes = {};
23 setDefaults: function (config) {
24 _config = config || _config;
26 setTheme: function(name, config) {
27 _themes[name] = config;
38 .factory('usSpinnerService', ['$rootScope', function ($rootScope) {
41 config.spin = function (key) {
42 $rootScope.$broadcast('us-spinner:spin', key);
45 config.stop = function (key) {
46 $rootScope.$broadcast('us-spinner:stop', key);
52 .directive('usSpinner', ['SpinJSSpinner', 'usSpinnerConfig', function (SpinJSSpinner, usSpinnerConfig) {
55 link: function (scope, element, attr) {
58 scope.key = angular.isDefined(attr.spinnerKey) ? attr.spinnerKey : false;
60 scope.startActive = angular.isDefined(attr.spinnerStartActive) ?
61 scope.$eval(attr.spinnerStartActive) : scope.key ?
64 function stopSpinner() {
70 scope.spin = function () {
72 scope.spinner.spin(element[0]);
76 scope.stop = function () {
77 scope.startActive = false;
81 scope.$watch(attr.usSpinner, function (options) {
84 // order of precedence: element options, theme, defaults.
85 options = angular.extend(
86 usSpinnerConfig.config,
87 usSpinnerConfig.themes[attr.spinnerTheme],
90 scope.spinner = new SpinJSSpinner(options);
91 if ((!scope.key || scope.startActive) && !attr.spinnerOn) {
92 scope.spinner.spin(element[0]);
97 scope.$watch(attr.spinnerOn, function (spin) {
106 scope.$on('us-spinner:spin', function (event, key) {
107 if (key === scope.key) {
112 scope.$on('us-spinner:stop', function (event, key) {
113 if (key === scope.key) {
118 scope.$on('$destroy', function () {
120 scope.spinner = null;
127 if ((typeof module === 'object') && module.exports) {
128 /* CommonJS module */
129 module.exports = factory(require('angular'), require('spin.js'));
130 } else if (typeof define === 'function' && define.amd) {
132 define(['angular', 'spin'], factory);
135 factory(root.angular, root.Spinner);