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 | |
| parent | d9d53472ecf87941dd9864d417cde31975d47854 (diff) | |
| download | angular.js-5476cb6e9b6d7a16e3a86585bc2db5e63b16cd4d.tar.bz2 | |
feat($animator): allow to globally disable and enable animations
Diffstat (limited to 'src')
| -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;    }];  };  | 
