activeadmin 2.6.1 → 3.2.3

Sign up to get free protection for your applications and to get access to all the features.
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 {