Skip to content

Commit f7a29fc

Browse files
author
scottjehl
committed
converted selectmenu widget to the widget factory.
1 parent 39c4b7b commit f7a29fc

File tree

2 files changed

+60
-56
lines changed

2 files changed

+60
-56
lines changed

js/jquery.mobile.forms.select.js

Lines changed: 59 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -4,63 +4,60 @@
44
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
55
* Note: Code is in draft form and is subject to change
66
*/
7-
(function($){
8-
$.fn.customSelect = function(options){
9-
return $(this).each(function(){
10-
var select = $(this)
7+
(function ( $ ) {
8+
$.widget( "mobile.selectmenu", $.mobile.widget, {
9+
options: {
10+
theme: undefined
11+
},
12+
_create: function(){
13+
var select = this.element
1114
.attr( "tabindex", "-1" )
1215
.wrap( "<div class='ui-select'>" ),
1316
selectID = select.attr( "id" ),
1417
label = $( "label[for="+ selectID +"]" )
1518
.addClass( "ui-select" ),
16-
17-
//extendable options
18-
o = $.extend({
19-
chooseText: label.text(),
20-
theme: select.data("theme")
21-
}, options),
22-
23-
buttonId = selectID + "-button",
24-
menuId = selectID + "-menu",
25-
thisPage = select.closest( ".ui-page" ),
26-
menuType,
27-
currScroll,
28-
button = $( "<a>", {
29-
"href": "#",
30-
"role": "button",
31-
"id": buttonId,
32-
"aria-haspopup": "true",
33-
"aria-owns": menuId
34-
})
35-
.text( $( this.options.item(this.selectedIndex) ).text() )
36-
.insertBefore( select )
37-
.buttonMarkup({
38-
iconpos: 'right',
39-
icon: 'arrow-d',
40-
theme: o.theme
41-
}),
42-
menuPage = $( "<div data-role='dialog' data-theme='a'>" +
43-
"<div data-role='header' data-theme='b'>" +
44-
"<div class='ui-title'>" + o.chooseText + "</div>"+
45-
"</div>"+
46-
"<div data-role='content'></div>"+
47-
"</div>" )
48-
.appendTo( $.pageContainer )
49-
.page(),
50-
menuPageContent = menuPage.find( ".ui-content" ),
51-
screen = $( "<div>", {
52-
"class": "ui-listbox-screen ui-overlay ui-screen-hidden fade"
19+
chooseText = label.text(),
20+
buttonId = selectID + "-button",
21+
menuId = selectID + "-menu",
22+
thisPage = select.closest( ".ui-page" ),
23+
menuType,
24+
currScroll,
25+
button = $( "<a>", {
26+
"href": "#",
27+
"role": "button",
28+
"id": buttonId,
29+
"aria-haspopup": "true",
30+
"aria-owns": menuId
5331
})
54-
.appendTo( thisPage ),
55-
listbox = $( "<div>", { "class": "ui-listbox ui-listbox-hidden ui-body-a ui-overlay-shadow ui-corner-all pop"} )
56-
.insertAfter(screen),
57-
list = $( "<ul>", {
58-
"class": "ui-listbox-list",
59-
"id": menuId,
60-
"role": "listbox",
61-
"aria-labelledby": buttonId
62-
})
63-
.appendTo( listbox );
32+
.text( $( select[0].options.item(select[0].selectedIndex) ).text() )
33+
.insertBefore( select )
34+
.buttonMarkup({
35+
iconpos: 'right',
36+
icon: 'arrow-d',
37+
theme: this.options.theme
38+
}),
39+
menuPage = $( "<div data-role='dialog' data-theme='a'>" +
40+
"<div data-role='header' data-theme='b'>" +
41+
"<div class='ui-title'>" + chooseText + "</div>"+
42+
"</div>"+
43+
"<div data-role='content'></div>"+
44+
"</div>" )
45+
.appendTo( $.pageContainer )
46+
.page(),
47+
menuPageContent = menuPage.find( ".ui-content" ),
48+
screen = $( "<div>", {
49+
"class": "ui-listbox-screen ui-overlay ui-screen-hidden fade"
50+
})
51+
.appendTo( thisPage ),
52+
listbox = $( "<div>", { "class": "ui-listbox ui-listbox-hidden ui-body-a ui-overlay-shadow ui-corner-all pop"} )
53+
.insertAfter(screen),
54+
list = $( "<ul>", {
55+
"class": "ui-listbox-list",
56+
"id": menuId,
57+
"role": "listbox",
58+
"aria-labelledby": buttonId
59+
})
60+
.appendTo( listbox );
6461

6562
//populate menu
6663
select.find( "option" ).each(function( i ){
@@ -192,8 +189,15 @@ $.fn.customSelect = function(options){
192189
hidemenu();
193190
return false;
194191
});
195-
});
196-
};
197-
198-
})(jQuery);
192+
},
193+
194+
disable: function(){
195+
this.element.attr("disabled",true);
196+
},
197+
198+
enable: function(){
199+
this.element.attr("disabled",false);
200+
}
201+
});
202+
})( jQuery );
199203

js/jquery.mobile.page.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ jQuery.widget( "mobile.page", jQuery.mobile.widget, {
165165

166166
this.element
167167
.find( "select:not([data-role='slider'])" )
168-
.customSelect();
168+
.selectmenu();
169169
}
170170
});
171171

0 commit comments

Comments
 (0)