activeadmin 2.6.1 → 2.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.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +119 -8
  3. data/CONTRIBUTING.md +8 -24
  4. data/README.md +4 -4
  5. data/app/assets/javascripts/active_admin/base.js +14 -16
  6. data/app/assets/stylesheets/active_admin/_header.scss +37 -3
  7. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  8. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +3 -0
  9. data/app/javascript/active_admin/initializers/per-page.js +1 -1
  10. data/app/javascript/active_admin/lib/checkbox-toggler.js +3 -3
  11. data/app/javascript/active_admin/lib/dropdown-menu.js +1 -1
  12. data/app/javascript/active_admin/lib/modal-dialog.js +7 -7
  13. data/app/javascript/active_admin/lib/per-page.js +1 -1
  14. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +1 -1
  15. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  16. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  17. data/app/views/layouts/active_admin_logged_out.html.erb +15 -5
  18. data/config/locales/ar.yml +6 -6
  19. data/config/locales/es-MX.yml +2 -1
  20. data/config/locales/es.yml +2 -2
  21. data/config/locales/it.yml +18 -0
  22. data/config/locales/ja.yml +3 -3
  23. data/config/locales/vi.yml +5 -5
  24. data/docs/0-installation.md +26 -2
  25. data/docs/11-decorators.md +16 -5
  26. data/docs/2-resource-customization.md +10 -1
  27. data/docs/5-forms.md +6 -1
  28. data/docs/6-show-pages.md +12 -0
  29. data/docs/Gemfile +2 -2
  30. data/docs/Gemfile.lock +52 -41
  31. data/docs/_includes/top-menu.html +1 -1
  32. data/docs/documentation.md +1 -1
  33. data/docs/index.html +6 -6
  34. data/lib/active_admin.rb +59 -60
  35. data/lib/active_admin/application.rb +13 -13
  36. data/lib/active_admin/application_settings.rb +3 -3
  37. data/lib/active_admin/authorization_adapter.rb +3 -3
  38. data/lib/active_admin/base_controller.rb +4 -4
  39. data/lib/active_admin/base_controller/authorization.rb +13 -12
  40. data/lib/active_admin/batch_actions/controller.rb +3 -3
  41. data/lib/active_admin/batch_actions/resource_extension.rb +9 -8
  42. data/lib/active_admin/batch_actions/views/batch_action_form.rb +3 -3
  43. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +6 -6
  44. data/lib/active_admin/batch_actions/views/selection_cells.rb +3 -3
  45. data/lib/active_admin/cancan_adapter.rb +1 -1
  46. data/lib/active_admin/collection_decorator.rb +31 -0
  47. data/lib/active_admin/csv_builder.rb +4 -4
  48. data/lib/active_admin/dependency.rb +11 -11
  49. data/lib/active_admin/devise.rb +5 -5
  50. data/lib/active_admin/dsl.rb +1 -1
  51. data/lib/active_admin/dynamic_settings_node.rb +2 -2
  52. data/lib/active_admin/engine.rb +10 -8
  53. data/lib/active_admin/error.rb +0 -2
  54. data/lib/active_admin/filters.rb +7 -7
  55. data/lib/active_admin/filters/active.rb +1 -1
  56. data/lib/active_admin/filters/active_filter.rb +5 -6
  57. data/lib/active_admin/filters/active_sidebar.rb +5 -5
  58. data/lib/active_admin/filters/forms.rb +6 -6
  59. data/lib/active_admin/filters/formtastic_addons.rb +1 -6
  60. data/lib/active_admin/filters/resource_extension.rb +1 -1
  61. data/lib/active_admin/form_builder.rb +24 -20
  62. data/lib/active_admin/generators/boilerplate.rb +1 -1
  63. data/lib/active_admin/helpers/optional_display.rb +2 -2
  64. data/lib/active_admin/inputs/datepicker_input.rb +1 -1
  65. data/lib/active_admin/inputs/filters/base.rb +1 -1
  66. data/lib/active_admin/inputs/filters/base/search_method_select.rb +4 -4
  67. data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
  68. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
  69. data/lib/active_admin/inputs/filters/select_input.rb +2 -2
  70. data/lib/active_admin/localizers.rb +1 -1
  71. data/lib/active_admin/localizers/resource_localizer.rb +3 -3
  72. data/lib/active_admin/menu.rb +6 -3
  73. data/lib/active_admin/menu_item.rb +7 -7
  74. data/lib/active_admin/namespace.rb +12 -12
  75. data/lib/active_admin/namespace_settings.rb +8 -5
  76. data/lib/active_admin/order_clause.rb +1 -1
  77. data/lib/active_admin/orm/active_record.rb +1 -1
  78. data/lib/active_admin/orm/active_record/comments.rb +19 -19
  79. data/lib/active_admin/orm/active_record/comments/comment.rb +3 -3
  80. data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
  81. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +19 -19
  82. data/lib/active_admin/page.rb +1 -1
  83. data/lib/active_admin/pundit_adapter.rb +5 -5
  84. data/lib/active_admin/resource.rb +17 -17
  85. data/lib/active_admin/resource/action_items.rb +5 -5
  86. data/lib/active_admin/resource/attributes.rb +1 -1
  87. data/lib/active_admin/resource/belongs_to.rb +2 -2
  88. data/lib/active_admin/resource/controllers.rb +1 -1
  89. data/lib/active_admin/resource/menu.rb +4 -4
  90. data/lib/active_admin/resource/naming.rb +4 -4
  91. data/lib/active_admin/resource/routes.rb +5 -7
  92. data/lib/active_admin/resource/scope_to.rb +7 -7
  93. data/lib/active_admin/resource/sidebars.rb +1 -1
  94. data/lib/active_admin/resource_controller.rb +12 -11
  95. data/lib/active_admin/resource_controller/data_access.rb +1 -1
  96. data/lib/active_admin/resource_controller/decorators.rb +6 -28
  97. data/lib/active_admin/resource_controller/streaming.rb +7 -6
  98. data/lib/active_admin/resource_dsl.rb +5 -5
  99. data/lib/active_admin/scope.rb +6 -6
  100. data/lib/active_admin/version.rb +1 -1
  101. data/lib/active_admin/view_factory.rb +17 -17
  102. data/lib/active_admin/view_helpers.rb +1 -1
  103. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +3 -3
  104. data/lib/active_admin/view_helpers/display_helper.rb +5 -5
  105. data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -1
  106. data/lib/active_admin/view_helpers/fields_for.rb +2 -2
  107. data/lib/active_admin/views.rb +1 -1
  108. data/lib/active_admin/views/components/active_admin_form.rb +5 -5
  109. data/lib/active_admin/views/components/attributes_table.rb +5 -5
  110. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  111. data/lib/active_admin/views/components/dropdown_menu.rb +8 -8
  112. data/lib/active_admin/views/components/index_list.rb +3 -3
  113. data/lib/active_admin/views/components/menu.rb +1 -1
  114. data/lib/active_admin/views/components/menu_item.rb +4 -4
  115. data/lib/active_admin/views/components/paginated_collection.rb +18 -18
  116. data/lib/active_admin/views/components/panel.rb +1 -1
  117. data/lib/active_admin/views/components/scopes.rb +7 -5
  118. data/lib/active_admin/views/components/site_title.rb +1 -1
  119. data/lib/active_admin/views/components/status_tag.rb +11 -11
  120. data/lib/active_admin/views/components/table_for.rb +17 -17
  121. data/lib/active_admin/views/components/tabs.rb +3 -3
  122. data/lib/active_admin/views/footer.rb +2 -1
  123. data/lib/active_admin/views/header.rb +2 -2
  124. data/lib/active_admin/views/index_as_blog.rb +1 -1
  125. data/lib/active_admin/views/index_as_grid.rb +1 -1
  126. data/lib/active_admin/views/index_as_table.rb +16 -16
  127. data/lib/active_admin/views/pages/base.rb +10 -8
  128. data/lib/active_admin/views/pages/index.rb +14 -13
  129. data/lib/active_admin/views/tabbed_navigation.rb +2 -2
  130. data/lib/active_admin/views/title_bar.rb +1 -1
  131. data/lib/activeadmin.rb +1 -1
  132. data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
  133. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  134. data/lib/generators/active_admin/devise/devise_generator.rb +5 -5
  135. data/lib/generators/active_admin/install/install_generator.rb +14 -8
  136. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +9 -2
  137. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  138. data/lib/generators/active_admin/resource/resource_generator.rb +3 -3
  139. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  140. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  141. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  142. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  143. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
  144. data/lib/ransack_ext.rb +8 -8
  145. metadata +22 -44
@@ -101,7 +101,7 @@ module ActiveAdmin
101
101
  def batch_action(title, options = {}, &block)
102
102
  # Create symbol & title information
103
103
  if title.is_a? String
104
- sym = title.titleize.tr(' ', '').underscore.to_sym
104
+ sym = title.titleize.tr(" ", "").underscore.to_sym
105
105
  else
106
106
  sym = title
107
107
  title = sym.to_s.titleize
@@ -1,5 +1,5 @@
1
- require 'active_admin/dynamic_setting'
2
- require 'active_admin/settings_node'
1
+ require "active_admin/dynamic_setting"
2
+ require "active_admin/settings_node"
3
3
 
4
4
  module ActiveAdmin
5
5
 
@@ -2,20 +2,22 @@ module ActiveAdmin
2
2
  class Engine < ::Rails::Engine
3
3
  initializer "active_admin.load_app_path" do |app|
4
4
  ActiveAdmin::Application.setting :app_path, app.root
5
- ActiveAdmin::Application.setting :load_paths, [File.expand_path('app/admin', app.root)]
5
+ ActiveAdmin::Application.setting :load_paths, [File.expand_path("app/admin", app.root)]
6
6
  end
7
7
 
8
8
  initializer "active_admin.precompile", group: :all do |app|
9
- ActiveAdmin.application.stylesheets.each do |path, _|
10
- app.config.assets.precompile << path
11
- end
12
- ActiveAdmin.application.javascripts.each do |path|
13
- app.config.assets.precompile << path
9
+ unless ActiveAdmin.application.use_webpacker
10
+ ActiveAdmin.application.stylesheets.each do |path, _|
11
+ app.config.assets.precompile << path
12
+ end
13
+ ActiveAdmin.application.javascripts.each do |path|
14
+ app.config.assets.precompile << path
15
+ end
14
16
  end
15
17
  end
16
18
 
17
- initializer 'active_admin.routes' do
18
- require 'active_admin/helpers/routes/url_helpers'
19
+ initializer "active_admin.routes" do
20
+ require "active_admin/helpers/routes/url_helpers"
19
21
  end
20
22
  end
21
23
  end
@@ -45,8 +45,6 @@ module ActiveAdmin
45
45
  raise new exception
46
46
  end
47
47
 
48
- private
49
-
50
48
  def self.database_error_classes
51
49
  @classes ||= []
52
50
  end
@@ -1,11 +1,11 @@
1
- require 'active_admin/filters/dsl'
2
- require 'active_admin/filters/resource_extension'
3
- require 'active_admin/filters/formtastic_addons'
4
- require 'active_admin/filters/forms'
5
- require 'active_admin/helpers/optional_display'
6
- require 'active_admin/filters/active_sidebar'
1
+ require "active_admin/filters/dsl"
2
+ require "active_admin/filters/resource_extension"
3
+ require "active_admin/filters/formtastic_addons"
4
+ require "active_admin/filters/forms"
5
+ require "active_admin/helpers/optional_display"
6
+ require "active_admin/filters/active_sidebar"
7
7
 
8
8
  # Add our Extensions
9
9
  ActiveAdmin::ResourceDSL.send :include, ActiveAdmin::Filters::DSL
10
- ActiveAdmin::Resource.send :include, ActiveAdmin::Filters::ResourceExtension
10
+ ActiveAdmin::Resource.send :include, ActiveAdmin::Filters::ResourceExtension
11
11
  ActiveAdmin::ViewHelpers.send :include, ActiveAdmin::Filters::ViewHelper
@@ -1,4 +1,4 @@
1
- require 'active_admin/filters/active_filter'
1
+ require "active_admin/filters/active_filter"
2
2
 
3
3
  module ActiveAdmin
4
4
  module Filters
@@ -39,8 +39,9 @@ module ActiveAdmin
39
39
  end
40
40
 
41
41
  def predicate_name
42
- I18n.t("active_admin.filters.predicates.#{condition.predicate.name}",
43
- default: ransack_predicate_name)
42
+ I18n.t(
43
+ "active_admin.filters.predicates.#{condition.predicate.name}",
44
+ default: ransack_predicate_name)
44
45
  end
45
46
 
46
47
  def html_options
@@ -66,7 +67,7 @@ module ActiveAdmin
66
67
  def filter_label
67
68
  return unless filter
68
69
 
69
- filter[:label] || I18n.t(name, scope: ['formtastic', 'labels'], default: nil)
70
+ filter[:label] || I18n.t(name, scope: ["formtastic", "labels"], default: nil)
70
71
  end
71
72
 
72
73
  #@return Ransack::Nodes::Attribute
@@ -83,7 +84,7 @@ module ActiveAdmin
83
84
  end
84
85
 
85
86
  def find_class?
86
- ['eq', 'in'].include? condition.predicate.arel_predicate
87
+ ["eq", "in"].include? condition.predicate.arel_predicate
87
88
  end
88
89
 
89
90
  # detect related class for Ransack::Nodes::Attribute
@@ -112,8 +113,6 @@ module ActiveAdmin
112
113
  @predicate_association
113
114
  end
114
115
 
115
- private
116
-
117
116
  def find_predicate_association
118
117
  condition_attribute.klass.reflect_on_all_associations.
119
118
  reject { |r| r.options[:polymorphic] }. #skip polymorphic
@@ -1,11 +1,11 @@
1
- require 'active_admin/filters/active'
1
+ require "active_admin/filters/active"
2
2
 
3
3
  module ActiveAdmin
4
4
  module Filters
5
5
  class ActiveSidebar < ActiveAdmin::SidebarSection
6
6
 
7
7
  def initialize
8
- super 'search_status', sidebar_options
8
+ super "search_status", sidebar_options
9
9
  end
10
10
 
11
11
  def block
@@ -13,11 +13,11 @@ module ActiveAdmin
13
13
  active_filters = ActiveAdmin::Filters::Active.new(active_admin_config, assigns[:search])
14
14
  span do
15
15
  if current_scope
16
- h4 I18n.t("active_admin.search_status.current_scope"), style: 'display: inline'
17
- b scope_name(current_scope), class: 'current_scope_name', style: "display: inline"
16
+ h4 I18n.t("active_admin.search_status.current_scope"), style: "display: inline"
17
+ b scope_name(current_scope), class: "current_scope_name", style: "display: inline"
18
18
  end
19
19
  div style: "margin-top: 10px" do
20
- h4 I18n.t("active_admin.search_status.current_filters"), style: 'margin-bottom: 10px'
20
+ h4 I18n.t("active_admin.search_status.current_filters"), style: "margin-bottom: 10px"
21
21
  ul do
22
22
  if active_filters.filters.blank?
23
23
  li I18n.t("active_admin.search_status.no_current_filters")
@@ -48,15 +48,15 @@ module ActiveAdmin
48
48
  def active_admin_filters_form_for(search, filters, options = {})
49
49
  defaults = { builder: ActiveAdmin::Filters::FormBuilder,
50
50
  url: collection_path,
51
- html: { class: 'filter_form' } }
51
+ html: { class: "filter_form" } }
52
52
  required = { html: { method: :get },
53
53
  as: :q }
54
- options = defaults.deep_merge(options).deep_merge(required)
54
+ options = defaults.deep_merge(options).deep_merge(required)
55
55
 
56
56
  form_for search, options do |f|
57
57
  filters.each do |attribute, opts|
58
- next if opts.key?(:if) && !call_method_or_proc_on(self, opts[:if])
59
- next if opts.key?(:unless) && call_method_or_proc_on(self, opts[:unless])
58
+ next if opts.key?(:if) && !call_method_or_proc_on(self, opts[:if])
59
+ next if opts.key?(:unless) && call_method_or_proc_on(self, opts[:unless])
60
60
 
61
61
  filter_opts = opts.except(:if, :unless)
62
62
  filter_opts[:input_html] = instance_exec(&filter_opts[:input_html]) if filter_opts[:input_html].is_a?(Proc)
@@ -65,8 +65,8 @@ module ActiveAdmin
65
65
  end
66
66
 
67
67
  buttons = content_tag :div, class: "buttons" do
68
- f.submit(I18n.t('active_admin.filters.buttons.filter')) +
69
- link_to(I18n.t('active_admin.filters.buttons.clear'), '#', class: 'clear_filters_btn') +
68
+ f.submit(I18n.t("active_admin.filters.buttons.filter")) +
69
+ link_to(I18n.t("active_admin.filters.buttons.clear"), "#", class: "clear_filters_btn") +
70
70
  hidden_field_tags_for(params, except: except_hidden_fields)
71
71
  end
72
72
 
@@ -54,7 +54,7 @@ module ActiveAdmin
54
54
  end
55
55
 
56
56
  def seems_searchable?
57
- has_predicate? || scope?
57
+ column_for(method).nil? && (has_predicate? || scope?)
58
58
  end
59
59
 
60
60
  # If the given method has a predicate (like _eq or _lteq), it's pretty
@@ -63,11 +63,6 @@ module ActiveAdmin
63
63
  !!Ransack::Predicate.detect_from_string(method.to_s)
64
64
  end
65
65
 
66
- # Ransack lets you define custom search methods, called ransackers.
67
- def ransacker?
68
- klass._ransackers.key? method.to_s
69
- end
70
-
71
66
  # Ransack supports exposing selected scopes on your model for advanced searches.
72
67
  def scope?
73
68
  context = Ransack::Context.for klass
@@ -165,7 +165,7 @@ module ActiveAdmin
165
165
 
166
166
  def filters_sidebar_section
167
167
  ActiveAdmin::SidebarSection.new :filters, only: :index, if: -> { active_admin_config.filters.any? } do
168
- active_admin_filters_form_for assigns[:search], active_admin_config.filters
168
+ active_admin_filters_form_for assigns[:search], **active_admin_config.filters
169
169
  end
170
170
  end
171
171
 
@@ -22,7 +22,7 @@ module ActiveAdmin
22
22
 
23
23
  def cancel_link(url = { action: "index" }, html_options = {}, li_attrs = {})
24
24
  li_attrs[:class] ||= "cancel"
25
- li_content = template.link_to I18n.t('active_admin.cancel'), url, html_options
25
+ li_content = template.link_to I18n.t("active_admin.cancel"), url, html_options
26
26
  template.content_tag(:li, li_content, li_attrs)
27
27
  end
28
28
 
@@ -40,14 +40,14 @@ module ActiveAdmin
40
40
  attr_reader :assoc
41
41
  attr_reader :options
42
42
  attr_reader :heading, :sortable_column, :sortable_start
43
- attr_reader :new_record, :destroy_option
43
+ attr_reader :new_record, :destroy_option, :remove_record
44
44
 
45
45
  def initialize(has_many_form, assoc, options)
46
46
  super has_many_form
47
47
  @assoc = assoc
48
48
  @options = extract_custom_settings!(options.dup)
49
49
  @options.reverse_merge!(for: assoc)
50
- @options[:class] = [options[:class], "inputs has_many_fields"].compact.join(' ')
50
+ @options[:class] = [options[:class], "inputs has_many_fields"].compact.join(" ")
51
51
 
52
52
  if sortable_column
53
53
  @options[:for] = [assoc, sorted_children(sortable_column)]
@@ -69,9 +69,10 @@ module ActiveAdmin
69
69
  def extract_custom_settings!(options)
70
70
  @heading = options.key?(:heading) ? options.delete(:heading) : default_heading
71
71
  @sortable_column = options.delete(:sortable)
72
- @sortable_start = options.delete(:sortable_start) || 0
72
+ @sortable_start = options.delete(:sortable_start) || 0
73
73
  @new_record = options.key?(:new_record) ? options.delete(:new_record) : true
74
74
  @destroy_option = options.delete(:allow_destroy)
75
+ @remove_record = options.delete(:remove_record)
75
76
  options
76
77
  end
77
78
 
@@ -93,7 +94,7 @@ module ActiveAdmin
93
94
  contents = without_wrapper { inputs(options, &form_block) }
94
95
  contents ||= "".html_safe
95
96
 
96
- js = new_record ? js_for_has_many(options[:class], &form_block) : ''
97
+ js = new_record ? js_for_has_many(options[:class], &form_block) : ""
97
98
  contents << js
98
99
  end
99
100
 
@@ -107,19 +108,21 @@ module ActiveAdmin
107
108
  def has_many_actions(form_builder, contents)
108
109
  if form_builder.object.new_record?
109
110
  contents << template.content_tag(:li) do
110
- template.link_to I18n.t('active_admin.has_many_remove'), "#", class: 'button has_many_remove'
111
+ remove_text = remove_record.is_a?(String) ? remove_record : I18n.t("active_admin.has_many_remove")
112
+ template.link_to remove_text, "#", class: "button has_many_remove"
111
113
  end
112
114
  elsif allow_destroy?(form_builder.object)
113
- form_builder.input(:_destroy, as: :boolean,
114
- wrapper_html: { class: 'has_many_delete' },
115
- label: I18n.t('active_admin.has_many_delete'))
115
+ form_builder.input(
116
+ :_destroy, as: :boolean,
117
+ wrapper_html: { class: "has_many_delete" },
118
+ label: I18n.t("active_admin.has_many_delete"))
116
119
  end
117
120
 
118
121
  if sortable_column
119
122
  form_builder.input sortable_column, as: :hidden
120
123
 
121
- contents << template.content_tag(:li, class: 'handle') do
122
- I18n.t('active_admin.move')
124
+ contents << template.content_tag(:li, class: "handle") do
125
+ I18n.t("active_admin.move")
123
126
  end
124
127
  end
125
128
 
@@ -156,27 +159,28 @@ module ActiveAdmin
156
159
 
157
160
  # Capture the ADD JS
158
161
  def js_for_has_many(class_string, &form_block)
159
- assoc_name = assoc_klass.model_name
160
- placeholder = "NEW_#{assoc_name.to_s.underscore.upcase.gsub(/\//, '_')}_RECORD"
162
+ assoc_name = assoc_klass.model_name
163
+ placeholder = "NEW_#{assoc_name.to_s.underscore.upcase.gsub(/\//, '_')}_RECORD"
161
164
  opts = {
162
165
  for: [assoc, assoc_klass.new],
163
166
  class: class_string,
164
167
  for_options: { child_index: placeholder }
165
168
  }
166
169
  html = template.capture { __getobj__.send(:inputs_for_nested_attributes, opts, &form_block) }
167
- text = new_record.is_a?(String) ? new_record : I18n.t('active_admin.has_many_new', model: assoc_name.human)
170
+ text = new_record.is_a?(String) ? new_record : I18n.t("active_admin.has_many_new", model: assoc_name.human)
168
171
 
169
- template.link_to text, '#', class: "button has_many_add", data: {
172
+ template.link_to text, "#", class: "button has_many_add", data: {
170
173
  html: CGI.escapeHTML(html).html_safe, placeholder: placeholder
171
174
  }
172
175
  end
173
176
 
174
177
  def wrap_div_or_li(html)
175
- template.content_tag(already_in_an_inputs_block ? :li : :div,
176
- html,
177
- class: "has_many_container #{assoc}",
178
- 'data-sortable' => sortable_column,
179
- 'data-sortable-start' => sortable_start)
178
+ template.content_tag(
179
+ already_in_an_inputs_block ? :li : :div,
180
+ html,
181
+ class: "has_many_container #{assoc}",
182
+ "data-sortable" => sortable_column,
183
+ "data-sortable-start" => sortable_start)
180
184
  end
181
185
  end
182
186
  end
@@ -14,7 +14,7 @@ module ActiveAdmin
14
14
  end
15
15
 
16
16
  def permit_params
17
- assignable_attributes.map { |a| a.to_sym.inspect }.join(', ')
17
+ assignable_attributes.map { |a| a.to_sym.inspect }.join(", ")
18
18
  end
19
19
 
20
20
  def rows
@@ -15,7 +15,7 @@ module ActiveAdmin
15
15
 
16
16
  module OptionalDisplay
17
17
  def display_on?(action, render_context = self)
18
- return false if @options[:only] && !@options[:only].include?(action.to_sym)
18
+ return false if @options[:only] && !@options[:only].include?(action.to_sym)
19
19
  return false if @options[:except] && @options[:except].include?(action.to_sym)
20
20
 
21
21
  case condition = @options[:if]
@@ -31,7 +31,7 @@ module ActiveAdmin
31
31
  private
32
32
 
33
33
  def normalize_display_options!
34
- @options[:only] = Array(@options[:only]) if @options[:only]
34
+ @options[:only] = Array(@options[:only]) if @options[:only]
35
35
  @options[:except] = Array(@options[:except]) if @options[:except]
36
36
  end
37
37
  end
@@ -3,7 +3,7 @@ module ActiveAdmin
3
3
  class DatepickerInput < ::Formtastic::Inputs::StringInput
4
4
  def input_html_options
5
5
  super.tap do |options|
6
- options[:class] = [options[:class], "datepicker"].compact.join(' ')
6
+ options[:class] = [options[:class], "datepicker"].compact.join(" ")
7
7
  options[:data] ||= {}
8
8
  options[:data].merge! datepicker_options
9
9
  end
@@ -25,7 +25,7 @@ module ActiveAdmin
25
25
 
26
26
  def wrapper_html_options
27
27
  opts = super
28
- (opts[:class] ||= '') << " filter_form_field filter_#{as}"
28
+ (opts[:class] ||= "") << " filter_form_field filter_#{as}"
29
29
  opts
30
30
  end
31
31
 
@@ -31,15 +31,15 @@ module ActiveAdmin
31
31
 
32
32
  def wrapper_html_options
33
33
  opts = super
34
- (opts[:class] ||= '') << ' select_and_search' unless seems_searchable?
34
+ (opts[:class] ||= "") << " select_and_search" unless seems_searchable?
35
35
  opts
36
36
  end
37
37
 
38
38
  def to_html
39
39
  input_wrapping do
40
- label_html << # your label
40
+ label_html << # your label
41
41
  select_html << # the dropdown that holds the available search methods
42
- input_html # your input field
42
+ input_html # your input field
43
43
  end
44
44
  end
45
45
 
@@ -48,7 +48,7 @@ module ActiveAdmin
48
48
  end
49
49
 
50
50
  def select_html
51
- template.select_tag '', template.options_for_select(filter_options, current_filter)
51
+ template.select_tag "", template.options_for_select(filter_options, current_filter)
52
52
  end
53
53
 
54
54
  def filters
@@ -16,7 +16,7 @@ module ActiveAdmin
16
16
 
17
17
  # Provide the AA translation to the blank input field.
18
18
  def include_blank
19
- I18n.t 'active_admin.any' if super
19
+ I18n.t "active_admin.any" if super
20
20
  end
21
21
  end
22
22
  end
@@ -22,7 +22,7 @@ module ActiveAdmin
22
22
 
23
23
  # Add whitespace before label
24
24
  def choice_label(choice)
25
- ' ' + super
25
+ " " + super
26
26
  end
27
27
 
28
28
  # Don't wrap in UL tag
@@ -7,7 +7,7 @@ module ActiveAdmin
7
7
  def input_name
8
8
  return method if seems_searchable?
9
9
 
10
- searchable_method_name + (multiple? ? '_in' : '_eq')
10
+ searchable_method_name + (multiple? ? "_in" : "_eq")
11
11
  end
12
12
 
13
13
  def searchable_method_name
@@ -22,7 +22,7 @@ module ActiveAdmin
22
22
 
23
23
  # Provide the AA translation to the blank input field.
24
24
  def include_blank
25
- I18n.t 'active_admin.any' if super
25
+ I18n.t "active_admin.any" if super
26
26
  end
27
27
 
28
28
  def input_html_options_name