2 * angular-spinner version 0.8.1
4 * Copyright (C) 2013, 2014, 2015, 2016, 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(
87 usSpinnerConfig.config,
88 usSpinnerConfig.themes[attr.spinnerTheme],
91 scope.spinner = new SpinJSSpinner(options);
92 if ((!scope.key || scope.startActive) && !attr.spinnerOn) {
93 scope.spinner.spin(element[0]);
98 scope.$watch(attr.spinnerOn, function (spin) {
107 scope.$on('us-spinner:spin', function (event, key) {
108 if (key === scope.key) {
113 scope.$on('us-spinner:stop', function (event, key) {
114 if (key === scope.key) {
119 scope.$on('$destroy', function () {
121 scope.spinner = null;
128 if ((typeof module === 'object') && module.exports) {
129 /* CommonJS module */
130 module.exports = factory(require('angular'), require('spin.js'));
131 } else if (typeof define === 'function' && define.amd) {
133 define(['angular', 'spin'], factory);
136 factory(root.angular, root.Spinner);