Sha256: 97f156f03cc73339c9b95c174f73e028275d3778048fa4f3c0ead331129d613f

Contents?: true

Size: 796 Bytes

Versions: 7

Compression:

Stored size: 796 Bytes

Contents

module PushType
  class SelectField < PushType::FieldType

    options template: 'select', choices: [], field_options: { include_blank: 'Please select...' }, multiple: false

    def multiple?
      @opts[:multiple]
    end

    def param
      multiple? ? { json_key => [] } : super
    end

    def choices
      if @opts[:choices].respond_to? :call
        @opts[:choices].call
      else
        @opts[:choices]
      end
    end

    def field_options
      @opts[:field_options]
    end

    def html_options
      super.merge(multiple: multiple?)
    end

    def to_json(val)
      return if val.blank?
      multiple? ? Array(val).reject(&:blank?) : super
    end

    def from_json(val)
      return if val.blank?
      multiple? ? Array(val).reject(&:blank?) : super
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
push_type_core-0.5.3 app/fields/push_type/select_field.rb
push_type_core-0.5.2 app/fields/push_type/select_field.rb
push_type_core-0.5.1 app/fields/push_type/select_field.rb
push_type_core-0.5.0 app/fields/push_type/select_field.rb
push_type_core-0.5.0.alpha.5 app/fields/push_type/select_field.rb
push_type_core-0.5.0.alpha.4 app/fields/push_type/select_field.rb
push_type_core-0.5.0.alpha.3 app/fields/push_type/select_field.rb