diff --git a/dev/config.js b/dev/config.js index da97fc1..8067e4d 100644 --- a/dev/config.js +++ b/dev/config.js @@ -122,7 +122,14 @@ module.exports = [ { "label": "", "value": "" }, { "label": "Berry", "value": "berry" }, { "label": "This Option is Selected", "value": "grape" }, - { "label": "Banana", "value": "banana" } + { "label": "Banana", "value": "banana" }, + { + "label": "This is an optgroup", + "value": [ + { "label": "Peach", "value": "peach" }, + { "label": "Mango", "value": "mango" } + ] + } ], "attributes": { "required": "required" diff --git a/src/templates/components/select.tpl b/src/templates/components/select.tpl index a721604..60fe0fb 100755 --- a/src/templates/components/select.tpl +++ b/src/templates/components/select.tpl @@ -4,7 +4,15 @@ diff --git a/test/spec/components/select.js b/test/spec/components/select.js index 8ea8b2e..48f8702 100644 --- a/test/spec/components/select.js +++ b/test/spec/components/select.js @@ -21,4 +21,26 @@ describe('component - select', function() { selectItem.set('value-2'); assert.strictEqual($valueDisplay.get('innerHTML'), 'label 2'); }); + + it('sets the value display to the correct value on change when using optgroups', + function() { + var clayConfig = fixture.clayConfig([ + { + type: 'select', + defaultValue: 'value-1', + options: [ + { label: 'label 1', value: 'value-1' }, + { label: 'group', value: [ + { label: 'label 2', value: 'value-2' }, + { label: 'label 3', value: 'value-3' } + ]} + ] + } + ]); + var selectItem = clayConfig.getItemsByType('select')[0]; + var $valueDisplay = selectItem.$element.select('.value'); + assert.strictEqual($valueDisplay.get('innerHTML'), 'label 1'); + selectItem.set('value-2'); + assert.strictEqual($valueDisplay.get('innerHTML'), 'label 2'); + }); });