mirror of
https://github.com/WordPress/WordPress.git
synced 2024-11-06 10:50:56 +01:00
7ea33988e9
Some regressions happened alongside the release of jQuery UI 1.13.0, this brings the fixes from 1.13.1 downstream to WordPress, notably relating to Widget, Autocomplete, Sortable, and Tooltip modules. See the changelog between version 1.13.0 and 1.13.1 at https://github.com/jquery/jquery-ui/compare/1.13.0...1.13.1 Props blogaid, linux4me2, mgol. Fixes #54902. Built from https://develop.svn.wordpress.org/trunk@52648 git-svn-id: http://core.svn.wordpress.org/trunk@52237 1a063a9b-81f0-0310-95a4-ce76da25c4cd
114 lines
2.8 KiB
JavaScript
114 lines
2.8 KiB
JavaScript
/*!
|
|
* jQuery UI Effects Explode 1.13.1
|
|
* http://jqueryui.com
|
|
*
|
|
* Copyright jQuery Foundation and other contributors
|
|
* Released under the MIT license.
|
|
* http://jquery.org/license
|
|
*/
|
|
|
|
//>>label: Explode Effect
|
|
//>>group: Effects
|
|
/* eslint-disable max-len */
|
|
//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
|
|
/* eslint-enable max-len */
|
|
//>>docs: http://api.jqueryui.com/explode-effect/
|
|
//>>demos: http://jqueryui.com/effect/
|
|
|
|
( function( factory ) {
|
|
"use strict";
|
|
|
|
if ( typeof define === "function" && define.amd ) {
|
|
|
|
// AMD. Register as an anonymous module.
|
|
define( [
|
|
"jquery",
|
|
"./effect"
|
|
], factory );
|
|
} else {
|
|
|
|
// Browser globals
|
|
factory( jQuery );
|
|
}
|
|
} )( function( $ ) {
|
|
"use strict";
|
|
|
|
return $.effects.define( "explode", "hide", function( options, done ) {
|
|
|
|
var i, j, left, top, mx, my,
|
|
rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,
|
|
cells = rows,
|
|
element = $( this ),
|
|
mode = options.mode,
|
|
show = mode === "show",
|
|
|
|
// Show and then visibility:hidden the element before calculating offset
|
|
offset = element.show().css( "visibility", "hidden" ).offset(),
|
|
|
|
// Width and height of a piece
|
|
width = Math.ceil( element.outerWidth() / cells ),
|
|
height = Math.ceil( element.outerHeight() / rows ),
|
|
pieces = [];
|
|
|
|
// Children animate complete:
|
|
function childComplete() {
|
|
pieces.push( this );
|
|
if ( pieces.length === rows * cells ) {
|
|
animComplete();
|
|
}
|
|
}
|
|
|
|
// Clone the element for each row and cell.
|
|
for ( i = 0; i < rows; i++ ) { // ===>
|
|
top = offset.top + i * height;
|
|
my = i - ( rows - 1 ) / 2;
|
|
|
|
for ( j = 0; j < cells; j++ ) { // |||
|
|
left = offset.left + j * width;
|
|
mx = j - ( cells - 1 ) / 2;
|
|
|
|
// Create a clone of the now hidden main element that will be absolute positioned
|
|
// within a wrapper div off the -left and -top equal to size of our pieces
|
|
element
|
|
.clone()
|
|
.appendTo( "body" )
|
|
.wrap( "<div></div>" )
|
|
.css( {
|
|
position: "absolute",
|
|
visibility: "visible",
|
|
left: -j * width,
|
|
top: -i * height
|
|
} )
|
|
|
|
// Select the wrapper - make it overflow: hidden and absolute positioned based on
|
|
// where the original was located +left and +top equal to the size of pieces
|
|
.parent()
|
|
.addClass( "ui-effects-explode" )
|
|
.css( {
|
|
position: "absolute",
|
|
overflow: "hidden",
|
|
width: width,
|
|
height: height,
|
|
left: left + ( show ? mx * width : 0 ),
|
|
top: top + ( show ? my * height : 0 ),
|
|
opacity: show ? 0 : 1
|
|
} )
|
|
.animate( {
|
|
left: left + ( show ? 0 : mx * width ),
|
|
top: top + ( show ? 0 : my * height ),
|
|
opacity: show ? 1 : 0
|
|
}, options.duration || 500, options.easing, childComplete );
|
|
}
|
|
}
|
|
|
|
function animComplete() {
|
|
element.css( {
|
|
visibility: "visible"
|
|
} );
|
|
$( pieces ).remove();
|
|
done();
|
|
}
|
|
} );
|
|
|
|
} );
|