aboutsummaryrefslogtreecommitdiffstats
path: root/src/ng/animator.js
diff options
context:
space:
mode:
authorMatias Niemelàˆ2013-04-08 20:37:57 -0400
committerMisko Hevery2013-04-11 14:15:20 -0700
commit5476cb6e9b6d7a16e3a86585bc2db5e63b16cd4d (patch)
tree6d4d69a8ee15c0c84de90388ccfc8316a4f91ae7 /src/ng/animator.js
parentd9d53472ecf87941dd9864d417cde31975d47854 (diff)
downloadangular.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.js97
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;
}];
};