jquery-ui/ui/jquery.effects.blind.js

83 lines
1.9 KiB
JavaScript
Raw Normal View History

/*
* jQuery UI Effects Blind @VERSION
*
2011-01-17 14:13:18 +00:00
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Effects/Blind
*
* Depends:
* jquery.effects.core.js
*/
(function( $, undefined ) {
2011-06-21 06:15:42 +00:00
var rvertical = /up|down|vertical/,
rpositivemotion = /up|left|vertical|horizontal/;
2008-05-23 09:26:18 +00:00
$.effects.effect.blind = function( o, next ) {
// Create element
var el = $( this ),
props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
mode = $.effects.setMode( el, o.mode || "hide" ),
direction = o.direction || "up",
vertical = rvertical.test( direction ),
ref = vertical ? "height" : "width",
ref2 = vertical ? "top" : "left",
motion = rpositivemotion.test( direction ),
animation = {},
show = mode === "show",
wrapper, distance;
2011-03-07 00:48:14 +00:00
// if already wrapped, the wrapper's properties are my property. #6245
if ( el.parent().is( ".ui-effects-wrapper" ) ) {
$.effects.save( el.parent(), props );
} else {
$.effects.save( el, props );
}
2011-06-21 06:15:42 +00:00
el.show();
wrapper = $.effects.createWrapper( el ).css({
overflow: "hidden"
});
distance = wrapper[ ref ]();
2011-03-07 00:48:14 +00:00
2011-06-21 06:15:42 +00:00
animation[ ref ] = show ? distance : 0;
if ( !motion ) {
el
.css( vertical ? "bottom" : "right", 0 )
.css( vertical ? "top" : "left", "" )
.css({ position: "absolute" });
2011-06-21 06:15:42 +00:00
animation[ ref2 ] = show ? 0 : distance;
}
// start at 0 if we are showing
2011-06-21 06:15:42 +00:00
if ( show ) {
wrapper.css( ref, 0 );
if ( ! motion ) {
wrapper.css( ref2, distance );
}
}
// Animate
wrapper.animate( animation, {
duration: o.duration,
easing: o.easing,
queue: false,
complete: function() {
2011-06-21 06:15:42 +00:00
if ( mode === "hide" ) {
el.hide();
}
2011-06-21 06:15:42 +00:00
$.effects.restore( el, props );
$.effects.removeWrapper( el );
if ( $.isFunction( o.complete ) ) {
o.complete.apply( el[ 0 ], arguments );
}
next();
}
});
};
})(jQuery);