]> source.dussan.org Git - jquery.git/commitdiff
CSS: Make show/hide/toggle methods a module
authorDave Methvin <dave.methvin@gmail.com>
Fri, 9 Oct 2015 19:52:29 +0000 (15:52 -0400)
committerRichard Gibson <richard.gibson@gmail.com>
Sun, 25 Oct 2015 18:54:55 +0000 (14:54 -0400)
Unit test changes some uses of .show() and .hide() to .css( "display", ... ),
there was already an implicit assumption in several of the existing tests.

Fixes gh-2193
Close gh-2648

(cherry picked from commit 67d7a2eefee768b59eb3d51cb1fb2c671873e58a)

Conflicts:
Gruntfile.js
src/css.js
src/css/showHide.js
test/unit/css.js

Gruntfile.js
README.md
src/css.js
src/css/showHide.js
test/unit/basic.js
test/unit/css.js
test/unit/dimensions.js
test/unit/queue.js

index ced59f288c5904cb0ae6c7cb55738540700c9b0b..21d103348cd88a1486e4965f06c73d763c184706 100644 (file)
@@ -67,7 +67,9 @@ module.exports = function( grunt ) {
                                removeWith: {
                                        ajax: [ "manipulation/_evalUrl", "event/ajax" ],
                                        callbacks: [ "deferred" ],
-                                       css: [ "effects", "dimensions", "offset" ]
+                                       css: [ "effects", "dimensions", "offset" ],
+                                       "css/showHide": [ "effects" ],
+                                       sizzle: [ "css/hiddenVisibleSelectors", "effects/animatedSelector" ]
                                }
                        }
                },
index 3c1b2f355294dfe4554dd0ea1ddcd4ca43c46971..342abdd9a5db646a3c738684b52249092b23c325 100644 (file)
--- a/README.md
+++ b/README.md
@@ -81,7 +81,8 @@ Some example modules that can be excluded are:
 - **ajax/xhr**: The XMLHTTPRequest AJAX transport only.
 - **ajax/script**: The `<script>` AJAX transport only; used to retrieve scripts.
 - **ajax/jsonp**: The JSONP AJAX transport only; depends on the ajax/script transport.
-- **css**: The `.css()` method plus non-animated `.show()`, `.hide()` and `.toggle()`. Also removes **all** modules depending on css (including **effects**, **dimensions**, and **offset**).
+- **css**: The `.css()` method. Also removes **all** modules depending on css (including **effects**, **dimensions**, and **offset**).
+- **css/showHide**:  Non-animated `.show()`, `.hide()` and `.toggle()`; can be excluded if you use classes or explicit `.css()` calls to set the `display` property. Also removes the **effects** module.
 - **deprecated**: Methods documented as deprecated but not yet removed.
 - **dimensions**: The `.width()` and `.height()` methods, including `inner-` and `outer-` variations.
 - **effects**: The `.animate()` method and its shorthands such as `.slideUp()` or `.hide("slow")`.
index 0c966c6f407499a68f6428e1f6a19f9b7b8b546c..6af18bd4f8c9c30bcd3bfcf6234b6291ac412ea8 100644 (file)
@@ -13,13 +13,12 @@ define( [
        "./css/adjustCSS",
        "./css/addGetHookIf",
        "./css/support",
-       "./css/showHide",
 
        "./core/init",
        "./core/ready",
        "./selector" // contains
 ], function( jQuery, pnum, access, rmargin, document, rcssNum, rnumnonpx, cssExpand,
-       isHidden, swap, curCSS, adjustCSS, addGetHookIf, support, showHide ) {
+       isHidden, swap, curCSS, adjustCSS, addGetHookIf, support ) {
 
 var
 
@@ -506,25 +505,6 @@ jQuery.fn.extend( {
                                jQuery.style( elem, name, value ) :
                                jQuery.css( elem, name );
                }, name, value, arguments.length > 1 );
-       },
-       show: function() {
-               return showHide( this, true );
-       },
-       hide: function() {
-               return showHide( this );
-       },
-       toggle: function( state ) {
-               if ( typeof state === "boolean" ) {
-                       return state ? this.show() : this.hide();
-               }
-
-               return this.each( function() {
-                       if ( isHidden( this ) ) {
-                               jQuery( this ).show();
-                       } else {
-                               jQuery( this ).hide();
-                       }
-               } );
        }
 } );
 
index efc1bdd3feaedecfc968e092941cae3205807ed0..d143d48859b66de350a6284ebdd8588738392426 100644 (file)
@@ -1,4 +1,6 @@
-define( [], function() {
+define( [
+       "../css/var/isHidden"
+], function( isHidden ) {
 
 function showHide( elements, show ) {
        var display, elem,
@@ -41,6 +43,26 @@ function showHide( elements, show ) {
        return elements;
 }
 
-return showHide;
+jQuery.fn.extend( {
+       show: function() {
+               return showHide( this, true );
+       },
+       hide: function() {
+               return showHide( this );
+       },
+       toggle: function( state ) {
+               if ( typeof state === "boolean" ) {
+                       return state ? this.show() : this.hide();
+               }
+
+               return this.each( function() {
+                       if ( isHidden( this ) ) {
+                               jQuery( this ).show();
+                       } else {
+                               jQuery( this ).hide();
+                       }
+               } );
+       }
+} );
 
 } );
index 25e86d1a354255c45e1ad9c9f8f6be5ea818b84f..49b518d3f3dfceb5776ddd6f5900587be0624cc9 100644 (file)
@@ -54,11 +54,19 @@ QUnit.test( "attributes", function( assert ) {
 
 if ( jQuery.css ) {
 QUnit.test( "css", function( assert ) {
-       assert.expect( 3 );
+       assert.expect( 1 );
 
        var div = jQuery( "<div/>" ).appendTo( "#qunit-fixture" );
 
        assert.strictEqual( div.css( "width", "50px" ).css( "width" ), "50px", ".css getter/setter" );
+} );
+}
+
+if ( jQuery.fn.show && jQuery.fn.hide ) {
+QUnit.test( "show/hide", function( assert ) {
+       assert.expect( 2 );
+
+       var div = jQuery( "<div/>" ).appendTo( "#qunit-fixture" );
 
        div.hide();
        assert.strictEqual( div.css( "display" ), "none", "div hidden" );
index 63a49f8487c1c753e703697a98bef07e0653c6c9..c2945fc10a36396984b624b7977ae8d42eb13bee 100644 (file)
@@ -520,6 +520,9 @@ QUnit.test( "css(Object) where values are Functions with incoming values", funct
        jQuery( "#cssFunctionTest" ).remove();
 } );
 
+// .show(), .hide(), can be excluded from the build
+if ( jQuery.fn.show && jQuery.fn.hide ) {
+
 QUnit.test( "show(); hide()", function( assert ) {
        assert.expect( 4 );
 
@@ -683,6 +686,35 @@ QUnit.test( "show() resolves correct default display for detached nodes", functi
        span.remove();
 } );
 
+QUnit.test( "hide hidden elements (bug #7141)", function( assert ) {
+       assert.expect( 3 );
+
+       var div = jQuery( "<div style='display:none'></div>" ).appendTo( "#qunit-fixture" );
+       assert.equal( div.css( "display" ), "none", "Element is hidden by default" );
+       div.hide();
+       assert.ok( !jQuery._data( div, "olddisplay" ), "olddisplay is undefined after hiding an already-hidden element" );
+       div.show();
+       assert.equal( div.css( "display" ), "block", "Show a double-hidden element" );
+
+       div.remove();
+} );
+
+QUnit.test( "show() after hide() should always set display to initial value (#14750)", function( assert ) {
+       assert.expect( 1 );
+
+       var div = jQuery( "<div />" ),
+               fixture = jQuery( "#qunit-fixture" );
+
+       fixture.append( div );
+
+       div.css( "display", "inline" ).hide().show().css( "display", "list-item" ).hide().show();
+       assert.equal( div.css( "display" ), "list-item", "should get last set display value" );
+} );
+
+}
+
+if ( jQuery.fn.toggle ) {
+
 QUnit.test( "toggle()", function( assert ) {
        assert.expect( 9 );
        var div, oldHide,
@@ -716,18 +748,7 @@ QUnit.test( "toggle()", function( assert ) {
        jQuery.fn.hide = oldHide;
 } );
 
-QUnit.test( "hide hidden elements (bug #7141)", function( assert ) {
-       assert.expect( 3 );
-
-       var div = jQuery( "<div style='display:none'></div>" ).appendTo( "#qunit-fixture" );
-       assert.equal( div.css( "display" ), "none", "Element is hidden by default" );
-       div.hide();
-       assert.ok( !jQuery._data( div, "display" ), "display data is undefined after hiding an already-hidden element" );
-       div.show();
-       assert.equal( div.css( "display" ), "block", "Show a double-hidden element" );
-
-       div.remove();
-} );
+}
 
 QUnit.test( "jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", function( assert ) {
        assert.expect( 4 );
@@ -1202,18 +1223,6 @@ QUnit.test(
        }
 );
 
-QUnit.test( "show() after hide() should always set display to initial value (#14750)", function( assert ) {
-       assert.expect( 1 );
-
-       var div = jQuery( "<div />" ),
-               fixture = jQuery( "#qunit-fixture" );
-
-       fixture.append( div );
-
-       div.css( "display", "inline" ).hide().show().css( "display", "list-item" ).hide().show();
-       assert.equal( div.css( "display" ), "list-item", "should get last set display value" );
-} );
-
 // Support: IE < 11
 // We have to jump through the hoops here in order to test work with "order" CSS property,
 // that some browsers do not support. This test is not, strictly speaking, correct,
index ef93aa7a388a4da81f67614d329b6a85e8c1862c..c9585f5ea000d39b9dea03f863cc2b1e9b0e0ba2 100644 (file)
@@ -35,9 +35,9 @@ function testWidth( val, assert ) {
        $div = jQuery( "#nothiddendiv" );
        $div.width( val( 30 ) );
        assert.equal( $div.width(), 30, "Test set to 30 correctly" );
-       $div.hide();
+       $div.css( "display", "none" );
        assert.equal( $div.width(), 30, "Test hidden div" );
-       $div.show();
+       $div.css( "display", "" );
        $div.width( val( -1 ) ); // handle negative numbers by setting to 0 #11604
        assert.equal( $div.width(), 0, "Test negative width normalized to 0" );
        $div.css( "padding", "20px" );
@@ -56,8 +56,6 @@ function testWidth( val, assert ) {
        assert.equal( blah.width(), null, "Make sure 'null' is returned on an empty set" );
 
        assert.equal( jQuery( window ).width(), document.documentElement.clientWidth, "Window width is equal to width reported by window/document." );
-
-       assert.expectJqData( this, $div[ 0 ], "display" );
 }
 
 QUnit.test( "width()", function( assert ) {
@@ -88,9 +86,9 @@ function testHeight( val, assert ) {
        $div = jQuery( "#nothiddendiv" );
        $div.height( val( 30 ) );
        assert.equal( $div.height(), 30, "Test set to 30 correctly" );
-       $div.hide();
+       $div.css( "display", "none" );
        assert.equal( $div.height(), 30, "Test hidden div" );
-       $div.show();
+       $div.css( "display", "" );
        $div.height( val( -1 ) ); // handle negative numbers by setting to 0 #11604
        assert.equal( $div.height(), 0, "Test negative height normalized to 0" );
        $div.css( "padding", "20px" );
@@ -109,8 +107,6 @@ function testHeight( val, assert ) {
        assert.equal( blah.height(), null, "Make sure 'null' is returned on an empty set" );
 
        assert.equal( jQuery( window ).height(), document.documentElement.clientHeight, "Window width is equal to width reported by window/document." );
-
-       assert.expectJqData( this, $div[ 0 ], "display" );
 }
 
 QUnit.test( "height()", function( assert ) {
@@ -153,7 +149,7 @@ QUnit.test( "innerWidth()", function( assert ) {
        assert.equal( $div.innerWidth(), 30, "Test with margin and border" );
        $div.css( "padding", "20px" );
        assert.equal( $div.innerWidth(), 70, "Test with margin, border and padding" );
-       $div.hide();
+       $div.css( "display", "none" );
        assert.equal( $div.innerWidth(), 70, "Test hidden div" );
 
        // reset styles
@@ -165,7 +161,6 @@ QUnit.test( "innerWidth()", function( assert ) {
        assert.equal( div.innerWidth(), 0, "Make sure that disconnected nodes are handled." );
 
        div.remove();
-       assert.expectJqData( this, $div[ 0 ], "display" );
 } );
 
 QUnit.test( "innerHeight()", function( assert ) {
@@ -188,7 +183,7 @@ QUnit.test( "innerHeight()", function( assert ) {
        assert.equal( $div.innerHeight(), 30, "Test with margin and border" );
        $div.css( "padding", "20px" );
        assert.equal( $div.innerHeight(), 70, "Test with margin, border and padding" );
-       $div.hide();
+       $div.css( "display", "none" );
        assert.equal( $div.innerHeight(), 70, "Test hidden div" );
 
        // reset styles
@@ -200,7 +195,6 @@ QUnit.test( "innerHeight()", function( assert ) {
        assert.equal( div.innerHeight(), 0, "Make sure that disconnected nodes are handled." );
 
        div.remove();
-       assert.expectJqData( this, $div[ 0 ], "display" );
 } );
 
 QUnit.test( "outerWidth()", function( assert ) {
@@ -227,7 +221,7 @@ QUnit.test( "outerWidth()", function( assert ) {
        assert.equal( $div.outerWidth(), 74, "Test with padding, border and margin without margin option" );
        $div.css( "position", "absolute" );
        assert.equal( $div.outerWidth( true ), 94, "Test with padding, border and margin with margin option" );
-       $div.hide();
+       $div.css( "display", "none" );
        assert.equal( $div.outerWidth( true ), 94, "Test hidden div with padding, border and margin with margin option" );
 
        // reset styles
@@ -239,7 +233,6 @@ QUnit.test( "outerWidth()", function( assert ) {
        assert.equal( div.outerWidth(), 0, "Make sure that disconnected nodes are handled." );
 
        div.remove();
-       assert.expectJqData( this, $div[ 0 ], "display" );
 } );
 
 QUnit.test( "child of a hidden elem (or unconnected node) has accurate inner/outer/Width()/Height()  see #9441 #9300", function( assert ) {
@@ -383,7 +376,7 @@ QUnit.test( "outerHeight()", function( assert ) {
        $div.css( "margin", "10px" );
        assert.equal( $div.outerHeight(), 74, "Test with padding, border and margin without margin option" );
        assert.equal( $div.outerHeight( true ), 94, "Test with padding, border and margin with margin option" );
-       $div.hide();
+       $div.css( "display", "none" );
        assert.equal( $div.outerHeight( true ), 94, "Test hidden div with padding, border and margin with margin option" );
 
        // reset styles
@@ -395,7 +388,6 @@ QUnit.test( "outerHeight()", function( assert ) {
        assert.equal( div.outerHeight(), 0, "Make sure that disconnected nodes are handled." );
 
        div.remove();
-       assert.expectJqData( this, $div[ 0 ], "display" );
 } );
 
 QUnit.test( "passing undefined is a setter #5571", function( assert ) {
index 7ce85cb35a4df360f44f6d83d11d4042e63e239e..0e36b01e739bf298d5c39c6a42e2d31710c41318 100644 (file)
@@ -223,6 +223,8 @@ QUnit.asyncTest( "fn.promise( \"queue\" ) - called whenever last queue function
        foo.dequeue( "queue" );
 } );
 
+if ( jQuery.fn.animate ) {
+       
 QUnit.asyncTest( "fn.promise( \"queue\" ) - waits for animation to complete before resolving", 2, function( assert ) {
        var foo = jQuery( "#foo" ),
                test = 1;
@@ -243,6 +245,7 @@ QUnit.asyncTest( "fn.promise( \"queue\" ) - waits for animation to complete befo
        } );
 
 } );
+}
 
 QUnit.test( ".promise(obj)", function( assert ) {
        assert.expect( 2 );