From: Alyosha Pushak Date: Mon, 13 Apr 2015 02:17:16 +0000 (-0700) Subject: Accordion: Correct height calculated when closed X-Git-Tag: 1.12.0-rc.1~9 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c87653bc24f5bc84c299b047d49a06c132a48788;p=jquery-ui.git Accordion: Correct height calculated when closed Fixes #11938 Closes gh-1536 Closes gh-1616 --- diff --git a/tests/unit/accordion/accordion.html b/tests/unit/accordion/accordion.html index 683b87456..ce5856755 100644 --- a/tests/unit/accordion/accordion.html +++ b/tests/unit/accordion/accordion.html @@ -8,12 +8,16 @@ @@ -109,6 +113,19 @@ +
+
+

Header

+
+

+ The calculated height of this accordion should be the same + regardless of whether the accordion was collapsed or not + when the height was calculated. +

+
+
+
+ diff --git a/tests/unit/accordion/options.js b/tests/unit/accordion/options.js index c9b2e3aaf..228a8be40 100644 --- a/tests/unit/accordion/options.js +++ b/tests/unit/accordion/options.js @@ -48,6 +48,22 @@ test( "{ active: false }", function() { strictEqual( element.accordion( "option", "active" ), 0 ); } ); +// http://bugs.jqueryui.com/ticket/11938 +test( "{ active: false, collapsible: true }", function() { + expect( 1 ); + var element = $( "#collapsible" ).accordion(), + height = element.outerHeight(); + + element + .accordion( "destroy" ) + .accordion( { + active: false, + collapsible: true + } ) + .accordion( "option", "active", 0 ); + equal( element.outerHeight(), height ); +} ); + test( "{ active: Number }", function() { expect( 8 ); var element = $( "#list1" ).accordion( { diff --git a/ui/widgets/accordion.js b/ui/widgets/accordion.js index 14b3f7303..359b4c46f 100644 --- a/ui/widgets/accordion.js +++ b/ui/widgets/accordion.js @@ -373,7 +373,14 @@ return $.widget( "ui.accordion", { maxHeight = 0; this.headers.next() .each( function() { + var isVisible = $( this ).is( ":visible" ); + if ( !isVisible ) { + $( this ).show(); + } maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); + if ( !isVisible ) { + $( this ).hide(); + } } ) .height( maxHeight ); }