jQuery UI 1.10 has already been released, and 1.11 is on the horizon (1.9 is marked "legacy" as of writing). 1.10 drops the compatibility layer for 1.8 API. So, users should definitely be encouraged to upgrade their code to move away from the deprecated 1.8 APIs. However, to take it one step at a time, this commit upgrades us to 1.9 first. That way we're at least not using an unsupported code base anymore, while at the same time not rolling out breaking changes. jQuery UI has redesigned many of its APIs[1], but compatibility with the jQuery UI 1.8 API is maintained throughout 1.9.x. * Base theme is now called "Smoothness". * Sorting the entries in Resources.php alphabetically to make it easier to ensure all files are listed when comparing them side-by-side. * Update dependencies to match the "Depends:" header inside the javascript files. * In jQuery UI 1.9, effect files were renamed to match the jquery.ui.*.js naming pattern. * New modules: - jquery.ui.menu - jquery.ui.spinner - jquery.ui.tooltip * Release notes: - http://blog.jqueryui.com/2012/10/jquery-ui-1-9-0/ - http://jqueryui.com/upgrade-guide/1.9/ - http://jqueryui.com/changelog/1.9.0/ - http://blog.jqueryui.com/2012/10/jquery-ui-1-9-1/ - http://jqueryui.com/changelog/1.9.1/ - http://blog.jqueryui.com/2012/11/jquery-ui-1-9-2/ [1] http://blog.jqueryui.com/2011/03/api-redesigns-the-past-present-and-future/ Bug: 47076 Change-Id: I0e10b42fb7c25b9d4704719f21c44c08f36ddfa7
113 lines
2.7 KiB
JavaScript
113 lines
2.7 KiB
JavaScript
/*!
|
|
* jQuery UI Effects Bounce 1.9.2
|
|
* http://jqueryui.com
|
|
*
|
|
* Copyright 2012 jQuery Foundation and other contributors
|
|
* Released under the MIT license.
|
|
* http://jquery.org/license
|
|
*
|
|
* http://api.jqueryui.com/bounce-effect/
|
|
*
|
|
* Depends:
|
|
* jquery.ui.effect.js
|
|
*/
|
|
(function( $, undefined ) {
|
|
|
|
$.effects.effect.bounce = function( o, done ) {
|
|
var el = $( this ),
|
|
props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
|
|
|
|
// defaults:
|
|
mode = $.effects.setMode( el, o.mode || "effect" ),
|
|
hide = mode === "hide",
|
|
show = mode === "show",
|
|
direction = o.direction || "up",
|
|
distance = o.distance,
|
|
times = o.times || 5,
|
|
|
|
// number of internal animations
|
|
anims = times * 2 + ( show || hide ? 1 : 0 ),
|
|
speed = o.duration / anims,
|
|
easing = o.easing,
|
|
|
|
// utility:
|
|
ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
|
|
motion = ( direction === "up" || direction === "left" ),
|
|
i,
|
|
upAnim,
|
|
downAnim,
|
|
|
|
// we will need to re-assemble the queue to stack our animations in place
|
|
queue = el.queue(),
|
|
queuelen = queue.length;
|
|
|
|
// Avoid touching opacity to prevent clearType and PNG issues in IE
|
|
if ( show || hide ) {
|
|
props.push( "opacity" );
|
|
}
|
|
|
|
$.effects.save( el, props );
|
|
el.show();
|
|
$.effects.createWrapper( el ); // Create Wrapper
|
|
|
|
// default distance for the BIGGEST bounce is the outer Distance / 3
|
|
if ( !distance ) {
|
|
distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
|
|
}
|
|
|
|
if ( show ) {
|
|
downAnim = { opacity: 1 };
|
|
downAnim[ ref ] = 0;
|
|
|
|
// if we are showing, force opacity 0 and set the initial position
|
|
// then do the "first" animation
|
|
el.css( "opacity", 0 )
|
|
.css( ref, motion ? -distance * 2 : distance * 2 )
|
|
.animate( downAnim, speed, easing );
|
|
}
|
|
|
|
// start at the smallest distance if we are hiding
|
|
if ( hide ) {
|
|
distance = distance / Math.pow( 2, times - 1 );
|
|
}
|
|
|
|
downAnim = {};
|
|
downAnim[ ref ] = 0;
|
|
// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
|
|
for ( i = 0; i < times; i++ ) {
|
|
upAnim = {};
|
|
upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
|
|
|
|
el.animate( upAnim, speed, easing )
|
|
.animate( downAnim, speed, easing );
|
|
|
|
distance = hide ? distance * 2 : distance / 2;
|
|
}
|
|
|
|
// Last Bounce when Hiding
|
|
if ( hide ) {
|
|
upAnim = { opacity: 0 };
|
|
upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
|
|
|
|
el.animate( upAnim, speed, easing );
|
|
}
|
|
|
|
el.queue(function() {
|
|
if ( 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();
|
|
|
|
};
|
|
|
|
})(jQuery);
|