rails_admin 3.0.0 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -0
- data/Rakefile +2 -0
- data/app/assets/javascripts/rails_admin/{application.js → application.js.erb} +8 -0
- data/app/assets/stylesheets/rails_admin/{application.scss → application.scss.erb} +4 -0
- data/app/controllers/rails_admin/application_controller.rb +2 -0
- data/app/controllers/rails_admin/main_controller.rb +9 -14
- data/app/helpers/rails_admin/application_helper.rb +37 -9
- data/app/helpers/rails_admin/form_builder.rb +10 -0
- data/app/helpers/rails_admin/main_helper.rb +7 -15
- data/app/views/layouts/rails_admin/_head.html.erb +12 -3
- data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +3 -1
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +1 -1
- data/app/views/layouts/rails_admin/application.html.erb +4 -1
- data/app/views/rails_admin/main/_dashboard_history.html.erb +1 -1
- data/app/views/rails_admin/main/_form_action_text.html.erb +2 -1
- data/app/views/rails_admin/main/_form_file_upload.html.erb +1 -1
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +2 -2
- data/app/views/rails_admin/main/_form_filtering_select.html.erb +1 -1
- data/app/views/rails_admin/main/_form_multiple_file_upload.html.erb +1 -1
- data/app/views/rails_admin/main/dashboard.html.erb +2 -2
- data/app/views/rails_admin/main/history.html.erb +1 -1
- data/app/views/rails_admin/main/index.html.erb +7 -19
- data/config/initializers/active_record_extensions.rb +26 -3
- data/config/initializers/mongoid_extensions.rb +2 -0
- data/config/locales/rails_admin.en.yml +3 -2
- data/config/routes.rb +2 -0
- data/lib/generators/rails_admin/importmap_formatter.rb +28 -0
- data/lib/generators/rails_admin/install_generator.rb +68 -9
- data/lib/generators/rails_admin/templates/rails_admin.js +1 -0
- data/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -0
- data/lib/generators/rails_admin/templates/rails_admin.webpacker.js +2 -0
- data/lib/generators/rails_admin/utils.rb +2 -0
- data/lib/rails_admin/abstract_model.rb +9 -2
- data/lib/rails_admin/adapters/active_record/association.rb +11 -1
- data/lib/rails_admin/adapters/active_record/object_extension.rb +2 -0
- data/lib/rails_admin/adapters/active_record/property.rb +2 -0
- data/lib/rails_admin/adapters/active_record.rb +25 -2
- data/lib/rails_admin/adapters/composite_primary_keys/association.rb +45 -0
- data/lib/rails_admin/adapters/composite_primary_keys.rb +40 -0
- data/lib/rails_admin/adapters/mongoid/association.rb +14 -4
- data/lib/rails_admin/adapters/mongoid/bson.rb +2 -0
- data/lib/rails_admin/adapters/mongoid/extension.rb +3 -3
- data/lib/rails_admin/adapters/mongoid/object_extension.rb +2 -0
- data/lib/rails_admin/adapters/mongoid/property.rb +2 -0
- data/lib/rails_admin/adapters/mongoid.rb +4 -2
- data/lib/rails_admin/config/actions/base.rb +2 -0
- data/lib/rails_admin/config/actions/bulk_delete.rb +2 -0
- data/lib/rails_admin/config/actions/dashboard.rb +2 -0
- data/lib/rails_admin/config/actions/delete.rb +2 -0
- data/lib/rails_admin/config/actions/edit.rb +2 -0
- data/lib/rails_admin/config/actions/export.rb +2 -0
- data/lib/rails_admin/config/actions/history_index.rb +2 -0
- data/lib/rails_admin/config/actions/history_show.rb +2 -0
- data/lib/rails_admin/config/actions/index.rb +2 -0
- data/lib/rails_admin/config/actions/new.rb +2 -0
- data/lib/rails_admin/config/actions/show.rb +2 -0
- data/lib/rails_admin/config/actions/show_in_app.rb +2 -0
- data/lib/rails_admin/config/actions.rb +2 -0
- data/lib/rails_admin/config/configurable.rb +2 -0
- data/lib/rails_admin/config/const_load_suppressor.rb +78 -0
- data/lib/rails_admin/config/fields/association.rb +2 -0
- data/lib/rails_admin/config/fields/base.rb +44 -14
- data/lib/rails_admin/config/fields/factories/action_text.rb +2 -0
- data/lib/rails_admin/config/fields/factories/active_storage.rb +2 -0
- data/lib/rails_admin/config/fields/factories/association.rb +6 -5
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +2 -0
- data/lib/rails_admin/config/fields/factories/devise.rb +2 -0
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +2 -0
- data/lib/rails_admin/config/fields/factories/enum.rb +2 -0
- data/lib/rails_admin/config/fields/factories/paperclip.rb +2 -0
- data/lib/rails_admin/config/fields/factories/password.rb +2 -0
- data/lib/rails_admin/config/fields/factories/shrine.rb +2 -0
- data/lib/rails_admin/config/fields/group.rb +2 -0
- data/lib/rails_admin/config/fields/types/action_text.rb +6 -0
- data/lib/rails_admin/config/fields/types/active_record_enum.rb +2 -0
- data/lib/rails_admin/config/fields/types/active_storage.rb +14 -0
- data/lib/rails_admin/config/fields/types/all.rb +3 -0
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +7 -5
- data/lib/rails_admin/config/fields/types/boolean.rb +7 -1
- data/lib/rails_admin/config/fields/types/bson_object_id.rb +2 -0
- data/lib/rails_admin/config/fields/types/carrierwave.rb +2 -0
- data/lib/rails_admin/config/fields/types/citext.rb +2 -0
- data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -0
- data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -0
- data/lib/rails_admin/config/fields/types/color.rb +2 -0
- data/lib/rails_admin/config/fields/types/composite_keys_belongs_to_association.rb +31 -0
- data/lib/rails_admin/config/fields/types/date.rb +2 -0
- data/lib/rails_admin/config/fields/types/datetime.rb +12 -0
- data/lib/rails_admin/config/fields/types/decimal.rb +2 -0
- data/lib/rails_admin/config/fields/types/dragonfly.rb +2 -0
- data/lib/rails_admin/config/fields/types/enum.rb +15 -2
- data/lib/rails_admin/config/fields/types/file_upload.rb +2 -0
- data/lib/rails_admin/config/fields/types/float.rb +2 -0
- data/lib/rails_admin/config/fields/types/froala.rb +2 -0
- data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +2 -0
- data/lib/rails_admin/config/fields/types/has_many_association.rb +2 -0
- data/lib/rails_admin/config/fields/types/has_one_association.rb +7 -1
- data/lib/rails_admin/config/fields/types/hidden.rb +2 -0
- data/lib/rails_admin/config/fields/types/inet.rb +2 -0
- data/lib/rails_admin/config/fields/types/integer.rb +2 -0
- data/lib/rails_admin/config/fields/types/json.rb +2 -0
- data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +22 -0
- data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +2 -0
- data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +2 -0
- data/lib/rails_admin/config/fields/types/numeric.rb +6 -0
- data/lib/rails_admin/config/fields/types/paperclip.rb +2 -0
- data/lib/rails_admin/config/fields/types/password.rb +2 -0
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +2 -0
- data/lib/rails_admin/config/fields/types/serialized.rb +2 -0
- data/lib/rails_admin/config/fields/types/shrine.rb +2 -0
- data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -0
- data/lib/rails_admin/config/fields/types/string.rb +2 -0
- data/lib/rails_admin/config/fields/types/string_like.rb +6 -0
- data/lib/rails_admin/config/fields/types/text.rb +2 -0
- data/lib/rails_admin/config/fields/types/time.rb +6 -0
- data/lib/rails_admin/config/fields/types/timestamp.rb +2 -0
- data/lib/rails_admin/config/fields/types/uuid.rb +2 -0
- data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -0
- data/lib/rails_admin/config/fields/types.rb +2 -0
- data/lib/rails_admin/config/fields.rb +3 -1
- data/lib/rails_admin/config/groupable.rb +2 -0
- data/lib/rails_admin/config/has_description.rb +2 -0
- data/lib/rails_admin/config/has_fields.rb +3 -1
- data/lib/rails_admin/config/has_groups.rb +2 -0
- data/lib/rails_admin/config/hideable.rb +2 -0
- data/lib/rails_admin/config/inspectable.rb +2 -0
- data/lib/rails_admin/config/lazy_model.rb +74 -0
- data/lib/rails_admin/config/model.rb +5 -1
- data/lib/rails_admin/config/proxyable/proxy.rb +2 -0
- data/lib/rails_admin/config/proxyable.rb +2 -0
- data/lib/rails_admin/config/sections/base.rb +2 -0
- data/lib/rails_admin/config/sections/create.rb +2 -0
- data/lib/rails_admin/config/sections/edit.rb +2 -0
- data/lib/rails_admin/config/sections/export.rb +2 -0
- data/lib/rails_admin/config/sections/list.rb +6 -0
- data/lib/rails_admin/config/sections/modal.rb +2 -0
- data/lib/rails_admin/config/sections/nested.rb +2 -0
- data/lib/rails_admin/config/sections/show.rb +2 -0
- data/lib/rails_admin/config/sections/update.rb +2 -0
- data/lib/rails_admin/config/sections.rb +2 -0
- data/lib/rails_admin/config.rb +26 -37
- data/lib/rails_admin/engine.rb +19 -17
- data/lib/rails_admin/extension.rb +2 -0
- data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +21 -4
- data/lib/rails_admin/extensions/cancancan.rb +2 -0
- data/lib/rails_admin/extensions/controller_extension.rb +2 -0
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +49 -27
- data/lib/rails_admin/extensions/paper_trail.rb +2 -0
- data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +2 -0
- data/lib/rails_admin/extensions/pundit.rb +2 -0
- data/lib/rails_admin/support/csv_converter.rb +2 -1
- data/lib/rails_admin/support/datetime.rb +3 -1
- data/lib/rails_admin/support/es_module_processor.rb +23 -0
- data/lib/rails_admin/support/hash_helper.rb +2 -0
- data/lib/rails_admin/version.rb +3 -1
- data/lib/rails_admin.rb +7 -2
- data/lib/tasks/rails_admin.rake +2 -0
- data/package.json +2 -2
- data/src/rails_admin/base.js +13 -1
- data/src/rails_admin/filter-box.js +165 -209
- data/src/rails_admin/filtering-multiselect.js +5 -10
- data/src/rails_admin/filtering-select.js +16 -7
- data/src/rails_admin/i18n.js +3 -1
- data/src/rails_admin/nested-form-hooks.js +6 -4
- data/src/rails_admin/remote-form.js +5 -5
- data/src/rails_admin/styles/base/theming.scss +25 -8
- data/src/rails_admin/styles/base.scss +5 -5
- data/src/rails_admin/styles/widgets.scss +1 -1
- data/src/rails_admin/ui.js +45 -18
- data/src/rails_admin/widgets.js +7 -2
- data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
- data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
- data/vendor/assets/javascripts/rails_admin/jquery3.js +118 -109
- data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +4531 -2782
- metadata +15 -12
- data/lib/generators/rails_admin/templates/rails_admin.js.erb +0 -2
- data/lib/generators/rails_admin/templates/rails_admin.scss +0 -1
- data/lib/generators/rails_admin/templates/webpack.config.js +0 -29
- data/lib/rails_admin/support/esmodule_preprocessor.rb +0 -33
- data/vendor/assets/fonts/rails_admin/fa-solid-900.eot +0 -0
- data/vendor/assets/fonts/rails_admin/fa-solid-900.svg +0 -5034
- data/vendor/assets/fonts/rails_admin/fa-solid-900.woff +0 -0
@@ -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,10 +60,28 @@ 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
|
64
80
|
|
81
|
+
register_instance_option :search_operator do
|
82
|
+
RailsAdmin::Config.default_search_operator
|
83
|
+
end
|
84
|
+
|
65
85
|
register_instance_option :queryable? do
|
66
86
|
!virtual?
|
67
87
|
end
|
@@ -70,8 +90,22 @@ module RailsAdmin
|
|
70
90
|
!!searchable
|
71
91
|
end
|
72
92
|
|
73
|
-
register_instance_option :
|
74
|
-
|
93
|
+
register_instance_option :filter_operators do
|
94
|
+
[]
|
95
|
+
end
|
96
|
+
|
97
|
+
register_instance_option :default_filter_operator do
|
98
|
+
nil
|
99
|
+
end
|
100
|
+
|
101
|
+
def filter_options
|
102
|
+
{
|
103
|
+
label: label,
|
104
|
+
name: name,
|
105
|
+
operator: default_filter_operator,
|
106
|
+
operators: filter_operators,
|
107
|
+
type: type,
|
108
|
+
}
|
75
109
|
end
|
76
110
|
|
77
111
|
# serials and dates are reversed in list, which is more natural (last modified items first).
|
@@ -226,10 +260,6 @@ module RailsAdmin
|
|
226
260
|
[]
|
227
261
|
end
|
228
262
|
|
229
|
-
register_instance_option :default_filter_operator do
|
230
|
-
nil
|
231
|
-
end
|
232
|
-
|
233
263
|
register_instance_option :eager_load do
|
234
264
|
false
|
235
265
|
end
|
@@ -301,13 +331,13 @@ module RailsAdmin
|
|
301
331
|
def value
|
302
332
|
bindings[:object].safe_send(name)
|
303
333
|
rescue NoMethodError => e
|
304
|
-
raise e.exception
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
334
|
+
raise e.exception <<~ERROR
|
335
|
+
#{e.message}
|
336
|
+
If you want to use a RailsAdmin virtual field(= a field without corresponding instance method),
|
337
|
+
you should declare 'formatted_value' in the field definition.
|
338
|
+
field :#{name} do
|
339
|
+
formatted_value{ bindings[:object].call_some_method }
|
340
|
+
end
|
311
341
|
ERROR
|
312
342
|
end
|
313
343
|
|
@@ -337,7 +367,7 @@ module RailsAdmin
|
|
337
367
|
end
|
338
368
|
|
339
369
|
def parse_input(_params)
|
340
|
-
#
|
370
|
+
# overridden
|
341
371
|
end
|
342
372
|
|
343
373
|
def inverse_of
|
@@ -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
|
-
|
7
|
-
|
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.
|
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/types/text'
|
2
4
|
|
3
5
|
module RailsAdmin
|
@@ -20,6 +22,10 @@ module RailsAdmin
|
|
20
22
|
"https://cdnjs.cloudflare.com/ajax/libs/trix/#{version}/trix.js"
|
21
23
|
end
|
22
24
|
|
25
|
+
register_instance_option :warn_dynamic_load do
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
23
29
|
register_instance_option :partial do
|
24
30
|
:form_action_text
|
25
31
|
end
|
@@ -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
|
@@ -26,6 +28,18 @@ module RailsAdmin
|
|
26
28
|
{"#{name}_attachment": :blob}
|
27
29
|
end
|
28
30
|
|
31
|
+
register_instance_option :direct? do
|
32
|
+
false
|
33
|
+
end
|
34
|
+
|
35
|
+
register_instance_option :html_attributes do
|
36
|
+
{
|
37
|
+
required: required? && !value.present?,
|
38
|
+
}.merge(
|
39
|
+
direct? && {data: {direct_upload_url: bindings[:view].main_app.rails_direct_uploads_url}} || {},
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
29
43
|
def resource_url(thumb = false)
|
30
44
|
return nil unless value
|
31
45
|
|
@@ -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
|
@@ -7,6 +9,10 @@ module RailsAdmin
|
|
7
9
|
class BelongsToAssociation < RailsAdmin::Config::Fields::Association
|
8
10
|
RailsAdmin::Config::Fields::Types.register(self)
|
9
11
|
|
12
|
+
register_instance_option :filter_operators do
|
13
|
+
%w[_discard like not_like is starts_with ends_with] + (required? ? [] : %w[_separator _present _blank])
|
14
|
+
end
|
15
|
+
|
10
16
|
register_instance_option :formatted_value do
|
11
17
|
(o = value) && o.send(associated_model_config.object_label_method)
|
12
18
|
end
|
@@ -27,12 +33,8 @@ module RailsAdmin
|
|
27
33
|
true
|
28
34
|
end
|
29
35
|
|
30
|
-
def associated_primary_key
|
31
|
-
association.primary_key
|
32
|
-
end
|
33
|
-
|
34
36
|
def selected_id
|
35
|
-
bindings[:object].
|
37
|
+
bindings[:object].safe_send(association.key_accessor)
|
36
38
|
end
|
37
39
|
|
38
40
|
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
|
@@ -22,6 +24,10 @@ module RailsAdmin
|
|
22
24
|
}
|
23
25
|
end
|
24
26
|
|
27
|
+
register_instance_option :filter_operators do
|
28
|
+
%w[_discard true false] + (required? ? [] : %w[_separator _present _blank])
|
29
|
+
end
|
30
|
+
|
25
31
|
register_instance_option :nullable? do
|
26
32
|
properties&.nullable?
|
27
33
|
end
|
@@ -31,7 +37,7 @@ module RailsAdmin
|
|
31
37
|
end
|
32
38
|
|
33
39
|
register_instance_option :pretty_value do
|
34
|
-
%(<span class="
|
40
|
+
%(<span class="badge bg-#{css_classes[form_value]}">#{labels[form_value]}</span>).html_safe
|
35
41
|
end
|
36
42
|
|
37
43
|
register_instance_option :export_value do
|
@@ -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/base'
|
2
4
|
require 'rails_admin/support/datetime'
|
3
5
|
|
@@ -16,6 +18,16 @@ module RailsAdmin
|
|
16
18
|
params[name] = parse_value(params[name]) if params[name]
|
17
19
|
end
|
18
20
|
|
21
|
+
register_instance_option :filter_operators do
|
22
|
+
%w[default between today yesterday this_week last_week] + (required? ? [] : %w[_separator _not_null _null])
|
23
|
+
end
|
24
|
+
|
25
|
+
def filter_options
|
26
|
+
super.merge(
|
27
|
+
datetimepicker_options: datepicker_options,
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
19
31
|
register_instance_option :date_format do
|
20
32
|
:long
|
21
33
|
end
|
@@ -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
|
@@ -7,16 +9,27 @@ module RailsAdmin
|
|
7
9
|
class Enum < RailsAdmin::Config::Fields::Base
|
8
10
|
RailsAdmin::Config::Fields::Types.register(self)
|
9
11
|
|
12
|
+
register_instance_option :filter_operators do
|
13
|
+
%w[_discard] +
|
14
|
+
enum.map do |label, value|
|
15
|
+
{label: label, value: value || label}
|
16
|
+
end + (required? ? [] : %w[_separator _present _blank])
|
17
|
+
end
|
18
|
+
|
10
19
|
register_instance_option :partial do
|
11
20
|
:form_enumeration
|
12
21
|
end
|
13
22
|
|
14
23
|
register_instance_option :enum_method do
|
15
|
-
@enum_method ||= bindings[:object].class.respond_to?("#{name}_enum") || bindings[:object].respond_to?("#{name}_enum") ? "#{name}_enum" : name
|
24
|
+
@enum_method ||= bindings[:object].class.respond_to?("#{name}_enum") || (bindings[:object] || abstract_model.model.new).respond_to?("#{name}_enum") ? "#{name}_enum" : name
|
16
25
|
end
|
17
26
|
|
18
27
|
register_instance_option :enum do
|
19
|
-
|
28
|
+
if abstract_model.model.respond_to?(enum_method)
|
29
|
+
abstract_model.model.send(enum_method)
|
30
|
+
else
|
31
|
+
(bindings[:object] || abstract_model.model.new).send(enum_method)
|
32
|
+
end
|
20
33
|
end
|
21
34
|
|
22
35
|
register_instance_option :pretty_value do
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rails_admin/config/fields/association'
|
2
4
|
|
3
5
|
module RailsAdmin
|
@@ -8,6 +10,10 @@ module RailsAdmin
|
|
8
10
|
# Register field type for the type loader
|
9
11
|
RailsAdmin::Config::Fields::Types.register(self)
|
10
12
|
|
13
|
+
register_instance_option :filter_operators do
|
14
|
+
%w[_discard like not_like is starts_with ends_with] + (required? ? [] : %w[_separator _present _blank])
|
15
|
+
end
|
16
|
+
|
11
17
|
register_instance_option :partial do
|
12
18
|
nested_form ? :form_nested_one : :form_filtering_select
|
13
19
|
end
|
@@ -18,7 +24,7 @@ module RailsAdmin
|
|
18
24
|
end
|
19
25
|
|
20
26
|
def selected_id
|
21
|
-
value.try
|
27
|
+
value.try(:id).try(:to_s)
|
22
28
|
end
|
23
29
|
|
24
30
|
def method_name
|
@@ -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
|
@@ -48,6 +58,18 @@ module RailsAdmin
|
|
48
58
|
register_instance_option :eager_load do
|
49
59
|
{"#{name}_attachments": :blob}
|
50
60
|
end
|
61
|
+
|
62
|
+
register_instance_option :direct? do
|
63
|
+
false
|
64
|
+
end
|
65
|
+
|
66
|
+
register_instance_option :html_attributes do
|
67
|
+
{
|
68
|
+
required: required? && !value.present?,
|
69
|
+
}.merge(
|
70
|
+
direct? && {data: {direct_upload_url: bindings[:view].main_app.rails_direct_uploads_url}} || {},
|
71
|
+
)
|
72
|
+
end
|
51
73
|
end
|
52
74
|
end
|
53
75
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rails_admin/config/fields/base'
|
2
4
|
|
3
5
|
module RailsAdmin
|
@@ -8,6 +10,10 @@ module RailsAdmin
|
|
8
10
|
# Register field type for the type loader
|
9
11
|
RailsAdmin::Config::Fields::Types.register(self)
|
10
12
|
|
13
|
+
register_instance_option :filter_operators do
|
14
|
+
%w[default between] + (required? ? [] : %w[_separator _not_null _null])
|
15
|
+
end
|
16
|
+
|
11
17
|
register_instance_option :view_helper do
|
12
18
|
:number_field
|
13
19
|
end
|