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' }