Sha256: b465f775ebd0f6cc1a68d0f34ea5e4aab5383ffb704db113476287ccd51bae1f
Contents?: true
Size: 1.92 KB
Versions: 2
Compression:
Stored size: 1.92 KB
Contents
module GOVUKDesignSystemFormBuilder module Elements class Label < GOVUKDesignSystemFormBuilder::Base def initialize(builder, object_name, attribute_name, text: nil, value: nil, size: nil, hidden: false, radio: false, checkbox: false, tag: nil) super(builder, object_name, attribute_name) @text = label_text(text, hidden) @value = value # used by field_id @size_class = label_size_class(size) @radio_class = radio_class(radio) @checkbox_class = checkbox_class(checkbox) @tag = tag end def html return nil if @text.blank? if @tag.present? @builder.content_tag(@tag, class: 'govuk-label-wrapper') { build_label } else build_label end end private def build_label @builder.label( @attribute_name, value: @value, for: field_id(link_errors: true), class: %w(govuk-label).push(@size_class, @weight_class, @radio_class, @checkbox_class).compact ) do @text end end def label_text(option_text, hidden) text = [option_text, @value, @attribute_name.capitalize].compact.first if hidden @builder.tag.span(text, class: %w(govuk-visually-hidden)) else @builder.raw(text) end end def radio_class(radio) radio ? 'govuk-radios__label' : nil end def checkbox_class(checkbox) checkbox ? 'govuk-checkboxes__label' : nil end def label_size_class(size) case size when 'xl' then "govuk-label--xl" when 'l' then "govuk-label--l" when 'm' then "govuk-label--m" when 's' then "govuk-label--s" when nil then nil else fail "invalid size '#{size}', must be xl, l, m, s or nil" end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
govuk_design_system_formbuilder-0.9.4 | lib/govuk_design_system_formbuilder/elements/label.rb |
govuk_design_system_formbuilder-0.9.3 | lib/govuk_design_system_formbuilder/elements/label.rb |