class Shaf::Formable::Field
Constants
- HTML_TYPE_MAPPINGS
Public Class Methods
new(name, params = {})
click to toggle source
# File lib/shaf/formable/field.rb, line 17 def initialize(name, params = {}) @name = name @type = params[:type]&.to_sym @title = params[:title] || params[:label] @hidden = params.fetch(:hidden, false) @has_value = params.key? :value @value = params[:value] @required = params.fetch(:required, false) @accessor_name = params.fetch(:accessor_name, name).to_sym end
Public Instance Methods
has_value?()
click to toggle source
# File lib/shaf/formable/field.rb, line 28 def has_value? @has_value end
to_html()
click to toggle source
# File lib/shaf/formable/field.rb, line 37 def to_html [ '<div class="form--input-group">', label_element, input_element, '</div>' ].compact.join("\n") end
value=(v)
click to toggle source
# File lib/shaf/formable/field.rb, line 32 def value=(v) @value = v @has_value = true end
Private Instance Methods
input_element()
click to toggle source
# File lib/shaf/formable/field.rb, line 53 def input_element _value = value ? %Q(value="#{value.to_s}") : nil _required = required ? "required" : nil _type = hidden ? "hidden" : HTML_TYPE_MAPPINGS.fetch(type.to_s, 'text') attributes = [ %Q(type="#{_type}"), 'class="form--input"', %Q(id="#{name.to_s}"), %Q(name="#{name.to_s}"), ] attributes << %Q(value="#{value.to_s}") if value attributes << "required" if required "<input #{attributes.join(" ")}>" end
label_element()
click to toggle source
# File lib/shaf/formable/field.rb, line 48 def label_element str = (title || name || "").to_s %Q(<label for="#{name}" class="form--label">#{str}</label>) end