class Alchemy::Forms::Builder

Public Instance Methods

datepicker(attribute_name, options = {}) click to toggle source

Renders a simple_form input that displays a datepicker

# File lib/alchemy/forms/builder.rb, line 30
def datepicker(attribute_name, options = {})
  type = options[:as] || :date
  value = options.fetch(:input_html, {}).delete(:value)
  date = value || object.send(attribute_name.to_sym).presence
  date = Time.zone.parse(date) if date.is_a?(String)

  input_options = {
    type: :text,
    class: type,
    value: date&.iso8601
  }.merge(options[:input_html] || {})

  date_field = input attribute_name, as: :string, input_html: input_options
  template.content_tag("alchemy-datepicker", date_field, "input-type" => type)
end
input(attribute_name, options = {}, &block) click to toggle source

Renders a simple_form input, but uses input alchemy_wrapper

Calls superclass method
# File lib/alchemy/forms/builder.rb, line 8
def input(attribute_name, options = {}, &block)
  options[:wrapper] = :alchemy

  if object.respond_to?(:attribute_fixed?) && object.attribute_fixed?(attribute_name)
    tooltip_options = {
      content: Alchemy.t(:attribute_fixed, attribute: attribute_name),
      class: "like-hint-tooltip",
      placement: "bottom-start"
    }
    template.content_tag(:div, class: "input") do
      label(attribute_name) +
        template.content_tag("sl-tooltip", tooltip_options) do
          input_field(attribute_name, disabled: true)
        end
    end
  else
    super
  end
end
richtext(attribute_name, options = {}) click to toggle source

Renders a simple_form input that displays a richtext editor

# File lib/alchemy/forms/builder.rb, line 48
def richtext(attribute_name, options = {})
  text_area = input(attribute_name, options.merge(as: :text))
  template.content_tag("alchemy-tinymce", text_area)
end
submit(label, options = {}) click to toggle source

Renders a button tag wrapped in a div with ‘submit’ class.

# File lib/alchemy/forms/builder.rb, line 55
def submit(label, options = {})
  options = {
    wrapper_html: {class: "submit"},
    input_html: {is: "alchemy-button"}
  }.update(options)
  template.content_tag("div", options.delete(:wrapper_html)) do
    template.button_tag(label, options.delete(:input_html))
  end
end