Skip to content
Permalink
Browse files
Modularize offset (exclude w/ grunt build:*:*:-offset). Closes #813. …
…Fixes #11865
  • Loading branch information
mikesherov authored and rwaldron committed Jun 7, 2012
1 parent c80bc22 commit c68ab270fa8269d8b1f3360fc8ed290ba6f0e9a8
Showing with 110 additions and 58 deletions.
  1. +31 −0 README.md
  2. +1 −1 grunt.js
  3. +36 −25 test/unit/attributes.js
  4. +38 −32 test/unit/core.js
  5. +4 −0 test/unit/offset.js
@@ -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
--------------------------------------

@@ -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"
@@ -368,44 +368,55 @@ test("attr(String, Object)", function() {
});

test("attr(jquery_method)", function(){
expect(7);

var $elem = jQuery("<div />"),
elem = $elem[0];
elem = $elem[0],
expected = 5,
attrObj = {
css: { paddingLeft: 1, paddingRight: 1 }
};

if ( jQuery.fn.width ) {
expected += 2;
attrObj.width = 10;
}

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( { html: "foo" }, true );
equal( elem.innerHTML, "foo", "attr(html)" );

$elem.attr({text: "bar"}, true);
equal( elem.innerHTML, "bar", "attr(text)");
$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.attr( { css: { color: "red" } }, true );
ok( /^(#ff0000|red)$/i.test( elem.style.color ), "attr(css)" );

if ( jQuery.fn.width ) {
$elem.attr({height: 10}, true);
equal( elem.style.height, "10px", "attr(height)");
// Multiple attributes
$elem.attr( attrObj, true );

// Multiple attributes
$elem.attr({
width:10,
css:{ paddingLeft:1, paddingRight:1 }
}, true);
if ( jQuery.fn.width ) {
equal( elem.style.width, "10px", "attr({width:})" );

equal( elem.style.width, "10px", "attr({...})");
} else {
$elem.attr( { height: 10 }, true );
equal( elem.style.height, "10px", "attr(height)" );
}

$elem.attr({
css:{ paddingLeft:1, paddingRight:1 }
}, true);
if ( jQuery.fn.offset ) {
equal( elem.style.top, "1px", "attr({offset:})" );

ok( true, "DUMMY: attr(height)" );
ok( true, "DUMMY: attr({...})" );
$elem.attr( { offset: { top: 1, left: 1 } }, true );
equal( elem.style.left, "1px", "attr(offset)" );
}

equal( elem.style.paddingLeft, "1px", "attr({...})");
equal( elem.style.paddingRight, "1px", "attr({...})");
equal( elem.style.paddingLeft, "1px", "attr({css:})" );
equal( elem.style.paddingRight, "1px", "attr({css:})" );
});

test("attr(String, Object) - Loaded via XML document", function() {
@@ -18,24 +18,48 @@ test("Basic requirements", function() {
});

test("jQuery()", function() {
expect(29);

// Basic constructor's behavior
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,44 +80,27 @@ 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." );

equal( jQuery([1,2,3]).get(1), 2, "Test passing an array to the factory" );

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";
}

@@ -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();
});

}

4 comments on commit c68ab27

@mikesherov

This comment has been minimized.

Copy link
Member Author

@mikesherov mikesherov replied Jun 7, 2012

@rwldrn, hey Rick, you should say "closes gh-813" so trac doesn't get confused and think it's a trac ticket.

@timmywil

This comment has been minimized.

Copy link
Member

@timmywil timmywil replied Jun 7, 2012

Looks like it did. :O http://bugs.jquery.com/ticket/813

@timmywil

This comment has been minimized.

Copy link
Member

@timmywil timmywil replied Jun 7, 2012

Baleted.

@rwaldron

This comment has been minimized.

Copy link
Member

@rwaldron rwaldron replied Jun 7, 2012

I meant to do that, obviously.

Actually, I've only ever closed github issues from commit messages, so thanks for the heads up

Please sign in to comment.