activeadmin 3.3.0 → 4.0.0.beta1

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.

Potentially problematic release.


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

Files changed (341) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +2 -111
  3. data/CONTRIBUTING.md +25 -108
  4. data/README.md +19 -32
  5. data/app/assets/config/active_admin_manifest.js +2 -0
  6. data/app/controllers/active_admin/base_controller/menu.rb +39 -0
  7. data/{lib → app/controllers}/active_admin/base_controller.rb +46 -18
  8. data/{lib → app/controllers}/active_admin/page_controller.rb +0 -4
  9. data/{lib → app/controllers}/active_admin/resource_controller/action_builder.rb +1 -1
  10. data/{lib → app/controllers}/active_admin/resource_controller/data_access.rb +2 -2
  11. data/{lib → app/controllers}/active_admin/resource_controller/decorators.rb +1 -1
  12. data/{lib → app/controllers}/active_admin/resource_controller/scoping.rb +1 -1
  13. data/{lib → app/controllers}/active_admin/resource_controller/streaming.rb +2 -2
  14. data/app/controllers/active_admin/resource_controller.rb +102 -0
  15. data/app/helpers/active_admin/auto_link_helper.rb +66 -0
  16. data/app/helpers/active_admin/breadcrumb_helper.rb +41 -0
  17. data/app/helpers/active_admin/display_helper.rb +117 -0
  18. data/app/helpers/active_admin/form_helper.rb +95 -0
  19. data/app/helpers/active_admin/index_helper.rb +40 -0
  20. data/app/helpers/active_admin/layout_helper.rb +63 -0
  21. data/app/javascript/active_admin/features/batch_actions.js +89 -0
  22. data/app/javascript/active_admin/features/dark_mode_toggle.js +37 -0
  23. data/app/javascript/active_admin/features/filters.js +34 -0
  24. data/app/javascript/active_admin/features/has_many.js +28 -0
  25. data/app/javascript/active_admin/features/main_menu.js +12 -0
  26. data/app/javascript/active_admin/features/per_page.js +9 -0
  27. data/app/javascript/active_admin/utils/dom.js +17 -0
  28. data/app/javascript/active_admin.js +10 -0
  29. data/app/views/active_admin/_flash_messages.html.erb +22 -0
  30. data/app/views/active_admin/_html_head.html.erb +13 -0
  31. data/app/views/active_admin/_main_navigation.html.erb +28 -0
  32. data/app/views/active_admin/_page_header.html.erb +27 -0
  33. data/app/views/active_admin/_sidebar.html.erb +5 -0
  34. data/app/views/active_admin/_site_footer.html.erb +7 -0
  35. data/app/views/active_admin/_site_header.html.erb +30 -0
  36. data/app/views/active_admin/devise/confirmations/new.html.erb +5 -3
  37. data/app/views/active_admin/devise/passwords/edit.html.erb +5 -3
  38. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  39. data/app/views/active_admin/devise/registrations/new.html.erb +6 -4
  40. data/app/views/active_admin/devise/sessions/new.html.erb +6 -4
  41. data/app/views/active_admin/devise/shared/_links.erb +3 -1
  42. data/app/views/active_admin/devise/unlocks/new.html.erb +6 -4
  43. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_gap.html.erb +3 -1
  44. data/app/views/active_admin/kaminari/_next_page.html.erb +16 -0
  45. data/app/views/active_admin/kaminari/_page.html.erb +14 -0
  46. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_paginator.html.erb +1 -2
  47. data/app/views/active_admin/kaminari/_prev_page.html.erb +16 -0
  48. data/app/views/active_admin/page/index.html.arb +5 -1
  49. data/app/views/active_admin/resource/_active_filters.html.erb +32 -0
  50. data/app/views/active_admin/resource/_batch_actions_dropdown.html.erb +19 -0
  51. data/app/views/active_admin/resource/_form.html.arb +16 -0
  52. data/app/views/active_admin/resource/_form_default.html.arb +12 -0
  53. data/app/views/active_admin/resource/_index_as_table_default.html.arb +9 -0
  54. data/app/views/active_admin/resource/_index_blank_slate.html.erb +14 -0
  55. data/app/views/active_admin/resource/_index_empty_results.html.erb +5 -0
  56. data/app/views/active_admin/resource/_index_table_actions_default.html.erb +9 -0
  57. data/app/views/active_admin/resource/_show_default.html.arb +3 -0
  58. data/app/views/active_admin/resource/edit.html.arb +1 -1
  59. data/app/views/active_admin/resource/index.html.arb +94 -1
  60. data/app/views/active_admin/resource/new.html.arb +1 -1
  61. data/app/views/active_admin/resource/show.html.arb +12 -1
  62. data/app/views/active_admin/shared/_action_items.html.erb +3 -0
  63. data/app/views/active_admin/shared/_download_format_links.html.erb +7 -0
  64. data/app/views/active_admin/shared/_resource_comments.html.erb +51 -0
  65. data/app/views/active_admin/shared/_sidebar_section.html.arb +7 -0
  66. data/app/views/active_admin/shared/_sidebar_sections.html.erb +5 -0
  67. data/app/views/layouts/active_admin.html.erb +20 -0
  68. data/app/views/layouts/active_admin_logged_out.html.erb +8 -45
  69. data/config/locales/ar.yml +0 -16
  70. data/config/locales/az.yml +0 -16
  71. data/config/locales/bg.yml +0 -9
  72. data/config/locales/bs.yml +0 -7
  73. data/config/locales/ca.yml +0 -9
  74. data/config/locales/cs.yml +0 -9
  75. data/config/locales/da.yml +0 -16
  76. data/config/locales/de-CH.yml +0 -10
  77. data/config/locales/de.yml +0 -16
  78. data/config/locales/el.yml +0 -13
  79. data/config/locales/en-CA.yml +0 -16
  80. data/config/locales/en-GB.yml +0 -16
  81. data/config/locales/en.yml +18 -28
  82. data/config/locales/eo.yml +0 -17
  83. data/config/locales/es-MX.yml +0 -9
  84. data/config/locales/es.yml +0 -16
  85. data/config/locales/fa.yml +0 -9
  86. data/config/locales/fi.yml +0 -9
  87. data/config/locales/fr.yml +32 -26
  88. data/config/locales/he.yml +0 -16
  89. data/config/locales/hr.yml +0 -9
  90. data/config/locales/hu.yml +0 -6
  91. data/config/locales/id.yml +0 -16
  92. data/config/locales/it.yml +0 -16
  93. data/config/locales/ja.yml +0 -16
  94. data/config/locales/ko.yml +0 -9
  95. data/config/locales/lt.yml +0 -16
  96. data/config/locales/lv.yml +0 -6
  97. data/config/locales/mk.yml +0 -15
  98. data/config/locales/nb.yml +0 -12
  99. data/config/locales/nl.yml +21 -29
  100. data/config/locales/pl.yml +0 -16
  101. data/config/locales/pt-BR.yml +0 -16
  102. data/config/locales/pt-PT.yml +0 -6
  103. data/config/locales/ro.yml +0 -6
  104. data/config/locales/ru.yml +0 -16
  105. data/config/locales/sk.yml +0 -16
  106. data/config/locales/sv-SE.yml +0 -16
  107. data/config/locales/tr.yml +0 -16
  108. data/config/locales/uk.yml +0 -16
  109. data/config/locales/vi.yml +0 -16
  110. data/config/locales/zh-CN.yml +0 -16
  111. data/config/locales/zh-TW.yml +0 -16
  112. data/lib/active_admin/application.rb +1 -9
  113. data/lib/active_admin/batch_actions/controller.rb +1 -4
  114. data/lib/active_admin/batch_actions/resource_extension.rb +6 -13
  115. data/lib/active_admin/batch_actions/views/batch_action_form.rb +0 -6
  116. data/lib/active_admin/batch_actions/views/selection_cells.rb +2 -2
  117. data/lib/active_admin/batch_actions.rb +0 -5
  118. data/lib/active_admin/callbacks.rb +6 -4
  119. data/lib/active_admin/component.rb +0 -1
  120. data/lib/active_admin/csv_builder.rb +1 -1
  121. data/lib/active_admin/devise.rb +3 -3
  122. data/lib/active_admin/dsl.rb +2 -2
  123. data/lib/active_admin/dynamic_settings_node.rb +4 -4
  124. data/lib/active_admin/engine.rb +19 -6
  125. data/lib/active_admin/filters/active.rb +6 -4
  126. data/lib/active_admin/filters/active_filter.rb +1 -3
  127. data/lib/active_admin/filters/forms.rb +1 -42
  128. data/lib/active_admin/filters/resource_extension.rb +17 -9
  129. data/lib/active_admin/filters.rb +0 -2
  130. data/lib/active_admin/form_builder.rb +19 -17
  131. data/lib/active_admin/inputs/filters/base/search_method_select.rb +8 -10
  132. data/lib/active_admin/inputs/filters/base.rb +1 -1
  133. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -6
  134. data/lib/active_admin/inputs/filters/date_range_input.rb +4 -2
  135. data/lib/active_admin/inputs/filters/select_input.rb +3 -1
  136. data/lib/active_admin/inputs.rb +0 -3
  137. data/lib/active_admin/menu.rb +10 -7
  138. data/lib/active_admin/menu_collection.rb +1 -1
  139. data/lib/active_admin/menu_item.rb +24 -3
  140. data/lib/active_admin/namespace.rb +2 -44
  141. data/lib/active_admin/namespace_settings.rb +2 -35
  142. data/lib/active_admin/order_clause.rb +4 -1
  143. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +3 -75
  144. data/lib/active_admin/orm/active_record/comments.rb +10 -5
  145. data/lib/active_admin/pundit_adapter.rb +1 -1
  146. data/lib/active_admin/resource/action_items.rb +15 -20
  147. data/lib/active_admin/resource/attributes.rb +1 -8
  148. data/lib/active_admin/resource/belongs_to.rb +1 -0
  149. data/lib/active_admin/resource/naming.rb +1 -2
  150. data/lib/active_admin/resource.rb +1 -0
  151. data/lib/active_admin/resource_dsl.rb +1 -1
  152. data/lib/active_admin/scope.rb +1 -1
  153. data/lib/active_admin/settings_node.rb +1 -1
  154. data/lib/active_admin/sidebar_section.rb +0 -5
  155. data/lib/active_admin/version.rb +1 -1
  156. data/lib/active_admin/view_helpers.rb +0 -12
  157. data/lib/active_admin/views/components/active_admin_form.rb +21 -29
  158. data/lib/active_admin/views/components/attributes_table.rb +4 -12
  159. data/lib/active_admin/views/components/index_list.rb +10 -23
  160. data/lib/active_admin/views/components/paginated_collection.rb +34 -42
  161. data/lib/active_admin/views/components/panel.rb +2 -10
  162. data/lib/active_admin/views/components/scopes.rb +12 -21
  163. data/lib/active_admin/views/components/status_tag.rb +22 -19
  164. data/lib/active_admin/views/components/table_for.rb +19 -24
  165. data/lib/active_admin/views/components/tabs.rb +10 -11
  166. data/lib/active_admin/views/index_as_table.rb +26 -104
  167. data/lib/active_admin.rb +7 -11
  168. data/lib/generators/active_admin/assets/assets_generator.rb +4 -4
  169. data/lib/generators/active_admin/assets/templates/active_admin.css +3 -0
  170. data/lib/generators/active_admin/assets/templates/tailwind.config.js +18 -0
  171. data/lib/generators/active_admin/install/install_generator.rb +2 -8
  172. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +10 -87
  173. data/lib/generators/active_admin/install/templates/dashboard.rb +8 -25
  174. data/lib/generators/active_admin/page/page_generator.rb +0 -1
  175. data/lib/generators/active_admin/resource/resource_generator.rb +46 -7
  176. data/lib/generators/active_admin/resource/templates/resource.rb.erb +42 -0
  177. data/lib/generators/active_admin/views_generator.rb +18 -0
  178. metadata +67 -214
  179. data/app/assets/javascripts/active_admin/base.js +0 -521
  180. data/app/assets/stylesheets/active_admin/_base.scss +0 -57
  181. data/app/assets/stylesheets/active_admin/_forms.scss +0 -315
  182. data/app/assets/stylesheets/active_admin/_header.scss +0 -188
  183. data/app/assets/stylesheets/active_admin/_mixins.scss +0 -1
  184. data/app/assets/stylesheets/active_admin/_normalize.scss +0 -349
  185. data/app/assets/stylesheets/active_admin/_print.scss +0 -287
  186. data/app/assets/stylesheets/active_admin/_typography.scss +0 -100
  187. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -6
  188. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -30
  189. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +0 -20
  190. data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -6
  191. data/app/assets/stylesheets/active_admin/components/_columns.scss +0 -3
  192. data/app/assets/stylesheets/active_admin/components/_comments.scss +0 -41
  193. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +0 -148
  194. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -154
  195. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +0 -37
  196. data/app/assets/stylesheets/active_admin/components/_grid.scss +0 -9
  197. data/app/assets/stylesheets/active_admin/components/_index_list.scss +0 -12
  198. data/app/assets/stylesheets/active_admin/components/_links.scss +0 -5
  199. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +0 -34
  200. data/app/assets/stylesheets/active_admin/components/_pagination.scss +0 -58
  201. data/app/assets/stylesheets/active_admin/components/_panels.scss +0 -6
  202. data/app/assets/stylesheets/active_admin/components/_scopes.scss +0 -13
  203. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -12
  204. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +0 -70
  205. data/app/assets/stylesheets/active_admin/components/_tables.scss +0 -112
  206. data/app/assets/stylesheets/active_admin/components/_tabs.scss +0 -68
  207. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +0 -16
  208. data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -8
  209. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +0 -65
  210. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +0 -28
  211. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +0 -22
  212. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -41
  213. data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +0 -15
  214. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +0 -3
  215. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -17
  216. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +0 -51
  217. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +0 -44
  218. data/app/assets/stylesheets/active_admin/structure/_footer.scss +0 -19
  219. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +0 -29
  220. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -43
  221. data/app/javascript/active_admin/base.js +0 -28
  222. data/app/javascript/active_admin/ext/jquery-ui.js +0 -7
  223. data/app/javascript/active_admin/ext/jquery.js +0 -9
  224. data/app/javascript/active_admin/initializers/batch-actions.js +0 -61
  225. data/app/javascript/active_admin/initializers/checkbox-toggler.js +0 -3
  226. data/app/javascript/active_admin/initializers/datepicker.js +0 -16
  227. data/app/javascript/active_admin/initializers/dropdown-menu.js +0 -9
  228. data/app/javascript/active_admin/initializers/filters.js +0 -10
  229. data/app/javascript/active_admin/initializers/has-many.js +0 -98
  230. data/app/javascript/active_admin/initializers/per-page.js +0 -13
  231. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +0 -3
  232. data/app/javascript/active_admin/initializers/tabs.js +0 -6
  233. data/app/javascript/active_admin/lib/checkbox-toggler.js +0 -49
  234. data/app/javascript/active_admin/lib/dropdown-menu.js +0 -116
  235. data/app/javascript/active_admin/lib/filters.js +0 -39
  236. data/app/javascript/active_admin/lib/modal-dialog.js +0 -63
  237. data/app/javascript/active_admin/lib/per-page.js +0 -38
  238. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +0 -38
  239. data/app/javascript/active_admin/lib/utils.js +0 -40
  240. data/app/views/kaminari/active_admin/_first_page.html.erb +0 -11
  241. data/app/views/kaminari/active_admin/_gap.html.erb +0 -8
  242. data/app/views/kaminari/active_admin/_last_page.html.erb +0 -11
  243. data/app/views/kaminari/active_admin/_next_page.html.erb +0 -11
  244. data/app/views/kaminari/active_admin/_page.html.erb +0 -12
  245. data/app/views/kaminari/active_admin/_paginator.html.erb +0 -25
  246. data/app/views/kaminari/active_admin/_prev_page.html.erb +0 -11
  247. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +0 -11
  248. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +0 -11
  249. data/app/views/kaminari/active_admin_countless/_page.html.erb +0 -12
  250. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +0 -11
  251. data/app/views/layouts/active_admin.html.arb +0 -2
  252. data/lib/active_admin/abstract_view_factory.rb +0 -48
  253. data/lib/active_admin/asset_registration.rb +0 -30
  254. data/lib/active_admin/base_controller/menu.rb +0 -35
  255. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +0 -59
  256. data/lib/active_admin/filters/active_sidebar.rb +0 -28
  257. data/lib/active_admin/generators/boilerplate.rb +0 -54
  258. data/lib/active_admin/helpers/collection.rb +0 -21
  259. data/lib/active_admin/helpers/i18n.rb +0 -8
  260. data/lib/active_admin/inputs/datepicker_input.rb +0 -28
  261. data/lib/active_admin/inputs/filters/date_picker_input.rb +0 -14
  262. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +0 -24
  263. data/lib/active_admin/orm/mongoid.rb +0 -2
  264. data/lib/active_admin/resource_controller/sidebars.rb +0 -19
  265. data/lib/active_admin/resource_controller.rb +0 -68
  266. data/lib/active_admin/view_factory.rb +0 -28
  267. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +0 -13
  268. data/lib/active_admin/view_helpers/auto_link_helper.rb +0 -46
  269. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +0 -34
  270. data/lib/active_admin/view_helpers/display_helper.rb +0 -119
  271. data/lib/active_admin/view_helpers/download_format_links_helper.rb +0 -60
  272. data/lib/active_admin/view_helpers/fields_for.rb +0 -51
  273. data/lib/active_admin/view_helpers/flash_helper.rb +0 -15
  274. data/lib/active_admin/view_helpers/form_helper.rb +0 -21
  275. data/lib/active_admin/view_helpers/scope_name_helper.rb +0 -17
  276. data/lib/active_admin/view_helpers/sidebar_helper.rb +0 -16
  277. data/lib/active_admin/view_helpers/title_helper.rb +0 -12
  278. data/lib/active_admin/view_helpers/view_factory_helper.rb +0 -12
  279. data/lib/active_admin/views/action_items.rb +0 -18
  280. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +0 -59
  281. data/lib/active_admin/views/components/blank_slate.rb +0 -18
  282. data/lib/active_admin/views/components/columns.rb +0 -162
  283. data/lib/active_admin/views/components/dropdown_menu.rb +0 -69
  284. data/lib/active_admin/views/components/menu.rb +0 -33
  285. data/lib/active_admin/views/components/menu_item.rb +0 -59
  286. data/lib/active_admin/views/components/sidebar.rb +0 -14
  287. data/lib/active_admin/views/components/sidebar_section.rb +0 -35
  288. data/lib/active_admin/views/components/site_title.rb +0 -55
  289. data/lib/active_admin/views/components/unsupported_browser.rb +0 -12
  290. data/lib/active_admin/views/footer.rb +0 -32
  291. data/lib/active_admin/views/header.rb +0 -20
  292. data/lib/active_admin/views/index_as_block.rb +0 -37
  293. data/lib/active_admin/views/index_as_blog.rb +0 -156
  294. data/lib/active_admin/views/index_as_grid.rb +0 -81
  295. data/lib/active_admin/views/pages/base.rb +0 -134
  296. data/lib/active_admin/views/pages/form.rb +0 -65
  297. data/lib/active_admin/views/pages/index.rb +0 -166
  298. data/lib/active_admin/views/pages/layout.rb +0 -27
  299. data/lib/active_admin/views/pages/page.rb +0 -31
  300. data/lib/active_admin/views/pages/show.rb +0 -60
  301. data/lib/active_admin/views/tabbed_navigation.rb +0 -12
  302. data/lib/active_admin/views/title_bar.rb +0 -56
  303. data/lib/generators/active_admin/assets/templates/active_admin.js +0 -1
  304. data/lib/generators/active_admin/assets/templates/active_admin.scss +0 -17
  305. data/lib/generators/active_admin/resource/templates/admin.rb.erb +0 -46
  306. data/lib/generators/active_admin/webpacker/plugins/jquery.js +0 -7
  307. data/lib/generators/active_admin/webpacker/templates/active_admin.js +0 -5
  308. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +0 -17
  309. data/lib/generators/active_admin/webpacker/templates/print.scss +0 -2
  310. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +0 -27
  311. data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
  312. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +0 -51
  313. data/vendor/assets/javascripts/jquery-ui/focusable.js +0 -89
  314. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +0 -83
  315. data/vendor/assets/javascripts/jquery-ui/form.js +0 -25
  316. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
  317. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
  318. data/vendor/assets/javascripts/jquery-ui/labels.js +0 -71
  319. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
  320. data/vendor/assets/javascripts/jquery-ui/position.js +0 -513
  321. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
  322. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
  323. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
  324. data/vendor/assets/javascripts/jquery-ui/tabbable.js +0 -41
  325. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
  326. data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
  327. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -758
  328. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +0 -454
  329. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +0 -294
  330. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +0 -304
  331. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +0 -2243
  332. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +0 -971
  333. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
  334. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
  335. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +0 -1228
  336. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1622
  337. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  338. /data/{lib → app/controllers}/active_admin/base_controller/authorization.rb +0 -0
  339. /data/{lib → app/controllers}/active_admin/resource_controller/polymorphic_routes.rb +0 -0
  340. /data/{lib → app/controllers}/active_admin/resource_controller/resource_class_methods.rb +0 -0
  341. /data/lib/{active_admin/orm/mongoid/.gitkeep → generators/active_admin/assets/templates/builds/.keep} +0 -0
@@ -72,7 +72,7 @@ module ActiveAdmin
72
72
  # selectable_column
73
73
  # column :title
74
74
  # actions do |post|
75
- # item "Preview", admin_preview_post_path(post), class: "member_link"
75
+ # item "Preview", admin_preview_post_path(post), class: "preview-link"
76
76
  # end
77
77
  # end
78
78
  # ```
@@ -99,32 +99,6 @@ module ActiveAdmin
99
99
  # end
100
100
  # ```
101
101
  #
102
- # In case you prefer to list actions links in a dropdown menu:
103
- #
104
- # ```ruby
105
- # index do
106
- # selectable_column
107
- # column :title
108
- # actions dropdown: true do |post|
109
- # item "Preview", admin_preview_post_path(post)
110
- # end
111
- # end
112
- # ```
113
- #
114
- # In addition, you can insert the position of the row in the greater
115
- # collection by using the index_column special command:
116
- #
117
- # ```ruby
118
- # index do
119
- # selectable_column
120
- # index_column
121
- # column :title
122
- # end
123
- # ```
124
- #
125
- # index_column take an optional offset parameter to allow a developer to set
126
- # the starting number for the index (default is 1).
127
- #
128
102
  # ## Sorting
129
103
  #
130
104
  # When a column is generated from an Active Record attribute, the table is
@@ -234,35 +208,22 @@ module ActiveAdmin
234
208
  # ```
235
209
  #
236
210
  class IndexAsTable < ActiveAdmin::Component
237
-
238
211
  def build(page_presenter, collection)
212
+ add_class "index-as-table"
239
213
  table_options = {
240
214
  id: "index_table_#{active_admin_config.resource_name.plural}",
241
215
  sortable: true,
242
- class: "index_table index",
243
216
  i18n: active_admin_config.resource_class,
244
217
  paginator: page_presenter[:paginator] != false,
245
218
  row_class: page_presenter[:row_class]
246
219
  }
247
220
 
248
- table_for collection, table_options do |t|
249
- table_config_block = page_presenter.block || default_table
250
- instance_exec(t, &table_config_block)
251
- end
252
- end
253
-
254
- def table_for(*args, &block)
255
- insert_tag IndexTableFor, *args, &block
256
- end
257
-
258
- def default_table
259
- proc do
260
- selectable_column
261
- id_column if resource_class.primary_key
262
- active_admin_config.resource_columns.each do |attribute|
263
- column attribute
221
+ if page_presenter.block
222
+ insert_tag(IndexTableFor, collection, table_options) do |t|
223
+ instance_exec(t, &page_presenter.block)
264
224
  end
265
- actions
225
+ else
226
+ render "index_as_table_default", table_options: table_options
266
227
  end
267
228
  end
268
229
 
@@ -275,34 +236,22 @@ module ActiveAdmin
275
236
  # methods for quickly displaying items on the index page
276
237
  #
277
238
  class IndexTableFor < ::ActiveAdmin::Views::TableFor
278
-
279
239
  # Display a column for checkbox
280
- def selectable_column
240
+ def selectable_column(**options)
281
241
  return unless active_admin_config.batch_actions.any?
282
- column resource_selection_toggle_cell, class: "col-selectable", sortable: false do |resource|
242
+ column resource_selection_toggle_cell, class: options[:class], sortable: false do |resource|
283
243
  resource_selection_cell resource
284
244
  end
285
245
  end
286
246
 
287
- def index_column(start_value = 1)
288
- column "#", class: "col-index", sortable: false do |resource|
289
- @collection.offset_value + @collection.index(resource) + start_value
290
- end
291
- end
292
-
293
247
  # Display a column for the id
294
- def id_column(*args)
248
+ def id_column
295
249
  raise "#{resource_class.name} has no primary_key!" unless resource_class.primary_key
296
-
297
- options = args.extract_options!
298
- title = args[0].presence || resource_class.human_attribute_name(resource_class.primary_key)
299
- sortable = options.fetch(:sortable, resource_class.primary_key)
300
-
301
- column(title, sortable: sortable) do |resource|
250
+ column(resource_class.human_attribute_name(resource_class.primary_key), sortable: resource_class.primary_key) do |resource|
302
251
  if controller.action_methods.include?("show")
303
- link_to resource.id, resource_path(resource), class: "resource_id_link"
252
+ link_to resource.id, resource_path(resource)
304
253
  elsif controller.action_methods.include?("edit")
305
- link_to resource.id, edit_resource_path(resource), class: "resource_id_link"
254
+ link_to resource.id, edit_resource_path(resource)
306
255
  else
307
256
  resource.id
308
257
  end
@@ -334,38 +283,17 @@ module ActiveAdmin
334
283
  # item 'Grant Admin', grant_admin_admin_user_path(admin_user)
335
284
  # end
336
285
  #
337
- # # Append some actions onto the end of the default actions displayed in a Dropdown Menu
338
- # actions dropdown: true do |admin_user|
339
- # item 'Grant Admin', grant_admin_admin_user_path(admin_user)
340
- # end
341
- #
342
- # # Custom actions without the defaults displayed in a Dropdown Menu.
343
- # actions defaults: false, dropdown: true, dropdown_name: 'Additional actions' do |admin_user|
344
- # item 'Grant Admin', grant_admin_admin_user_path(admin_user)
345
- # end
346
- #
347
286
  # ```
348
287
  def actions(options = {}, &block)
349
288
  name = options.delete(:name) { "" }
350
289
  defaults = options.delete(:defaults) { true }
351
- dropdown = options.delete(:dropdown) { false }
352
- dropdown_name = options.delete(:dropdown_name) { I18n.t "active_admin.dropdown_actions.button_label", default: "Actions" }
353
-
354
- options[:class] ||= "col-actions"
355
290
 
356
291
  column name, options do |resource|
357
- if dropdown
358
- dropdown_menu dropdown_name do
359
- defaults(resource) if defaults
360
- instance_exec(resource, &block) if block_given?
361
- end
362
- else
363
- table_actions do
364
- defaults(resource, css_class: :member_link) if defaults
365
- if block_given?
366
- block_result = instance_exec(resource, &block)
367
- text_node block_result unless block_result.is_a? Arbre::Element
368
- end
292
+ insert_tag(TableActions, class: "data-table-resource-actions") do
293
+ render "index_table_actions_default", defaults_data(resource) if defaults
294
+ if block
295
+ block_result = instance_exec(resource, &block)
296
+ text_node block_result unless block_result.is_a? Arbre::Element
369
297
  end
370
298
  end
371
299
  end
@@ -373,29 +301,23 @@ module ActiveAdmin
373
301
 
374
302
  private
375
303
 
376
- def defaults(resource, options = {})
304
+ def defaults_data(resource)
377
305
  localizer = ActiveAdmin::Localizers.resource(active_admin_config)
378
- if controller.action_methods.include?("show") && authorized?(ActiveAdmin::Auth::READ, resource)
379
- item localizer.t(:view), resource_path(resource), class: "view_link #{options[:css_class]}", title: localizer.t(:view)
380
- end
381
- if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::EDIT, resource)
382
- item localizer.t(:edit), edit_resource_path(resource), class: "edit_link #{options[:css_class]}", title: localizer.t(:edit)
383
- end
384
- if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
385
- item localizer.t(:delete), resource_path(resource), class: "delete_link #{options[:css_class]}", title: localizer.t(:delete),
386
- method: :delete, data: { confirm: localizer.t(:delete_confirmation) }
387
- end
306
+ {
307
+ resource: resource,
308
+ view_label: localizer.t(:view),
309
+ edit_label: localizer.t(:edit),
310
+ delete_label: localizer.t(:delete),
311
+ delete_confirmation_text: localizer.t(:delete_confirmation)
312
+ }
388
313
  end
389
314
 
390
315
  class TableActions < ActiveAdmin::Component
391
- builder_method :table_actions
392
-
393
316
  def item *args, **kwargs
394
317
  text_node link_to(*args, **kwargs)
395
318
  end
396
319
  end
397
320
  end # IndexTableFor
398
-
399
321
  end
400
322
  end
401
323
  end
data/lib/active_admin.rb CHANGED
@@ -7,21 +7,16 @@ require "kaminari"
7
7
  require "formtastic"
8
8
  require "formtastic_i18n"
9
9
  require "inherited_resources"
10
- require "jquery-rails"
11
10
  require "arbre"
12
11
 
13
- require "active_admin/helpers/i18n"
14
-
15
12
  module ActiveAdmin
16
13
 
17
14
  autoload :VERSION, "active_admin/version"
18
15
  autoload :Application, "active_admin/application"
19
- autoload :AssetRegistration, "active_admin/asset_registration"
20
16
  autoload :Authorization, "active_admin/authorization_adapter"
21
17
  autoload :AuthorizationAdapter, "active_admin/authorization_adapter"
22
18
  autoload :Callbacks, "active_admin/callbacks"
23
19
  autoload :Component, "active_admin/component"
24
- autoload :BaseController, "active_admin/base_controller"
25
20
  autoload :CanCanAdapter, "active_admin/cancan_adapter"
26
21
  autoload :ControllerAction, "active_admin/controller_action"
27
22
  autoload :CSVBuilder, "active_admin/csv_builder"
@@ -38,30 +33,32 @@ module ActiveAdmin
38
33
  autoload :OrderClause, "active_admin/order_clause"
39
34
  autoload :Page, "active_admin/page"
40
35
  autoload :PagePresenter, "active_admin/page_presenter"
41
- autoload :PageController, "active_admin/page_controller"
42
36
  autoload :PageDSL, "active_admin/page_dsl"
43
37
  autoload :PunditAdapter, "active_admin/pundit_adapter"
44
38
  autoload :Resource, "active_admin/resource"
45
- autoload :ResourceController, "active_admin/resource_controller"
46
39
  autoload :ResourceDSL, "active_admin/resource_dsl"
47
40
  autoload :Scope, "active_admin/scope"
48
41
  autoload :ScopeChain, "active_admin/helpers/scope_chain"
49
42
  autoload :SidebarSection, "active_admin/sidebar_section"
50
43
  autoload :TableBuilder, "active_admin/table_builder"
51
- autoload :ViewFactory, "active_admin/view_factory"
52
44
  autoload :ViewHelpers, "active_admin/view_helpers"
53
45
  autoload :Views, "active_admin/views"
54
46
 
55
47
  class << self
56
48
 
57
- attr_accessor :application
49
+ attr_accessor :application, :importmap
58
50
 
59
51
  def application
60
52
  @application ||= ::ActiveAdmin::Application.new
61
53
  end
62
54
 
63
55
  def deprecator
64
- @deprecator ||= ActiveSupport::Deprecation.new("4.0", "active-admin")
56
+ @deprecator ||= ActiveSupport::Deprecation.new("4.1", "active-admin")
57
+ end
58
+
59
+ def importmap
60
+ require "importmap-rails"
61
+ @importmap ||= Importmap::Map.new
65
62
  end
66
63
 
67
64
  # Gets called within the initializer
@@ -132,4 +129,3 @@ require "active_admin/filters"
132
129
 
133
130
  # Require ORM-specific plugins
134
131
  require "active_admin/orm/active_record" if defined? ActiveRecord
135
- require "active_admin/orm/mongoid" if defined? Mongoid
@@ -2,14 +2,14 @@
2
2
  module ActiveAdmin
3
3
  module Generators
4
4
  class AssetsGenerator < Rails::Generators::Base
5
-
6
5
  source_root File.expand_path("templates", __dir__)
7
6
 
8
7
  def install_assets
9
- template "active_admin.js", "app/assets/javascripts/active_admin.js"
10
- template "active_admin.scss", "app/assets/stylesheets/active_admin.scss"
8
+ remove_file "app/assets/stylesheets/active_admin.scss"
9
+ remove_file "app/assets/javascripts/active_admin.js"
10
+ template "active_admin.css", "app/assets/stylesheets/active_admin.css"
11
+ template "tailwind.config.js", "tailwind-active_admin.config.js"
11
12
  end
12
-
13
13
  end
14
14
  end
15
15
  end
@@ -0,0 +1,3 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
@@ -0,0 +1,18 @@
1
+ const execSync = require('child_process').execSync;
2
+ const activeAdminPath = execSync('bundle show activeadmin', { encoding: 'utf-8' }).trim();
3
+
4
+ module.exports = {
5
+ content: [
6
+ `${activeAdminPath}/vendor/javascript/flowbite.js`,
7
+ `${activeAdminPath}/plugin.js`,
8
+ `${activeAdminPath}/app/views/**/*.{arb,erb,html,rb}`,
9
+ './app/admin/**/*.{arb,erb,html,rb}',
10
+ './app/views/active_admin/**/*.{arb,erb,html,rb}',
11
+ './app/views/admin/**/*.{arb,erb,html,rb}',
12
+ './app/javascript/**/*.js'
13
+ ],
14
+ darkMode: "class",
15
+ plugins: [
16
+ require(`@activeadmin/activeadmin/plugin`)
17
+ ]
18
+ }
@@ -9,15 +9,13 @@ module ActiveAdmin
9
9
 
10
10
  hook_for :users, default: "devise", desc: "Admin user generator to run. Skip with --skip-users"
11
11
  class_option :skip_comments, type: :boolean, default: false, desc: "Skip installation of comments"
12
- class_option :use_webpacker, type: :boolean, default: false, desc: "Use Webpacker assets instead of Sprockets"
13
12
 
14
13
  source_root File.expand_path("templates", __dir__)
15
14
 
16
15
  def copy_initializer
17
- @underscored_user_name = name.underscore.gsub("/", "_")
16
+ @underscored_user_name = name.underscore.tr("/", "_")
18
17
  @use_authentication_method = options[:users].present?
19
18
  @skip_comments = options[:skip_comments]
20
- @use_webpacker = options[:use_webpacker]
21
19
  template "active_admin.rb.erb", "config/initializers/active_admin.rb"
22
20
  end
23
21
 
@@ -39,11 +37,7 @@ module ActiveAdmin
39
37
  end
40
38
 
41
39
  def create_assets
42
- if options[:use_webpacker]
43
- generate "active_admin:webpacker"
44
- else
45
- generate "active_admin:assets"
46
- end
40
+ generate "active_admin:assets"
47
41
  end
48
42
 
49
43
  def create_migrations
@@ -2,22 +2,12 @@ ActiveAdmin.setup do |config|
2
2
  # == Site Title
3
3
  #
4
4
  # Set the title that is displayed on the main layout
5
- # for each of the active admin pages.
5
+ # for each of the active admin pages. Can also be customized
6
+ # by extracting the _site_header partial into your project
7
+ # to use your own logo, styles, etc.
6
8
  #
7
9
  config.site_title = "<%= Rails.application.class.name.split("::").first.titlecase %>"
8
10
 
9
- # Set the link url for the title. For example, to take
10
- # users to your main site. Defaults to no link.
11
- #
12
- # config.site_title_link = "/"
13
-
14
- # Set an optional image to be displayed for the header
15
- # instead of a string (overrides :site_title)
16
- #
17
- # Note: Aim for an image that's 21px high so it fits in the header.
18
- #
19
- # config.site_title_image = "logo.png"
20
-
21
11
  # == Load Paths
22
12
  #
23
13
  # By default Active Admin files go inside app/admin/.
@@ -78,8 +68,10 @@ ActiveAdmin.setup do |config|
78
68
  # Active Admin will automatically call an authorization
79
69
  # method in a before filter of all controller actions to
80
70
  # ensure that there is a user with proper rights. You can use
81
- # CanCanAdapter or make your own. Please refer to documentation.
71
+ # CanCanAdapter, PunditAdapter, or make your own. Please
72
+ # refer to the documentation.
82
73
  # config.authorization_adapter = ActiveAdmin::CanCanAdapter
74
+ # config.authorization_adapter = ActiveAdmin::PunditAdapter
83
75
 
84
76
  # In case you prefer Pundit over other solutions you can here pass
85
77
  # the name of default policy class. This policy will be used in every
@@ -116,18 +108,12 @@ ActiveAdmin.setup do |config|
116
108
  # settings configure the location and method used for the link.
117
109
  #
118
110
  # This setting changes the path where the link points to. If it's
119
- # a string, the strings is used as the path. If it's a Symbol, we
111
+ # a string, the string is used as the path. If it's a Symbol, we
120
112
  # will call the method to return the path.
121
113
  #
122
114
  # Default:
123
115
  config.logout_link_path = :destroy_<%= @underscored_user_name %>_session_path
124
116
 
125
- # This setting changes the http method used when rendering the
126
- # link. For example :get, :delete, :put, etc..
127
- #
128
- # Default:
129
- # config.logout_link_method = :get
130
-
131
117
  # == Root
132
118
  #
133
119
  # Set the action to call for the root path. You can set different
@@ -187,23 +173,6 @@ ActiveAdmin.setup do |config|
187
173
  #
188
174
  config.localize_format = :long
189
175
 
190
- # == Setting a Favicon
191
- #
192
- # config.favicon = 'favicon.ico'
193
-
194
- # == Meta Tags
195
- #
196
- # Add additional meta tags to the head element of active admin pages.
197
- #
198
- # Add tags to all pages logged in users see:
199
- # config.meta_tags = { author: 'My Company' }
200
-
201
- # By default, sign up/sign in/recover password pages are excluded
202
- # from showing up in search engine results by adding a robots meta
203
- # tag. You can reset the hash of meta tags included in logged out
204
- # pages:
205
- # config.meta_tags_for_logged_out_pages = {}
206
-
207
176
  # == Removing Breadcrumbs
208
177
  #
209
178
  # Breadcrumbs are enabled by default. You can customize them for individual
@@ -218,21 +187,6 @@ ActiveAdmin.setup do |config|
218
187
  #
219
188
  # config.create_another = true
220
189
 
221
- # == Register Stylesheets & Javascripts
222
- #
223
- # We recommend using the built in Active Admin layout and loading
224
- # up your own stylesheets / javascripts to customize the look
225
- # and feel.
226
- #
227
- # To load a stylesheet:
228
- # config.register_stylesheet 'my_stylesheet.css'
229
- #
230
- # You can provide an options hash for more control, which is passed along to stylesheet_link_tag():
231
- # config.register_stylesheet 'my_print_stylesheet.css', media: :print
232
- #
233
- # To load a javascript file:
234
- # config.register_javascript 'my_javascript.js'
235
-
236
190
  # == CSV options
237
191
  #
238
192
  # Set the CSV builder separator
@@ -245,20 +199,11 @@ ActiveAdmin.setup do |config|
245
199
  #
246
200
  # You can add a navigation menu to be used in your application, or configure a provided menu
247
201
  #
248
- # To change the default utility navigation to show a link to your website & a logout btn
249
- #
250
- # config.namespace :admin do |admin|
251
- # admin.build_menu :utility_navigation do |menu|
252
- # menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: :blank }
253
- # admin.add_logout_button_to_menu menu
254
- # end
255
- # end
256
- #
257
202
  # If you wanted to add a static menu item to the default menu provided:
258
203
  #
259
204
  # config.namespace :admin do |admin|
260
205
  # admin.build_menu :default do |menu|
261
- # menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: "_blank" }
206
+ # menu.add label: "My Great Website", url: "https://mygreatwebsite.example.com", html_options: { target: :blank }
262
207
  # end
263
208
  # end
264
209
 
@@ -274,11 +219,10 @@ ActiveAdmin.setup do |config|
274
219
  # # Disable the links entirely
275
220
  # admin.download_links = false
276
221
  #
277
- # # Only show XML & PDF options
222
+ # # Only show XML & PDF options. You must register the format mime type with `Mime::Type.register`.
278
223
  # admin.download_links = [:xml, :pdf]
279
224
  #
280
- # # Enable/disable the links based on block
281
- # # (for example, with cancan)
225
+ # # Enable/disable the links based on block (for example, with cancan)
282
226
  # admin.download_links = proc { can?(:view_download_links) }
283
227
  #
284
228
  # end
@@ -322,31 +266,10 @@ ActiveAdmin.setup do |config|
322
266
  # ]
323
267
  # config.filter_method_for_large_association = '_start'
324
268
 
325
- # == Head
326
- #
327
- # You can add your own content to the site head like analytics. Make sure
328
- # you only pass content you trust.
329
- #
330
- # config.head = ''.html_safe
331
-
332
- # == Footer
333
- #
334
- # By default, the footer shows the current Active Admin version. You can
335
- # override the content of the footer here.
336
- #
337
- # config.footer = 'my custom footer text'
338
-
339
269
  # == Sorting
340
270
  #
341
271
  # By default ActiveAdmin::OrderClause is used for sorting logic
342
272
  # You can inherit it with own class and inject it for all resources
343
273
  #
344
274
  # config.order_clause = MyOrderClause
345
-
346
- # == Webpacker
347
- #
348
- # By default, Active Admin uses Sprocket's asset pipeline.
349
- # You can switch to using Webpacker here.
350
- #
351
- <% unless @use_webpacker %># <% end %>config.use_webpacker = true
352
275
  end
@@ -3,31 +3,14 @@ ActiveAdmin.register_page "Dashboard" do
3
3
  menu priority: 1, label: proc { I18n.t("active_admin.dashboard") }
4
4
 
5
5
  content title: proc { I18n.t("active_admin.dashboard") } do
6
- div class: "blank_slate_container", id: "dashboard_default_message" do
7
- span class: "blank_slate" do
8
- span I18n.t("active_admin.dashboard_welcome.welcome")
9
- small I18n.t("active_admin.dashboard_welcome.call_to_action")
6
+ div class: "px-4 py-16 md:py-32 text-center m-auto max-w-3xl" do
7
+ h2 "Welcome to ActiveAdmin", class: "text-base font-semibold leading-7 text-indigo-600 dark:text-indigo-500"
8
+ para "This is the default page", class: "mt-2 text-3xl sm:text-4xl font-bold text-gray-900 dark:text-gray-200"
9
+ para class: "mt-6 text-xl leading-8 text-gray-700 dark:text-gray-400" do
10
+ text_node "To update the content, edit the"
11
+ strong "app/admin/dashboard.rb"
12
+ text_node "file to get started."
10
13
  end
11
14
  end
12
-
13
- # Here is an example of a simple dashboard with columns and panels.
14
- #
15
- # columns do
16
- # column do
17
- # panel "Recent Posts" do
18
- # ul do
19
- # Post.recent(5).map do |post|
20
- # li link_to(post.title, admin_post_path(post))
21
- # end
22
- # end
23
- # end
24
- # end
25
-
26
- # column do
27
- # panel "Info" do
28
- # para "Welcome to ActiveAdmin."
29
- # end
30
- # end
31
- # end
32
- end # content
15
+ end
33
16
  end
@@ -7,7 +7,6 @@ module ActiveAdmin
7
7
  def generate_config_file
8
8
  template "page.rb", "app/admin/#{file_path.tr('/', '_')}.rb"
9
9
  end
10
-
11
10
  end
12
11
  end
13
12
  end
@@ -1,21 +1,60 @@
1
1
  # frozen_string_literal: true
2
- require "active_admin/generators/boilerplate"
3
-
4
2
  module ActiveAdmin
5
3
  module Generators
6
4
  class ResourceGenerator < Rails::Generators::NamedBase
7
5
  desc "Registers resources with Active Admin"
8
6
 
9
- class_option :include_boilerplate, type: :boolean, default: false,
10
- desc: "Generate boilerplate code for your resource."
11
-
12
7
  source_root File.expand_path("templates", __dir__)
13
8
 
14
9
  def generate_config_file
15
- @boilerplate = ActiveAdmin::Generators::Boilerplate.new(class_name)
16
- template "admin.rb.erb", "app/admin/#{file_path.tr('/', '_').pluralize}.rb"
10
+ template "resource.rb.erb", "app/admin/#{file_path.tr('/', '_').pluralize}.rb"
11
+ end
12
+
13
+ protected
14
+
15
+ def attributes
16
+ @attributes ||= class_name.constantize.new.attributes.keys
17
+ end
18
+
19
+ def assignable_attributes
20
+ @assignable_attributes ||= attributes - %w(id created_at updated_at)
21
+ end
22
+
23
+ def permit_params
24
+ assignable_attributes.map { |a| a.to_sym.inspect }.join(", ")
25
+ end
26
+
27
+ def rows
28
+ attributes.map { |a| row(a) }.join("\n ")
29
+ end
30
+
31
+ def row(name)
32
+ "row :#{name.gsub(/_id$/, '')}"
33
+ end
34
+
35
+ def columns
36
+ attributes.map { |a| column(a) }.join("\n ")
37
+ end
38
+
39
+ def column(name)
40
+ "column :#{name.gsub(/_id$/, '')}"
41
+ end
42
+
43
+ def filters
44
+ attributes.map { |a| filter(a) }.join("\n ")
45
+ end
46
+
47
+ def filter(name)
48
+ "filter :#{name.gsub(/_id$/, '')}"
17
49
  end
18
50
 
51
+ def form_inputs
52
+ assignable_attributes.map { |a| form_input(a) }.join("\n ")
53
+ end
54
+
55
+ def form_input(name)
56
+ "f.input :#{name.gsub(/_id$/, '')}"
57
+ end
19
58
  end
20
59
  end
21
60
  end
@@ -0,0 +1,42 @@
1
+ ActiveAdmin.register <%= class_name %> do
2
+ # Specify parameters which should be permitted for assignment
3
+ permit_params <%= permit_params %>
4
+
5
+ # or consider:
6
+ #
7
+ # permit_params do
8
+ # permitted = [<%= permit_params %>]
9
+ # permitted << :other if params[:action] == 'create' && current_user.admin?
10
+ # permitted
11
+ # end
12
+
13
+ # For security, limit the actions that should be available
14
+ actions :all, except: []
15
+
16
+ # Add or remove filters to toggle their visibility
17
+ <%= filters %>
18
+
19
+ # Add or remove columns to toggle their visiblity in the index action
20
+ index do
21
+ selectable_column
22
+ id_column
23
+ <%= columns %>
24
+ actions
25
+ end
26
+
27
+ # Add or remove rows to toggle their visiblity in the show action
28
+ show do
29
+ attributes_table_for(resource) do
30
+ <%= rows %>
31
+ end
32
+ end
33
+
34
+ # Add or remove fields to toggle their visibility in the form
35
+ form do |f|
36
+ f.semantic_errors(*f.object.errors.attribute_names)
37
+ f.inputs do
38
+ <%= form_inputs %>
39
+ end
40
+ f.actions
41
+ end
42
+ end