From 87ca47f1620a9ae7c69898e22f36d4db9bf32aa5 Mon Sep 17 00:00:00 2001 From: gseguin Date: Thu, 8 Sep 2011 18:33:47 -0700 Subject: [PATCH] Fix for issue #1899 Refactored some css classes Fixed bottom corners in set with only one collapsible --- js/jquery.mobile.collapsible.js | 49 +++++++++++--------- themes/default/jquery.mobile.collapsible.css | 4 +- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/js/jquery.mobile.collapsible.js b/js/jquery.mobile.collapsible.js index eb1ee9bc..a3b2b3f0 100644 --- a/js/jquery.mobile.collapsible.js +++ b/js/jquery.mobile.collapsible.js @@ -20,9 +20,9 @@ $.widget( "mobile.collapsible", $.mobile.widget, { var $el = this.element, o = this.options, - collapsibleContain = $el.addClass( "ui-collapsible-contain" ), + collapsible = $el.addClass( "ui-collapsible" ), collapsibleHeading = $el.find( o.heading ).eq( 0 ), - collapsibleContent = collapsibleContain.wrapInner( "
" ).find( ".ui-collapsible-content" ), + collapsibleContent = collapsible.wrapInner( "
" ).find( ".ui-collapsible-content" ), collapsibleParent = $el.closest( ":jqmData(role='collapsible-set')" ).addClass( "ui-collapsible-set" ); // Replace collapsibleHeading if it's a legend @@ -56,25 +56,25 @@ $.widget( "mobile.collapsible", $.mobile.widget, { theme: o.iconTheme }); - if ( !collapsibleParent.length ) { + if ( !collapsibleParent.length ) { + collapsibleHeading + .find( "a:eq(0)" ) + .addClass( "ui-corner-all" ) + .find( ".ui-btn-inner" ) + .addClass( "ui-corner-all" ); + } else { + if ( collapsible.jqmData( "collapsible-last" ) ) { collapsibleHeading - .find( "a:eq(0)" ) - .addClass( "ui-corner-all" ) - .find( ".ui-btn-inner" ) - .addClass( "ui-corner-all" ); - } else { - if ( collapsibleContain.jqmData( "collapsible-last" ) ) { - collapsibleHeading - .find( "a:eq(0), .ui-btn-inner" ) - .addClass( "ui-corner-bottom" ); - } + .find( "a:eq(0), .ui-btn-inner" ) + .addClass( "ui-corner-bottom" ); } + } //events - collapsibleContain + collapsible .bind( "collapse", function( event ) { if ( ! event.isDefaultPrevented() && - $( event.target ).closest( ".ui-collapsible-contain" ).is( collapsibleContain ) ) { + $( event.target ).closest( ".ui-collapsible" ).is( collapsible ) ) { event.preventDefault(); @@ -87,9 +87,10 @@ $.widget( "mobile.collapsible", $.mobile.widget, { .removeClass( "ui-icon-minus" ) .addClass( "ui-icon-plus" ); + collapsible.toggleClass( "ui-collapsible-collapsed", true ); collapsibleContent.addClass( "ui-collapsible-content-collapsed" ).attr( "aria-hidden", true ); - if ( collapsibleContain.jqmData( "collapsible-last" ) ) { + if ( collapsible.jqmData( "collapsible-last" ) ) { collapsibleHeading .find( "a:eq(0), .ui-btn-inner" ) .addClass( "ui-corner-bottom" ); @@ -107,9 +108,10 @@ $.widget( "mobile.collapsible", $.mobile.widget, { collapsibleHeading.find( ".ui-icon" ).removeClass( "ui-icon-plus" ).addClass( "ui-icon-minus" ); + collapsible.toggleClass( "ui-collapsible-collapsed", false ); collapsibleContent.removeClass( "ui-collapsible-content-collapsed" ).attr( "aria-hidden", false ); - if ( collapsibleContain.jqmData( "collapsible-last" ) ) { + if ( collapsible.jqmData( "collapsible-last" ) ) { collapsibleHeading .find( "a:eq(0), .ui-btn-inner" ) @@ -127,8 +129,8 @@ $.widget( "mobile.collapsible", $.mobile.widget, { .bind( "expand", function( event ) { $( event.target ) - .closest( ".ui-collapsible-contain" ) - .siblings( ".ui-collapsible-contain" ) + .closest( ".ui-collapsible" ) + .siblings( ".ui-collapsible" ) .trigger( "collapse" ); }); @@ -141,7 +143,12 @@ $.widget( "mobile.collapsible", $.mobile.widget, { .find( ".ui-btn-inner" ) .addClass( "ui-corner-top" ); - set.last().jqmData( "collapsible-last", true ); + set.last() + .jqmData( "collapsible-last", true ) + .find( "a:eq(0)" ) + .addClass( "ui-corner-bottom" ) + .find( ".ui-btn-inner" ) + .addClass( "ui-corner-bottom" ); } collapsibleHeading @@ -150,7 +157,7 @@ $.widget( "mobile.collapsible", $.mobile.widget, { var type = collapsibleHeading.is( ".ui-collapsible-heading-collapsed" ) ? "expand" : "collapse"; - collapsibleContain.trigger( type ); + collapsible.trigger( type ); event.preventDefault(); }); diff --git a/themes/default/jquery.mobile.collapsible.css b/themes/default/jquery.mobile.collapsible.css index 75b45839..4bfb7124 100644 --- a/themes/default/jquery.mobile.collapsible.css +++ b/themes/default/jquery.mobile.collapsible.css @@ -3,7 +3,7 @@ * Copyright (c) jQuery Project * Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. */ -.ui-collapsible-contain { margin: .5em 0; } +.ui-collapsible { margin: .5em 0; } .ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -8px; padding: 0; border-width: 0 0 1px 0; position: relative; } .ui-collapsible-heading a { text-align: left; margin: 0; } .ui-collapsible-heading a .ui-btn-inner { padding-left: 40px; } @@ -15,4 +15,4 @@ .ui-collapsible-content-collapsed { display: none; } .ui-collapsible-set { margin: .5em 0; } -.ui-collapsible-set .ui-collapsible-contain { margin: -1px 0 0; } +.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; }