]> source.dussan.org Git - jquery-ui.git/commitdiff
Controlgroup: Fix issues with compatibility with spinner
authorAlexander Schmitz <arschmitz@gmail.com>
Wed, 11 May 2016 15:49:37 +0000 (11:49 -0400)
committerAlexander Schmitz <arschmitz@gmail.com>
Thu, 26 May 2016 13:15:48 +0000 (09:15 -0400)
Fixes #14966

tests/unit/controlgroup/common.js
tests/unit/controlgroup/core.js
tests/unit/controlgroup/methods.js
tests/unit/controlgroup/options.js
ui/widgets/controlgroup.js

index 1a62d971bdd52017c4e4e6ec26033b8f914d4efd..f04a018a8afe3385067b8cdc62478d41bb09a64a 100644 (file)
@@ -3,7 +3,8 @@ define( [
        "ui/widgets/controlgroup",
        "ui/widgets/checkboxradio",
        "ui/widgets/selectmenu",
-       "ui/widgets/button"
+       "ui/widgets/button",
+       "ui/widgets/spinner"
 ], function( common ) {
 
 common.testWidget( "controlgroup", {
index 2056335945cb0d24b614d8862008cb94f666cd83..70d6267ad76156cd2cff3d531bb0cbaf01f0ee78 100644 (file)
@@ -4,7 +4,8 @@ define( [
        "ui/widgets/controlgroup",
        "ui/widgets/checkboxradio",
        "ui/widgets/selectmenu",
-       "ui/widgets/button"
+       "ui/widgets/button",
+       "ui/widgets/spinner"
 ], function( QUnit, $ ) {
 
 QUnit.module( "Controlgroup: Core" );
@@ -75,11 +76,11 @@ QUnit.test( "selectmenu: controlgroupLabel", function( assert ) {
 } );
 
 var assertSanatized = function( assert, initClasses, expectedClasses, message ) {
-       var selectmenu = $( "#select-sanatize" ).selectmenu({
+       var selectmenu = $( "#select-sanatize" ).selectmenu( {
                classes: {
                        "ui-selectmenu-button-open": initClasses
                }
-       }).selectmenu( "instance" );
+       } ).selectmenu( "instance" );
        var classes = {
                "ui-selectmenu-button-open": "ui-corner-top"
        };
@@ -87,7 +88,7 @@ var assertSanatized = function( assert, initClasses, expectedClasses, message )
        assert.deepEqual( result, {
                "ui-selectmenu-button-open": expectedClasses + " ui-corner-top"
        }, message );
-}
+};
 
 QUnit.test( "_resolveClassesValues", function( assert ) {
        assert.expect( 6 );
index 9f1e4201e026e17e987e0b3e602c53e577960eb4..a9d781f2ee640cc3ceaa1828e02459ee7a02f6e5 100644 (file)
@@ -4,7 +4,8 @@ define( [
        "ui/widgets/controlgroup",
        "ui/widgets/checkboxradio",
        "ui/widgets/selectmenu",
-       "ui/widgets/button"
+       "ui/widgets/button",
+       "ui/widgets/spinner"
 ], function( QUnit, $ ) {
 
 QUnit.module( "Controlgroup: methods" );
@@ -13,6 +14,7 @@ QUnit.test( "destroy", function( assert ) {
        assert.expect( 1 );
        assert.domEqual( ".controlgroup", function() {
                $( ".controlgroup" ).controlgroup().controlgroup( "destroy" );
+               $( "#spinner" ).addClass( "ui-spinner-input" );
        } );
 } );
 
@@ -21,7 +23,7 @@ QUnit.test( "disable", function( assert ) {
        var element = $( ".controlgroup" ).controlgroup().controlgroup( "disable" );
        assert.lacksClasses( element, "ui-state-disabled",
                "The widget does not get the disabled class, because we disable each child widget" );
-       assert.strictEqual( element.find( ".ui-state-disabled" ).length, 6,
+       assert.strictEqual( element.find( ".ui-state-disabled" ).length, 9,
                "Child widgets are disabled" );
 } );
 
@@ -37,7 +39,8 @@ QUnit.test( "enable", function( assert ) {
 var tests = {
                "checkboxradio": "<input type='checkbox'>",
                "selectmenu": "<select><option>foo</option></select>",
-               "button": "<button>button text</button>"
+               "button": "<button>button text</button>",
+               "spinner": "<input class='ui-spinner-input'>"
        },
        orientations = {
                "horizontal": [
@@ -63,7 +66,7 @@ $.each( tests, function( widget, html ) {
                QUnit.test( "refresh: " + widget + ": " + name, function( assert ) {
                        assert.expect( 41 );
 
-                       var i, control, currentClasses,
+                       var i, control, label, currentClasses,
                                controls = [],
                                element = $( "<div>" ).controlgroup( {
                                        direction: name
@@ -109,11 +112,11 @@ $.each( tests, function( widget, html ) {
 
                        // Add a label for each element and then append the element to the control group
                        for ( i = 0; i < 4; i++ ) {
-                               control = $( html ).attr( "id", "id" + i )
-                                       .add( $( "<label>label text</label>" ).clone().attr( "for", "id" + i ) );
+                               control = $( html ).attr( "id", "id" + i );
+                               label = $( "<label>label text</label>" ).attr( "for", "id" + i );
 
                                controls.push( control );
-                               element.append( control );
+                               element.append( control, label );
                        }
 
                        // Refresh the controlgroup now that its populated
@@ -136,6 +139,9 @@ $.each( tests, function( widget, html ) {
                        iterateHidden();
 
                        // Disable the first control
+                       if ( widget === "spinner" ) {
+                               controls[ 0 ].spinner( "disable" );
+                       }
                        controls[ 0 ].prop( "disabled", true );
 
                        element.controlgroup( "refresh" );
@@ -155,7 +161,7 @@ QUnit.test( "Child Classes Option: init", function( assert ) {
                        "ui-selectmenu-button-closed": "test-class"
                }
        } );
-       var controlgroup = $( ".controlgroup-pre" ).controlgroup();
+       $( ".controlgroup-pre" ).controlgroup();
        assert.hasClasses( selectmenu.selectmenu( "widget" ), "test-class" );
 } );
 
index 674bc0d59d267d99ca6c9e9106c54422b9ff1100..db9a29a2d3572280cc02942b37ebd009470fda76 100644 (file)
@@ -4,7 +4,8 @@ define( [
        "ui/widgets/controlgroup",
        "ui/widgets/checkboxradio",
        "ui/widgets/selectmenu",
-       "ui/widgets/button"
+       "ui/widgets/button",
+       "ui/widgets/spinner"
 ], function( QUnit, $ ) {
 
 QUnit.module( "Controlgroup: options" );
@@ -13,7 +14,7 @@ QUnit.test( "disabled", function( assert ) {
        assert.expect( 4 );
        var element = $( ".controlgroup" ).controlgroup().controlgroup( "option", "disabled", true );
        assert.lacksClasses( element, "ui-state-disabled" );
-       assert.equal( element.find( ".ui-state-disabled" ).length, 6, "Child widgets are disabled" );
+       assert.equal( element.find( ".ui-state-disabled" ).length, 9, "Child widgets are disabled" );
 
        element.controlgroup( "option", "disabled", false );
        assert.lacksClasses( element, "ui-state-disabled" );
index 641a419edc02f2a4a4787cd08ea25de20d96b5ec..34b2ba9c79b84f73bc005fd09d8aff4e5e58b45a 100644 (file)
@@ -112,6 +112,11 @@ return $.widget( "ui.controlgroup", {
                                .each( function() {
                                        var element = $( this );
                                        var instance = element[ widget ]( "instance" );
+
+                                       // If the button is the child of a spinner ignore it
+                                       if ( widget === "button" && element.parent( ".ui-spinner" ).length ) {
+                                               return;
+                                       }
                                        if ( instance ) {
                                                options.classes = that._resolveClassesValues( options.classes, instance );
                                        }
@@ -252,7 +257,6 @@ return $.widget( "ui.controlgroup", {
 
                                if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
                                        var options = that[ "_" + instance.widgetName + "Options" ]( value );
-
                                        options.classes = that._resolveClassesValues( options.classes, instance );
                                        instance.element[ instance.widgetName ]( options );
                                } else {