aboutsummaryrefslogtreecommitdiffstats
path: root/ui/effect-shake.js
diff options
context:
space:
mode:
authorMike Sherov <mike.sherov@gmail.com>2012-12-26 08:35:42 -0500
committerMike Sherov <mike.sherov@gmail.com>2014-12-10 16:58:38 -0500
commitb6bec797d6a8ef0b377a866c38c67e66a626b45f (patch)
tree2e38a21f1a3894ebe6c44283fd568243611cc403 /ui/effect-shake.js
parent2a99bb7d37b7084b22b106040441a94f43785a05 (diff)
downloadjquery-ui-b6bec797d6a8ef0b377a866c38c67e66a626b45f.tar.gz
jquery-ui-b6bec797d6a8ef0b377a866c38c67e66a626b45f.zip
Effects: Rewrite
1. Introduces a set of helper methods to easily create and define new effects. 2. Uses clip animations and placeholders instead of wrappers for clip effects. 3. Ensures all animations are detectable as animated Fixes #10599 Fixes #9477 Fixes #9257 Fixes #9066 Fixes #8867 Fixes #8671 Fixes #8505 Fixes #7885 Fixes #7041 Closes gh-1017
Diffstat (limited to 'ui/effect-shake.js')
-rw-r--r--ui/effect-shake.js58
1 files changed, 20 insertions, 38 deletions
diff --git a/ui/effect-shake.js b/ui/effect-shake.js
index 896d6f95e..387f21340 100644
--- a/ui/effect-shake.js
+++ b/ui/effect-shake.js
@@ -28,30 +28,24 @@
}
}(function( $ ) {
-return $.effects.effect.shake = function( o, done ) {
+return $.effects.define( "shake", function( options, done ) {
- var el = $( this ),
- props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
- mode = $.effects.setMode( el, o.mode || "effect" ),
- direction = o.direction || "left",
- distance = o.distance || 20,
- times = o.times || 3,
+ var i = 1,
+ element = $( this ),
+ direction = options.direction || "left",
+ distance = options.distance || 20,
+ times = options.times || 3,
anims = times * 2 + 1,
- speed = Math.round( o.duration / anims ),
- ref = (direction === "up" || direction === "down") ? "top" : "left",
- positiveMotion = (direction === "up" || direction === "left"),
+ speed = Math.round( options.duration / anims ),
+ ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
+ positiveMotion = ( direction === "up" || direction === "left" ),
animation = {},
animation1 = {},
animation2 = {},
- i,
- // we will need to re-assemble the queue to stack our animations in place
- queue = el.queue(),
- queuelen = queue.length;
+ queuelen = element.queue().length;
- $.effects.save( el, props );
- el.show();
- $.effects.createWrapper( el );
+ $.effects.createPlaceholder( element );
// Animation
animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
@@ -59,31 +53,19 @@ return $.effects.effect.shake = function( o, done ) {
animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
// Animate
- el.animate( animation, speed, o.easing );
+ element.animate( animation, speed, options.easing );
// Shakes
- for ( i = 1; i < times; i++ ) {
- el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );
+ for ( ; i < times; i++ ) {
+ element.animate( animation1, speed, options.easing ).animate( animation2, speed, options.easing );
}
- el
- .animate( animation1, speed, o.easing )
- .animate( animation, speed / 2, o.easing )
- .queue(function() {
- if ( mode === "hide" ) {
- el.hide();
- }
- $.effects.restore( el, props );
- $.effects.removeWrapper( el );
- done();
- });
- // inject all the animations we just queued to be first in line (after "inprogress")
- if ( queuelen > 1) {
- queue.splice.apply( queue,
- [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
- }
- el.dequeue();
+ element
+ .animate( animation1, speed, options.easing )
+ .animate( animation, speed / 2, options.easing )
+ .queue( done );
-};
+ $.effects.unshift( element, queuelen, anims + 1 );
+});
}));