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;