@@ -15,7 +15,12 @@ $.widget( "mobile.collapsible", $.mobile.widget, {
1515 theme : null ,
1616 contentTheme : null ,
1717 iconTheme : "d" ,
18- initSelector : ":jqmData(role='collapsible')"
18+ initSelector : ":jqmData(role='collapsible')" ,
19+ animate : true ,
20+ expandAnimation : "slideDown" ,
21+ collapseAnimation : "slideUp" ,
22+ expandDuration : "500" ,
23+ collapseDuration : "300"
1924 } ,
2025 _create : function ( ) {
2126
@@ -58,8 +63,8 @@ $.widget( "mobile.collapsible", $.mobile.widget, {
5863 . buttonMarkup ( {
5964 shadow : false ,
6065 corners : false ,
61- iconPos : "left" ,
62- icon : "plus" ,
66+ iconpos : $el . jqmData ( "iconpos" ) || "left" ,
67+ icon : $el . jqmData ( "icon-collapsed" ) || "plus" ,
6368 theme : o . theme
6469 } ) ;
6570
@@ -117,24 +122,33 @@ $.widget( "mobile.collapsible", $.mobile.widget, {
117122 isCollapse = ( event . type === "collapse" ) ,
118123 contentTheme = o . contentTheme ;
119124
120- collapsibleHeading
121- . toggleClass ( "ui-collapsible-heading-collapsed" , isCollapse )
122- . find ( ".ui-collapsible-heading-status" )
123- . text ( isCollapse ? o . expandCueText : o . collapseCueText )
124- . end ( )
125- . find ( ".ui-icon" )
126- . toggleClass ( "ui-icon-minus" , ! isCollapse )
127- . toggleClass ( "ui-icon-plus" , isCollapse ) ;
128-
129- $this . toggleClass ( "ui-collapsible-collapsed" , isCollapse ) ;
130- collapsibleContent . toggleClass ( "ui-collapsible-content-collapsed" , isCollapse ) . attr ( "aria-hidden" , isCollapse ) ;
131-
132- if ( contentTheme && ( ! collapsibleSet . length || collapsible . jqmData ( "collapsible-last" ) ) ) {
133- collapsibleHeading
134- . find ( "a:eq(0), .ui-btn-inner" )
135- . toggleClass ( "ui-corner-bottom" , isCollapse ) ;
136- collapsibleContent . toggleClass ( "ui-corner-bottom" , ! isCollapse ) ;
137- }
125+ if ( ! ! o . animate ) {
126+ collapsibleContent [ isCollapse ? o . collapseAnimation : o . expandAnimation ] ( isCollapse ? o . collapseDuration : o . expandDuration ) ;
127+ }
128+
129+ collapsibleContent
130+ . queue ( function ( ) {
131+ collapsibleHeading
132+ . toggleClass ( "ui-collapsible-heading-collapsed" , isCollapse )
133+ . find ( ".ui-collapsible-heading-status" )
134+ . text ( isCollapse ? o . expandCueText : o . collapseCueText )
135+ . end ( )
136+ . find ( ".ui-icon" )
137+ . toggleClass ( "ui-icon-" + ( collapsible . jqmData ( "icon-expanded" ) || "minus" ) , ! isCollapse )
138+ . toggleClass ( "ui-icon-" + ( collapsible . jqmData ( "icon-collapsed" ) || "plus" ) , isCollapse ) ;
139+
140+ $this . toggleClass ( "ui-collapsible-collapsed" , isCollapse ) ;
141+ collapsibleContent . toggleClass ( "ui-collapsible-content-collapsed" , isCollapse ) . attr ( "aria-hidden" , isCollapse ) ;
142+
143+ if ( contentTheme && ( ! collapsibleSet . length || collapsible . jqmData ( "collapsible-last" ) ) ) {
144+ collapsibleHeading
145+ . find ( "a:eq(0), .ui-btn-inner" )
146+ . toggleClass ( "ui-corner-bottom" , isCollapse ) ;
147+ collapsibleContent . toggleClass ( "ui-corner-bottom" , ! isCollapse ) ;
148+ }
149+ collapsibleContent . css ( 'display' , '' ) ;
150+ $ ( this ) . dequeue ( ) ;
151+ } ) ;
138152 }
139153 } )
140154 . trigger ( o . collapsed ? "collapse" : "expand" ) ;
0 commit comments