Sha256: 0fcefbaf22ffeb299fe8b949a18b53ac481b53cdedd4be7f2d5ded227e5c220f
Contents?: true
Size: 1.48 KB
Versions: 1
Compression:
Stored size: 1.48 KB
Contents
class Brut::FrontEnd::Components::Inputs::Textarea < Brut::FrontEnd::Components::Input def self.for_form_input(form:, input_name:, html_attributes: {}) default_html_attributes = {} input = form[input_name] default_html_attributes["required"] = input.required default_html_attributes["name"] = input.name if input.maxlength default_html_attributes["maxlength"] = input.maxlength end if input.minlength default_html_attributes["minlength"] = input.minlength end if !form.new? && !input.valid? default_html_attributes["data-invalid"] = true input.validity_state.each do |constraint,violated| if violated default_html_attributes["data-#{constraint}"] = true end end end Brut::FrontEnd::Components::Inputs::Textarea.new(default_html_attributes.merge(html_attributes), input.value) end def initialize(attributes, value) @sanitized_attributes = attributes.map { |key,value| [ key.to_s.gsub(/[\s\"\'>\/=]/,"-"), value ] }.select { |key,value| !value.nil? }.to_h @value = value end def sanitized_attributes = @sanitized_attributes def render attribute_string = @sanitized_attributes.map { |key,value| if value == true key elsif value == false "" else REXML::Attribute.new(key,value).to_string end }.join(" ") %{ <textarea #{attribute_string}>#{ @value }</textarea> } end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
brut-0.0.1 | lib/brut/front_end/components/inputs/textarea.rb |