Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Core: Move backcompat for core 1.7 into its own module
Ref #9647
- Loading branch information
@@ -0,0 +1,89 @@ | ||
/*! | ||
* jQuery UI Support for jQuery core 1.7.x @VERSION | ||
* http://jqueryui.com | ||
* | ||
* Copyright jQuery Foundation and other contributors | ||
* Released under the MIT license. | ||
* http://jquery.org/license | ||
* | ||
*/ | ||
|
||
//>>label: jQuery 1.7 Support | ||
//>>group: UI Core | ||
//>>description: Support version 1.7.x of jQuery core | ||
|
||
( function( factory ) { | ||
if ( typeof define === "function" && define.amd ) { | ||
|
||
// AMD. Register as an anonymous module. | ||
define( [ "jquery", "./version" ], factory ); | ||
} else { | ||
|
||
// Browser globals | ||
factory( jQuery ); | ||
} | ||
}( function( $ ) { | ||
|
||
// support: jQuery 1.7 only | ||
// Not a great way to check versions, but since we only support 1.7+ and only | ||
// need to detect <1.8, this is a simple check that should suffice. Checking | ||
// for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0 | ||
// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting | ||
// 1.7 anymore). See #11197 for why we're not using feature detection. | ||
if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) { | ||
|
||
// Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight() | ||
// Unlike jQuery Core 1.8+, these only support numeric values to set the | ||
// dimensions in pixels | ||
$.each( [ "Width", "Height" ], function( i, name ) { | ||
var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], | ||
type = name.toLowerCase(), | ||
orig = { | ||
innerWidth: $.fn.innerWidth, | ||
innerHeight: $.fn.innerHeight, | ||
outerWidth: $.fn.outerWidth, | ||
outerHeight: $.fn.outerHeight | ||
}; | ||
|
||
function reduce( elem, size, border, margin ) { | ||
$.each( side, function() { | ||
size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; | ||
if ( border ) { | ||
size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; | ||
} | ||
if ( margin ) { | ||
size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; | ||
} | ||
} ); | ||
return size; | ||
} | ||
|
||
$.fn[ "inner" + name ] = function( size ) { | ||
if ( size === undefined ) { | ||
return orig[ "inner" + name ].call( this ); | ||
} | ||
|
||
return this.each( function() { | ||
$( this ).css( type, reduce( this, size ) + "px" ); | ||
} ); | ||
}; | ||
|
||
$.fn[ "outer" + name ] = function( size, margin ) { | ||
if ( typeof size !== "number" ) { | ||
return orig[ "outer" + name ].call( this, size ); | ||
} | ||
|
||
return this.each( function() { | ||
$( this ).css( type, reduce( this, size, true, margin ) + "px" ); | ||
} ); | ||
}; | ||
} ); | ||
|
||
$.fn.addBack = function( selector ) { | ||
return this.add( selector == null ? | ||
this.prevObject : this.prevObject.filter( selector ) | ||
); | ||
}; | ||
} | ||
|
||
} ) ); |