Class: RubyUIAdmin::Fields::BooleanGroupField
- Defined in:
- lib/ruby_ui_admin/fields/boolean_group_field.rb
Overview
A group of checkboxes whose value is a Hash of { key => boolean }.
field :feature_flags, as: :boolean_group, options: { "beta" => "Beta", "pro" => "Pro" }
Instance Attribute Summary
Attributes inherited from BaseField
#block, #id, #options, #resource
Instance Method Summary collapse
- #checked?(record, key) ⇒ Boolean
- #default_hidden_views ⇒ Object
- #enabled_labels(record) ⇒ Object
-
#fill_value(record, submitted) ⇒ Object
Build the full { key => bool } hash from the submitted (checked-only) params.
-
#group_options ⇒ Object
{ key => label }. -
#permit_param ⇒ Object
Hash param: permit arbitrary nested keys.
Methods inherited from BaseField
#database_id, #default_value, #description, field_type, #fill, #filterable?, #formatted_value, #has_default?, #help, #initialize, #link_to_record?, #name, #permit_params, #permitted_param, #placeholder, #readonly?, register_as, #required?, #sort_lambda, #sortable?, #type, #value, #visible?, #visible_in_view?
Constructor Details
This class inherits a constructor from RubyUIAdmin::Fields::BaseField
Instance Method Details
#checked?(record, key) ⇒ Boolean
22 23 24 25 26 27 |
# File 'lib/ruby_ui_admin/fields/boolean_group_field.rb', line 22 def checked?(record, key) value = value(record) return false unless value.respond_to?(:[]) truthy?(value[key.to_s].nil? ? value[key.to_sym] : value[key.to_s]) end |
#default_hidden_views ⇒ Object
10 11 12 |
# File 'lib/ruby_ui_admin/fields/boolean_group_field.rb', line 10 def default_hidden_views %i[index] end |
#enabled_labels(record) ⇒ Object
29 30 31 |
# File 'lib/ruby_ui_admin/fields/boolean_group_field.rb', line 29 def enabled_labels(record) .select { |key, _label| checked?(record, key) }.values end |
#fill_value(record, submitted) ⇒ Object
Build the full { key => bool } hash from the submitted (checked-only) params.
39 40 41 42 43 44 45 |
# File 'lib/ruby_ui_admin/fields/boolean_group_field.rb', line 39 def fill_value(record, submitted) submitted ||= {} result = .keys.to_h { |key| [key, truthy?(submitted[key])] } setter = "#{database_id}=" record.public_send(setter, result) if record.respond_to?(setter) end |
#group_options ⇒ Object
{ key => label }. options: may be a Hash, an Array of keys, or a lambda.
15 16 17 18 19 20 |
# File 'lib/ruby_ui_admin/fields/boolean_group_field.rb', line 15 def raw = [:options] || {} raw = ExecutionContext.new(target: raw, resource: resource).handle if raw.respond_to?(:call) raw.is_a?(Hash) ? raw.transform_keys(&:to_s) : Array(raw).to_h { |key| [key.to_s, key.to_s.humanize] } end |
#permit_param ⇒ Object
Hash param: permit arbitrary nested keys.
34 35 36 |
# File 'lib/ruby_ui_admin/fields/boolean_group_field.rb', line 34 def permit_param {permitted_param => {}} end |