Skip to content
This repository was archived by the owner on Oct 8, 2021. It is now read-only.

Commit 7342344

Browse files
author
Gabriel Schulhof
committed
Selectmenu: Custom select uses label, then placeholder for dialog title
(cherry picked from commit 1b836ee) Closes gh-7404 Fixes gh-7399
1 parent fdfc2d6 commit 7342344

File tree

3 files changed

+81
-3
lines changed

3 files changed

+81
-3
lines changed

js/widgets/forms/select.custom.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ $.widget( "mobile.selectmenu", $.mobile.selectmenu, {
158158
dividerThemeAttr = ( o.dividerTheme && isMultiple ) ? ( " data-" + $.mobile.ns + "divider-theme='" + o.dividerTheme + "'" ) : "";
159159
menuPage = $( "<div data-" + $.mobile.ns + "role='dialog' class='ui-selectmenu' id='" + dialogId + "'" + themeAttr + overlayThemeAttr + ">" +
160160
"<div data-" + $.mobile.ns + "role='header'>" +
161-
"<div class='ui-title'>" + label.getEncodedText() + "</div>"+
161+
"<div class='ui-title'></div>"+
162162
"</div>"+
163163
"<div data-" + $.mobile.ns + "role='content'></div>"+
164164
"</div>" );
@@ -397,7 +397,9 @@ $.widget( "mobile.selectmenu", $.mobile.selectmenu, {
397397

398398
self.menuType = "page";
399399
self.menuPageContent.append( self.list );
400-
self.menuPage.find( "div .ui-title" ).text( self.label.text() );
400+
self.menuPage
401+
.find( "div .ui-title" )
402+
.text( self.label.getEncodedText() || self.placeholder );
401403
} else {
402404
self.menuType = "overlay";
403405

@@ -439,7 +441,7 @@ $.widget( "mobile.selectmenu", $.mobile.selectmenu, {
439441
}
440442

441443
parent = option.parentNode;
442-
text = $option.text();
444+
text = $option.getEncodedText();
443445
anchor = document.createElement( "a" );
444446
classes = [];
445447

tests/integration/select/index.html

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,62 @@
147147
</select>
148148
</div>
149149

150+
<div data-nstest-role="fieldcontain" id="select-choice-many-placeholder-container-1">
151+
<select name="select-choice-many-placeholder-1" id="select-choice-many-placeholder-1" data-nstest-native-menu="false">
152+
<option>Select state...</option>
153+
<option value="AL">Alabama</option>
154+
<option value="AK">Alaska</option>
155+
<option value="AZ">Arizona</option>
156+
<option value="AR">Arkansas</option>
157+
<option value="CA">California</option>
158+
<option value="CO">Colorado</option>
159+
<option value="CT">Connecticut</option>
160+
<option value="DE">Delaware</option>
161+
<option value="FL">Florida</option>
162+
<option value="GA">Georgia</option>
163+
<option value="HI">Hawaii</option>
164+
<option value="ID">Idaho</option>
165+
<option value="IL">Illinois</option>
166+
<option value="IN">Indiana</option>
167+
<option value="IA">Iowa</option>
168+
<option value="KS">Kansas</option>
169+
<option value="KY">Kentucky</option>
170+
<option value="LA">Louisiana</option>
171+
<option value="ME">Maine</option>
172+
<option value="MD">Maryland</option>
173+
<option value="MA">Massachusetts</option>
174+
<option value="MI">Michigan</option>
175+
<option value="MN">Minnesota</option>
176+
<option value="MS">Mississippi</option>
177+
<option value="MO">Missouri</option>
178+
<option value="MT">Montana</option>
179+
<option value="NE">Nebraska</option>
180+
<option value="NV">Nevada</option>
181+
<option value="NH">New Hampshire</option>
182+
<option value="NJ">New Jersey</option>
183+
<option value="NM">New Mexico</option>
184+
<option value="NY">New York</option>
185+
<option value="NC">North Carolina</option>
186+
<option value="ND">North Dakota</option>
187+
<option value="OH">Ohio</option>
188+
<option value="OK">Oklahoma</option>
189+
<option value="OR">Oregon</option>
190+
<option value="PA">Pennsylvania</option>
191+
<option value="RI">Rhode Island</option>
192+
<option value="SC">South Carolina</option>
193+
<option value="SD">South Dakota</option>
194+
<option value="TN">Tennessee</option>
195+
<option value="TX">Texas</option>
196+
<option value="UT">Utah</option>
197+
<option value="VT">Vermont</option>
198+
<option value="VA">Virginia</option>
199+
<option value="WA">Washington</option>
200+
<option value="WV">West Virginia</option>
201+
<option value="WI">Wisconsin</option>
202+
<option value="WY">Wyoming</option>
203+
</select>
204+
</div>
205+
150206
<div data-nstest-role="fieldcontain" id="select-overlay-theme-container">
151207
<label for="select-choice-many-overlay-theme-test" class="select">Your state:</label>
152208
<select data-nstest-theme="x" data-nstest-overlay-theme="x" name="select-choice-many-overlay-theme-test" id="select-choice-many-overlay-theme-test" data-nstest-native-menu="false">

tests/integration/select/select_core.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,26 @@
346346
]);
347347
});
348348

349+
asyncTest( "dialog size select title should match the placeholder when there's no label",
350+
function() {
351+
var $select = $( "#select-choice-many-placeholder-1" ),
352+
$label = $( "#select-choice-many-placeholder-1-listbox li:first" ),
353+
$button = $select.siblings( "a" );
354+
355+
$.testHelper.pageSequence([
356+
function() {
357+
$button.click();
358+
},
359+
360+
function() {
361+
deepEqual($.mobile.activePage.find( ".ui-title" ).text(), $label.text());
362+
window.history.back();
363+
},
364+
365+
start
366+
]);
367+
});
368+
349369
asyncTest( "dialog size select title should match the label when changed after the dialog markup is added to the DOM", function() {
350370
var $select = $( "#select-choice-many-1\\.dotTest" ),
351371
$label = $select.parent().siblings( "label" ),

0 commit comments

Comments
 (0)