├── .gitignore ├── LICENSE.md ├── README.md ├── angular-velocity.js ├── angular-velocity.min.js ├── angular-velocity.min.map ├── bower.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | bower_components 2 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 cgwyllie 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Angular Velocity 3 | 4 | [AngularJS](http://angularjs.org) ngAnimate integration for the [Velocity](http://velocityjs.org) animation library's UI pack plugin. 5 | 6 | ## Getting Started 7 | 8 | ### Install with Bower 9 | 10 | ``` 11 | bower install angular-velocity --save 12 | ``` 13 | 14 | #### Include Scripts 15 | 16 | ```html 17 | 18 | 19 | 20 | ``` 21 | 22 | > N.B. angular-velocity assumes that the Angular core and the additional `ngAnimate` module is loaded. `ngAnimate` can be found in the AngularJS 'additional modules'. 23 | 24 | ### Install with npm 25 | 26 | ``` 27 | npm install angular-velocity --save 28 | ``` 29 | 30 | #### Include Scripts 31 | 32 | ```html 33 | 34 | ``` 35 | > N.B. When installing from npm, it is assumed that VelocityJS will be installed and loaded before Angular Velocity. 36 | 37 | > N.B. angular-velocity assumes that the Angular core and the additional `ngAnimate` module is loaded. `ngAnimate` can be found in the AngularJS 'additional modules'. 38 | 39 | ### Declare Angular Dependency 40 | 41 | ```javascript 42 | angular.module('your-app', ['angular-velocity']); 43 | ``` 44 | 45 | ## Usage 46 | 47 | This module declares Angular animations for each of the animations in the UI pack of Velocity following a standardised naming convention. 48 | 49 | From Velocity, the period in a transition or callout name is replaced by a hyphen. For example, `transition.slideUpIn` becomes `velocity-transition-slideUpIn`. 50 | 51 | This animation name is then used as a class name on any element you want to animate with the ngAnimate system, for example: 52 | 53 | ```html 54 |
55 | I've been animated with Velocity and Angular! 56 |
57 | ``` 58 | 59 | ### Opposites 60 | 61 | Angular Velocity defines opposite animations for all animations that have a 'directional' component. For every 'In' transition, there is an opposite 'Out' transition that can be used. 62 | 63 | These are defined with the prefix `velocity-opposites-` and will work with ngAnimate's enter & leave, and ngShow & ngHide. 64 | 65 | For example: 66 | 67 | ```html 68 |
69 | I enter with a transition.slideUpIn.
70 | I leave with a transition.slideDownOut. 71 |
72 | ``` 73 | 74 | ### Different Enter & Leave Animations 75 | 76 | Angular Velocity defines an enter animation for every 'In' transition, and a leave animation for every 'Out' transition. 77 | 78 | These are defined with the prefixes `velocity-enter-` and `velocity-leave-`, which work with ngEnter & ngShow, and ngLeave & ngHide respectively. 79 | 80 | For example: 81 | 82 | ```html 83 |
84 | I enter with a transition.slideRightIn.
85 | I leave with a transition.slideDownOut. 86 |
87 | ``` 88 | 89 | > You do not have to use an enter and a leave transition, they are independednt and you can specify them separaetly if desired. 90 | 91 | ### Velocity Options 92 | 93 | Setting [Velocity options](http://julian.com/research/velocity/#arguments) is possible by defining the `data-velocity-opts` attribute on your animated element. This is an Angular-aware expression, so you can pass objects, bindings, or references to scope objects: 94 | 95 | ```html 96 |
100 | I've been animated with Velocity and Angular! 101 |
102 | ``` 103 | 104 | ### Stagger 105 | 106 | Staggering is supported for `ngEnter` and `ngLeave` animations. This works especially well with `ngRepeat`: 107 | 108 | ```html 109 | 117 | ``` 118 | 119 | > **Complete Function** 120 | > 121 | > The Velocity `complete` callback can be passed in the options and will be executed against your element's scope in a digest cycle. 122 | 123 | 124 | ## Contributing 125 | 126 | Please feel free to fork, push, pull and all that other good Git stuff! 127 | 128 | ### Compression 129 | 130 | ``` 131 | uglifyjs angular-velocity.js -c -m -r '$,angular' --source-map angular-velocity.min.map -o angular-velocity.min.js 132 | ``` 133 | 134 | # Disclaimer 135 | 136 | This project is not associated officially with either AngularJS or Velocity. It is just a little utility that was quickly thrown together to bridge an animation-shaped gap. 137 | 138 | # Thanks 139 | 140 | - [@albertogasparin](https://github.com/albertogasparin) for allowing registration of custom transitions after script load time 141 | - [@MikaAK](https://github.com/MikaAK) for jQuery dependency removal 142 | - [@tvararu](https://github.com/tvararu) for updates to work with Velocity 1.x 143 | - [@rosslavery](https://github.com/rosslavery) for an example of how to access UI pack animations 144 | -------------------------------------------------------------------------------- /angular-velocity.js: -------------------------------------------------------------------------------- 1 | 2 | (function () { 3 | 4 | 'use strict'; 5 | 6 | var CLASS_ANIM_ADD = 0, 7 | CLASS_ANIM_REMOVE = 1, 8 | Velocity = window.Velocity || (window.jQuery && jQuery.Velocity); 9 | 10 | // Check we have velocity and the UI pack 11 | if (!Velocity || !Velocity.RegisterEffect) { 12 | throw "Velocity and Velocity UI Pack plugin required, please include the relevant JS files. Get Velocity with: bower install velocity"; 13 | } 14 | 15 | // Utility to normalize the UI pack transition name 16 | function normalizeTransitionName(animation) { 17 | return animation.replace('.', '-'); 18 | } 19 | 20 | // Utility to create class name for a sequence 21 | function animationToClassName(animation) { 22 | return 'velocity-' + normalizeTransitionName(animation); 23 | } 24 | 25 | // Utility to create an opposites class name for a sequence 26 | function animationToOppositesClassName(animation) { 27 | return 'velocity-opposites-' + normalizeTransitionName(animation); 28 | } 29 | 30 | // Utility to create an enter transition class name 31 | function animationToEnterClassName(animation) { 32 | return 'velocity-enter-' + normalizeTransitionName(animation); 33 | } 34 | 35 | // Utility to create a leave transition class name 36 | function animationToLeaveClassName(animation) { 37 | return 'velocity-leave-' + normalizeTransitionName(animation); 38 | } 39 | 40 | // Utility to parse out velocity options 41 | function getVelocityOpts($parse, $el, done) { 42 | var optsAttrVal = $el.attr('data-velocity-opts'), 43 | scope = $el.scope(), 44 | opts = { 45 | complete: done 46 | }, 47 | userOpts; 48 | 49 | if (optsAttrVal) { 50 | userOpts = $parse(optsAttrVal)(scope); 51 | angular.extend(opts, userOpts); 52 | if (userOpts.begin) { 53 | opts.begin = function () { 54 | var args = Array.prototype.slice.call(arguments, 0); 55 | scope.$apply(function () { 56 | userOpts.begin.apply(args[0], args); 57 | }); 58 | }; 59 | } 60 | if (userOpts.complete) { 61 | opts.complete = function () { 62 | var args = Array.prototype.slice.call(arguments, 0); 63 | scope.$apply(function () { 64 | userOpts.complete.apply(args[0], args); 65 | }); 66 | scope = null; 67 | done(); 68 | }; 69 | } 70 | } 71 | 72 | return opts; 73 | } 74 | 75 | // Utility for queueing animations together. 76 | // Staggering isn't natively supported by ngAnimate for JS animations yet, so 77 | // we use the workaround from: http://www.yearofmoo.com/2013/12/staggering-animations-in-angularjs.html 78 | function newAnimationQueue($timeout) { 79 | var queue = { 80 | enter: [], 81 | leave: [] 82 | }; 83 | 84 | return function queueAllAnimations(event, element, done, onComplete) { 85 | var eventQueue = queue[event]; 86 | 87 | eventQueue.push({ 88 | element : element, 89 | done : done 90 | }); 91 | 92 | eventQueue.timer && $timeout.cancel(eventQueue.timer); 93 | eventQueue.timer = $timeout(function() { 94 | var elms = [], 95 | doneFns = [], 96 | onDone; 97 | 98 | angular.forEach(eventQueue, function(item) { 99 | item && elms.push(item.element); 100 | doneFns.push(item.done); 101 | }); 102 | 103 | onDone = function() { 104 | angular.forEach(doneFns, function(fn) { 105 | fn(); 106 | }); 107 | }; 108 | 109 | onComplete(elms, onDone); 110 | queue[event] = []; 111 | }, 10, false); 112 | 113 | return function() { 114 | queue[event] = []; 115 | }; 116 | }; 117 | } 118 | 119 | function makeCancelFunctionFor($el) { 120 | return function (cancel) { 121 | if (cancel) { 122 | Velocity($el, 'stop'); 123 | } 124 | }; 125 | } 126 | 127 | // Factory for the angular animation effect function (move animations) 128 | function makeAnimFor(animation, $parse) { 129 | return function ($el, done) { 130 | 131 | var opts = getVelocityOpts($parse, $el, done); 132 | 133 | Velocity($el, animation, opts); 134 | 135 | return makeCancelFunctionFor($el); 136 | }; 137 | } 138 | 139 | // Factory for the angular animation effect function (class animations (ng-hide)) 140 | function makeClassAnimFor(addOrRemove, addAnim, removeAnim, $parse) { 141 | return function ($el, className, done) { 142 | 143 | var animation = addAnim, 144 | opts; 145 | 146 | if ('ng-hide' === className) { 147 | 148 | animation = (addOrRemove === CLASS_ANIM_ADD) ? removeAnim : animation; 149 | 150 | opts = getVelocityOpts($parse, $el, done); 151 | 152 | Velocity($el, animation, opts); 153 | 154 | return makeCancelFunctionFor($el); 155 | } 156 | }; 157 | } 158 | 159 | // Factory for the angular animation effect function (grouped animations) 160 | function makeGroupedAnimFor(animation, event, queueFn, $parse) { 161 | return function ($el, done) { 162 | var cancel; 163 | 164 | // Hide element so it doesn't briefly show whilst queue is built 165 | if (event === 'enter') { 166 | $el.css('opacity', 0); 167 | } 168 | 169 | cancel = queueFn(event, $el[0], done, function(elements, onQueueDone) { 170 | var opts = getVelocityOpts($parse, $el, onQueueDone); 171 | Velocity(elements, animation, opts); 172 | }); 173 | 174 | return function onClose(cancelled) { 175 | cancelled && cancel(); 176 | }; 177 | }; 178 | } 179 | 180 | // Factory for making animations 181 | function makeAngularAnimationFor(animation) { 182 | return ['$timeout', '$parse', function ($timeout, $parse) { 183 | 184 | var queueFn = newAnimationQueue($timeout); 185 | 186 | return { 187 | 'enter': makeGroupedAnimFor(animation, 'enter', queueFn, $parse), 188 | 'leave': makeGroupedAnimFor(animation, 'leave', queueFn, $parse), 189 | 'move': makeAnimFor(animation, $parse), 190 | 'addClass': makeClassAnimFor(CLASS_ANIM_ADD, animation, animation, $parse), 191 | 'removeClass': makeClassAnimFor(CLASS_ANIM_REMOVE, animation, animation, $parse) 192 | }; 193 | }]; 194 | } 195 | 196 | // Factory for making enter/show animations 197 | function makeEnterAnimationFor(animation) { 198 | return ['$timeout', '$parse', function ($timeout, $parse) { 199 | 200 | var queueFn = newAnimationQueue($timeout); 201 | 202 | return { 203 | 'enter': makeGroupedAnimFor(animation, 'enter', queueFn, $parse), 204 | 'removeClass': makeClassAnimFor(CLASS_ANIM_REMOVE, animation, animation, $parse) 205 | }; 206 | }]; 207 | } 208 | 209 | // Factory for making leave/hide animations 210 | function makeLeaveAnimationFor(animation) { 211 | return ['$timeout', '$parse', function ($timeout, $parse) { 212 | 213 | var queueFn = newAnimationQueue($timeout); 214 | 215 | return { 216 | 'leave': makeGroupedAnimFor(animation, 'leave', queueFn, $parse), 217 | 'addClass': makeClassAnimFor(CLASS_ANIM_ADD, animation, animation, $parse) 218 | }; 219 | }]; 220 | } 221 | 222 | // Factory for making opposite animations 223 | function makeOppositesAnimationFor(animation) { 224 | return ['$timeout', '$parse', function ($timeout, $parse) { 225 | var queueFn = newAnimationQueue($timeout); 226 | 227 | var opp = animation.replace('In', 'Out'); 228 | 229 | if (opp.indexOf('Down') > -1) { 230 | opp = opp.replace('Down', 'Up'); 231 | } 232 | else if (opp.indexOf('Up') > -1) { 233 | opp = opp.replace('Up', 'Down'); 234 | } 235 | else if (opp.indexOf('Left') > -1) { 236 | opp = opp.replace('Left', 'Right'); 237 | } 238 | else if (opp.indexOf('Right') > -1) { 239 | opp = opp.replace('Right', 'Left'); 240 | } 241 | 242 | return { 243 | 'enter': makeGroupedAnimFor(animation, 'enter', queueFn, $parse), 244 | 'leave': makeGroupedAnimFor(opp, 'leave', queueFn, $parse), 245 | 'move': makeAnimFor(animation, $parse), 246 | 'addClass': makeClassAnimFor(CLASS_ANIM_ADD, animation, opp, $parse), 247 | 'removeClass': makeClassAnimFor(CLASS_ANIM_REMOVE, animation, opp, $parse) 248 | }; 249 | }]; 250 | } 251 | 252 | // Use the factories to define animations for all velocity's sequences 253 | angular 254 | .module('angular-velocity', ['ngAnimate']) 255 | .config(['$animateProvider', function ($animateProvider) { 256 | // Use the factories to define animations for all velocity's sequences 257 | angular.forEach(Velocity.Redirects, function (_, animation) { 258 | var IN = 'In', 259 | OUT = 'Out', 260 | selector = '.' + animationToClassName(animation), 261 | oppositesSelector = '.' + animationToOppositesClassName(animation), 262 | enterSelector, leaveSelector; 263 | 264 | $animateProvider.register(selector, makeAngularAnimationFor(animation)); 265 | 266 | if (animation.substr(-2) === IN) { 267 | enterSelector = '.' + animationToEnterClassName(animation); 268 | $animateProvider.register(oppositesSelector, makeOppositesAnimationFor(animation)); 269 | $animateProvider.register(enterSelector, makeEnterAnimationFor(animation)); 270 | } 271 | else if (animation.substr(-3) === OUT) { 272 | leaveSelector = '.' + animationToLeaveClassName(animation); 273 | $animateProvider.register(leaveSelector, makeLeaveAnimationFor(animation)); 274 | } 275 | }); 276 | }]); 277 | 278 | })(); 279 | -------------------------------------------------------------------------------- /angular-velocity.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";function e(e){return e.replace(".","-")}function n(n){return"velocity-"+e(n)}function t(n){return"velocity-opposites-"+e(n)}function r(n){return"velocity-enter-"+e(n)}function i(n){return"velocity-leave-"+e(n)}function o(e,n,t){var r,i=n.attr("data-velocity-opts"),o=n.scope(),u={complete:t};return i&&(r=e(i)(o),angular.extend(u,r),r.begin&&(u.begin=function(){var e=Array.prototype.slice.call(arguments,0);o.$apply(function(){r.begin.apply(e[0],e)})}),r.complete&&(u.complete=function(){var e=Array.prototype.slice.call(arguments,0);o.$apply(function(){r.complete.apply(e[0],e)}),o=null,t()})),u}function u(e){var n={enter:[],leave:[]};return function(t,r,i,o){var u=n[t];return u.push({element:r,done:i}),u.timer&&e.cancel(u.timer),u.timer=e(function(){var e,r=[],i=[];angular.forEach(u,function(e){e&&r.push(e.element),i.push(e.done)}),e=function(){angular.forEach(i,function(e){e()})},o(r,e),n[t]=[]},10,!1),function(){n[t]=[]}}}function a(e){return function(n){n&&y(e,"stop")}}function c(e,n){return function(t,r){var i=o(n,t,r);return y(t,e,i),a(t)}}function l(e,n,t,r){return function(i,u,c){var l,f=n;return"ng-hide"===u?(f=e===g?t:f,l=o(r,i,c),y(i,f,l),a(i)):void 0}}function f(e,n,t,r){return function(i,u){var a;return"enter"===n&&i.css("opacity",0),a=t(n,i[0],u,function(n,t){var u=o(r,i,t);y(n,e,u)}),function(e){e&&a()}}}function s(e){return["$timeout","$parse",function(n,t){var r=u(n);return{enter:f(e,"enter",r,t),leave:f(e,"leave",r,t),move:c(e,t),addClass:l(g,e,e,t),removeClass:l(m,e,e,t)}}]}function p(e){return["$timeout","$parse",function(n,t){var r=u(n);return{enter:f(e,"enter",r,t),removeClass:l(m,e,e,t)}}]}function v(e){return["$timeout","$parse",function(n,t){var r=u(n);return{leave:f(e,"leave",r,t),addClass:l(g,e,e,t)}}]}function d(e){return["$timeout","$parse",function(n,t){var r=u(n),i=e.replace("In","Out");return i.indexOf("Down")>-1?i=i.replace("Down","Up"):i.indexOf("Up")>-1?i=i.replace("Up","Down"):i.indexOf("Left")>-1?i=i.replace("Left","Right"):i.indexOf("Right")>-1&&(i=i.replace("Right","Left")),{enter:f(e,"enter",r,t),leave:f(i,"leave",r,t),move:c(e,t),addClass:l(g,e,i,t),removeClass:l(m,e,i,t)}}]}var g=0,m=1,y=window.Velocity||window.jQuery&&jQuery.Velocity;if(!y||!y.RegisterEffect)throw"Velocity and Velocity UI Pack plugin required, please include the relevant JS files. Get Velocity with: bower install velocity";angular.module("angular-velocity",["ngAnimate"]).config(["$animateProvider",function(e){angular.forEach(y.Redirects,function(o,u){var a,c,l="In",f="Out",g="."+n(u),m="."+t(u);e.register(g,s(u)),u.substr(-2)===l?(a="."+r(u),e.register(m,d(u)),e.register(a,p(u))):u.substr(-3)===f&&(c="."+i(u),e.register(c,v(u)))})}])}(); 2 | //# sourceMappingURL=angular-velocity.min.map -------------------------------------------------------------------------------- /angular-velocity.min.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["angular-velocity.js"],"names":["normalizeTransitionName","animation","replace","animationToClassName","animationToOppositesClassName","animationToEnterClassName","animationToLeaveClassName","getVelocityOpts","$parse","$el","done","userOpts","optsAttrVal","attr","scope","opts","complete","angular","extend","begin","args","Array","prototype","slice","call","arguments","$apply","apply","newAnimationQueue","$timeout","queue","enter","leave","event","element","onComplete","eventQueue","push","timer","cancel","onDone","elms","doneFns","forEach","item","fn","makeCancelFunctionFor","Velocity","makeAnimFor","makeClassAnimFor","addOrRemove","addAnim","removeAnim","className","CLASS_ANIM_ADD","makeGroupedAnimFor","queueFn","css","elements","onQueueDone","cancelled","makeAngularAnimationFor","move","addClass","removeClass","CLASS_ANIM_REMOVE","makeEnterAnimationFor","makeLeaveAnimationFor","makeOppositesAnimationFor","opp","indexOf","window","jQuery","RegisterEffect","module","config","$animateProvider","Redirects","_","enterSelector","leaveSelector","IN","OUT","selector","oppositesSelector","register","substr"],"mappings":"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","file":"angular-velocity.min.js"} -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-velocity", 3 | "version": "0.3.2", 4 | "main": "angular-velocity.min.js", 5 | "authors": [ 6 | "Christopher Wyllie " 7 | ], 8 | "description": "AngularJS ngAnimate integration for the Velocity animation library UI pack plugin", 9 | "keywords": [ 10 | "AngularJS", 11 | "angular", 12 | "ngAnimate", 13 | "Velocity", 14 | "animation" 15 | ], 16 | "license": "MIT", 17 | "ignore": [ 18 | "**/.*", 19 | "node_modules", 20 | "bower_components", 21 | "test", 22 | "tests" 23 | ], 24 | "dependencies": { 25 | "angular-animate": "~1.3.1", 26 | "angular": "~1.3.1", 27 | "velocity": "~1.2.0" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-velocity", 3 | "version": "0.3.2", 4 | "description": "AngularJS ngAnimate integration for the Velocity animation library UI pack plugin", 5 | "main": "angular-velocity.min.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/cgwyllie/angular-velocity.git" 12 | }, 13 | "keywords": [ 14 | "AngularJS", 15 | "angular", 16 | "ngAnimate", 17 | "VelocityJS", 18 | "animation" 19 | ], 20 | "author": "Christopher Wyllie", 21 | "license": "MIT", 22 | "bugs": { 23 | "url": "https://github.com/cgwyllie/angular-velocity/issues" 24 | }, 25 | "homepage": "https://github.com/cgwyllie/angular-velocity", 26 | "dependencies": { 27 | } 28 | } 29 | --------------------------------------------------------------------------------