jquery-ui/ui/jquery.ui.effect-blind.js

83 lines
1.9 KiB
JavaScript
Raw Normal View History

/*!
* jQuery UI Effects Blind @VERSION
2012-07-04 13:08:08 +00:00
* http://jqueryui.com
*
2013-01-10 13:52:20 +00:00
* Copyright 2013 jQuery Foundation and other contributors
2012-08-09 14:13:24 +00:00
* Released under the MIT license.
* http://jquery.org/license
*
2012-09-26 23:06:20 +00:00
* http://api.jqueryui.com/blind-effect/
*
* Depends:
2012-06-15 16:47:12 +00:00
* jquery.ui.effect.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, done ) {
// 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, margin;
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 ]();
margin = parseFloat( wrapper.css( ref2 ) ) || 0;
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", "auto" )
.css({ position: "absolute" });
animation[ ref2 ] = show ? margin : distance + margin;
}
// 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, margin + 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 );
done();
}
});
};
})(jQuery);