diff --git a/app/assets/javascripts/radioSelect.js b/app/assets/javascripts/radioSelect.js index 02b2afc18..99c1c8bf3 100644 --- a/app/assets/javascripts/radioSelect.js +++ b/app/assets/javascripts/radioSelect.js @@ -33,7 +33,7 @@ {{/choices}} - + `), 'chosen': Hogan.compile(` @@ -82,6 +82,12 @@ }); let categories = $component.data('categories').split(','); let name = $component.find('input').eq(0).attr('name'); + let reset = () => { + render('initial', { + 'categories': categories, + 'name': name + }); + }; $component .on('click', '.js-category-button', function(event) { @@ -131,15 +137,32 @@ }); focusSelected(); + }) + .on('click', '.js-done-button', function(event) { + + event.preventDefault(); + let $selection = $('input[type=radio]:checked', this.parentNode); + if ($selection.length) { + + render('chosen', { + 'choices': choices.filter( + element => element.value == $selection.eq(0).attr('value') + ), + 'name': name + }); + + } else { + + reset(); + + } + focusSelected(); + }) .on('click', '.js-reset-button', function(event) { event.preventDefault(); - render('initial', { - 'categories': categories, - 'name': name - }); - focusSelected(); + reset(); }); diff --git a/app/assets/stylesheets/components/radios.scss b/app/assets/stylesheets/components/radios.scss index eb632b62f..e0dc263d1 100644 --- a/app/assets/stylesheets/components/radios.scss +++ b/app/assets/stylesheets/components/radios.scss @@ -14,15 +14,16 @@ } - .js-reset-button, - .js-category-button { + .js-done-button, + .js-category-button, + .js-reset-button { @include button($grey-3); margin-right: $gutter-half; } - .js-reset-button-block { + .js-done-button-block { display: block; clear: both;