rails_admin 3.0.0 → 3.1.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (161) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/Rakefile +2 -0
  4. data/app/controllers/rails_admin/application_controller.rb +2 -0
  5. data/app/controllers/rails_admin/main_controller.rb +7 -13
  6. data/app/helpers/rails_admin/application_helper.rb +8 -4
  7. data/app/helpers/rails_admin/form_builder.rb +10 -0
  8. data/app/helpers/rails_admin/main_helper.rb +2 -0
  9. data/app/views/layouts/rails_admin/_head.html.erb +9 -0
  10. data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +3 -1
  11. data/app/views/layouts/rails_admin/application.html.erb +1 -1
  12. data/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +2 -2
  13. data/app/views/rails_admin/main/_form_filtering_select.html.erb +1 -1
  14. data/app/views/rails_admin/main/index.html.erb +1 -1
  15. data/config/initializers/active_record_extensions.rb +25 -0
  16. data/config/initializers/mongoid_extensions.rb +2 -0
  17. data/config/routes.rb +2 -0
  18. data/lib/generators/rails_admin/importmap_formatter.rb +28 -0
  19. data/lib/generators/rails_admin/install_generator.rb +68 -9
  20. data/lib/generators/rails_admin/templates/rails_admin.js +1 -0
  21. data/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -0
  22. data/lib/generators/rails_admin/templates/rails_admin.webpacker.js +2 -0
  23. data/lib/generators/rails_admin/utils.rb +2 -0
  24. data/lib/rails_admin/abstract_model.rb +9 -2
  25. data/lib/rails_admin/adapters/active_record/association.rb +10 -0
  26. data/lib/rails_admin/adapters/active_record/object_extension.rb +2 -0
  27. data/lib/rails_admin/adapters/active_record/property.rb +2 -0
  28. data/lib/rails_admin/adapters/active_record.rb +25 -2
  29. data/lib/rails_admin/adapters/composite_primary_keys/association.rb +45 -0
  30. data/lib/rails_admin/adapters/composite_primary_keys.rb +40 -0
  31. data/lib/rails_admin/adapters/mongoid/association.rb +14 -4
  32. data/lib/rails_admin/adapters/mongoid/bson.rb +2 -0
  33. data/lib/rails_admin/adapters/mongoid/extension.rb +2 -0
  34. data/lib/rails_admin/adapters/mongoid/object_extension.rb +2 -0
  35. data/lib/rails_admin/adapters/mongoid/property.rb +2 -0
  36. data/lib/rails_admin/adapters/mongoid.rb +3 -1
  37. data/lib/rails_admin/config/actions/base.rb +2 -0
  38. data/lib/rails_admin/config/actions/bulk_delete.rb +2 -0
  39. data/lib/rails_admin/config/actions/dashboard.rb +2 -0
  40. data/lib/rails_admin/config/actions/delete.rb +2 -0
  41. data/lib/rails_admin/config/actions/edit.rb +2 -0
  42. data/lib/rails_admin/config/actions/export.rb +2 -0
  43. data/lib/rails_admin/config/actions/history_index.rb +2 -0
  44. data/lib/rails_admin/config/actions/history_show.rb +2 -0
  45. data/lib/rails_admin/config/actions/index.rb +2 -0
  46. data/lib/rails_admin/config/actions/new.rb +2 -0
  47. data/lib/rails_admin/config/actions/show.rb +2 -0
  48. data/lib/rails_admin/config/actions/show_in_app.rb +2 -0
  49. data/lib/rails_admin/config/actions.rb +2 -0
  50. data/lib/rails_admin/config/configurable.rb +2 -0
  51. data/lib/rails_admin/config/fields/association.rb +2 -0
  52. data/lib/rails_admin/config/fields/base.rb +24 -8
  53. data/lib/rails_admin/config/fields/factories/action_text.rb +2 -0
  54. data/lib/rails_admin/config/fields/factories/active_storage.rb +2 -0
  55. data/lib/rails_admin/config/fields/factories/association.rb +6 -5
  56. data/lib/rails_admin/config/fields/factories/carrierwave.rb +2 -0
  57. data/lib/rails_admin/config/fields/factories/devise.rb +2 -0
  58. data/lib/rails_admin/config/fields/factories/dragonfly.rb +2 -0
  59. data/lib/rails_admin/config/fields/factories/enum.rb +2 -0
  60. data/lib/rails_admin/config/fields/factories/paperclip.rb +2 -0
  61. data/lib/rails_admin/config/fields/factories/password.rb +2 -0
  62. data/lib/rails_admin/config/fields/factories/shrine.rb +2 -0
  63. data/lib/rails_admin/config/fields/group.rb +2 -0
  64. data/lib/rails_admin/config/fields/types/action_text.rb +2 -0
  65. data/lib/rails_admin/config/fields/types/active_record_enum.rb +2 -0
  66. data/lib/rails_admin/config/fields/types/active_storage.rb +2 -0
  67. data/lib/rails_admin/config/fields/types/all.rb +3 -0
  68. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +3 -5
  69. data/lib/rails_admin/config/fields/types/boolean.rb +3 -1
  70. data/lib/rails_admin/config/fields/types/bson_object_id.rb +2 -0
  71. data/lib/rails_admin/config/fields/types/carrierwave.rb +2 -0
  72. data/lib/rails_admin/config/fields/types/citext.rb +2 -0
  73. data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -0
  74. data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -0
  75. data/lib/rails_admin/config/fields/types/color.rb +2 -0
  76. data/lib/rails_admin/config/fields/types/composite_keys_belongs_to_association.rb +31 -0
  77. data/lib/rails_admin/config/fields/types/date.rb +2 -0
  78. data/lib/rails_admin/config/fields/types/datetime.rb +2 -0
  79. data/lib/rails_admin/config/fields/types/decimal.rb +2 -0
  80. data/lib/rails_admin/config/fields/types/dragonfly.rb +2 -0
  81. data/lib/rails_admin/config/fields/types/enum.rb +2 -0
  82. data/lib/rails_admin/config/fields/types/file_upload.rb +2 -0
  83. data/lib/rails_admin/config/fields/types/float.rb +2 -0
  84. data/lib/rails_admin/config/fields/types/froala.rb +2 -0
  85. data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +2 -0
  86. data/lib/rails_admin/config/fields/types/has_many_association.rb +2 -0
  87. data/lib/rails_admin/config/fields/types/has_one_association.rb +3 -1
  88. data/lib/rails_admin/config/fields/types/hidden.rb +2 -0
  89. data/lib/rails_admin/config/fields/types/inet.rb +2 -0
  90. data/lib/rails_admin/config/fields/types/integer.rb +2 -0
  91. data/lib/rails_admin/config/fields/types/json.rb +2 -0
  92. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +10 -0
  93. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +2 -0
  94. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +2 -0
  95. data/lib/rails_admin/config/fields/types/numeric.rb +2 -0
  96. data/lib/rails_admin/config/fields/types/paperclip.rb +2 -0
  97. data/lib/rails_admin/config/fields/types/password.rb +2 -0
  98. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +2 -0
  99. data/lib/rails_admin/config/fields/types/serialized.rb +2 -0
  100. data/lib/rails_admin/config/fields/types/shrine.rb +2 -0
  101. data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -0
  102. data/lib/rails_admin/config/fields/types/string.rb +2 -0
  103. data/lib/rails_admin/config/fields/types/string_like.rb +2 -0
  104. data/lib/rails_admin/config/fields/types/text.rb +2 -0
  105. data/lib/rails_admin/config/fields/types/time.rb +2 -0
  106. data/lib/rails_admin/config/fields/types/timestamp.rb +2 -0
  107. data/lib/rails_admin/config/fields/types/uuid.rb +2 -0
  108. data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -0
  109. data/lib/rails_admin/config/fields/types.rb +2 -0
  110. data/lib/rails_admin/config/fields.rb +3 -1
  111. data/lib/rails_admin/config/groupable.rb +2 -0
  112. data/lib/rails_admin/config/has_description.rb +2 -0
  113. data/lib/rails_admin/config/has_fields.rb +3 -1
  114. data/lib/rails_admin/config/has_groups.rb +2 -0
  115. data/lib/rails_admin/config/hideable.rb +2 -0
  116. data/lib/rails_admin/config/inspectable.rb +2 -0
  117. data/lib/rails_admin/config/model.rb +2 -0
  118. data/lib/rails_admin/config/proxyable/proxy.rb +2 -0
  119. data/lib/rails_admin/config/proxyable.rb +2 -0
  120. data/lib/rails_admin/config/sections/base.rb +2 -0
  121. data/lib/rails_admin/config/sections/create.rb +2 -0
  122. data/lib/rails_admin/config/sections/edit.rb +2 -0
  123. data/lib/rails_admin/config/sections/export.rb +2 -0
  124. data/lib/rails_admin/config/sections/list.rb +2 -0
  125. data/lib/rails_admin/config/sections/modal.rb +2 -0
  126. data/lib/rails_admin/config/sections/nested.rb +2 -0
  127. data/lib/rails_admin/config/sections/show.rb +2 -0
  128. data/lib/rails_admin/config/sections/update.rb +2 -0
  129. data/lib/rails_admin/config/sections.rb +2 -0
  130. data/lib/rails_admin/config.rb +7 -1
  131. data/lib/rails_admin/engine.rb +28 -17
  132. data/lib/rails_admin/extension.rb +2 -0
  133. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +2 -0
  134. data/lib/rails_admin/extensions/cancancan.rb +2 -0
  135. data/lib/rails_admin/extensions/controller_extension.rb +2 -0
  136. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +3 -1
  137. data/lib/rails_admin/extensions/paper_trail.rb +2 -0
  138. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +2 -0
  139. data/lib/rails_admin/extensions/pundit.rb +2 -0
  140. data/lib/rails_admin/support/csv_converter.rb +2 -1
  141. data/lib/rails_admin/support/datetime.rb +3 -1
  142. data/lib/rails_admin/support/esmodule_preprocessor.rb +4 -0
  143. data/lib/rails_admin/support/hash_helper.rb +2 -0
  144. data/lib/rails_admin/version.rb +4 -2
  145. data/lib/rails_admin.rb +3 -1
  146. data/lib/tasks/rails_admin.rake +2 -0
  147. data/package.json +1 -1
  148. data/src/rails_admin/base.js +13 -1
  149. data/src/rails_admin/filtering-multiselect.js +5 -10
  150. data/src/rails_admin/filtering-select.js +2 -2
  151. data/src/rails_admin/nested-form-hooks.js +1 -1
  152. data/src/rails_admin/remote-form.js +4 -5
  153. data/src/rails_admin/styles/base/theming.scss +10 -0
  154. data/src/rails_admin/styles/base.scss +5 -5
  155. data/src/rails_admin/ui.js +1 -1
  156. data/src/rails_admin/widgets.js +2 -2
  157. data/vendor/assets/javascripts/rails_admin/jquery3.js +118 -109
  158. metadata +11 -7
  159. data/lib/generators/rails_admin/templates/rails_admin.js.erb +0 -2
  160. data/lib/generators/rails_admin/templates/rails_admin.scss +0 -1
  161. data/lib/generators/rails_admin/templates/webpack.config.js +0 -29
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mongoid'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Adapters
3
5
  module Mongoid
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Adapters
3
5
  module Mongoid
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Adapters
3
5
  module Mongoid
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mongoid'
2
4
  require 'rails_admin/config/sections/list'
3
5
  require 'rails_admin/adapters/mongoid/association'
@@ -52,7 +54,7 @@ module RailsAdmin
52
54
  scope
53
55
  rescue NoMethodError => e
54
56
  if /page/.match?(e.message)
55
- e = e.exception <<-ERROR.gsub(/^\s{12}/, '')
57
+ e = e.exception <<~ERROR
56
58
  #{e.message}
57
59
  If you don't have kaminari-mongoid installed, add `gem 'kaminari-mongoid'` to your Gemfile.
58
60
  ERROR
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/proxyable'
2
4
  require 'rails_admin/config/configurable'
3
5
  require 'rails_admin/config/hideable'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'activemodel-serializers-xml'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Actions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  # A module for all configurables.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config'
2
4
  require 'rails_admin/config/fields/base'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/proxyable'
2
4
  require 'rails_admin/config/configurable'
3
5
  require 'rails_admin/config/hideable'
@@ -58,6 +60,20 @@ module RailsAdmin
58
60
  !virtual? || children_fields.first || false
59
61
  end
60
62
 
63
+ def sort_column
64
+ if sortable == true
65
+ "#{abstract_model.table_name}.#{name}"
66
+ elsif (sortable.is_a?(String) || sortable.is_a?(Symbol)) && sortable.to_s.include?('.') # just provide sortable, don't do anything smart
67
+ sortable
68
+ elsif sortable.is_a?(Hash) # just join sortable hash, don't do anything smart
69
+ "#{sortable.keys.first}.#{sortable.values.first}"
70
+ elsif association # use column on target table
71
+ "#{associated_model_config.abstract_model.table_name}.#{sortable}"
72
+ else # use described column in the field conf.
73
+ "#{abstract_model.table_name}.#{sortable}"
74
+ end
75
+ end
76
+
61
77
  register_instance_option :searchable do
62
78
  !virtual? || children_fields.first || false
63
79
  end
@@ -301,13 +317,13 @@ module RailsAdmin
301
317
  def value
302
318
  bindings[:object].safe_send(name)
303
319
  rescue NoMethodError => e
304
- raise e.exception <<-ERROR.gsub(/^\s{10}/, '')
305
- #{e.message}
306
- If you want to use a RailsAdmin virtual field(= a field without corresponding instance method),
307
- you should declare 'formatted_value' in the field definition.
308
- field :#{name} do
309
- formatted_value{ bindings[:object].call_some_method }
310
- end
320
+ raise e.exception <<~ERROR
321
+ #{e.message}
322
+ If you want to use a RailsAdmin virtual field(= a field without corresponding instance method),
323
+ you should declare 'formatted_value' in the field definition.
324
+ field :#{name} do
325
+ formatted_value{ bindings[:object].call_some_method }
326
+ end
311
327
  ERROR
312
328
  end
313
329
 
@@ -337,7 +353,7 @@ module RailsAdmin
337
353
  end
338
354
 
339
355
  def parse_input(_params)
340
- # overriden
356
+ # overridden
341
357
  end
342
358
 
343
359
  def inverse_of
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields'
2
4
  require 'rails_admin/config/fields/types'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields'
2
4
  require 'rails_admin/config/fields/types'
3
5
  require 'rails_admin/config/fields/types/file_upload'
@@ -1,11 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields'
2
4
  require 'rails_admin/config/fields/types'
3
5
  require 'rails_admin/config/fields/types/belongs_to_association'
4
6
 
5
7
  RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
6
- association = parent.abstract_model.associations.detect { |a| a.foreign_key == properties.name && %i[belongs_to has_and_belongs_to_many].include?(a.type) }
7
- if association
8
- field = RailsAdmin::Config::Fields::Types.load("#{association.polymorphic? ? :polymorphic : association.type}_association").new(parent, association.name, association)
8
+ parent.abstract_model.associations.filter { |a| Array(a.foreign_key).include?(properties.name) && %i[belongs_to has_and_belongs_to_many].include?(a.type) }.each do |association|
9
+ field = RailsAdmin::Config::Fields::Types.load(association.field_type).new(parent, association.name, association)
9
10
  fields << field
10
11
 
11
12
  child_columns = []
@@ -13,7 +14,7 @@ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
13
14
  %i[foreign_key foreign_type foreign_inverse_of]
14
15
  else
15
16
  [:foreign_key]
16
- end.collect { |k| association.send(k) }.compact
17
+ end.flat_map { |k| Array(association.send(k)) }.compact
17
18
 
18
19
  parent.abstract_model.properties.select { |p| possible_field_names.include? p.name }.each do |column|
19
20
  child_field = fields.detect { |f| f.name.to_s == column.name.to_s }
@@ -27,5 +28,5 @@ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
27
28
  end
28
29
 
29
30
  field.children_fields child_columns.collect(&:name)
30
- end
31
+ end.any?
31
32
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields'
2
4
  require 'rails_admin/config/fields/types'
3
5
  require 'rails_admin/config/fields/types/file_upload'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields'
2
4
  require 'rails_admin/config/fields/types'
3
5
  require 'rails_admin/config/fields/types/password'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields'
2
4
  require 'rails_admin/config/fields/types'
3
5
  require 'rails_admin/config/fields/types/file_upload'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields'
2
4
  require 'rails_admin/config/fields/types/enum'
3
5
  require 'rails_admin/config/fields/types/active_record_enum'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields'
2
4
  require 'rails_admin/config/fields/types'
3
5
  require 'rails_admin/config/fields/types/file_upload'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields'
2
4
  require 'rails_admin/config/fields/types/password'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields'
2
4
  require 'rails_admin/config/fields/types'
3
5
  require 'rails_admin/config/fields/types/file_upload'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/core_ext/string/inflections'
2
4
  require 'rails_admin/config/proxyable'
3
5
  require 'rails_admin/config/configurable'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/text'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/enum'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/file_upload'
2
4
 
3
5
  module RailsAdmin
@@ -1,9 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/action_text'
2
4
  require 'rails_admin/config/fields/types/active_record_enum'
3
5
  require 'rails_admin/config/fields/types/active_storage'
4
6
  require 'rails_admin/config/fields/types/belongs_to_association'
5
7
  require 'rails_admin/config/fields/types/boolean'
6
8
  require 'rails_admin/config/fields/types/bson_object_id'
9
+ require 'rails_admin/config/fields/types/composite_keys_belongs_to_association'
7
10
  require 'rails_admin/config/fields/types/date'
8
11
  require 'rails_admin/config/fields/types/datetime'
9
12
  require 'rails_admin/config/fields/types/decimal'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/association'
2
4
 
3
5
  module RailsAdmin
@@ -27,12 +29,8 @@ module RailsAdmin
27
29
  true
28
30
  end
29
31
 
30
- def associated_primary_key
31
- association.primary_key
32
- end
33
-
34
32
  def selected_id
35
- bindings[:object].send(association.key_accessor)
33
+ bindings[:object].safe_send(association.key_accessor)
36
34
  end
37
35
 
38
36
  def method_name
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Fields
@@ -31,7 +33,7 @@ module RailsAdmin
31
33
  end
32
34
 
33
35
  register_instance_option :pretty_value do
34
- %(<span class="label label-#{css_classes[form_value]}">#{labels[form_value]}</span>).html_safe
36
+ %(<span class="badge bg-#{css_classes[form_value]}">#{labels[form_value]}</span>).html_safe
35
37
  end
36
38
 
37
39
  register_instance_option :export_value do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/string'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/base'
2
4
  require 'rails_admin/config/fields/types/file_upload'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/text'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/text'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/text'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/string_like'
2
4
 
3
5
  module RailsAdmin
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_admin/config/fields/types/belongs_to_association'
4
+
5
+ module RailsAdmin
6
+ module Config
7
+ module Fields
8
+ module Types
9
+ class CompositeKeysBelongsToAssociation < RailsAdmin::Config::Fields::Types::BelongsToAssociation
10
+ RailsAdmin::Config::Fields::Types.register(self)
11
+
12
+ register_instance_option :allowed_methods do
13
+ nested_form ? [method_name] : Array(association.foreign_key)
14
+ end
15
+
16
+ def selected_id
17
+ association.foreign_key.map { |attribute| bindings[:object].safe_send(attribute) }.to_composite_keys.to_s
18
+ end
19
+
20
+ def parse_input(params)
21
+ return unless params[method_name].present? && association.foreign_key.is_a?(Array) && !nested_form
22
+
23
+ association.foreign_key.zip(CompositePrimaryKeys::CompositeKeys.parse(params.delete(method_name))).each do |key, value|
24
+ params[key] = value
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/datetime'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/base'
2
4
  require 'rails_admin/support/datetime'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/numeric'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/base'
2
4
  require 'rails_admin/config/fields/types/file_upload'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/string'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/string'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/numeric'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/text'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/has_many_association'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/association'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/association'
2
4
 
3
5
  module RailsAdmin
@@ -18,7 +20,7 @@ module RailsAdmin
18
20
  end
19
21
 
20
22
  def selected_id
21
- value.try :id
23
+ value.try(:id).try(:to_s)
22
24
  end
23
25
 
24
26
  def method_name
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/string_like'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/base'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/numeric'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/text'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/multiple_file_upload'
2
4
 
3
5
  module RailsAdmin
@@ -12,6 +14,10 @@ module RailsAdmin
12
14
  {resize_to_limit: [100, 100]}
13
15
  end
14
16
 
17
+ register_instance_option :keep_value do
18
+ value.signed_id
19
+ end
20
+
15
21
  register_instance_option :delete_value do
16
22
  value.id
17
23
  end
@@ -41,6 +47,10 @@ module RailsAdmin
41
47
  ActiveStorageAttachment
42
48
  end
43
49
 
50
+ register_instance_option :keep_method do
51
+ method_name if ::ActiveStorage.replace_on_assign_to_many
52
+ end
53
+
44
54
  register_instance_option :delete_method do
45
55
  "remove_#{name}" if bindings[:object].respond_to?("remove_#{name}")
46
56
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/multiple_file_upload'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Fields
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/base'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/base'
2
4
  require 'rails_admin/config/fields/types/file_upload'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/string'
2
4
 
3
5
  module RailsAdmin