activeadmin 2.6.1 → 3.2.3

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 (326) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +438 -9
  3. data/CONTRIBUTING.md +12 -36
  4. data/README.md +8 -8
  5. data/app/assets/javascripts/active_admin/base.js +27 -25
  6. data/app/assets/stylesheets/active_admin/_base.scss +53 -37
  7. data/app/assets/stylesheets/active_admin/_forms.scss +2 -13
  8. data/app/assets/stylesheets/active_admin/_header.scss +37 -3
  9. data/app/assets/stylesheets/active_admin/_normalize.scss +25 -123
  10. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  11. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
  12. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +7 -5
  13. data/app/assets/stylesheets/active_admin/components/_pagination.scss +5 -2
  14. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +9 -6
  15. data/app/assets/stylesheets/active_admin/components/_tabs.scss +10 -7
  16. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +2 -2
  17. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +12 -0
  18. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +1 -1
  19. data/app/assets/stylesheets/active_admin/structure/_footer.scss +6 -1
  20. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +6 -4
  21. data/app/javascript/active_admin/initializers/has-many.js +4 -1
  22. data/app/javascript/active_admin/initializers/per-page.js +1 -1
  23. data/app/javascript/active_admin/lib/checkbox-toggler.js +3 -3
  24. data/app/javascript/active_admin/lib/dropdown-menu.js +1 -1
  25. data/app/javascript/active_admin/lib/modal-dialog.js +7 -7
  26. data/app/javascript/active_admin/lib/per-page.js +1 -1
  27. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +1 -1
  28. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  29. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  30. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  31. data/app/views/active_admin/page/index.html.arb +1 -0
  32. data/app/views/active_admin/resource/edit.html.arb +1 -0
  33. data/app/views/active_admin/resource/index.html.arb +1 -0
  34. data/app/views/active_admin/resource/new.html.arb +1 -0
  35. data/app/views/active_admin/resource/show.html.arb +1 -0
  36. data/app/views/layouts/active_admin.html.arb +1 -0
  37. data/app/views/layouts/active_admin_logged_out.html.erb +18 -7
  38. data/config/locales/ar.yml +6 -13
  39. data/config/locales/az.yml +0 -7
  40. data/config/locales/bg.yml +0 -7
  41. data/config/locales/bs.yml +0 -7
  42. data/config/locales/ca.yml +0 -7
  43. data/config/locales/cs.yml +0 -7
  44. data/config/locales/da.yml +0 -7
  45. data/config/locales/de-CH.yml +0 -7
  46. data/config/locales/de.yml +0 -8
  47. data/config/locales/el.yml +0 -7
  48. data/config/locales/en-CA.yml +0 -7
  49. data/config/locales/en-GB.yml +0 -7
  50. data/config/locales/en.yml +0 -8
  51. data/config/locales/eo.yml +0 -8
  52. data/config/locales/es-MX.yml +2 -8
  53. data/config/locales/es.yml +2 -10
  54. data/config/locales/fa.yml +0 -7
  55. data/config/locales/fi.yml +0 -7
  56. data/config/locales/fr.yml +3 -11
  57. data/config/locales/he.yml +0 -9
  58. data/config/locales/hr.yml +0 -7
  59. data/config/locales/hu.yml +0 -8
  60. data/config/locales/id.yml +0 -7
  61. data/config/locales/it.yml +18 -8
  62. data/config/locales/ja.yml +2 -10
  63. data/config/locales/ko.yml +1 -8
  64. data/config/locales/lt.yml +0 -8
  65. data/config/locales/lv.yml +0 -7
  66. data/config/locales/mk.yml +0 -8
  67. data/config/locales/nb.yml +0 -8
  68. data/config/locales/nl.yml +1 -9
  69. data/config/locales/pl.yml +0 -8
  70. data/config/locales/pt-BR.yml +0 -8
  71. data/config/locales/pt-PT.yml +0 -7
  72. data/config/locales/ro.yml +3 -9
  73. data/config/locales/ru.yml +0 -6
  74. data/config/locales/sk.yml +0 -8
  75. data/config/locales/sv-SE.yml +58 -39
  76. data/config/locales/tr.yml +0 -11
  77. data/config/locales/uk.yml +0 -6
  78. data/config/locales/vi.yml +38 -19
  79. data/config/locales/zh-CN.yml +34 -23
  80. data/config/locales/zh-TW.yml +0 -7
  81. data/lib/active_admin/abstract_view_factory.rb +1 -0
  82. data/lib/active_admin/application.rb +19 -19
  83. data/lib/active_admin/application_settings.rb +4 -3
  84. data/lib/active_admin/asset_registration.rb +4 -3
  85. data/lib/active_admin/authorization_adapter.rb +6 -3
  86. data/lib/active_admin/base_controller/authorization.rb +15 -13
  87. data/lib/active_admin/base_controller/menu.rb +1 -0
  88. data/lib/active_admin/base_controller.rb +6 -5
  89. data/lib/active_admin/batch_actions/controller.rb +4 -3
  90. data/lib/active_admin/batch_actions/resource_extension.rb +10 -8
  91. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
  92. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
  93. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
  94. data/lib/active_admin/batch_actions.rb +1 -0
  95. data/lib/active_admin/callbacks.rb +1 -0
  96. data/lib/active_admin/cancan_adapter.rb +2 -1
  97. data/lib/active_admin/collection_decorator.rb +32 -0
  98. data/lib/active_admin/component.rb +1 -0
  99. data/lib/active_admin/controller_action.rb +1 -0
  100. data/lib/active_admin/csv_builder.rb +25 -17
  101. data/lib/active_admin/dependency.rb +12 -15
  102. data/lib/active_admin/devise.rb +16 -5
  103. data/lib/active_admin/dsl.rb +2 -1
  104. data/lib/active_admin/dynamic_setting.rb +1 -0
  105. data/lib/active_admin/dynamic_settings_node.rb +3 -2
  106. data/lib/active_admin/engine.rb +17 -9
  107. data/lib/active_admin/error.rb +1 -2
  108. data/lib/active_admin/filters/active.rb +2 -1
  109. data/lib/active_admin/filters/active_filter.rb +6 -6
  110. data/lib/active_admin/filters/active_sidebar.rb +4 -30
  111. data/lib/active_admin/filters/dsl.rb +1 -0
  112. data/lib/active_admin/filters/forms.rb +9 -8
  113. data/lib/active_admin/filters/formtastic_addons.rb +3 -7
  114. data/lib/active_admin/filters/resource_extension.rb +6 -5
  115. data/lib/active_admin/filters.rb +8 -7
  116. data/lib/active_admin/form_builder.rb +25 -20
  117. data/lib/active_admin/generators/boilerplate.rb +2 -1
  118. data/lib/active_admin/helpers/collection.rb +2 -0
  119. data/lib/active_admin/helpers/i18n.rb +1 -0
  120. data/lib/active_admin/helpers/optional_display.rb +3 -2
  121. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  122. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  123. data/lib/active_admin/inputs/datepicker_input.rb +2 -1
  124. data/lib/active_admin/inputs/filters/base/search_method_select.rb +7 -6
  125. data/lib/active_admin/inputs/filters/base.rb +2 -1
  126. data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
  127. data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
  128. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  129. data/lib/active_admin/inputs/filters/date_range_input.rb +3 -2
  130. data/lib/active_admin/inputs/filters/numeric_input.rb +2 -1
  131. data/lib/active_admin/inputs/filters/select_input.rb +5 -2
  132. data/lib/active_admin/inputs/filters/string_input.rb +2 -1
  133. data/lib/active_admin/inputs/filters/text_input.rb +1 -0
  134. data/lib/active_admin/inputs.rb +1 -0
  135. data/lib/active_admin/localizers/resource_localizer.rb +4 -3
  136. data/lib/active_admin/localizers.rb +2 -1
  137. data/lib/active_admin/menu.rb +8 -3
  138. data/lib/active_admin/menu_collection.rb +1 -0
  139. data/lib/active_admin/menu_item.rb +8 -7
  140. data/lib/active_admin/namespace.rb +16 -15
  141. data/lib/active_admin/namespace_settings.rb +9 -5
  142. data/lib/active_admin/order_clause.rb +2 -1
  143. data/lib/active_admin/orm/active_record/comments/comment.rb +12 -3
  144. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  145. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  146. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  147. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +21 -20
  148. data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
  149. data/lib/active_admin/orm/active_record/comments.rb +28 -27
  150. data/lib/active_admin/orm/active_record.rb +2 -1
  151. data/lib/active_admin/orm/mongoid.rb +1 -0
  152. data/lib/active_admin/page.rb +2 -1
  153. data/lib/active_admin/page_controller.rb +1 -0
  154. data/lib/active_admin/page_dsl.rb +1 -0
  155. data/lib/active_admin/page_presenter.rb +1 -0
  156. data/lib/active_admin/pundit_adapter.rb +58 -16
  157. data/lib/active_admin/resource/action_items.rb +6 -5
  158. data/lib/active_admin/resource/attributes.rb +9 -1
  159. data/lib/active_admin/resource/belongs_to.rb +3 -2
  160. data/lib/active_admin/resource/controllers.rb +2 -1
  161. data/lib/active_admin/resource/includes.rb +1 -0
  162. data/lib/active_admin/resource/menu.rb +5 -4
  163. data/lib/active_admin/resource/model.rb +1 -0
  164. data/lib/active_admin/resource/naming.rb +5 -4
  165. data/lib/active_admin/resource/ordering.rb +1 -0
  166. data/lib/active_admin/resource/page_presenters.rb +1 -0
  167. data/lib/active_admin/resource/pagination.rb +1 -0
  168. data/lib/active_admin/resource/routes.rb +6 -7
  169. data/lib/active_admin/resource/scope_to.rb +8 -7
  170. data/lib/active_admin/resource/scopes.rb +1 -0
  171. data/lib/active_admin/resource/sidebars.rb +2 -1
  172. data/lib/active_admin/resource.rb +20 -19
  173. data/lib/active_admin/resource_collection.rb +1 -0
  174. data/lib/active_admin/resource_controller/action_builder.rb +1 -0
  175. data/lib/active_admin/resource_controller/data_access.rb +31 -5
  176. data/lib/active_admin/resource_controller/decorators.rb +7 -28
  177. data/lib/active_admin/resource_controller/polymorphic_routes.rb +1 -0
  178. data/lib/active_admin/resource_controller/resource_class_methods.rb +1 -0
  179. data/lib/active_admin/resource_controller/scoping.rb +1 -0
  180. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  181. data/lib/active_admin/resource_controller/streaming.rb +9 -7
  182. data/lib/active_admin/resource_controller.rb +13 -11
  183. data/lib/active_admin/resource_dsl.rb +11 -25
  184. data/lib/active_admin/router.rb +1 -0
  185. data/lib/active_admin/scope.rb +7 -6
  186. data/lib/active_admin/settings_node.rb +1 -0
  187. data/lib/active_admin/sidebar_section.rb +1 -0
  188. data/lib/active_admin/version.rb +2 -1
  189. data/lib/active_admin/view_factory.rb +18 -17
  190. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  191. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
  192. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
  193. data/lib/active_admin/view_helpers/display_helper.rb +23 -8
  194. data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -1
  195. data/lib/active_admin/view_helpers/fields_for.rb +3 -2
  196. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  197. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  198. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -0
  199. data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
  200. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  201. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  202. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  203. data/lib/active_admin/view_helpers.rb +2 -1
  204. data/lib/active_admin/views/action_items.rb +1 -0
  205. data/lib/active_admin/views/components/active_admin_form.rb +8 -11
  206. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  207. data/lib/active_admin/views/components/attributes_table.rb +6 -5
  208. data/lib/active_admin/views/components/blank_slate.rb +2 -1
  209. data/lib/active_admin/views/components/columns.rb +1 -0
  210. data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
  211. data/lib/active_admin/views/components/index_list.rb +4 -3
  212. data/lib/active_admin/views/components/menu.rb +2 -1
  213. data/lib/active_admin/views/components/menu_item.rb +5 -4
  214. data/lib/active_admin/views/components/paginated_collection.rb +19 -18
  215. data/lib/active_admin/views/components/panel.rb +2 -1
  216. data/lib/active_admin/views/components/scopes.rb +8 -5
  217. data/lib/active_admin/views/components/sidebar.rb +1 -0
  218. data/lib/active_admin/views/components/sidebar_section.rb +1 -0
  219. data/lib/active_admin/views/components/site_title.rb +2 -1
  220. data/lib/active_admin/views/components/status_tag.rb +12 -11
  221. data/lib/active_admin/views/components/table_for.rb +18 -17
  222. data/lib/active_admin/views/components/tabs.rb +4 -3
  223. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  224. data/lib/active_admin/views/footer.rb +3 -1
  225. data/lib/active_admin/views/header.rb +3 -2
  226. data/lib/active_admin/views/index_as_block.rb +1 -0
  227. data/lib/active_admin/views/index_as_blog.rb +2 -1
  228. data/lib/active_admin/views/index_as_grid.rb +2 -1
  229. data/lib/active_admin/views/index_as_table.rb +16 -19
  230. data/lib/active_admin/views/pages/base.rb +17 -11
  231. data/lib/active_admin/views/pages/form.rb +1 -0
  232. data/lib/active_admin/views/pages/index.rb +15 -13
  233. data/lib/active_admin/views/pages/layout.rb +1 -0
  234. data/lib/active_admin/views/pages/page.rb +1 -0
  235. data/lib/active_admin/views/pages/show.rb +2 -7
  236. data/lib/active_admin/views/tabbed_navigation.rb +3 -2
  237. data/lib/active_admin/views/title_bar.rb +2 -1
  238. data/lib/active_admin/views.rb +2 -1
  239. data/lib/active_admin.rb +63 -61
  240. data/lib/activeadmin.rb +2 -1
  241. data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
  242. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  243. data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
  244. data/lib/generators/active_admin/install/install_generator.rb +15 -8
  245. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +27 -3
  246. data/lib/generators/active_admin/install/templates/dashboard.rb +1 -0
  247. data/lib/generators/active_admin/page/page_generator.rb +2 -1
  248. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  249. data/lib/generators/active_admin/resource/resource_generator.rb +4 -3
  250. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  251. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  252. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  253. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  254. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  255. data/vendor/assets/javascripts/jquery-ui/data.js +12 -8
  256. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +10 -7
  257. data/vendor/assets/javascripts/jquery-ui/focusable.js +12 -9
  258. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +60 -57
  259. data/vendor/assets/javascripts/jquery-ui/form.js +15 -12
  260. data/vendor/assets/javascripts/jquery-ui/ie.js +5 -2
  261. data/vendor/assets/javascripts/jquery-ui/keycode.js +11 -7
  262. data/vendor/assets/javascripts/jquery-ui/labels.js +46 -40
  263. data/vendor/assets/javascripts/jquery-ui/plugin.js +5 -2
  264. data/vendor/assets/javascripts/jquery-ui/position.js +30 -17
  265. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +6 -2
  266. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +6 -2
  267. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +10 -7
  268. data/vendor/assets/javascripts/jquery-ui/tabbable.js +11 -8
  269. data/vendor/assets/javascripts/jquery-ui/unique-id.js +10 -7
  270. data/vendor/assets/javascripts/jquery-ui/version.js +6 -3
  271. data/vendor/assets/javascripts/jquery-ui/widget.js +53 -30
  272. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +87 -24
  273. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +276 -273
  274. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +15 -11
  275. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +182 -62
  276. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +53 -36
  277. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +28 -19
  278. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +22 -11
  279. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +47 -26
  280. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +186 -125
  281. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +20 -20
  282. metadata +48 -114
  283. data/docs/.gitignore +0 -1
  284. data/docs/0-installation.md +0 -118
  285. data/docs/1-general-configuration.md +0 -224
  286. data/docs/10-custom-pages.md +0 -150
  287. data/docs/11-decorators.md +0 -59
  288. data/docs/12-arbre-components.md +0 -214
  289. data/docs/13-authorization-adapter.md +0 -285
  290. data/docs/14-gotchas.md +0 -138
  291. data/docs/2-resource-customization.md +0 -466
  292. data/docs/3-index-pages/custom-index.md +0 -35
  293. data/docs/3-index-pages/index-as-block.md +0 -19
  294. data/docs/3-index-pages/index-as-blog.md +0 -69
  295. data/docs/3-index-pages/index-as-grid.md +0 -27
  296. data/docs/3-index-pages/index-as-table.md +0 -234
  297. data/docs/3-index-pages.md +0 -328
  298. data/docs/4-csv-format.md +0 -74
  299. data/docs/5-forms.md +0 -232
  300. data/docs/6-show-pages.md +0 -81
  301. data/docs/7-sidebars.md +0 -75
  302. data/docs/8-custom-actions.md +0 -177
  303. data/docs/9-batch-actions.md +0 -237
  304. data/docs/CNAME +0 -1
  305. data/docs/Gemfile +0 -3
  306. data/docs/Gemfile.lock +0 -248
  307. data/docs/README.md +0 -24
  308. data/docs/_config.yml +0 -4
  309. data/docs/_includes/footer.html +0 -8
  310. data/docs/_includes/google-analytics.html +0 -16
  311. data/docs/_includes/head.html +0 -7
  312. data/docs/_includes/toc.html +0 -98
  313. data/docs/_includes/top-menu.html +0 -17
  314. data/docs/_layouts/default.html +0 -21
  315. data/docs/documentation.md +0 -60
  316. data/docs/images/activeadmin.png +0 -0
  317. data/docs/images/code-header.png +0 -0
  318. data/docs/images/divider.png +0 -0
  319. data/docs/images/features.png +0 -0
  320. data/docs/images/tidelift.svg +0 -14
  321. data/docs/index.html +0 -226
  322. data/docs/stylesheets/main.css +0 -1205
  323. data/lib/active_admin/deprecation.rb +0 -10
  324. data/lib/ransack_ext.rb +0 -20
  325. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +0 -23
  326. /data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +0 -0
data/CONTRIBUTING.md CHANGED
@@ -25,8 +25,7 @@ git checkout -b 325-add-japanese-translations
25
25
 
26
26
  ### Get the test suite running
27
27
 
28
- Make sure you're using a recent ruby and have the `bundler` gem installed, at
29
- least version `1.14.3`.
28
+ Make sure you're using a recent Ruby version.
30
29
 
31
30
  You'll also need chrome installed in order to run cucumber scenarios.
32
31
 
@@ -56,14 +55,14 @@ Now you should be able to run the entire suite using:
56
55
  bin/rake
57
56
  ```
58
57
 
59
- The test run will generate a sample Rails application in `tmp/test_apps` to run the
60
- tests against.
58
+ The task will generate a sample Rails application in `tmp/test_apps` to run the
59
+ test suite against.
61
60
 
62
61
  If you want to test against a Rails version different from the latest, make sure
63
62
  you use the correct Gemfile, for example:
64
63
 
65
64
  ```sh
66
- export BUNDLE_GEMFILE=gemfiles/rails_60/Gemfile
65
+ export BUNDLE_GEMFILE=gemfiles/rails_61/Gemfile
67
66
  ```
68
67
 
69
68
  **Warning** SCSS assets are aimed to be used indifferently with Sprockets **and** webpacker.
@@ -108,29 +107,6 @@ with the db:
108
107
  bin/rake local db:migrate
109
108
  ```
110
109
 
111
- ### Get the style right
112
-
113
- Your patch should follow the same conventions & pass the same code quality
114
- checks as the rest of the project. `bin/rake lint` will give you feedback in
115
- this regard. You can check & fix style issues by running each linter
116
- individually. Run `bin/rake -T lint` to see the available linters.
117
-
118
- ### Add a changelog entry
119
-
120
- If your PR includes user-observable changes, you'll be asked to add a changelog
121
- entry following the existing changelog format.
122
-
123
- The changelog format is the following:
124
-
125
- * One line per PR describing your fix or enhancement.
126
- * Entries end with a dot, followed by "[#pr-number] by [@github-username]".
127
- * Entries are added under the "Unreleased" section at the top of the file, under
128
- the "Bug Fixes" or "Enhancements" subsection.
129
- * References to github usernames and pull requests use [shortcut reference
130
- links].
131
- * Your github username reference definition is included in the correct
132
- alphabetical position at the bottom of the file.
133
-
134
110
  ### Make a Pull Request
135
111
 
136
112
  At this point, you should switch back to your master branch and make sure it's
@@ -152,12 +128,12 @@ git push --set-upstream origin 325-add-japanese-translations
152
128
 
153
129
  Finally, go to GitHub and [make a Pull Request][] :D
154
130
 
155
- CircleCI will run our test suite against all supported Rails versions. We care
156
- about quality, so your PR won't be merged until all tests pass. It's unlikely,
157
- but it's possible that your changes pass tests in one Rails version but fail in
158
- another. In that case, you'll have to setup your development environment (as
159
- explained in step 3) to use the problematic Rails version, and investigate
160
- what's going on!
131
+ Github Actions will run our test suite against all supported Rails versions. We
132
+ care about quality, so your PR won't be merged until all tests pass. It's
133
+ unlikely, but it's possible that your changes pass tests in one Rails version
134
+ but fail in another. In that case, you'll have to setup your development
135
+ environment (as explained in step 3) to use the problematic Rails version, and
136
+ investigate what's going on!
161
137
 
162
138
  ### Keeping your Pull Request updated
163
139
 
@@ -190,12 +166,12 @@ met.
190
166
 
191
167
  Maintainers need to do the following to push out a release:
192
168
 
193
- * Make sure all pull requests are in and that changelog is current
194
169
  * Switch to the master branch and make sure it's up to date.
195
170
  * Make sure you have [chandler] properly configured. Chandler is used to
196
171
  automatically submit github release notes from the changelog right after
197
172
  pushing the gem to rubygems.
198
173
  * Run one of `bin/rake release:prepare_{prerelease,prepatch,patch,preminor,minor,premajor,major}`, push the result and create a PR.
174
+ * Review and merge the PR. The generated changelog in the PR should include all user visible changes you intend to ship.
199
175
  * Run `bin/rake release` from the target branch once the PR is merged.
200
176
 
201
177
  [chandler]: https://github.com/mattbrictson/chandler#2-configure-credentials
@@ -204,7 +180,7 @@ Maintainers need to do the following to push out a release:
204
180
  [fork Active Admin]: https://help.github.com/articles/fork-a-repo
205
181
  [make a pull request]: https://help.github.com/articles/creating-a-pull-request
206
182
  [git rebasing]: http://git-scm.com/book/en/Git-Branching-Rebasing
207
- [interactive rebase]: https://help.github.com/articles/interactive-rebase
183
+ [interactive rebase]: https://help.github.com/en/github/using-git/about-git-rebase
208
184
  [shortcut reference links]: https://github.github.com/gfm/#shortcut-reference-link
209
185
  [Rollup]: https://rollupjs.org/guide/en/#quick-start
210
186
  [Yarn]: https://yarnpkg.com/en/docs/install
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  creating elegant backends for website administration.
5
5
 
6
6
  [![Version ][rubygems_badge]][rubygems]
7
- [![Circle CI ][circle_badge]][circle]
7
+ [![Github Actions ][actions_badge]][actions]
8
8
  [![Coverage ][coverage_badge]][coverage]
9
9
  [![Tidelift ][tidelift_badge]][tidelift]
10
10
  [![Inch CI ][inch_badge]][inch]
@@ -85,23 +85,23 @@ Thanks to [Tidelift][tidelift] and all our Tidelift subscribers.
85
85
  Thanks to [Open Collective][opencollective contributors] and all our Open Collective contributors.
86
86
 
87
87
  [Arbre]: https://github.com/activeadmin/arbre
88
- [Devise]: https://github.com/plataformatec/devise
89
- [Formtastic]: https://github.com/justinfrench/formtastic
88
+ [Devise]: https://github.com/heartcombo/devise
89
+ [Formtastic]: https://github.com/formtastic/formtastic
90
90
  [Inherited Resources]: https://github.com/activeadmin/inherited_resources
91
91
  [Kaminari]: https://github.com/kaminari/kaminari
92
92
  [Ransack]: https://github.com/activerecord-hackery/ransack
93
93
 
94
94
  [rubygems_badge]: http://img.shields.io/gem/v/activeadmin.svg
95
95
  [rubygems]: https://rubygems.org/gems/activeadmin
96
- [circle_badge]: https://circleci.com/gh/activeadmin/activeadmin/tree/master.svg?style=svg
97
- [circle]: https://circleci.com/gh/activeadmin/activeadmin/tree/master
98
- [coverage_badge]: https://api.codeclimate.com/v1/badges/779e407d22bacff19733/test_coverage
99
- [coverage]: https://codeclimate.com/github/activeadmin/activeadmin/test_coverage
96
+ [actions_badge]: https://github.com/activeadmin/activeadmin/workflows/ci/badge.svg
97
+ [actions]: https://github.com/activeadmin/activeadmin/actions
98
+ [coverage_badge]: https://codecov.io/gh/activeadmin/activeadmin/branch/master/graph/badge.svg?token=NAjeBdkQXW
99
+ [coverage]: https://codecov.io/gh/activeadmin/activeadmin
100
100
  [inch_badge]: http://inch-ci.org/github/activeadmin/activeadmin.svg?branch=master
101
101
  [inch]: http://inch-ci.org/github/activeadmin/activeadmin
102
102
  [tidelift_badge]: https://tidelift.com/badges/github/activeadmin/activeadmin
103
103
  [tidelift]: https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=readme
104
- [tidelift_enterprise]: https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=github&utm_content=enterprise
104
+ [tidelift_enterprise]: https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise
105
105
  [tidelift_support]: https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=github&utm_content=support
106
106
 
107
107
  [docs]: http://activeadmin.info/0-installation.html
@@ -11,7 +11,7 @@
11
11
  //= require_self
12
12
 
13
13
  (function(global, factory) {
14
- typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("jquery"), require("jquery-ui/ui/widgets/datepicker"), require("jquery-ui/ui/widgets/dialog"), require("jquery-ui/ui/widgets/sortable"), require("jquery-ui/ui/widgets/tabs"), require("jquery-ui/ui/widget"), require("jquery-ujs")) : typeof define === "function" && define.amd ? define([ "exports", "jquery", "jquery-ui/ui/widgets/datepicker", "jquery-ui/ui/widgets/dialog", "jquery-ui/ui/widgets/sortable", "jquery-ui/ui/widgets/tabs", "jquery-ui/ui/widget", "jquery-ujs" ], factory) : (global = global || self,
14
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("jquery"), require("jquery-ui/ui/widgets/datepicker"), require("jquery-ui/ui/widgets/dialog"), require("jquery-ui/ui/widgets/sortable"), require("jquery-ui/ui/widgets/tabs"), require("jquery-ui/ui/widget"), require("jquery-ujs")) : typeof define === "function" && define.amd ? define([ "exports", "jquery", "jquery-ui/ui/widgets/datepicker", "jquery-ui/ui/widgets/dialog", "jquery-ui/ui/widgets/sortable", "jquery-ui/ui/widgets/tabs", "jquery-ui/ui/widget", "jquery-ujs" ], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self,
15
15
  factory(global.ActiveAdmin = {}));
16
16
  })(this, function(exports) {
17
17
  "use strict";
@@ -27,18 +27,17 @@
27
27
  function ModalDialog(message, inputs, callback) {
28
28
  var html = '<form id="dialog_confirm" title="' + message + '"><ul>';
29
29
  for (var name in inputs) {
30
- var elem, opts, wrapper;
30
+ var opts, wrapper;
31
31
  var type = inputs[name];
32
32
  if (/^(datepicker|checkbox|text|number)$/.test(type)) {
33
33
  wrapper = "input";
34
34
  } else if (type === "textarea") {
35
35
  wrapper = "textarea";
36
36
  } else if ($.isArray(type)) {
37
- var _ref = [ "select", "option", type, "" ];
37
+ var _ref = [ "select", type, "" ];
38
38
  wrapper = _ref[0];
39
- elem = _ref[1];
40
- opts = _ref[2];
41
- type = _ref[3];
39
+ opts = _ref[1];
40
+ type = _ref[2];
42
41
  } else {
43
42
  throw new Error("Unsupported input type: {" + name + ": " + type + "}");
44
43
  }
@@ -46,29 +45,28 @@
46
45
  html += "<li>\n <label>" + (name.charAt(0).toUpperCase() + name.slice(1)) + "</label>\n <" + wrapper + ' name="' + name + '" class="' + klass + '" type="' + type + '">' + (opts ? function() {
47
46
  var result = [];
48
47
  opts.forEach(function(v) {
49
- var $elem = $("<" + elem + "/>");
48
+ var $elem = $("<option></option>");
50
49
  if ($.isArray(v)) {
51
50
  $elem.text(v[0]).val(v[1]);
52
51
  } else {
53
52
  $elem.text(v);
54
53
  }
55
- result.push($elem.wrap("<div>").parent().html());
54
+ result.push($elem.wrap("<div></div>").parent().html());
56
55
  });
57
56
  return result;
58
57
  }().join("") : "") + ("</" + wrapper + ">") + "</li>";
59
58
  var _ref2 = [];
60
59
  wrapper = _ref2[0];
61
- elem = _ref2[1];
62
- opts = _ref2[2];
63
- type = _ref2[3];
64
- klass = _ref2[4];
60
+ opts = _ref2[1];
61
+ type = _ref2[2];
62
+ klass = _ref2[3];
65
63
  }
66
64
  html += "</ul></form>";
67
65
  var form = $(html).appendTo("body");
68
66
  $("body").trigger("modal_dialog:before_open", [ form ]);
69
67
  form.dialog({
70
68
  modal: true,
71
- open: function open(event, ui) {
69
+ open: function open(_event, _ui) {
72
70
  $("body").trigger("modal_dialog:after_open", [ form ]);
73
71
  },
74
72
  dialogClass: "active_admin_dialog",
@@ -83,7 +81,7 @@
83
81
  }
84
82
  });
85
83
  }
86
- var onDOMReady = function onDOMReady() {
84
+ var onDOMReady$2 = function onDOMReady() {
87
85
  $(".batch_actions_selector li a").off("click confirm:complete");
88
86
  $(".batch_actions_selector li a").on("click", function(event) {
89
87
  var _this = this;
@@ -127,7 +125,7 @@
127
125
  });
128
126
  }
129
127
  };
130
- $(document).ready(onDOMReady).on("page:load turbolinks:load", onDOMReady);
128
+ $(document).ready(onDOMReady$2).on("page:load turbolinks:load", onDOMReady$2);
131
129
  var CheckboxToggler = function() {
132
130
  function CheckboxToggler(options, container) {
133
131
  this.options = options;
@@ -136,7 +134,7 @@
136
134
  this._bind();
137
135
  }
138
136
  var _proto = CheckboxToggler.prototype;
139
- _proto.option = function option(key, value) {};
137
+ _proto.option = function option(_key, _value) {};
140
138
  _proto._init = function _init() {
141
139
  if (!this.container) {
142
140
  throw new Error("Container element not found");
@@ -159,7 +157,7 @@
159
157
  return _this._didChangeToggleAllCheckbox();
160
158
  });
161
159
  };
162
- _proto._didChangeCheckbox = function _didChangeCheckbox(checkbox) {
160
+ _proto._didChangeCheckbox = function _didChangeCheckbox(_checkbox) {
163
161
  var numChecked = this.checkboxes.filter(":checked").length;
164
162
  var allChecked = numChecked === this.checkboxes.length;
165
163
  var someChecked = numChecked > 0 && numChecked < this.checkboxes.length;
@@ -394,7 +392,6 @@
394
392
  $(document).on("change", '.has_many_container[data-sortable] :input[name$="[_destroy]"]', function() {
395
393
  recompute_positions($(this).closest(".has_many"));
396
394
  });
397
- init_sortable();
398
395
  $(document).on("has_many_add:after", ".has_many_container", init_sortable);
399
396
  });
400
397
  var init_sortable = function init_sortable() {
@@ -428,6 +425,7 @@
428
425
  }
429
426
  });
430
427
  };
428
+ $(document).ready(init_sortable).on("page:load turbolinks:load", init_sortable);
431
429
  var PerPage = function() {
432
430
  function PerPage(element) {
433
431
  this.element = element;
@@ -464,7 +462,7 @@
464
462
  return PerPage;
465
463
  }();
466
464
  (function($) {
467
- $(document).on("change", ".pagination_per_page > select", function(event) {
465
+ $(document).on("change", ".pagination_per_page > select", function(_event) {
468
466
  PerPage._jQueryInterface.call($(this), "update");
469
467
  });
470
468
  $.fn["perPage"] = PerPage._jQueryInterface;
@@ -473,7 +471,14 @@
473
471
  function _inheritsLoose(subClass, superClass) {
474
472
  subClass.prototype = Object.create(superClass.prototype);
475
473
  subClass.prototype.constructor = subClass;
476
- subClass.__proto__ = superClass;
474
+ _setPrototypeOf(subClass, superClass);
475
+ }
476
+ function _setPrototypeOf(o, p) {
477
+ _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
478
+ o.__proto__ = p;
479
+ return o;
480
+ };
481
+ return _setPrototypeOf(o, p);
477
482
  }
478
483
  var TableCheckboxToggler = function(_CheckboxToggler) {
479
484
  _inheritsLoose(TableCheckboxToggler, _CheckboxToggler);
@@ -503,17 +508,14 @@
503
508
  return TableCheckboxToggler;
504
509
  }(CheckboxToggler);
505
510
  $.widget.bridge("tableCheckboxToggler", TableCheckboxToggler);
506
- var onDOMReady$2 = function onDOMReady() {
511
+ var onDOMReady = function onDOMReady() {
507
512
  return $("#active_admin_content .tabs").tabs();
508
513
  };
509
- $(document).ready(onDOMReady$2).on("page:load turbolinks:load", onDOMReady$2);
514
+ $(document).ready(onDOMReady).on("page:load turbolinks:load", onDOMReady);
510
515
  function modal_dialog(message, inputs, callback) {
511
516
  console.warn("ActiveAdmin.modal_dialog is deprecated in favor of ActiveAdmin.ModalDialog, please update usage.");
512
517
  return ModalDialog(message, inputs, callback);
513
518
  }
514
519
  exports.ModalDialog = ModalDialog;
515
520
  exports.modal_dialog = modal_dialog;
516
- Object.defineProperty(exports, "__esModule", {
517
- value: true
518
- });
519
521
  });
@@ -1,41 +1,57 @@
1
1
  /* Active Admin CSS */
2
- // Normalize
3
- @import "./normalize";
2
+ @media screen {
3
+ // Normalize
4
+ @import "./normalize";
4
5
 
5
- // Partials
6
- @import "./typography";
7
- @import "./header";
8
- @import "./forms";
9
- @import "./components/comments";
10
- @import "./components/flash_messages";
11
- @import "./components/date_picker";
12
- @import "./components/tables";
13
- @import "./components/batch_actions";
14
- @import "./components/modal_dialog";
15
- @import "./components/blank_slates";
16
- @import "./components/breadcrumbs";
17
- @import "./components/dropdown_menu";
18
- @import "./components/buttons";
19
- @import "./components/grid";
20
- @import "./components/links";
21
- @import "./components/pagination";
22
- @import "./components/panels";
23
- @import "./components/columns";
24
- @import "./components/scopes";
25
- @import "./components/status_tags";
26
- @import "./components/table_tools";
27
- @import "./components/index_list";
28
- @import "./components/unsupported_browser";
29
- @import "./components/tabs";
30
- @import "./pages/logged_out";
31
- @import "./structure/footer";
32
- @import "./structure/main_structure";
33
- @import "./structure/title_bar";
6
+ // Partials
7
+ @import "./typography";
8
+ @import "./header";
9
+ @import "./forms";
10
+ @import "./components/comments";
11
+ @import "./components/flash_messages";
12
+ @import "./components/date_picker";
13
+ @import "./components/tables";
14
+ @import "./components/batch_actions";
15
+ @import "./components/modal_dialog";
16
+ @import "./components/blank_slates";
17
+ @import "./components/breadcrumbs";
18
+ @import "./components/dropdown_menu";
19
+ @import "./components/buttons";
20
+ @import "./components/grid";
21
+ @import "./components/links";
22
+ @import "./components/pagination";
23
+ @import "./components/panels";
24
+ @import "./components/columns";
25
+ @import "./components/scopes";
26
+ @import "./components/status_tags";
27
+ @import "./components/table_tools";
28
+ @import "./components/index_list";
29
+ @import "./components/unsupported_browser";
30
+ @import "./components/tabs";
31
+ @import "./pages/logged_out";
32
+ @import "./structure/footer";
33
+ @import "./structure/main_structure";
34
+ @import "./structure/title_bar";
34
35
 
35
- body {
36
- @include sans-family;
37
- line-height: 1.5;
38
- font-size: 72%;
39
- background: $body-background-color;
40
- color: $text-color;
36
+ html {
37
+ box-sizing: border-box;
38
+ }
39
+
40
+ *,
41
+ *:before,
42
+ *:after {
43
+ box-sizing: inherit;
44
+ }
45
+
46
+ body {
47
+ @include sans-family;
48
+ line-height: 1.5;
49
+ font-size: 72%;
50
+ background: $body-background-color;
51
+ color: $text-color;
52
+ }
53
+ }
54
+
55
+ @media print {
56
+ @import "./print";
41
57
  }
@@ -171,7 +171,7 @@ form {
171
171
  &.boolean {
172
172
  min-height: 1.1em;
173
173
  label {
174
- width: 80%;
174
+ width: 100%;
175
175
  padding-left:20%;
176
176
  padding-right: 10px;
177
177
  text-transform: none !important;
@@ -220,9 +220,8 @@ form {
220
220
  /* Buttons */
221
221
 
222
222
  input[type=submit], input[type=button], button {
223
- @include dark-button;
224
223
  cursor: pointer;
225
-
224
+ @include dark-button;
226
225
  }
227
226
 
228
227
  .buttons, .actions {
@@ -250,8 +249,6 @@ form {
250
249
 
251
250
  // -------------------------------------- Sidebar Forms
252
251
 
253
- $sidebar-inner-content-width: $sidebar-width - ($section-padding * 2);
254
-
255
252
  .sidebar_section {
256
253
 
257
254
  label {
@@ -274,13 +271,6 @@ $sidebar-inner-content-width: $sidebar-width - ($section-padding * 2);
274
271
 
275
272
  // -------------------------------------- Filter Forms
276
273
 
277
- $filter-field-seperator-width: 12px;
278
-
279
- $side-by-side-filter-input-width: ($sidebar-inner-content-width / 2) - ($text-input-horizontal-padding * 2) - $filter-field-seperator-width;
280
- $side-by-side-filter-select-width: ($sidebar-inner-content-width / 2) - $filter-field-seperator-width;
281
-
282
- $date-range-filter-input-width: ($sidebar-inner-content-width / 2) - ($filter-field-seperator-width / 2);
283
-
284
274
  form.filter_form {
285
275
  .filter_form_field {
286
276
  margin-bottom: 10px;
@@ -313,7 +303,6 @@ form.filter_form {
313
303
 
314
304
  &.filter_date_range {
315
305
  input[type=text] {
316
- box-sizing: border-box;
317
306
  width: $date-range-filter-input-width;
318
307
 
319
308
  + input {
@@ -52,6 +52,11 @@
52
52
  margin: 0;
53
53
  padding: 0;
54
54
 
55
+ li {
56
+ /* Hover on li, display the ul */
57
+ &:hover > ul { display: block;}
58
+ }
59
+
55
60
  & > li {
56
61
  display: inline-block;
57
62
  margin-right: 4px;
@@ -95,8 +100,6 @@
95
100
  }
96
101
 
97
102
 
98
- /* Hover on li, display the ul */
99
- &:hover ul { display: block;}
100
103
  /* Drop down menus */
101
104
  ul {
102
105
  background: $hover-menu-item-background;
@@ -114,6 +117,7 @@
114
117
  z-index: 1010;
115
118
 
116
119
  li {
120
+ position: relative;
117
121
  margin: 0px;
118
122
  a {
119
123
  background: none;
@@ -124,10 +128,40 @@
124
128
  &.current {
125
129
  a { @include rounded(0) }
126
130
  }
131
+
132
+ &.has_nested > a {
133
+ background: url($menu-arrow-right-light-icon-url) no-repeat calc(100% - 7px) 55%;
134
+ padding-right: 20px;
135
+ }
136
+
137
+ &.has_nested:hover > a {
138
+ background: url($menu-arrow-right-dark-icon-url) no-repeat calc(100% - 7px) 55%;
139
+ color: #fff;
140
+ }
141
+
142
+ ul {
143
+ @include rounded-all(10px,10px,10px,10px);
144
+ margin-top: 0;
145
+ top: -3px;
146
+ left: 100%;
147
+
148
+ /* Create an invisible backdrop that adds 8px margin around the dropdown menu or submenu
149
+ that maintains the hover. This makes it much easier to navigate to submenus in
150
+ particular without losing hover accientally, especially near rounded corners. */
151
+ &:after {
152
+ content: "";
153
+ display: block;
154
+ position: absolute;
155
+ top: -8px;
156
+ left: -8px;
157
+ height: calc(100% + 16px);
158
+ width: calc(100% + 16px);
159
+ z-index: -2;
160
+ }
161
+ }
127
162
  }
128
163
  }
129
164
  }
130
-
131
165
  }
132
166
 
133
167
  #tabs {