Class: Avo::Fields::KeyValueField
- Defined in:
- lib/avo/fields/key_value_field.rb
Defined Under Namespace
Classes: EditComponent, ShowComponent
Instance Attribute Summary collapse
-
#action_text ⇒ Object
readonly
Returns the value of attribute action_text.
-
#disable_adding_rows ⇒ Object
readonly
Returns the value of attribute disable_adding_rows.
-
#disable_editing_keys ⇒ Object
readonly
Returns the value of attribute disable_editing_keys.
-
#key_label ⇒ Object
readonly
Returns the value of attribute key_label.
-
#value_label ⇒ Object
readonly
Returns the value of attribute value_label.
Attributes inherited from BaseField
#action, #as_avatar, #autocomplete, #block, #computable, #computed, #computed_value, #default, #for_attribute, #for_presentation_only, #format_using, #help, #id, #null_values, #nullable, #panel_name, #readonly, #record, #required, #sortable, #stacked, #summarizable, #user
Attributes included from Concerns::IsDisabled
Attributes included from Concerns::HasHTMLAttributes
Attributes included from Concerns::VisibleInDifferentViews
#show_on_edit, #show_on_index, #show_on_new, #show_on_preview, #show_on_show
Attributes included from Concerns::IsVisible
Attributes included from Concerns::IsResourceItem
Instance Method Summary collapse
- #fill_field(record, key, value, _params) ⇒ Object
-
#initialize(id, **args, &block) ⇒ KeyValueField
constructor
A new instance of KeyValueField.
- #options ⇒ Object
- #parsed_value ⇒ Object
- #to_permitted_param ⇒ Object
Methods inherited from BaseField
#apply_update_using, #assign_value, #custom?, #custom_name?, #database_id, #default_name, #execute_block, #form_field_label, #has_attribute?, #has_own_panel?, #hidden_in_reflection?, #meta, #name, #options_for_filter, #placeholder, #plural_name, #record_errors, #resolve_attribute, #table_header_label, #translated_name, #translated_plural_name, #translation_key, #type, #updatable, #value, #visible_in_reflection?
Methods included from Concerns::UseViewComponents
#component_for_view, #view_component_name, #view_component_namespace
Methods included from Concerns::IsRequired
Methods included from Concerns::IsDisabled
Methods included from Concerns::IsReadonly
Methods included from Concerns::HasHTMLAttributes
Methods included from Concerns::HasDefault
Methods included from Concerns::HasHelpers
Methods included from Concerns::VisibleInDifferentViews
#except_on, #hide_on, #initialize_views, #only_on, #post_initialize, #show_on, #show_on_create, #show_on_update, #visible_in_view?
Methods included from Concerns::IsVisible
Methods included from Concerns::HasItemType
#is_field?, #is_heading?, #is_main_panel?, #is_panel?, #is_row?, #is_sidebar?, #is_tab?, #is_tab_group?, #is_tool?
Methods included from Concerns::IsResourceItem
Methods included from Concerns::Hydration
Constructor Details
#initialize(id, **args, &block) ⇒ KeyValueField
Returns a new instance of KeyValueField.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/avo/fields/key_value_field.rb', line 10 def initialize(id, **args, &block) super(id, **args, &block) hide_on :index @key_label = args[:key_label] || I18n.translate("avo.key_value_field.key") @value_label = args[:value_label] || I18n.translate("avo.key_value_field.value") @action_text = args[:action_text] || I18n.translate("avo.key_value_field.add_row") @delete_text = args[:delete_text] || I18n.translate("avo.key_value_field.delete_row") @reorder_text = args[:reorder_text] || I18n.translate("avo.key_value_field.reorder_row") if args[:disabled] == true @disable_editing_keys = true @disable_editing_values = true @disable_adding_rows = true @disable_deleting_rows = true else @disable_editing_keys = args[:disable_editing_keys].present? ? args[:disable_editing_keys] : false @disable_editing_values = args[:disable_editing_values].present? ? args[:disable_editing_values] : false # disabling editing keys also disables adding rows (doesn't take into account the value of disable_adding_rows) @disable_adding_rows = if args[:disable_editing_keys].present? && args[:disable_editing_keys] == true true elsif args[:disable_adding_rows].present? args[:disable_adding_rows] else false end @disable_deleting_rows = args[:disable_deleting_rows].present? ? args[:disable_deleting_rows] : false end end |
Instance Attribute Details
#action_text ⇒ Object (readonly)
Returns the value of attribute action_text.
8 9 10 |
# File 'lib/avo/fields/key_value_field.rb', line 8 def action_text @action_text end |
#disable_adding_rows ⇒ Object (readonly)
Returns the value of attribute disable_adding_rows.
7 8 9 |
# File 'lib/avo/fields/key_value_field.rb', line 7 def disable_adding_rows @disable_adding_rows end |
#disable_editing_keys ⇒ Object (readonly)
Returns the value of attribute disable_editing_keys.
6 7 8 |
# File 'lib/avo/fields/key_value_field.rb', line 6 def disable_editing_keys @disable_editing_keys end |
#key_label ⇒ Object (readonly)
Returns the value of attribute key_label.
8 9 10 |
# File 'lib/avo/fields/key_value_field.rb', line 8 def key_label @key_label end |
#value_label ⇒ Object (readonly)
Returns the value of attribute value_label.
8 9 10 |
# File 'lib/avo/fields/key_value_field.rb', line 8 def value_label @value_label end |
Instance Method Details
#fill_field(record, key, value, _params) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/avo/fields/key_value_field.rb', line 65 def fill_field(record, key, value, _params) begin new_value = JSON.parse(value) rescue new_value = {} end record.send(:"#{key}_will_change!") record.send(:"#{key}=", new_value) record end |
#options ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/avo/fields/key_value_field.rb', line 51 def { key_label: @key_label, value_label: @value_label, action_text: @action_text, delete_text: @delete_text, reorder_text: @reorder_text, disable_editing_keys: @disable_editing_keys, disable_editing_values: @disable_editing_values, disable_adding_rows: @disable_adding_rows, disable_deleting_rows: @disable_deleting_rows } end |
#parsed_value ⇒ Object
45 46 47 48 49 |
# File 'lib/avo/fields/key_value_field.rb', line 45 def parsed_value value.to_json rescue {} end |
#to_permitted_param ⇒ Object
41 42 43 |
# File 'lib/avo/fields/key_value_field.rb', line 41 def to_permitted_param [:"#{id}", "#{id}": {}] end |