activeadmin 2.2.0 → 2.14.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (299) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +469 -32
  3. data/CONTRIBUTING.md +46 -69
  4. data/README.md +13 -6
  5. data/app/assets/javascripts/active_admin/base.js +521 -0
  6. data/app/assets/stylesheets/active_admin/_base.scss +53 -37
  7. data/app/assets/stylesheets/active_admin/_forms.scss +1 -11
  8. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  9. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  10. data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +25 -123
  11. data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +2 -2
  12. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  13. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
  14. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
  15. data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
  16. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
  17. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
  18. data/app/assets/stylesheets/active_admin/structure/_footer.scss +6 -1
  19. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  20. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
  21. data/app/javascript/active_admin/base.js +28 -0
  22. data/app/{assets/javascripts/active_admin/lib/batch_actions.es6 → javascript/active_admin/initializers/batch-actions.js} +9 -3
  23. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  24. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  25. data/app/javascript/active_admin/initializers/filters.js +10 -0
  26. data/app/{assets/javascripts/active_admin/lib/has_many.es6 → javascript/active_admin/initializers/has-many.js} +4 -1
  27. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  28. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  29. data/app/{assets/javascripts/active_admin/lib/checkbox-toggler.es6 → javascript/active_admin/lib/checkbox-toggler.js} +5 -5
  30. data/app/{assets/javascripts/active_admin/lib/dropdown-menu.es6 → javascript/active_admin/lib/dropdown-menu.js} +3 -10
  31. data/app/javascript/active_admin/lib/filters.js +39 -0
  32. data/app/{assets/javascripts/active_admin/lib/modal_dialog.es6 → javascript/active_admin/lib/modal-dialog.js} +10 -8
  33. data/app/javascript/active_admin/lib/per-page.js +38 -0
  34. data/app/{assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 → javascript/active_admin/lib/table-checkbox-toggler.js} +5 -3
  35. data/app/javascript/active_admin/lib/utils.js +40 -0
  36. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  37. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  38. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  39. data/app/views/active_admin/page/index.html.arb +1 -0
  40. data/app/views/active_admin/resource/edit.html.arb +1 -0
  41. data/app/views/active_admin/resource/index.html.arb +1 -0
  42. data/app/views/active_admin/resource/new.html.arb +1 -0
  43. data/app/views/active_admin/resource/show.html.arb +1 -0
  44. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  45. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  46. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  47. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  48. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  49. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  50. data/app/views/layouts/active_admin.html.arb +1 -0
  51. data/app/views/layouts/active_admin_logged_out.html.erb +18 -7
  52. data/config/locales/ar.yml +6 -6
  53. data/config/locales/az.yml +138 -0
  54. data/config/locales/ca.yml +0 -1
  55. data/config/locales/de.yml +18 -0
  56. data/config/locales/en-CA.yml +3 -3
  57. data/config/locales/en-GB.yml +3 -3
  58. data/config/locales/en.yml +3 -3
  59. data/config/locales/es-MX.yml +2 -1
  60. data/config/locales/es.yml +5 -5
  61. data/config/locales/fr.yml +7 -7
  62. data/config/locales/it.yml +18 -0
  63. data/config/locales/ja.yml +3 -3
  64. data/config/locales/ko.yml +1 -1
  65. data/config/locales/lv.yml +2 -2
  66. data/config/locales/nl.yml +1 -1
  67. data/config/locales/ro.yml +3 -2
  68. data/config/locales/sk.yml +59 -0
  69. data/config/locales/vi.yml +40 -12
  70. data/config/locales/zh-CN.yml +36 -17
  71. data/lib/active_admin/abstract_view_factory.rb +1 -0
  72. data/lib/active_admin/application.rb +20 -20
  73. data/lib/active_admin/application_settings.rb +4 -3
  74. data/lib/active_admin/asset_registration.rb +4 -3
  75. data/lib/active_admin/authorization_adapter.rb +6 -3
  76. data/lib/active_admin/base_controller/authorization.rb +15 -13
  77. data/lib/active_admin/base_controller/menu.rb +1 -0
  78. data/lib/active_admin/base_controller.rb +6 -5
  79. data/lib/active_admin/batch_actions/controller.rb +4 -3
  80. data/lib/active_admin/batch_actions/resource_extension.rb +10 -8
  81. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
  82. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
  83. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
  84. data/lib/active_admin/batch_actions.rb +1 -0
  85. data/lib/active_admin/callbacks.rb +1 -0
  86. data/lib/active_admin/cancan_adapter.rb +2 -1
  87. data/lib/active_admin/collection_decorator.rb +32 -0
  88. data/lib/active_admin/component.rb +1 -0
  89. data/lib/active_admin/controller_action.rb +1 -0
  90. data/lib/active_admin/csv_builder.rb +13 -23
  91. data/lib/active_admin/dependency.rb +12 -15
  92. data/lib/active_admin/deprecation.rb +1 -0
  93. data/lib/active_admin/devise.rb +16 -5
  94. data/lib/active_admin/dsl.rb +2 -1
  95. data/lib/active_admin/dynamic_setting.rb +1 -0
  96. data/lib/active_admin/dynamic_settings_node.rb +3 -2
  97. data/lib/active_admin/engine.rb +13 -9
  98. data/lib/active_admin/error.rb +1 -2
  99. data/lib/active_admin/filters/active.rb +2 -1
  100. data/lib/active_admin/filters/active_filter.rb +7 -7
  101. data/lib/active_admin/filters/active_sidebar.rb +4 -30
  102. data/lib/active_admin/filters/dsl.rb +1 -0
  103. data/lib/active_admin/filters/forms.rb +7 -6
  104. data/lib/active_admin/filters/formtastic_addons.rb +2 -6
  105. data/lib/active_admin/filters/resource_extension.rb +30 -5
  106. data/lib/active_admin/filters.rb +8 -7
  107. data/lib/active_admin/form_builder.rb +25 -20
  108. data/lib/active_admin/generators/boilerplate.rb +13 -4
  109. data/lib/active_admin/helpers/collection.rb +2 -0
  110. data/lib/active_admin/helpers/i18n.rb +1 -0
  111. data/lib/active_admin/helpers/optional_display.rb +3 -2
  112. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  113. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  114. data/lib/active_admin/inputs/datepicker_input.rb +2 -1
  115. data/lib/active_admin/inputs/filters/base/search_method_select.rb +5 -4
  116. data/lib/active_admin/inputs/filters/base.rb +2 -1
  117. data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
  118. data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
  119. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  120. data/lib/active_admin/inputs/filters/date_range_input.rb +16 -12
  121. data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
  122. data/lib/active_admin/inputs/filters/select_input.rb +3 -2
  123. data/lib/active_admin/inputs/filters/string_input.rb +1 -0
  124. data/lib/active_admin/inputs/filters/text_input.rb +1 -0
  125. data/lib/active_admin/inputs.rb +1 -0
  126. data/lib/active_admin/localizers/resource_localizer.rb +4 -3
  127. data/lib/active_admin/localizers.rb +2 -1
  128. data/lib/active_admin/menu.rb +7 -3
  129. data/lib/active_admin/menu_collection.rb +1 -0
  130. data/lib/active_admin/menu_item.rb +8 -7
  131. data/lib/active_admin/namespace.rb +15 -14
  132. data/lib/active_admin/namespace_settings.rb +21 -4
  133. data/lib/active_admin/order_clause.rb +3 -2
  134. data/lib/active_admin/orm/active_record/comments/comment.rb +4 -3
  135. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  136. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  137. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  138. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +21 -20
  139. data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
  140. data/lib/active_admin/orm/active_record/comments.rb +28 -27
  141. data/lib/active_admin/orm/active_record.rb +2 -1
  142. data/lib/active_admin/orm/mongoid.rb +1 -0
  143. data/lib/active_admin/page.rb +2 -1
  144. data/lib/active_admin/page_controller.rb +1 -0
  145. data/lib/active_admin/page_dsl.rb +1 -0
  146. data/lib/active_admin/page_presenter.rb +1 -0
  147. data/lib/active_admin/pundit_adapter.rb +57 -15
  148. data/lib/active_admin/resource/action_items.rb +6 -5
  149. data/lib/active_admin/resource/attributes.rb +2 -1
  150. data/lib/active_admin/resource/belongs_to.rb +6 -2
  151. data/lib/active_admin/resource/controllers.rb +2 -1
  152. data/lib/active_admin/resource/includes.rb +1 -0
  153. data/lib/active_admin/resource/menu.rb +5 -4
  154. data/lib/active_admin/resource/model.rb +16 -0
  155. data/lib/active_admin/resource/naming.rb +6 -5
  156. data/lib/active_admin/resource/ordering.rb +1 -0
  157. data/lib/active_admin/resource/page_presenters.rb +1 -0
  158. data/lib/active_admin/resource/pagination.rb +1 -0
  159. data/lib/active_admin/resource/routes.rb +17 -10
  160. data/lib/active_admin/resource/scope_to.rb +8 -7
  161. data/lib/active_admin/resource/scopes.rb +1 -0
  162. data/lib/active_admin/resource/sidebars.rb +2 -1
  163. data/lib/active_admin/resource.rb +33 -19
  164. data/lib/active_admin/resource_collection.rb +1 -0
  165. data/lib/active_admin/resource_controller/action_builder.rb +1 -0
  166. data/lib/active_admin/resource_controller/data_access.rb +31 -5
  167. data/lib/active_admin/resource_controller/decorators.rb +8 -29
  168. data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
  169. data/lib/active_admin/resource_controller/resource_class_methods.rb +1 -0
  170. data/lib/active_admin/resource_controller/scoping.rb +1 -0
  171. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  172. data/lib/active_admin/resource_controller/streaming.rb +9 -7
  173. data/lib/active_admin/resource_controller.rb +14 -10
  174. data/lib/active_admin/resource_dsl.rb +11 -25
  175. data/lib/active_admin/router.rb +1 -0
  176. data/lib/active_admin/scope.rb +7 -6
  177. data/lib/active_admin/settings_node.rb +1 -0
  178. data/lib/active_admin/sidebar_section.rb +1 -0
  179. data/lib/active_admin/version.rb +2 -1
  180. data/lib/active_admin/view_factory.rb +18 -17
  181. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  182. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
  183. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
  184. data/lib/active_admin/view_helpers/display_helper.rb +15 -7
  185. data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -1
  186. data/lib/active_admin/view_helpers/fields_for.rb +3 -2
  187. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  188. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  189. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -0
  190. data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
  191. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  192. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  193. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  194. data/lib/active_admin/view_helpers.rb +2 -1
  195. data/lib/active_admin/views/action_items.rb +1 -0
  196. data/lib/active_admin/views/components/active_admin_form.rb +7 -6
  197. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  198. data/lib/active_admin/views/components/attributes_table.rb +6 -5
  199. data/lib/active_admin/views/components/blank_slate.rb +2 -1
  200. data/lib/active_admin/views/components/columns.rb +1 -0
  201. data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
  202. data/lib/active_admin/views/components/index_list.rb +4 -3
  203. data/lib/active_admin/views/components/menu.rb +2 -1
  204. data/lib/active_admin/views/components/menu_item.rb +5 -4
  205. data/lib/active_admin/views/components/paginated_collection.rb +21 -19
  206. data/lib/active_admin/views/components/panel.rb +2 -1
  207. data/lib/active_admin/views/components/scopes.rb +8 -5
  208. data/lib/active_admin/views/components/sidebar.rb +1 -0
  209. data/lib/active_admin/views/components/sidebar_section.rb +1 -0
  210. data/lib/active_admin/views/components/site_title.rb +2 -1
  211. data/lib/active_admin/views/components/status_tag.rb +12 -11
  212. data/lib/active_admin/views/components/table_for.rb +19 -17
  213. data/lib/active_admin/views/components/tabs.rb +4 -3
  214. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  215. data/lib/active_admin/views/footer.rb +3 -1
  216. data/lib/active_admin/views/header.rb +3 -2
  217. data/lib/active_admin/views/index_as_block.rb +1 -0
  218. data/lib/active_admin/views/index_as_blog.rb +2 -1
  219. data/lib/active_admin/views/index_as_grid.rb +2 -1
  220. data/lib/active_admin/views/index_as_table.rb +24 -16
  221. data/lib/active_admin/views/pages/base.rb +22 -14
  222. data/lib/active_admin/views/pages/form.rb +1 -0
  223. data/lib/active_admin/views/pages/index.rb +16 -13
  224. data/lib/active_admin/views/pages/layout.rb +1 -0
  225. data/lib/active_admin/views/pages/page.rb +1 -0
  226. data/lib/active_admin/views/pages/show.rb +1 -0
  227. data/lib/active_admin/views/tabbed_navigation.rb +3 -2
  228. data/lib/active_admin/views/title_bar.rb +2 -1
  229. data/lib/active_admin/views.rb +2 -1
  230. data/lib/active_admin.rb +63 -64
  231. data/lib/activeadmin.rb +2 -1
  232. data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
  233. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  234. data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
  235. data/lib/generators/active_admin/install/install_generator.rb +15 -8
  236. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +38 -1
  237. data/lib/generators/active_admin/install/templates/dashboard.rb +1 -0
  238. data/lib/generators/active_admin/page/page_generator.rb +2 -1
  239. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  240. data/lib/generators/active_admin/resource/resource_generator.rb +4 -3
  241. data/lib/generators/active_admin/resource/templates/admin.rb.erb +4 -2
  242. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  243. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  244. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  245. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  246. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  247. data/lib/ransack_ext.rb +9 -8
  248. metadata +64 -132
  249. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  250. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  251. data/app/assets/images/active_admin/orderable.png +0 -0
  252. data/app/assets/javascripts/active_admin/base.es6 +0 -23
  253. data/app/assets/javascripts/active_admin/initializers/filters.es6 +0 -45
  254. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +0 -41
  255. data/app/assets/javascripts/active_admin/lib/per_page.es6 +0 -47
  256. data/docs/.gitignore +0 -1
  257. data/docs/0-installation.md +0 -118
  258. data/docs/1-general-configuration.md +0 -204
  259. data/docs/10-custom-pages.md +0 -150
  260. data/docs/11-decorators.md +0 -59
  261. data/docs/12-arbre-components.md +0 -214
  262. data/docs/13-authorization-adapter.md +0 -285
  263. data/docs/14-gotchas.md +0 -138
  264. data/docs/2-resource-customization.md +0 -466
  265. data/docs/3-index-pages/custom-index.md +0 -35
  266. data/docs/3-index-pages/index-as-block.md +0 -19
  267. data/docs/3-index-pages/index-as-blog.md +0 -69
  268. data/docs/3-index-pages/index-as-grid.md +0 -27
  269. data/docs/3-index-pages/index-as-table.md +0 -227
  270. data/docs/3-index-pages.md +0 -328
  271. data/docs/4-csv-format.md +0 -74
  272. data/docs/5-forms.md +0 -232
  273. data/docs/6-show-pages.md +0 -81
  274. data/docs/7-sidebars.md +0 -75
  275. data/docs/8-custom-actions.md +0 -177
  276. data/docs/9-batch-actions.md +0 -237
  277. data/docs/CNAME +0 -1
  278. data/docs/Gemfile +0 -4
  279. data/docs/Gemfile.lock +0 -249
  280. data/docs/README.md +0 -24
  281. data/docs/_config.yml +0 -2
  282. data/docs/_includes/footer.html +0 -8
  283. data/docs/_includes/google-analytics.html +0 -16
  284. data/docs/_includes/head.html +0 -7
  285. data/docs/_includes/toc.html +0 -98
  286. data/docs/_includes/top-menu.html +0 -17
  287. data/docs/_layouts/default.html +0 -21
  288. data/docs/documentation.md +0 -60
  289. data/docs/images/activeadmin.png +0 -0
  290. data/docs/images/code-header.png +0 -0
  291. data/docs/images/divider.png +0 -0
  292. data/docs/images/features.png +0 -0
  293. data/docs/images/tidelift.svg +0 -14
  294. data/docs/index.html +0 -125
  295. data/docs/stylesheets/main.css +0 -1176
  296. /data/app/{assets/javascripts/active_admin/ext/jquery-ui.es6 → javascript/active_admin/ext/jquery-ui.js} +0 -0
  297. /data/app/{assets/javascripts/active_admin/ext/jquery.es6 → javascript/active_admin/ext/jquery.js} +0 -0
  298. /data/app/{assets/javascripts/active_admin/initializers/datepicker.es6 → javascript/active_admin/initializers/datepicker.js} +0 -0
  299. /data/app/{assets/javascripts/active_admin/initializers/tabs.es6 → javascript/active_admin/initializers/tabs.js} +0 -0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This is a common set of Formtastic overrides needed to build a filter form
2
3
  # that lets you select from a set of search methods for a given attribute.
3
4
  #
@@ -31,15 +32,15 @@ module ActiveAdmin
31
32
 
32
33
  def wrapper_html_options
33
34
  opts = super
34
- (opts[:class] ||= '') << ' select_and_search' unless seems_searchable?
35
+ (opts[:class] ||= "") << " select_and_search" unless seems_searchable?
35
36
  opts
36
37
  end
37
38
 
38
39
  def to_html
39
40
  input_wrapping do
40
- label_html << # your label
41
+ label_html << # your label
41
42
  select_html << # the dropdown that holds the available search methods
42
- input_html # your input field
43
+ input_html # your input field
43
44
  end
44
45
  end
45
46
 
@@ -48,7 +49,7 @@ module ActiveAdmin
48
49
  end
49
50
 
50
51
  def select_html
51
- template.select_tag '', template.options_for_select(filter_options, current_filter)
52
+ template.select_tag "", template.options_for_select(filter_options, current_filter)
52
53
  end
53
54
 
54
55
  def filters
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Inputs
3
4
  module Filters
@@ -25,7 +26,7 @@ module ActiveAdmin
25
26
 
26
27
  def wrapper_html_options
27
28
  opts = super
28
- (opts[:class] ||= '') << " filter_form_field filter_#{as}"
29
+ (opts[:class] ||= "") << " filter_form_field filter_#{as}"
29
30
  opts
30
31
  end
31
32
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Inputs
3
4
  module Filters
@@ -16,7 +17,7 @@ module ActiveAdmin
16
17
 
17
18
  # Provide the AA translation to the blank input field.
18
19
  def include_blank
19
- I18n.t 'active_admin.any' if super
20
+ I18n.t "active_admin.any" if super
20
21
  end
21
22
  end
22
23
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Inputs
3
4
  module Filters
@@ -22,7 +23,7 @@ module ActiveAdmin
22
23
 
23
24
  # Add whitespace before label
24
25
  def choice_label(choice)
25
- ' ' + super
26
+ " " + super
26
27
  end
27
28
 
28
29
  # Don't wrap in UL tag
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Inputs
3
4
  module Filters
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Inputs
3
4
  module Filters
@@ -7,8 +8,8 @@ module ActiveAdmin
7
8
  def to_html
8
9
  input_wrapping do
9
10
  [ label_html,
10
- builder.text_field(gt_input_name, input_html_options(gt_input_name, gt_input_placeholder)),
11
- builder.text_field(lt_input_name, input_html_options(lt_input_name, lt_input_placeholder)),
11
+ builder.text_field(gt_input_name, input_html_options_for(gt_input_name, gt_input_placeholder)),
12
+ builder.text_field(lt_input_name, input_html_options_for(lt_input_name, lt_input_placeholder)),
12
13
  ].join("\n").html_safe
13
14
  end
14
15
  end
@@ -22,18 +23,21 @@ module ActiveAdmin
22
23
  column && column.type == :date ? "#{method}_lteq" : "#{method}_lteq_datetime"
23
24
  end
24
25
 
25
- def input_html_options(input_name = gt_input_name, placeholder = gt_input_placeholder)
26
- current_value = begin
27
- #cast value to date object before rendering input
28
- @object.public_send(input_name).to_s.to_date
29
- rescue
30
- nil
31
- end
26
+ def input_html_options
32
27
  { size: 12,
33
28
  class: "datepicker",
34
- maxlength: 10,
35
- placeholder: placeholder,
36
- value: current_value ? current_value.strftime("%Y-%m-%d") : "" }
29
+ maxlength: 10 }.merge(options[:input_html] || {})
30
+ end
31
+
32
+ def input_html_options_for(input_name, placeholder)
33
+ current_value = begin
34
+ #cast value to date object before rendering input
35
+ @object.public_send(input_name).to_s.to_date
36
+ rescue
37
+ nil
38
+ end
39
+ { placeholder: placeholder,
40
+ value: current_value ? current_value.strftime("%Y-%m-%d") : "" }.merge(input_html_options)
37
41
  end
38
42
 
39
43
  def gt_input_placeholder
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Inputs
3
4
  module Filters
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Inputs
3
4
  module Filters
@@ -7,7 +8,7 @@ module ActiveAdmin
7
8
  def input_name
8
9
  return method if seems_searchable?
9
10
 
10
- searchable_method_name + (multiple? ? '_in' : '_eq')
11
+ searchable_method_name + (multiple? ? "_in" : "_eq")
11
12
  end
12
13
 
13
14
  def searchable_method_name
@@ -22,7 +23,7 @@ module ActiveAdmin
22
23
 
23
24
  # Provide the AA translation to the blank input field.
24
25
  def include_blank
25
- I18n.t 'active_admin.any' if super
26
+ I18n.t "active_admin.any" if super
26
27
  end
27
28
 
28
29
  def input_html_options_name
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Inputs
3
4
  module Filters
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Inputs
3
4
  module Filters
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Inputs
3
4
  extend ActiveSupport::Autoload
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Localizers
3
4
  class ResourceLocalizer
@@ -19,16 +20,16 @@ module ActiveAdmin
19
20
 
20
21
  def translate(key, options = {})
21
22
  scope = options.delete(:scope)
22
- specific_key = array_to_key('resources', @model_name, scope, key)
23
+ specific_key = array_to_key("resources", @model_name, scope, key)
23
24
  defaults = [array_to_key(scope, key), key.to_s.titleize]
24
- ::I18n.t specific_key, options.reverse_merge(model: @model, default: defaults, scope: 'active_admin')
25
+ ::I18n.t specific_key, **options.reverse_merge(model: @model, default: defaults, scope: "active_admin")
25
26
  end
26
27
  alias_method :t, :translate
27
28
 
28
29
  protected
29
30
 
30
31
  def array_to_key(*arr)
31
- arr.flatten.compact.join('.').to_sym
32
+ arr.flatten.compact.join(".").to_sym
32
33
  end
33
34
  end
34
35
  end
@@ -1,4 +1,5 @@
1
- require 'active_admin/localizers/resource_localizer'
1
+ # frozen_string_literal: true
2
+ require "active_admin/localizers/resource_localizer"
2
3
 
3
4
  module ActiveAdmin
4
5
  module Localizers
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
 
3
4
  # Each Namespace builds up it's own menu as the global navigation
@@ -47,7 +48,10 @@ module ActiveAdmin
47
48
  # menu.add parent: 'Dashboard', label: 'My Child Dashboard'
48
49
  #
49
50
  def add(options)
50
- item = if parent = options.delete(:parent)
51
+ parent_chain = Array.wrap(options.delete(:parent))
52
+
53
+ item = if parent = parent_chain.shift
54
+ options[:parent] = parent_chain if parent_chain.any?
51
55
  (self[parent] || add(label: parent)).add options
52
56
  else
53
57
  _add options.merge parent: self
@@ -60,7 +64,7 @@ module ActiveAdmin
60
64
 
61
65
  # Whether any children match the given item.
62
66
  def include?(item)
63
- @children.values.include? item
67
+ @children.values.include?(item) || @children.values.any? { |child| child.include?(item) }
64
68
  end
65
69
 
66
70
  # Used in the UI to visually distinguish which menu item is selected.
@@ -87,7 +91,7 @@ module ActiveAdmin
87
91
  def normalize_id(id)
88
92
  case id
89
93
  when String, Symbol, ActiveModel::Name
90
- id.to_s.downcase.tr ' ', '_'
94
+ id.to_s.downcase.tr " ", "_"
91
95
  when ActiveAdmin::Resource::Name
92
96
  id.param_key
93
97
  else
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
 
3
4
  DEFAULT_MENU = :default
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  class MenuItem
3
4
  include Menu::MenuNode
@@ -45,13 +46,13 @@ module ActiveAdmin
45
46
  #
46
47
  def initialize(options = {})
47
48
  super() # MenuNode
48
- @label = options[:label]
49
- @dirty_id = options[:id] || options[:label]
50
- @url = options[:url] || '#'
51
- @priority = options[:priority] || 10
52
- @html_options = options[:html_options] || {}
53
- @should_display = options[:if] || proc { true }
54
- @parent = options[:parent]
49
+ @label = options[:label]
50
+ @dirty_id = options[:id] || options[:label]
51
+ @url = options[:url] || "#"
52
+ @priority = options[:priority] || 10
53
+ @html_options = options[:html_options] || {}
54
+ @should_display = options[:if] || proc { true }
55
+ @parent = options[:parent]
55
56
 
56
57
  yield(self) if block_given? # Builder style syntax
57
58
  end
@@ -1,4 +1,5 @@
1
- require 'active_admin/resource_collection'
1
+ # frozen_string_literal: true
2
+ require "active_admin/resource_collection"
2
3
 
3
4
  module ActiveAdmin
4
5
 
@@ -31,7 +32,7 @@ module ActiveAdmin
31
32
  end
32
33
  end
33
34
 
34
- RegisterEvent = 'active_admin.namespace.register'.freeze
35
+ RegisterEvent = "active_admin.namespace.register".freeze
35
36
 
36
37
  attr_reader :application, :resources, :menus
37
38
 
@@ -59,7 +60,7 @@ module ActiveAdmin
59
60
  settings.respond_to?(method) ? settings.send(method, *args) : super
60
61
  end
61
62
 
62
- # Register a resource into this namespace. The preffered method to access this is to
63
+ # Register a resource into this namespace. The preferred method to access this is to
63
64
  # use the global registration ActiveAdmin.register which delegates to the proper
64
65
  # namespace instance.
65
66
  def register(resource_class, options = {}, &block)
@@ -71,7 +72,7 @@ module ActiveAdmin
71
72
  reset_menu!
72
73
 
73
74
  # Dispatch a registration event
74
- ActiveSupport::Notifications.publish ActiveAdmin::Resource::RegisterEvent, config
75
+ ActiveSupport::Notifications.instrument ActiveAdmin::Resource::RegisterEvent, { active_admin_resource: config }
75
76
 
76
77
  # Return the config
77
78
  config
@@ -149,10 +150,10 @@ module ActiveAdmin
149
150
  def add_logout_button_to_menu(menu, priority = 20, html_options = {})
150
151
  if logout_link_path
151
152
  html_options = html_options.reverse_merge(method: logout_link_method || :get)
152
- menu.add id: 'logout', priority: priority, html_options: html_options,
153
- label: -> { I18n.t 'active_admin.logout' },
154
- url: -> { render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
155
- if: :current_active_admin_user?
153
+ menu.add id: "logout", priority: priority, html_options: html_options,
154
+ label: -> { I18n.t "active_admin.logout" },
155
+ url: -> { render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
156
+ if: :current_active_admin_user?
156
157
  end
157
158
  end
158
159
 
@@ -164,10 +165,10 @@ module ActiveAdmin
164
165
  #
165
166
  def add_current_user_to_menu(menu, priority = 10, html_options = {})
166
167
  if current_user_method
167
- menu.add id: 'current_user', priority: priority, html_options: html_options,
168
- label: -> { display_name current_active_admin_user },
169
- url: -> { auto_url_for(current_active_admin_user) },
170
- if: :current_active_admin_user?
168
+ menu.add id: "current_user", priority: priority, html_options: html_options,
169
+ label: -> { display_name current_active_admin_user },
170
+ url: -> { auto_url_for(current_active_admin_user) },
171
+ if: :current_active_admin_user?
171
172
  end
172
173
  end
173
174
 
@@ -211,8 +212,8 @@ module ActiveAdmin
211
212
 
212
213
  def unload_resources!
213
214
  resources.each do |resource|
214
- parent = (module_name || 'Object').constantize
215
- name = resource.controller_name.split('::').last
215
+ parent = (module_name || "Object").constantize
216
+ name = resource.controller_name.split("::").last
216
217
  parent.send(:remove_const, name) if parent.const_defined?(name, false)
217
218
 
218
219
  # Remove circular references
@@ -1,4 +1,5 @@
1
- require 'active_admin/dynamic_settings_node'
1
+ # frozen_string_literal: true
2
+ require "active_admin/dynamic_settings_node"
2
3
 
3
4
  module ActiveAdmin
4
5
  class NamespaceSettings < DynamicSettingsNode
@@ -57,7 +58,7 @@ module ActiveAdmin
57
58
  register :filters, true
58
59
 
59
60
  # The namespace root
60
- register :root_to, 'dashboard#index'
61
+ register :root_to, "dashboard#index"
61
62
 
62
63
  # Options that are passed to root_to
63
64
  register :root_to_options, {}
@@ -73,7 +74,7 @@ module ActiveAdmin
73
74
  register :create_another, false
74
75
 
75
76
  # Default CSV options
76
- register :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
77
+ register :csv_options, { col_sep: ",", byte_order_mark: "\xEF\xBB\xBF" }
77
78
 
78
79
  # Default Download Links options
79
80
  register :download_links, true
@@ -102,9 +103,25 @@ module ActiveAdmin
102
103
  ]
103
104
 
104
105
  # Set flash message keys that shouldn't show in ActiveAdmin
105
- register :flash_keys_to_except, ['timedout']
106
+ register :flash_keys_to_except, ["timedout"]
106
107
 
107
108
  # Include association filters by default
108
109
  register :include_default_association_filters, true
110
+
111
+ register :maximum_association_filter_arity, :unlimited
112
+
113
+ register :filter_columns_for_large_association, [
114
+ :display_name,
115
+ :full_name,
116
+ :name,
117
+ :username,
118
+ :login,
119
+ :title,
120
+ :email,
121
+ ]
122
+ register :filter_method_for_large_association, "_starts_with"
123
+
124
+ # Switch between asset pipeline and webpacker assets
125
+ register :use_webpacker, false
109
126
  end
110
127
  end
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  class OrderClause
3
4
  attr_reader :field, :order, :active_admin_config
4
5
 
5
6
  def initialize(active_admin_config, clause)
6
- clause =~ /^([\w\_\.]+)(->'\w+')?_(desc|asc)$/
7
+ clause =~ /^([\w\.]+)(->'\w+')?_(desc|asc)$/
7
8
  @column = $1
8
9
  @op = $2
9
10
  @order = $3
@@ -20,7 +21,7 @@ module ActiveAdmin
20
21
  end
21
22
 
22
23
  def to_sql
23
- [table_column, @op, ' ', @order].compact.join
24
+ [table_column, @op, " ", @order].compact.join
24
25
  end
25
26
 
26
27
  def table
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  class Comment < ActiveRecord::Base
3
4
 
4
5
  self.table_name = "#{table_name_prefix}active_admin_comments#{table_name_suffix}"
5
6
 
6
7
  belongs_to :resource, polymorphic: true, optional: true
7
- belongs_to :author, polymorphic: true
8
+ belongs_to :author, polymorphic: true
8
9
 
9
10
  validates_presence_of :body, :namespace, :resource
10
11
 
@@ -18,8 +19,8 @@ module ActiveAdmin
18
19
  def self.find_for_resource_in_namespace(resource, namespace)
19
20
  where(
20
21
  resource_type: resource_type(resource),
21
- resource_id: resource.id,
22
- namespace: namespace.to_s
22
+ resource_id: resource.id,
23
+ namespace: namespace.to_s
23
24
  ).order(ActiveAdmin.application.namespaces[namespace.to_sym].comments_order)
24
25
  end
25
26
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Comments
3
4
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Comments
3
4
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Comments
3
4
 
@@ -1,5 +1,6 @@
1
- require 'active_admin/views'
2
- require 'active_admin/views/components/panel'
1
+ # frozen_string_literal: true
2
+ require "active_admin/views"
3
+ require "active_admin/views/components/panel"
3
4
 
4
5
  module ActiveAdmin
5
6
  module Comments
@@ -22,76 +23,76 @@ module ActiveAdmin
22
23
  protected
23
24
 
24
25
  def title
25
- I18n.t 'active_admin.comments.title_content', count: @comments.total_count
26
+ I18n.t "active_admin.comments.title_content", count: @comments.total_count
26
27
  end
27
28
 
28
29
  def build_comments
29
30
  if @comments.any?
30
31
  @comments.each(&method(:build_comment))
31
- div page_entries_info(@comments).html_safe, class: 'pagination_information'
32
+ div page_entries_info(@comments).html_safe, class: "pagination_information"
32
33
  else
33
34
  build_empty_message
34
35
  end
35
36
 
36
37
  text_node paginate @comments
37
38
 
38
- if authorized?(ActiveAdmin::Auth::CREATE, ActiveAdmin::Comment)
39
+ if authorized?(ActiveAdmin::Auth::NEW, ActiveAdmin::Comment)
39
40
  build_comment_form
40
41
  end
41
42
  end
42
43
 
43
44
  def build_comment(comment)
44
45
  div for: comment do
45
- div class: 'active_admin_comment_meta' do
46
- h4 class: 'active_admin_comment_author' do
47
- comment.author ? auto_link(comment.author) : I18n.t('active_admin.comments.author_missing')
46
+ div class: "active_admin_comment_meta" do
47
+ h4 class: "active_admin_comment_author" do
48
+ comment.author ? auto_link(comment.author) : I18n.t("active_admin.comments.author_missing")
48
49
  end
49
50
  span pretty_format comment.created_at
50
51
  if authorized?(ActiveAdmin::Auth::DESTROY, comment)
51
- text_node link_to I18n.t('active_admin.comments.delete'), comments_url(comment.id), method: :delete, data: { confirm: I18n.t('active_admin.comments.delete_confirmation') }
52
+ text_node link_to I18n.t("active_admin.comments.delete"), comments_url(comment.id), method: :delete, data: { confirm: I18n.t("active_admin.comments.delete_confirmation") }
52
53
  end
53
54
  end
54
- div class: 'active_admin_comment_body' do
55
+ div class: "active_admin_comment_body" do
55
56
  simple_format comment.body
56
57
  end
57
58
  end
58
59
  end
59
60
 
60
61
  def build_empty_message
61
- span I18n.t('active_admin.comments.no_comments_yet'), class: 'empty'
62
+ span I18n.t("active_admin.comments.no_comments_yet"), class: "empty"
62
63
  end
63
64
 
64
65
  def comments_url(*args)
65
66
  parts = []
66
67
  parts << active_admin_namespace.name unless active_admin_namespace.root?
67
68
  parts << active_admin_namespace.comments_registration_name.underscore
68
- parts << 'path'
69
- send parts.join('_'), *args
69
+ parts << "path"
70
+ send parts.join("_"), *args
70
71
  end
71
72
 
72
73
  def comment_form_url
73
74
  parts = []
74
75
  parts << active_admin_namespace.name unless active_admin_namespace.root?
75
76
  parts << active_admin_namespace.comments_registration_name.underscore.pluralize
76
- parts << 'path'
77
- send parts.join '_'
77
+ parts << "path"
78
+ send parts.join "_"
78
79
  end
79
80
 
80
81
  def build_comment_form
81
82
  active_admin_form_for(ActiveAdmin::Comment.new, url: comment_form_url) do |f|
82
83
  f.inputs do
83
- f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
84
- f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
85
- f.input :body, label: false, input_html: { size: '80x8' }
84
+ f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
85
+ f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
86
+ f.input :body, label: false, input_html: { size: "80x8" }
86
87
  end
87
88
  f.actions do
88
- f.action :submit, label: I18n.t('active_admin.comments.add')
89
+ f.action :submit, label: I18n.t("active_admin.comments.add")
89
90
  end
90
91
  end
91
92
  end
92
93
 
93
94
  def default_id_for_prefix
94
- 'active_admin_comments_for'
95
+ "active_admin_comments_for"
95
96
  end
96
97
  end
97
98
 
@@ -1,2 +1,3 @@
1
- require 'active_admin/views'
2
- require 'active_admin/orm/active_record/comments/views/active_admin_comments'
1
+ # frozen_string_literal: true
2
+ require "active_admin/views"
3
+ require "active_admin/orm/active_record/comments/views/active_admin_comments"