diff --git a/app/helpers/conditional_questions_helper.rb b/app/helpers/conditional_questions_helper.rb new file mode 100644 index 000000000..b5c38dd2a --- /dev/null +++ b/app/helpers/conditional_questions_helper.rb @@ -0,0 +1,7 @@ +module ConditionalQuestionsHelper + def conditional_questions_for_page(page) + page["questions"].values.map do |question| + question["conditional_for"] + end.compact.map(&:keys).flatten + end +end diff --git a/app/javascript/controllers/armed_forces_controller.js b/app/javascript/controllers/armed_forces_controller.js new file mode 100644 index 000000000..d84b5cc5e --- /dev/null +++ b/app/javascript/controllers/armed_forces_controller.js @@ -0,0 +1,17 @@ +import { Controller } from "stimulus" + +export default class extends Controller { + displayConditional() { + let question = this.element.name; + let selected = this.element.value; + let conditional_for = JSON.parse(this.element.dataset.info); + + Object.entries(conditional_for).forEach(([key, values]) => { + if(values.includes(selected)) { + document.getElementById(key + "_div").style.display = "block" + } else { + document.getElementById(key + "_div").style.display = "none" + } + }); + } +} diff --git a/app/views/form/_radio_question.html.erb b/app/views/form/_radio_question.html.erb index 363337ff1..b084fdbc1 100644 --- a/app/views/form/_radio_question.html.erb +++ b/app/views/form/_radio_question.html.erb @@ -6,30 +6,14 @@ <% question["answer_options"].map do |key, val| %> <% if key.starts_with?("divider") %> <%= f.govuk_radio_divider %> + <% elsif question["conditional_for"] %> + <%= f.govuk_radio_button question_key, key, label: { text: val }, + "data-controller": "#{question_key.dasherize}", + "data-action": "click->#{question_key.dasherize}#displayConditional", + "data-info": "#{question["conditional_for"].to_json}" + %> <% else %> <%= f.govuk_radio_button question_key, val, label: { text: val } %> <% end %> <% end %> <% end %> - - diff --git a/app/views/form/page.html.erb b/app/views/form/page.html.erb index d8df7605d..0d292ec42 100644 --- a/app/views/form/page.html.erb +++ b/app/views/form/page.html.erb @@ -17,6 +17,11 @@