Sha256: e75b5afca3fb00554a38ea1d39403a2986af76a9c7b4f1a3b4451ae52f520b9e

Contents?: true

Size: 1.85 KB

Versions: 11

Compression:

Stored size: 1.85 KB

Contents

module GOVUKDesignSystemFormBuilder
  module Elements
    module Radios
      class FieldsetRadioButton < Base
        include Traits::Hint
        include Traits::Conditional

        def initialize(builder, object_name, attribute_name, value, label:, hint_text:, link_errors:, &block)
          super(builder, object_name, attribute_name)

          @value       = value
          @label       = label
          @hint_text   = hint_text
          @link_errors = has_errors? && link_errors

          if block_given?
            @conditional_content = wrap_conditional(block)
            @conditional_id      = conditional_id
          end
        end

        def html
          safe_join(
            [
              content_tag('div', class: 'govuk-radios__item') do
                safe_join(
                  [
                    input,
                    label_element.html,
                    hint_element.html,
                  ]
                )
              end,
              @conditional_content
            ]
          )
        end

      private

        def label_element
          @label_element ||= Elements::Label.new(@builder, @object_name, @attribute_name, radio: true, value: @value, **@label, link_errors: @link_errors)
        end

        def hint_element
          @hint_element ||= Elements::Hint.new(@builder, @object_name, @attribute_name, @hint_text, @value, radio: true)
        end

        def input
          @builder.radio_button(
            @attribute_name,
            @value,
            id: field_id(link_errors: @link_errors),
            aria: { describedby: hint_id },
            data: { 'aria-controls' => @conditional_id },
            class: %w(govuk-radios__input)
          )
        end

        def conditional_classes
          %w(govuk-radios__conditional govuk-radios__conditional--hidden)
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
govuk_design_system_formbuilder-1.1.11 lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
govuk_design_system_formbuilder-1.1.10 lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
govuk_design_system_formbuilder-1.1.9 lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
govuk_design_system_formbuilder-1.1.8 lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
govuk_design_system_formbuilder-1.1.7 lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
govuk_design_system_formbuilder-1.1.6 lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
govuk_design_system_formbuilder-1.1.5 lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
govuk_design_system_formbuilder-1.1.4 lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
govuk_design_system_formbuilder-1.1.3 lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
govuk_design_system_formbuilder-1.1.2 lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
govuk_design_system_formbuilder-1.1.1 lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb