diff options
| author | Matias Niemelàˆ | 2013-04-08 20:37:57 -0400 |
|---|---|---|
| committer | Misko Hevery | 2013-04-11 14:15:20 -0700 |
| commit | 5476cb6e9b6d7a16e3a86585bc2db5e63b16cd4d (patch) | |
| tree | 6d4d69a8ee15c0c84de90388ccfc8316a4f91ae7 /src/ng/animator.js | |
| parent | d9d53472ecf87941dd9864d417cde31975d47854 (diff) | |
| download | angular.js-5476cb6e9b6d7a16e3a86585bc2db5e63b16cd4d.tar.bz2 | |
feat($animator): allow to globally disable and enable animations
Diffstat (limited to 'src/ng/animator.js')
| -rw-r--r-- | src/ng/animator.js | 97 |
1 files changed, 61 insertions, 36 deletions
diff --git a/src/ng/animator.js b/src/ng/animator.js index 7cafa568..e1c3ab48 100644 --- a/src/ng/animator.js +++ b/src/ng/animator.js @@ -121,21 +121,24 @@ * */ -/** - * @ngdoc function - * @name ng.$animator - * - * @description - * The $animator service provides the DOM manipulation API which is decorated with animations. - * - * @param {Scope} scope the scope for the ng-animate. - * @param {Attributes} attr the attributes object which contains the ngAnimate key / value pair. (The attributes are - * passed into the linking function of the directive using the `$animator`.) - * @return {object} the animator object which contains the enter, leave, move, show, hide and animate methods. - */ var $AnimatorProvider = function() { - this.$get = ['$animation', '$window', '$sniffer', function($animation, $window, $sniffer) { - return function(scope, attrs) { + var globalAnimationEnabled = true; + + this.$get = ['$animation', '$window', '$sniffer', '$rootScope', function($animation, $window, $sniffer, $rootScope) { + /** + * @ngdoc function + * @name ng.$animator + * @function + * + * @description + * The $animator.create service provides the DOM manipulation API which is decorated with animations. + * + * @param {Scope} scope the scope for the ng-animate. + * @param {Attributes} attr the attributes object which contains the ngAnimate key / value pair. (The attributes are + * passed into the linking function of the directive using the `$animator`.) + * @return {object} the animator object which contains the enter, leave, move, show, hide and animate methods. + */ + var AnimatorService = function(scope, attrs) { var ngAnimateAttr = attrs.ngAnimate; var animator = {}; @@ -230,7 +233,7 @@ var $AnimatorProvider = function() { var startClass = className + '-start'; return function(element, parent, after) { - if (!$sniffer.supportsTransitions && !polyfillSetup && !polyfillStart) { + if (!globalAnimationEnabled || !$sniffer.supportsTransitions && !polyfillSetup && !polyfillStart) { beforeFn(element, parent, after); afterFn(element, parent, after); return; @@ -280,32 +283,54 @@ var $AnimatorProvider = function() { } } } - } - function show(element) { - element.css('display', ''); - } + function show(element) { + element.css('display', ''); + } - function hide(element) { - element.css('display', 'none'); - } + function hide(element) { + element.css('display', 'none'); + } - function insert(element, parent, after) { - if (after) { - after.after(element); - } else { - parent.append(element); + function insert(element, parent, after) { + if (after) { + after.after(element); + } else { + parent.append(element); + } + } + + function remove(element) { + element.remove(); } - } - function remove(element) { - element.remove(); - } + function move(element, parent, after) { + // Do not remove element before insert. Removing will cause data associated with the + // element to be dropped. Insert will implicitly do the remove. + insert(element, parent, after); + } + }; + + /** + * @ngdoc function + * @name ng.animator#enabled + * @methodOf ng.$animator + * @function + * + * @param {Boolean=} If provided then set the animation on or off. + * @return {Boolean} Current animation state. + * + * @description + * Globally enables/disables animations. + * + */ + AnimatorService.enabled = function(value) { + if (arguments.length) { + globalAnimationEnabled = !!value; + } + return globalAnimationEnabled; + }; - function move(element, parent, after) { - // Do not remove element before insert. Removing will cause data associated with the - // element to be dropped. Insert will implicitly do the remove. - insert(element, parent, after); - } + return AnimatorService; }]; }; |
