From 41d38e04a7a6bb0216d29684f38d1aae18a0b597 Mon Sep 17 00:00:00 2001 From: Keegan Date: Sat, 28 May 2016 14:41:45 -0700 Subject: [PATCH] Allow optgroups for selects --- dev/config.js | 9 ++++++++- src/templates/components/select.tpl | 10 +++++++++- test/spec/components/select.js | 22 ++++++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) 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'); + }); });