Files
manyfold/app/components/input_row.rb
T

48 lines
998 B
Ruby

class Components::InputRow < Components::Base
def initialize(form:, attribute:, label:, help: nil, options: {})
@form = form
@attribute = attribute
@attribute_without_id = @attribute.to_s.gsub("_id", "")
@label = label
@help = help
@options = options
end
def view_template
div do
@form.label(@attribute, @label, class: label_class)
end
div do
input_group
errors_for(@form.object, @attribute_without_id)
help
end
end
def label_class
"col-form-label"
end
def input_group
div class: "input-group" do
input_element
end
end
def input_element
raise NotImplementedError
end
def help
span(class: "form-text") { @help } if @help
end
def errors_for(object, attribute)
return if object.nil? || attribute.nil?
return unless object.errors.include? attribute
div class: "invalid-feedback d-block" do
object.errors.full_messages_for(attribute).join("; ")
end
end
end