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

87 lines
2.0 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 ) {
var rvertical = /up|down|vertical/;
var rpositivemotion = /up|left|vertical|horizontal/;
2008-05-23 09:26:18 +00:00
$.effects.effect.blind = function( o ) {
2011-03-07 00:48:14 +00:00
return this.queue( function() {
2008-05-23 09:26:18 +00:00
// Create element
2011-03-07 00:48:14 +00:00
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 ),
2011-03-04 23:10:02 +00:00
animation = {},
wrapper, distance;
// 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-03-07 00:48:14 +00:00
el.show();
wrapper = $.effects.createWrapper( el ).css({
overflow: "hidden"
2011-03-07 00:48:14 +00:00
});
distance = wrapper[ ref ]();
animation[ ref ] = ( mode === "show" ? distance : 0 );
if ( !motion ) {
el
.css( vertical ? "bottom" : "right", 0 )
.css( vertical ? "top" : "left", "" )
.css({ position: "absolute" });
animation[ ref2 ] = ( mode === "show" ) ? 0 : distance;
}
2011-03-07 00:48:14 +00:00
// start at 0 if we are showing
if ( mode == "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() {
if ( mode == "hide" ) {
el.hide();
}
$.effects.restore( el, props );
$.effects.removeWrapper( el );
if ( $.isFunction( o.complete ) ) {
o.complete.apply( el[ 0 ], arguments );
}
el.dequeue();
}
});
});
};
})(jQuery);