UNPKG

strong-arc

Version:

A visual suite for the StrongLoop API Platform

97 lines (77 loc) 2.14 kB
/** * angular-spinner version 0.5.1 * License: MIT. * Copyright (C) 2013, 2014, Uri Shaked and contributors. */ (function (root) { 'use strict'; function factory(angular, Spinner) { angular .module('angularSpinner', []) .factory('usSpinnerService', ['$rootScope', function ($rootScope) { var config = {}; config.spin = function (key) { $rootScope.$broadcast('us-spinner:spin', key); }; config.stop = function (key) { $rootScope.$broadcast('us-spinner:stop', key); }; return config; }]) .directive('usSpinner', ['$window', function ($window) { return { scope: true, link: function (scope, element, attr) { var SpinnerConstructor = Spinner || $window.Spinner; scope.spinner = null; scope.key = angular.isDefined(attr.spinnerKey) ? attr.spinnerKey : false; scope.startActive = angular.isDefined(attr.spinnerStartActive) ? attr.spinnerStartActive : scope.key ? false : true; function stopSpinner() { if (scope.spinner) { scope.spinner.stop(); } } scope.spin = function () { if (scope.spinner) { scope.spinner.spin(element[0]); } }; scope.stop = function () { scope.startActive = false; stopSpinner(); }; scope.$watch(attr.usSpinner, function (options) { stopSpinner(); scope.spinner = new SpinnerConstructor(options); if (!scope.key || scope.startActive) { scope.spinner.spin(element[0]); } }, true); scope.$on('us-spinner:spin', function (event, key) { if (key === scope.key) { scope.spin(); } }); scope.$on('us-spinner:stop', function (event, key) { if (key === scope.key) { scope.stop(); } }); scope.$on('$destroy', function () { scope.stop(); scope.spinner = null; }); } }; }]); } if (typeof define === 'function' && define.amd) { /* AMD module */ define(['angular', 'spin'], factory); } else { /* Browser global */ factory(root.angular); } }(window));