Modularize offset (exclude w/ grunt build:*:*:-offset). Closes #813. Fixes #11865

This commit is contained in:
Mike Sherov 2012-06-07 11:24:35 -04:00 committed by Rick Waldron
parent c80bc22728
commit c68ab270fa
5 changed files with 117 additions and 65 deletions

View File

@ -62,6 +62,37 @@ Then, to get a complete, minified (w/ Uglify.js), linted (w/ JSHint) version of
The built version of jQuery will be put in the `dist/` subdirectory.
### Modules (new in 1.8)
Starting in jQuery 1.8, special builds can now be created that optionally exlude or include any of the following modules:
- dimensions
- effects
- offset
To create a custom build, use the following special `grunt` commands:
Exclude `dimensions`:
#### `grunt build:*:*:-dimensions` ####
Exclude `effects`:
#### `grunt build:*:*:-effects` ####
Exclude `offset`:
#### `grunt build:*:*:-offset` ####
Exclude **all** optional modules:
#### `grunt build:*:*:-dimensions:-effects:-offset` ####
Running the Unit Tests
--------------------------------------

View File

@ -69,7 +69,7 @@ module.exports = function( grunt ) {
"src/ajax/script.js",
"src/ajax/xhr.js",
{ flag: "effects", src: "src/effects.js" },
"src/offset.js",
{ flag: "offset", src: "src/offset.js" },
{ flag: "dimensions", src: "src/dimensions.js" },
"src/exports.js",
"src/outro.js"

View File

@ -368,44 +368,55 @@ test("attr(String, Object)", function() {
});
test("attr(jquery_method)", function(){
expect(7);
var $elem = jQuery("<div />"),
elem = $elem[0];
// one at a time
$elem.attr({html: "foo"}, true);
equal( elem.innerHTML, "foo", "attr(html)");
$elem.attr({text: "bar"}, true);
equal( elem.innerHTML, "bar", "attr(text)");
$elem.attr({css: {color: "red"}}, true);
ok( /^(#ff0000|red)$/i.test(elem.style.color), "attr(css)");
elem = $elem[0],
expected = 5,
attrObj = {
css: { paddingLeft: 1, paddingRight: 1 }
};
if ( jQuery.fn.width ) {
$elem.attr({height: 10}, true);
equal( elem.style.height, "10px", "attr(height)");
// Multiple attributes
$elem.attr({
width:10,
css:{ paddingLeft:1, paddingRight:1 }
}, true);
equal( elem.style.width, "10px", "attr({...})");
} else {
$elem.attr({
css:{ paddingLeft:1, paddingRight:1 }
}, true);
ok( true, "DUMMY: attr(height)" );
ok( true, "DUMMY: attr({...})" );
expected += 2;
attrObj.width = 10;
}
equal( elem.style.paddingLeft, "1px", "attr({...})");
equal( elem.style.paddingRight, "1px", "attr({...})");
if ( jQuery.fn.offset ) {
expected += 2;
attrObj.offset = { top: 1, left: 0 };
}
expect( expected );
// one at a time
$elem.attr( { html: "foo" }, true );
equal( elem.innerHTML, "foo", "attr(html)" );
$elem.attr( { text: "bar" }, true );
equal( elem.innerHTML, "bar", "attr(text)" );
$elem.attr( { css: { color: "red" } }, true );
ok( /^(#ff0000|red)$/i.test( elem.style.color ), "attr(css)" );
// Multiple attributes
$elem.attr( attrObj, true );
if ( jQuery.fn.width ) {
equal( elem.style.width, "10px", "attr({width:})" );
$elem.attr( { height: 10 }, true );
equal( elem.style.height, "10px", "attr(height)" );
}
if ( jQuery.fn.offset ) {
equal( elem.style.top, "1px", "attr({offset:})" );
$elem.attr( { offset: { top: 1, left: 1 } }, true );
equal( elem.style.left, "1px", "attr(offset)" );
}
equal( elem.style.paddingLeft, "1px", "attr({css:})" );
equal( elem.style.paddingRight, "1px", "attr({css:})" );
});
test("attr(String, Object) - Loaded via XML document", function() {

View File

@ -18,24 +18,48 @@ test("Basic requirements", function() {
});
test("jQuery()", function() {
expect(29);
var elem, i,
obj = jQuery("div"),
main = jQuery("#qunit-fixture"),
code = jQuery("<code/>"),
img = jQuery("<img/>"),
div = jQuery("<div/><hr/><code/><b/>"),
exec = false,
long = "",
expected = 28,
attrObj = {
css: { paddingLeft: 1, paddingRight: 1 },
click: function() { ok( exec, "Click executed." ); },
text: "test",
"class": "test2",
id: "test3"
};
if ( jQuery.fn.width ) {
expected++;
attrObj.width = 10;
}
if ( jQuery.fn.offset ) {
expected++;
attrObj.offset = { top: 1, left: 1 };
}
expect( expected );
// Basic constructor's behavior
equal( jQuery().length, 0, "jQuery() === jQuery([])" );
equal( jQuery(undefined).length, 0, "jQuery(undefined) === jQuery([])" );
equal( jQuery(null).length, 0, "jQuery(null) === jQuery([])" );
equal( jQuery("").length, 0, "jQuery('') === jQuery([])" );
equal( jQuery("#").length, 0, "jQuery('#') === jQuery([])" );
var obj = jQuery("div");
equal( jQuery(obj).selector, "div", "jQuery(jQueryObj) == jQueryObj" );
// can actually yield more than one, when iframes are included, the window is an array as well
// can actually yield more than one, when iframes are included, the window is an array as well
equal( jQuery(window).length, 1, "Correct number of elements generated for jQuery(window)" );
var main = jQuery("#qunit-fixture");
deepEqual( jQuery("div p", main).get(), q("sndp", "en", "sap"), "Basic selector with jQuery object as context" );
/*
@ -56,13 +80,12 @@ test("jQuery()", function() {
}
ok( pass, "jQuery('&lt;tag&gt;') needs optional document parameter to ease cross-frame DOM wrangling, see #968" );*/
var code = jQuery("<code/>");
equal( code.length, 1, "Correct number of elements generated for code" );
equal( code.parent().length, 0, "Make sure that the generated HTML has no parent." );
var img = jQuery("<img/>");
equal( img.length, 1, "Correct number of elements generated for img" );
equal( img.parent().length, 0, "Make sure that the generated HTML has no parent." );
var div = jQuery("<div/><hr/><code/><b/>");
equal( div.length, 4, "Correct number of elements generated for div hr code b" );
equal( div.parent().length, 0, "Make sure that the generated HTML has no parent." );
@ -70,30 +93,14 @@ test("jQuery()", function() {
equal( jQuery(document.body).get(0), jQuery("body").get(0), "Test passing an html node to the factory" );
var exec = false,
elem;
elem = jQuery("<div/>", attrObj );
if ( jQuery.fn.width ) {
elem = jQuery("<div/>", {
width: 10,
css: { paddingLeft:1, paddingRight:1 },
click: function(){ ok(exec, "Click executed."); },
text: "test",
"class": "test2",
id: "test3"
});
equal( elem[0].style.width, "10px", "jQuery() quick setter width");
} else {
elem = jQuery("<div/>", {
css: { paddingLeft:1, paddingRight:1 },
click: function(){ ok(exec, "Click executed."); },
text: "test",
"class": "test2",
id: "test3"
});
}
ok( true, "DUMMY: jQuery() quick setter width");
if ( jQuery.fn.offset ) {
equal( elem[0].style.top, "1px", "jQuery() quick setter offset");
}
equal( elem[0].style.paddingLeft, "1px", "jQuery quick setter css");
@ -109,7 +116,7 @@ test("jQuery()", function() {
// manually clean up detached elements
elem.remove();
for ( var i = 0; i < 3; ++i ) {
for ( i = 0; i < 3; ++i ) {
elem = jQuery("<input type='text' value='TEST' />");
}
equal( elem[0].defaultValue, "TEST", "Ensure cached nodes are cloned properly (Bug #6655)" );
@ -120,8 +127,7 @@ test("jQuery()", function() {
equal( jQuery(" <div/> ").length, 1, "Make sure whitespace is trimmed." );
equal( jQuery(" a<div/>b ").length, 1, "Make sure whitespace and other characters are trimmed." );
var long = "";
for ( var i = 0; i < 128; i++ ) {
for ( i = 0; i < 128; i++ ) {
long += "12345678";
}

View File

@ -1,3 +1,5 @@
if ( jQuery.fn.offset ) {
module("offset", { teardown: moduleTeardown });
test("disconnected node", function() {
@ -475,3 +477,5 @@ test("fractions (see #7730 and #7885)", function() {
div.remove();
});
}