Sha256: ffcd51437e48a3a4cc13a0c6bd7949a71d0f9b718f358760a17697f4272d8006
Contents?: true
Size: 1.71 KB
Versions: 12
Compression:
Stored size: 1.71 KB
Contents
module Avo module Fields class SelectField < BaseField attr_reader :options attr_reader :enum attr_reader :display_value def initialize(id, **args, &block) args[:placeholder] ||= I18n.t("avo.choose_an_option") super(id, **args, &block) @options = args[:options] || args[:enum] @options = ActiveSupport::HashWithIndifferentAccess.new @options if @options.is_a? Hash @enum = args[:enum].present? ? args[:enum] : nil @display_value = args[:display_value].present? ? args[:display_value] : false end def options_for_select if options.respond_to? :call computed_options = options.call model: model, resource: resource, view: view, field: self if display_value computed_options.map { |label, value| [value, value] }.to_h else computed_options end elsif enum.present? if display_value options.invert else options.map { |label, value| [label, label] }.to_h end elsif display_value options.map { |label, value| [value, value] }.to_h else options end end def label if options.respond_to? :call computed_options = options.call model: model, resource: resource, view: view, field: self return value if display_value computed_options.invert.stringify_keys[value] elsif enum.present? if display_value options[value] else value end elsif display_value value else options.invert.stringify_keys[value] end end end end end
Version data entries
12 entries across 12 versions & 1 rubygems