From 2135d3c4e7ed3b6e54e12e01c86b07d5a68f6b6a Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Mon, 24 Apr 2023 15:15:13 +0200 Subject: [PATCH] ds_fr: add radio_button_list component --- app/components/dsfr/radio_button_list_component.rb | 7 +++++++ .../radio_button_list_component.html.haml | 13 +++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 app/components/dsfr/radio_button_list_component.rb create mode 100644 app/components/dsfr/radio_button_list_component/radio_button_list_component.html.haml diff --git a/app/components/dsfr/radio_button_list_component.rb b/app/components/dsfr/radio_button_list_component.rb new file mode 100644 index 000000000..0ae8a6ee2 --- /dev/null +++ b/app/components/dsfr/radio_button_list_component.rb @@ -0,0 +1,7 @@ +class Dsfr::RadioButtonListComponent < ApplicationComponent + def initialize(form:, target:, buttons:) + @form = form + @target = target + @buttons = buttons + end +end diff --git a/app/components/dsfr/radio_button_list_component/radio_button_list_component.html.haml b/app/components/dsfr/radio_button_list_component/radio_button_list_component.html.haml new file mode 100644 index 000000000..8cc3f5703 --- /dev/null +++ b/app/components/dsfr/radio_button_list_component/radio_button_list_component.html.haml @@ -0,0 +1,13 @@ +%fieldset.fr-fieldset{ 'aria-labelledby': 'radio-hint-element-legend radio-hint-element-messages' } + %legend.fr-fieldset__legend--regular.fr-fieldset__legend + = content + + - @buttons.map { _1.values_at(:label, :value, :hint) }.each do |label, value, hint| + .fr-fieldset__element + .fr-radio-group + = @form.radio_button @target, value + = @form.label @target, value: value, class: 'fr-label' do + - capture do + = label + %span.fr-hint-text= hint + .fr-messages-group{ 'aria-live': 'assertive' }