activeadmin_addons 1.8.3 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 55def873497d38747a6897932970590af63bd4dd135293804d7b39a938fd082f
4
- data.tar.gz: 7e544cbc4d57033643f9334d46c05769044423faca46b1a2ea3b8335340a4ecd
3
+ metadata.gz: 31434452186d9b02e7d7272b27d06d1e4831b1c4c6de9c068e973cf5311da476
4
+ data.tar.gz: 0a43f7f1d45b50c01eeb4b4f7a56f5ff9bcb4329a24adb4f77fc1d1ca28fa0e7
5
5
  SHA512:
6
- metadata.gz: 91987d8083fb82cfb200f87bd252ccaed20bbb7072be7ff9853d492e13baf089d6bd4e564996711f25f44f4105608de539e68dac4d17d918c0c74f3fb497577e
7
- data.tar.gz: 770e27656a0ba98f37a32e449c35ed06a55d7cb9b07b090177bebcee25681b76d0c9c12f10507da31a068e7114ff76b9d5709a4e950867f5c2948d73225ca3e7
6
+ metadata.gz: 10db20adc03c85569ab16debe8edffd16115b348baf7779e79544fa42a265058cc60d3d24ac77dea5e85591297a6daeb2ede226141cb7dbb4e34d0776966462a
7
+ data.tar.gz: b911e25eeb0801b2bbe7857c012f4c93fa71a2bf77d574d552461e39cdedfcdd698673ed625a4034c749852f2d1b47e1387a7b7c0a4f754cdb3311c753beab6a
@@ -43,9 +43,8 @@ class DateTimePickerInput < ActiveAdminAddons::InputBase
43
43
 
44
44
  def datetime_picker_options
45
45
  @datetime_picker_options ||= begin
46
- opts = options.fetch(:picker_options, {})
47
- opts = Hash[opts.map { |k, v| [k.to_s.camelcase(:lower), v] }]
48
- default_picker_options.merge(opts)
46
+ opts = default_picker_options.merge(options.fetch(:picker_options, {}))
47
+ Hash[opts.map { |k, v| [k.to_s.camelcase(:lower), v] }]
49
48
  end
50
49
  end
51
50
 
@@ -15,6 +15,7 @@ class NestedSelectInput < ActiveAdminAddons::InputBase
15
15
  def hierarchy
16
16
  data = get_levels_data
17
17
  raise("Undefined levels on nested_select") if data.empty?
18
+
18
19
  set_parent_attributes(data)
19
20
  data.reverse
20
21
  end
@@ -67,17 +68,26 @@ class NestedSelectInput < ActiveAdminAddons::InputBase
67
68
  parent_attribute = level_data[:parent_attribute]
68
69
  build_virtual_attr(parent_attribute)
69
70
  instance = instance_from_attribute_name(level_data[:attribute])
70
- if instance && instance.respond_to?(parent_attribute)
71
+ if instance&.respond_to?(parent_attribute)
71
72
  @object.send("#{parent_attribute}=", instance.send(parent_attribute))
72
73
  end
73
74
  end
74
75
 
75
76
  def instance_from_attribute_name(attribute)
76
77
  return unless attribute
78
+
77
79
  attribute_value = @object.send(attribute)
78
80
  return unless attribute_value
79
- klass = attribute.to_s.chomp("_id").camelize.constantize
80
- klass.find_by_id(attribute_value)
81
+
82
+ klass = class_from_attribute(attribute)
83
+ klass.find_by(id: attribute_value)
84
+ end
85
+
86
+ def class_from_attribute(attribute)
87
+ association_name = attribute.to_s.chomp("_id")
88
+ association_name.camelize.constantize
89
+ rescue NameError
90
+ object_class.reflect_on_association(association_name).klass
81
91
  end
82
92
 
83
93
  def build_virtual_attr(attribute_name)
@@ -45,7 +45,7 @@ module ActiveAdminAddons
45
45
  'data-model' => class_name,
46
46
  'data-object_id' => model.id,
47
47
  'data-field' => attribute,
48
- 'data-url' => context.resource_path(model),
48
+ 'data-url' => resource_url,
49
49
  'data-value' => data
50
50
  }
51
51
  end
@@ -16,6 +16,7 @@ module ActiveAdminAddons
16
16
 
17
17
  def method_to_input_id(id)
18
18
  raise "invalid input id" if id.blank?
19
+
19
20
  "#{prefixed_method}_#{id}"
20
21
  end
21
22
 
@@ -6,11 +6,13 @@ module ActiveAdminAddons
6
6
 
7
7
  def valid_method
8
8
  raise "invalid method given" if method.blank?
9
+
9
10
  method
10
11
  end
11
12
 
12
13
  def valid_object
13
14
  raise "blank object given" if @object.blank?
15
+
14
16
  @object
15
17
  end
16
18
 
@@ -42,6 +44,10 @@ module ActiveAdminAddons
42
44
  @input_value ||= valid_object.send(valid_method)
43
45
  end
44
46
 
47
+ def input_association_value
48
+ @input_association_value ||= valid_object.send(association_name)
49
+ end
50
+
45
51
  def translated_method
46
52
  valid_object.class.human_attribute_name(valid_method)
47
53
  end
@@ -60,6 +66,7 @@ module ActiveAdminAddons
60
66
  def build_virtual_attr
61
67
  attribute_name = "virtual_#{valid_method}_attr"
62
68
  fail "#{attribute_name} is already defined" if valid_object.respond_to?(attribute_name)
69
+
63
70
  valid_object.singleton_class.send(:attr_accessor, attribute_name)
64
71
  attribute_name
65
72
  end
@@ -41,6 +41,7 @@ module ActiveAdminAddons
41
41
  def load_class(class_attr)
42
42
  @css_classes ||= []
43
43
  return if class_attr.blank?
44
+
44
45
  class_attr = class_attr.strip
45
46
  @css_classes << class_attr
46
47
  class_attr
@@ -49,6 +50,7 @@ module ActiveAdminAddons
49
50
  def get_data_attr_value(attr_name)
50
51
  item = data_attr_options[attr_name.to_sym]
51
52
  return unless item
53
+
52
54
  item[:value]
53
55
  end
54
56
 
@@ -56,13 +58,14 @@ module ActiveAdminAddons
56
58
 
57
59
  def formatted_option_value(item)
58
60
  return item[:value].send(item[:formatter]) if item[:formatter]
61
+
59
62
  item[:value]
60
63
  end
61
64
 
62
65
  def load_option_attr(attr_name, options)
63
66
  value = calculate_attr_value(attr_name, options)
64
67
  item = { value: value }
65
- item[:formatter] = options[:formatter] unless options[:formatter].blank?
68
+ item[:formatter] = options[:formatter] if options[:formatter].present?
66
69
  item
67
70
  end
68
71
 
@@ -80,6 +83,7 @@ module ActiveAdminAddons
80
83
  default_value = attr_options[:default]
81
84
  return unless default_value
82
85
  return default_value.call if default_value.is_a?(Proc)
86
+
83
87
  default_value
84
88
  end
85
89
 
@@ -42,6 +42,7 @@ module ActiveAdminAddons
42
42
 
43
43
  def item_to_select_option(item)
44
44
  return unless item
45
+
45
46
  {
46
47
  id: item.send((valid_options[:value] || :id)),
47
48
  text: item.send((valid_options[:display_name] || :name))
@@ -66,19 +67,26 @@ module ActiveAdminAddons
66
67
  end
67
68
 
68
69
  def selected_item
69
- @selected_item ||= selected_collection.first
70
+ @selected_item ||= begin
71
+ input_association_value
72
+ rescue NoMethodError
73
+ selected_collection.first
74
+ end
70
75
  end
71
76
 
72
77
  private
73
78
 
74
79
  def active_record_relation?(value)
75
80
  klass = value.class.name
76
- klass == "ActiveRecord::Relation" ||
77
- klass == "ActiveRecord::Associations::CollectionProxy"
81
+ [
82
+ "ActiveRecord::Relation",
83
+ "ActiveRecord::Associations::CollectionProxy"
84
+ ].include?(klass)
78
85
  end
79
86
 
80
87
  def valid_options
81
88
  raise "missing @options hash" unless !!@options
89
+
82
90
  @options
83
91
  end
84
92
 
@@ -5,9 +5,19 @@ module ::Formtastic
5
5
 
6
6
  def default_input_type(method, options = {})
7
7
  input_type = original_default_input_type(method, options)
8
- input_type = :datepicker if input_type == :date_select
8
+
9
+ if input_type == :date_select && active_admin_context?
10
+ input_type = :datepicker
11
+ end
12
+
9
13
  input_type
10
14
  end
15
+
16
+ def active_admin_context?
17
+ options[:builder] == ::ActiveAdmin::FormBuilder
18
+ rescue NameError
19
+ false
20
+ end
11
21
  end
12
22
  end
13
23
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveadminAddons
2
- VERSION = "1.8.3"
2
+ VERSION = "1.9.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin_addons
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.3
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Platanus
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-07-27 00:00:00.000000000 Z
14
+ date: 2021-11-24 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: active_material