mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Selectmenu: Support width: false
and default to 14em
`width: null` still matches the width of the original element. `width: false` prevents an inline style from being set for the width. This makes it easy to set the width via a stylesheet and allows the use of any unit for setting the width, such as the new default of `14em`. Fixes #11198 Closes gh-1467
This commit is contained in:
parent
47a32fb5b3
commit
af4c35df9d
@ -59,9 +59,6 @@
|
|||||||
label {
|
label {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
select {
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* select with custom icons */
|
/* select with custom icons */
|
||||||
.ui-selectmenu-menu .ui-menu.customicons .ui-menu-item-wrapper {
|
.ui-selectmenu-menu .ui-menu.customicons .ui-menu-item-wrapper {
|
||||||
|
@ -32,9 +32,6 @@
|
|||||||
display: block;
|
display: block;
|
||||||
margin: 30px 0 0 0;
|
margin: 30px 0 0 0;
|
||||||
}
|
}
|
||||||
select {
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
.overflow {
|
.overflow {
|
||||||
height: 200px;
|
height: 200px;
|
||||||
}
|
}
|
||||||
|
@ -41,9 +41,6 @@
|
|||||||
display: block;
|
display: block;
|
||||||
margin: 20px 0 0 0;
|
margin: 20px 0 0 0;
|
||||||
}
|
}
|
||||||
select {
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#circle {
|
#circle {
|
||||||
float: left;
|
float: left;
|
||||||
|
@ -10,7 +10,7 @@ TestHelpers.commonWidgetTests( "selectmenu", {
|
|||||||
at: "left bottom",
|
at: "left bottom",
|
||||||
collision: "none"
|
collision: "none"
|
||||||
},
|
},
|
||||||
width: null,
|
width: false,
|
||||||
|
|
||||||
// callbacks
|
// callbacks
|
||||||
change: null,
|
change: null,
|
||||||
|
@ -85,7 +85,7 @@ test( "CSS styles", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test( "width", function() {
|
test( "width", function() {
|
||||||
expect( 5 );
|
expect( 6 );
|
||||||
|
|
||||||
var button,
|
var button,
|
||||||
element = $( "#speed" );
|
element = $( "#speed" );
|
||||||
@ -93,6 +93,9 @@ test( "width", function() {
|
|||||||
element.selectmenu();
|
element.selectmenu();
|
||||||
button = element.selectmenu( "widget" );
|
button = element.selectmenu( "widget" );
|
||||||
|
|
||||||
|
equal( button[ 0 ].style.width, "", "no inline style" );
|
||||||
|
|
||||||
|
element.selectmenu( "option", "width", null );
|
||||||
equal( button.outerWidth(), element.outerWidth(), "button width auto" );
|
equal( button.outerWidth(), element.outerWidth(), "button width auto" );
|
||||||
|
|
||||||
element.outerWidth( 100 );
|
element.outerWidth( 100 );
|
||||||
@ -107,7 +110,7 @@ test( "width", function() {
|
|||||||
|
|
||||||
element
|
element
|
||||||
.append( $( "<option>", { text: "Option with a little longer text" } ) )
|
.append( $( "<option>", { text: "Option with a little longer text" } ) )
|
||||||
.selectmenu( "option", "width", "" )
|
.selectmenu( "option", "width", null )
|
||||||
.selectmenu( "refresh" );
|
.selectmenu( "refresh" );
|
||||||
equal( button.outerWidth(), element.outerWidth(), "button width with long option" );
|
equal( button.outerWidth(), element.outerWidth(), "button width with long option" );
|
||||||
|
|
||||||
@ -115,7 +118,7 @@ test( "width", function() {
|
|||||||
element
|
element
|
||||||
.selectmenu( "destroy" )
|
.selectmenu( "destroy" )
|
||||||
.css( "width", "100%" )
|
.css( "width", "100%" )
|
||||||
.selectmenu();
|
.selectmenu({ width: null });
|
||||||
button = element.selectmenu( "widget" );
|
button = element.selectmenu( "widget" );
|
||||||
equal( button.outerWidth(), 300, "button width fills container" );
|
equal( button.outerWidth(), 300, "button width fills container" );
|
||||||
});
|
});
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
width: 14em;
|
||||||
}
|
}
|
||||||
.ui-selectmenu-button span.ui-icon {
|
.ui-selectmenu-button span.ui-icon {
|
||||||
right: 0.5em;
|
right: 0.5em;
|
||||||
|
@ -48,7 +48,7 @@ return $.widget( "ui.selectmenu", {
|
|||||||
at: "left bottom",
|
at: "left bottom",
|
||||||
collision: "none"
|
collision: "none"
|
||||||
},
|
},
|
||||||
width: null,
|
width: false,
|
||||||
|
|
||||||
// callbacks
|
// callbacks
|
||||||
change: null,
|
change: null,
|
||||||
@ -118,7 +118,9 @@ return $.widget( "ui.selectmenu", {
|
|||||||
this.buttonItem = this._renderButtonItem( item )
|
this.buttonItem = this._renderButtonItem( item )
|
||||||
.appendTo( this.button );
|
.appendTo( this.button );
|
||||||
|
|
||||||
this._resizeButton();
|
if ( this.options.width !== false ) {
|
||||||
|
this._resizeButton();
|
||||||
|
}
|
||||||
|
|
||||||
this._on( this.button, this._buttonEvents );
|
this._on( this.button, this._buttonEvents );
|
||||||
this.button.one( "focusin", function() {
|
this.button.one( "focusin", function() {
|
||||||
@ -210,7 +212,7 @@ return $.widget( "ui.selectmenu", {
|
|||||||
this._getSelectedItem().data( "ui-selectmenu-item" ) || {}
|
this._getSelectedItem().data( "ui-selectmenu-item" ) || {}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
if ( !this.options.width ) {
|
if ( this.options.width === null ) {
|
||||||
this._resizeButton();
|
this._resizeButton();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -603,7 +605,14 @@ return $.widget( "ui.selectmenu", {
|
|||||||
_resizeButton: function() {
|
_resizeButton: function() {
|
||||||
var width = this.options.width;
|
var width = this.options.width;
|
||||||
|
|
||||||
if ( !width ) {
|
// For `width: false`, just remove inline style and stop
|
||||||
|
if ( width === false ) {
|
||||||
|
this.button.css( "width", "" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// For `width: null`, match the width of the original element
|
||||||
|
if ( width === null ) {
|
||||||
width = this.element.show().outerWidth();
|
width = this.element.show().outerWidth();
|
||||||
this.element.hide();
|
this.element.hide();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user