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

Commit aca653e

Browse files
Slider: Made the slider and input together fill full width. Changed class ui-slider-mini to ui-mini for consistency. Fixes #5045
1 parent e55f0f2 commit aca653e

File tree

2 files changed

+45
-27
lines changed

2 files changed

+45
-27
lines changed
Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,50 @@
11
label.ui-slider { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
2-
/* Slider input is always mini sized */
3-
input.ui-slider-input.ui-mini,
4-
.ui-field-contain input.ui-slider-input.ui-mini { display: inline-block; width: 45px; background-image: none; padding: .4em; margin: .5em 0; line-height: 1.4; font-size: 14px; outline: 0; }
5-
.ui-field-contain input.ui-slider-input { margin: 0; }
6-
input.ui-slider-input, .ui-field-contain input.ui-slider-input { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; -ms-box-sizing: content-box; box-sizing: content-box; }
2+
3+
div.ui-slider { margin: .5em 0; zoom: 1; }
4+
div.ui-slider.ui-mini { margin: .25em 0; }
5+
.ui-field-contain div.ui-slider, .ui-field-contain div.ui-slider.ui-mini { margin: 0; }
6+
div.ui-slider:before, div.ui-slider:after { content: ""; display: table; }
7+
div.ui-slider:after { clear: both; }
8+
9+
/* Slider input is always mini sized. High level of specificity to override textinput CSS. */
10+
input.ui-input-text.ui-slider-input.ui-mini { display: block; float: left; width: 45px; background-image: none; padding: .4em; margin: 0; line-height: 1.4; font-size: 14px; outline: 0; }
11+
input.ui-input-text.ui-slider-input.ui-mini { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; -ms-box-sizing: content-box; box-sizing: content-box; }
712
/* Fixes input fields being to small on Safari/Mac because of the up and down arrows. */
813
.ui-slider-input::-webkit-outer-spin-button { margin: 0; }
9-
select.ui-slider-switch { display: none; }
10-
div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 20px; top: 4px; width: 65%; }
11-
div.ui-slider-mini { height: 12px; margin-left: 10px; top: 2px; }
14+
15+
.ui-slider-app { position: relative; overflow: visible; height: 15px; margin: 7px 15px 8px 88px; }
16+
.ui-slider-app.ui-mini { height: 12px; margin: 9px 8px 9px 74px; }
17+
1218
div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; }
13-
.ui-controlgroup a.ui-slider-handle, a.ui-btn.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin: -15px 0 0 -15px; outline: 0; }
14-
a.ui-btn.ui-slider-handle .ui-btn-inner { padding: 0; height: 100%; }
15-
div.ui-slider-mini a.ui-slider-handle { height: 14px; width: 14px; margin: -8px 0 0 -7px; }
16-
div.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: -9px 0 0 -9px; border-top: none; }
1719

18-
@media all and (min-width: 28em){
19-
.ui-field-contain label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
20-
.ui-field-contain div.ui-slider { width: 43%; }
21-
.ui-field-contain div.ui-slider-switch { width: 5.5em; }
22-
}
20+
a.ui-btn.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin: -15px 0 0 -15px; outline: 0; }
21+
.ui-slider-app.ui-mini a.ui-slider-handle { height: 14px; width: 14px; margin: -8px 0 0 -7px; }
22+
23+
a.ui-btn.ui-slider-handle .ui-btn-inner { padding: 0; height: 100%; }
24+
div.ui-slider.ui-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: -9px 0 0 -9px; border-top: none; }
2325

24-
div.ui-slider-switch { height: 32px; margin-left: 0; width: 5.8em; }
26+
select.ui-slider-switch { display: none; }
27+
div.ui-slider-switch { position: relative; display: inline-block; overflow: visible; height: 32px; width: 5.8em; margin: .5em 0; }
2528
a.ui-slider-handle-snapping { -webkit-transition: left 70ms linear; -moz-transition: left 70ms linear; }
2629
div.ui-slider-switch .ui-slider-handle { margin: 1px 0 0 -15px; }
2730
.ui-slider-inneroffset { margin: 0 16px; position: relative; z-index: 1; }
2831

29-
div.ui-slider-switch.ui-slider-mini { width: 5em; height: 29px; }
30-
div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset { margin: 0 15px 0 14px; }
31-
div.ui-slider-switch.ui-slider-mini .ui-slider-handle { width: 25px; height: 25px; margin: 1px 0 0 -13px; }
32-
div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: 0; }
32+
div.ui-slider-switch.ui-mini { width: 5em; height: 29px; margin: .25em 0; }
33+
div.ui-slider-switch.ui-mini .ui-slider-inneroffset { margin: 0 15px 0 14px; }
34+
div.ui-slider-switch.ui-mini .ui-slider-handle { width: 25px; height: 25px; margin: 1px 0 0 -13px; }
35+
div.ui-slider-switch.ui-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: 0; }
3336

34-
span.ui-slider-label { position: absolute; text-align: center; width: 100%; overflow: hidden; font-size: 16px; top: 0; line-height: 2; min-height: 100%; border-width: 0; white-space: nowrap; cursor:pointer; }
35-
.ui-slider-mini span.ui-slider-label { font-size: 14px; }
37+
.ui-slider-switch span.ui-slider-label { position: absolute; text-align: center; width: 100%; overflow: hidden; font-size: 16px; top: 0; line-height: 2; min-height: 100%; border-width: 0; white-space: nowrap; cursor:pointer; }
38+
.ui-slider-switch.ui-mini span.ui-slider-label { font-size: 14px; }
3639

3740
span.ui-slider-label-a { z-index: 1; left: 0; text-indent: -1.5em; }
3841
span.ui-slider-label-b { z-index: 0; right: 0; text-indent: 1.5em;}
3942

4043
.ui-slider-inline { width: 120px; display: inline-block; }
44+
45+
@media all and (min-width: 28em){
46+
.ui-field-contain label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
47+
.ui-field-contain div.ui-slider { display: inline-block; width: 78%; }
48+
.ui-field-contain div.ui-slider-switch { width: 5.5em; margin: 0; }
49+
.ui-field-contain.ui-hide-label div.ui-slider { display: block; width: auto; }
50+
}

js/widgets/forms/slider.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ $.widget( "mobile.slider", $.mobile.widget, {
3131
trackTheme = this.options.trackTheme || parentTheme,
3232
cType = control[ 0 ].nodeName.toLowerCase(),
3333
isSelect = this.isToggleSwitch = cType === "select",
34+
isRangeslider = control.parent().is( ":jqmData(role='rangeslider')" ),
3435
selectClass = ( this.isToggleSwitch ) ? "ui-slider-switch" : "",
3536
controlID = control.attr( "id" ),
3637
$label = $( "[for='" + controlID + "']" ),
@@ -40,7 +41,7 @@ $.widget( "mobile.slider", $.mobile.widget, {
4041
max = !this.isToggleSwitch ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length-1,
4142
step = window.parseFloat( control.attr( "step" ) || 1 ),
4243
inlineClass = ( this.options.inline || control.jqmData( "inline" ) === true ) ? " ui-slider-inline" : "",
43-
miniClass = ( this.options.mini || control.jqmData( "mini" ) ) ? " ui-slider-mini" : "",
44+
miniClass = ( this.options.mini || control.jqmData( "mini" ) ) ? " ui-mini" : "",
4445
domHandle = document.createElement( "a" ),
4546
handle = $( domHandle ),
4647
domSlider = document.createElement( "div" ),
@@ -55,7 +56,7 @@ $.widget( "mobile.slider", $.mobile.widget, {
5556
this.element.addClass("ui-mini");
5657
domHandle.setAttribute( "href", "#" );
5758
domSlider.setAttribute( "role", "application" );
58-
domSlider.className = ["ui-slider ",selectClass," ui-btn-down-",trackTheme," ui-btn-corner-all", inlineClass, miniClass].join( "" );
59+
domSlider.className = ["ui-slider-app ",selectClass," ui-btn-down-",trackTheme," ui-btn-corner-all", inlineClass, miniClass].join( "" );
5960
domHandle.className = "ui-slider-handle";
6061
domSlider.appendChild( domHandle );
6162

@@ -118,6 +119,13 @@ $.widget( "mobile.slider", $.mobile.widget, {
118119
}
119120

120121
label.addClass( "ui-slider" );
122+
123+
// wrap the slider in a div for styling purposes
124+
if ( !this.isToggleSwitch && !isRangeslider ) {
125+
var wrapper = this.options.mini ? "<div class='ui-slider ui-mini'>" : "<div class='ui-slider'>";
126+
127+
control.wrap( wrapper );
128+
}
121129

122130
// monitor the input for updated values
123131
control.addClass( this.isToggleSwitch ? "ui-slider-switch" : "ui-slider-input" );
@@ -350,7 +358,7 @@ $.widget( "mobile.slider", $.mobile.widget, {
350358
theme = this.options.theme || parentTheme,
351359
trackTheme = this.options.trackTheme || parentTheme;
352360

353-
self.slider[0].className = ['ui-slider ', ( this.isToggleSwitch ) ? "ui-slider-switch" : ""," ui-btn-down-" + trackTheme,' ui-btn-corner-all', ( this.options.inline ) ? " ui-slider-inline" : "", ( this.options.mini ) ? " ui-slider-mini":""].join( "" );
361+
self.slider[0].className = ['ui-slider-app ', ( this.isToggleSwitch ) ? "ui-slider-switch" : ""," ui-btn-down-" + trackTheme,' ui-btn-corner-all', ( this.options.inline ) ? " ui-slider-inline" : "", ( this.options.mini ) ? " ui-mini":""].join( "" );
354362
if ( this.options.disabled || this.element.attr( "disabled" ) ) {
355363
this.disable();
356364
}

0 commit comments

Comments
 (0)