]> source.dussan.org Git - jquery-ui.git/commitdiff
Controlgroup: Fix create and destroy for controlgroupLabel 1624/head
authorJörn Zaefferer <joern.zaefferer@gmail.com>
Sun, 25 Oct 2015 22:07:34 +0000 (18:07 -0400)
committerJörn Zaefferer <joern.zaefferer@gmail.com>
Mon, 26 Oct 2015 14:09:20 +0000 (10:09 -0400)
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.

tests/unit/controlgroup/controlgroup.html
tests/unit/controlgroup/core.js
ui/widgets/controlgroup.js

index e150c2c3f408a3cd0d6b4988888144b83d2982f8..9767381ac5a2fcf40094240125a37927a0776ae7 100644 (file)
@@ -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>
index 43acdd66507a4748ab0bf9fb13f2be59bd324baa..775d22ade339676f4e753b3fbf047d5924c1b4c9 100644 (file)
@@ -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" );
+} );
+
 } );
index 536d480f9821839befa45e6af4744513d4b86303..ceb78c7c33546a780b3cf5dec32f614053c49f71 100644 (file)
@@ -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" ] ) {