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 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 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 replied Jun 7, 2012

Baleted.

@rwaldron

This comment has been minimized.

Copy link
Member

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.
You can’t perform that action at this time.