diff options
author | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2015-10-25 18:07:34 -0400 |
---|---|---|
committer | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2015-10-26 10:09:20 -0400 |
commit | 09fde89a248895329a194021c44aa9004cb7fa97 (patch) | |
tree | 51061b433caa443a1e393dc6725ad809cd670456 | |
parent | bb56dd59e832177786a199f7a1f6acabdb7f8f6e (diff) | |
download | jquery-ui-09fde89a248895329a194021c44aa9004cb7fa97.tar.gz jquery-ui-09fde89a248895329a194021c44aa9004cb7fa97.zip |
Controlgroup: Fix create and destroy for controlgroupLabel
Creating the label broke while doing a refactoring, the lack of tests
allowed that to go unnoticed. Shouldn't happen again with the extra
tests, covering both controlgroupLabel and spinner.
-rw-r--r-- | tests/unit/controlgroup/controlgroup.html | 4 | ||||
-rw-r--r-- | tests/unit/controlgroup/core.js | 13 | ||||
-rw-r--r-- | ui/widgets/controlgroup.js | 15 |
3 files changed, 26 insertions, 6 deletions
diff --git a/tests/unit/controlgroup/controlgroup.html b/tests/unit/controlgroup/controlgroup.html index e150c2c3f..9767381ac 100644 --- a/tests/unit/controlgroup/controlgroup.html +++ b/tests/unit/controlgroup/controlgroup.html @@ -5,7 +5,7 @@ <title>jQuery UI Controlgroup Test Suite</title> <script src="../../../external/requirejs/require.js"></script> - <script src="../../lib/css.js" data-modules="core button checkboxradio selectmenu controlgroup"></script> + <script src="../../lib/css.js" data-modules="core button checkboxradio selectmenu spinner controlgroup"></script> <script src="../../lib/bootstrap.js" data-modules="common core methods options"></script> </head> <body> @@ -28,6 +28,8 @@ </select> <div class="test"></div> <button>Button with icon on the bottom</button> + <label for="spinner" class="ui-controlgroup-label"># of cars</label> + <input id="spinner" class="ui-spinner-input"> <select> <option>Fast</option> <option>Medium</option> diff --git a/tests/unit/controlgroup/core.js b/tests/unit/controlgroup/core.js index 43acdd665..775d22ade 100644 --- a/tests/unit/controlgroup/core.js +++ b/tests/unit/controlgroup/core.js @@ -9,13 +9,11 @@ define( [ module( "Controlgroup: Core" ); test( "selectmenu: open/close corners", function( assert ) { - expect( 1 ); + expect( 12 ); var element = $( ".controlgroup" ).controlgroup(), selects = element.find( "select" ), selectButton = selects.eq( 0 ).selectmenu( "widget" ); - expect( 12 ); - selects.eq( 0 ).selectmenu( "open" ); assert.hasClasses( selectButton, "ui-corner-tl", "Horizontal: First selectmenu gets ui-corner-tl when opened" ); @@ -66,4 +64,13 @@ test( "selectmenu: open/close corners", function( assert ) { "vertical: Last selectmenu gets ui-corner-bottom when closed" ); } ); +test( "selectmenu: controlgroupLabel", function( assert ) { + expect( 2 ); + var element = $( ".controlgroup" ).controlgroup(); + var label = element.find( ".ui-controlgroup-label" ); + + assert.hasClasses( label, "ui-widget ui-widget-content ui-state-default ui-controlgroup-item" ); + assert.hasClasses( label.find( "span" ), "ui-controlgroup-label-contents" ); +} ); + } ); diff --git a/ui/widgets/controlgroup.js b/ui/widgets/controlgroup.js index 536d480f9..ceb78c7c3 100644 --- a/ui/widgets/controlgroup.js +++ b/ui/widgets/controlgroup.js @@ -61,6 +61,12 @@ return $.widget( "ui.controlgroup", { this._callChildMethod( "destroy" ); this.childWidgets.removeData( "ui-controlgroup-data" ); this.element.removeAttr( "role" ); + if ( this.options.items.controlgroupLabel ) { + this.element + .find( this.options.items.controlgroupLabel ) + .find( ".ui-controlgroup-label-contents" ) + .contents().unwrap(); + } }, _initWidgets: function() { @@ -72,8 +78,8 @@ return $.widget( "ui.controlgroup", { var labels; var options = {}; - // Make sure the widget actually exists and has a selector set - if ( !$.fn[ widget ] || !selector ) { + // Make sure the widget has a selector set + if ( !selector ) { return; } @@ -87,6 +93,11 @@ return $.widget( "ui.controlgroup", { return; } + // Make sure the widget actually exists + if ( !$.fn[ widget ] ) { + return; + } + // We assume everything is in the middle to start because we can't determine // first / last elements until all enhancments are done. if ( that[ "_" + widget + "Options" ] ) { |