mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
dc67d2c5d2
For instance, this is useful for the jquery-ui-rails gem, which does not
use jQuery UI's own minification, but relies on Rails to minify the
files where necessary. Rails in turn uses UglifyJS for JS and YUI for
CSS, both of which respect the /*! ... */ convention.
(cherry picked from commit 37dcc3e21d
, dropped menu, spinner and tooltip)
57 lines
1.9 KiB
JavaScript
57 lines
1.9 KiB
JavaScript
/*!
|
|
* jQuery UI Effects Fold @VERSION
|
|
*
|
|
* Copyright 2012, 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/Fold
|
|
*
|
|
* Depends:
|
|
* jquery.effects.core.js
|
|
*/
|
|
(function( $, undefined ) {
|
|
|
|
$.effects.fold = function(o) {
|
|
|
|
return this.queue(function() {
|
|
|
|
// Create element
|
|
var el = $(this), props = ['position','top','bottom','left','right'];
|
|
|
|
// Set options
|
|
var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode
|
|
var size = o.options.size || 15; // Default fold size
|
|
var horizFirst = !(!o.options.horizFirst); // Ensure a boolean value
|
|
var duration = o.duration ? o.duration / 2 : $.fx.speeds._default / 2;
|
|
|
|
// Adjust
|
|
$.effects.save(el, props); el.show(); // Save & Show
|
|
var wrapper = $.effects.createWrapper(el).css({overflow:'hidden'}); // Create Wrapper
|
|
var widthFirst = ((mode == 'show') != horizFirst);
|
|
var ref = widthFirst ? ['width', 'height'] : ['height', 'width'];
|
|
var distance = widthFirst ? [wrapper.width(), wrapper.height()] : [wrapper.height(), wrapper.width()];
|
|
var percent = /([0-9]+)%/.exec(size);
|
|
if(percent) size = parseInt(percent[1],10) / 100 * distance[mode == 'hide' ? 0 : 1];
|
|
if(mode == 'show') wrapper.css(horizFirst ? {height: 0, width: size} : {height: size, width: 0}); // Shift
|
|
|
|
// Animation
|
|
var animation1 = {}, animation2 = {};
|
|
animation1[ref[0]] = mode == 'show' ? distance[0] : size;
|
|
animation2[ref[1]] = mode == 'show' ? distance[1] : 0;
|
|
|
|
// Animate
|
|
wrapper.animate(animation1, duration, o.options.easing)
|
|
.animate(animation2, duration, o.options.easing, function() {
|
|
if(mode == 'hide') el.hide(); // Hide
|
|
$.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
|
|
if(o.callback) o.callback.apply(el[0], arguments); // Callback
|
|
el.dequeue();
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
})(jQuery);
|