Skip to content

Commit 5ad105f

Browse files
committed
added animation and customizable icons to collapsible
1 parent 502f867 commit 5ad105f

File tree

1 file changed

+35
-21
lines changed

1 file changed

+35
-21
lines changed

js/jquery.mobile.collapsible.js

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)