From 8a79fc87840150f74a5b27f7811db67003bc0c32 Mon Sep 17 00:00:00 2001 From: Alexander Schmitz Date: Wed, 18 May 2016 11:48:47 -0400 Subject: [PATCH] Controlgroup: Add "only" position to class generator functions Fixes #14972 Closes gh-1711 --- tests/unit/controlgroup/controlgroup.html | 10 ++++ tests/unit/controlgroup/core.js | 60 +++++++++++++++++++++++ ui/widgets/controlgroup.js | 13 +++-- 3 files changed, 80 insertions(+), 3 deletions(-) diff --git a/tests/unit/controlgroup/controlgroup.html b/tests/unit/controlgroup/controlgroup.html index 170676aa8..d90bf607c 100644 --- a/tests/unit/controlgroup/controlgroup.html +++ b/tests/unit/controlgroup/controlgroup.html @@ -58,6 +58,16 @@ +
+ +
+
+ +
diff --git a/tests/unit/controlgroup/core.js b/tests/unit/controlgroup/core.js index b32d829ed..dff3b1b12 100644 --- a/tests/unit/controlgroup/core.js +++ b/tests/unit/controlgroup/core.js @@ -100,4 +100,64 @@ QUnit.test( "_resolveClassesValues", function( assert ) { assertSanatized( assert, "bar", "bar", "No corner classes" ); } ); +QUnit.test( "Single controlgroup select - horizontal", function( assert ) { + assert.expect( 4 ); + var group = $( ".controlgroup-single-select" ).controlgroup(); + var select = group.find( ".ui-selectmenu-button" ); + + assert.hasClasses( select, "ui-corner-all" ); + assert.lacksClasses( select, + "ui-corner-left ui-corner-right ui-corner-top ui-corner-left" + + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); + + group.find( "select" ).selectmenu( "open" ); + assert.hasClasses( select, "ui-corner-top" ); + assert.lacksClasses( select, + "ui-corner-left ui-corner-right ui-corner-all ui-corner-left" + + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); +} ); + +QUnit.test( "Single controlgroup select - vertical", function( assert ) { + assert.expect( 4 ); + var group = $( ".controlgroup-single-select" ).controlgroup( { + direction: "verticle" + } ); + var select = group.find( ".ui-selectmenu-button" ); + + assert.hasClasses( select, "ui-corner-all" ); + assert.lacksClasses( select, + "ui-corner-left ui-corner-right ui-corner-top ui-corner-left" + + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); + + group.find( "select" ).selectmenu( "open" ); + assert.hasClasses( select, "ui-corner-top" ); + assert.lacksClasses( select, + "ui-corner-left ui-corner-right ui-corner-all ui-corner-left" + + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); +} ); + +QUnit.test( "Single controlgroup button - horizontal", function( assert ) { + assert.expect( 2 ); + var group = $( ".controlgroup-single-button" ).controlgroup(); + var button = group.find( "button" ); + + assert.hasClasses( button, "ui-corner-all" ); + assert.lacksClasses( button, + "ui-corner-left ui-corner-right ui-corner-top ui-corner-left" + + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); +} ); + +QUnit.test( "Single controlgroup button - vertical", function( assert ) { + assert.expect( 2 ); + var group = $( ".controlgroup-single-button" ).controlgroup( { + direction: "verticle" + } ); + var button = group.find( "button" ); + + assert.hasClasses( button, "ui-corner-all" ); + assert.lacksClasses( button, + "ui-corner-left ui-corner-right ui-corner-top ui-corner-left" + + " ui-corner-tr ui-corner-tl ui-corner-bl ui corner-br" ); +} ); + } ); diff --git a/ui/widgets/controlgroup.js b/ui/widgets/controlgroup.js index a79491bfb..5d2bbba83 100644 --- a/ui/widgets/controlgroup.js +++ b/ui/widgets/controlgroup.js @@ -152,7 +152,7 @@ return $.widget( "ui.controlgroup", { }, _updateCornerClass: function( element, position ) { - var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right"; + var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"; var add = this._buildSimpleOptions( position, "label" ).classes.label; this._removeClass( element, null, remove ); @@ -167,7 +167,8 @@ return $.widget( "ui.controlgroup", { result.classes[ key ] = { "middle": "", "first": "ui-corner-" + ( direction ? "top" : "left" ), - "last": "ui-corner-" + ( direction ? "bottom" : "right" ) + "last": "ui-corner-" + ( direction ? "bottom" : "right" ), + "only": "ui-corner-all" }[ position ]; return result; @@ -206,6 +207,10 @@ return $.widget( "ui.controlgroup", { last: { "ui-selectmenu-button-open": direction ? "" : "ui-corner-tr", "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" ) + }, + only: { + "ui-selectmenu-button-open": "ui-corner-top", + "ui-selectmenu-button-closed": "ui-corner-all" } }[ position ] @@ -261,7 +266,9 @@ return $.widget( "ui.controlgroup", { var instance = children[ value ]().data( "ui-controlgroup-data" ); if ( instance && that[ "_" + instance.widgetName + "Options" ] ) { - var options = that[ "_" + instance.widgetName + "Options" ]( value ); + var options = that[ "_" + instance.widgetName + "Options" ]( + children.length === 1 ? "only" : value + ); options.classes = that._resolveClassesValues( options.classes, instance ); instance.element[ instance.widgetName ]( options ); } else { -- 2.39.5