Sha256: 4ba559b2073ba22abf1350a11705af0c39be8eba963dc60017cdd50c17650f98

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

module Headmin
  module Form
    class Text
      def initialize(local_assigns)
        @local_assigns = local_assigns
      end

      def placeholder
        @local_assigns[:float] ? @local_assigns[:placeholder] || attribute : @local_assigns[:placeholder]
      end

      def attribute
        @local_assigns[:attribute]
      end

      def form
        @local_assigns[:form]
      end

      def options
        option_keys = %i(aria autocomplete autofocus data disabled id maxlength minlength list pattern placeholder readonly required spellcheck size value)
        @local_assigns.slice(*option_keys).merge(
          aria: { describedby: form_field_validation_id(form, attribute) },
          class: ["form-control", form_field_validation_class(form, attribute)].join(" "),
          list: @local_assigns[:list] ? "#{attribute}_list" : nil,
          placeholder: placeholder
        )
      end

      def local_assigns
        @local_assigns
      end

      def form_field_valid?(form, name)
        return unless form.object

        !form.object.errors.has_key?(name)
      end

      def form_field_validation_id(form, name)
        return unless form.object

        [form.object_name, name.to_s, "validation"].join("_").parameterize.underscore
      end

      def form_field_validation_class(form, name)
        return unless form.object

        "is-invalid" if form.object.errors.has_key?(name)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
headmin-0.3.1 app/models/headmin/form/text.rb