Sha256: 751297267c761cb5aa93c01f975ad0940a7ab0c662e7429d9286aa7a439c79ee

Contents?: true

Size: 1.46 KB

Versions: 11

Compression:

Stored size: 1.46 KB

Contents

module GOVUKDesignSystemFormBuilder
  module Elements
    class Hint < Base
      using PrefixableArray

      include Traits::Localisation

      def initialize(builder, object_name, attribute_name, value: nil, text: nil, content: nil, radio: false, checkbox: false, **kwargs)
        super(builder, object_name, attribute_name)

        @value           = value
        @radio           = radio
        @checkbox        = checkbox
        @html_attributes = kwargs

        if content
          @raw = capture { content.call }
        else
          @text = retrieve_text(text)
        end
      end

      def active?
        [@text, @raw].any?(&:present?)
      end

      def html
        return unless active?

        content_tag(hint_tag, **hint_options, **@html_attributes) { hint_body }
      end

      def hint_id
        return nil unless active?

        build_id('hint')
      end

    private

      def hint_options
        { class: classes, id: hint_id }
      end

      def hint_tag
        @raw.presence ? 'div' : 'span'
      end

      def hint_body
        @raw || @text
      end

      def retrieve_text(supplied)
        supplied.presence || localised_text(:hint)
      end

      def classes
        %w(hint).prefix(brand).push(radio_class, checkbox_class).compact
      end

      def radio_class
        @radio ? %(#{brand}-radios__hint) : nil
      end

      def checkbox_class
        @checkbox ? %(#{brand}-checkboxes__hint) : nil
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
govuk_design_system_formbuilder-2.3.0b1 lib/govuk_design_system_formbuilder/elements/hint.rb
govuk_design_system_formbuilder-2.2.0 lib/govuk_design_system_formbuilder/elements/hint.rb
govuk_design_system_formbuilder-2.1.9 lib/govuk_design_system_formbuilder/elements/hint.rb
govuk_design_system_formbuilder-2.1.8 lib/govuk_design_system_formbuilder/elements/hint.rb
govuk_design_system_formbuilder-2.1.7 lib/govuk_design_system_formbuilder/elements/hint.rb
govuk_design_system_formbuilder-2.1.7b2 lib/govuk_design_system_formbuilder/elements/hint.rb
govuk_design_system_formbuilder-2.1.7b1 lib/govuk_design_system_formbuilder/elements/hint.rb
govuk_design_system_formbuilder-2.1.6 lib/govuk_design_system_formbuilder/elements/hint.rb
govuk_design_system_formbuilder-2.1.5 lib/govuk_design_system_formbuilder/elements/hint.rb
govuk_design_system_formbuilder-2.1.4 lib/govuk_design_system_formbuilder/elements/hint.rb
govuk_design_system_formbuilder-2.1.3 lib/govuk_design_system_formbuilder/elements/hint.rb