activeadmin 3.2.0 → 4.0.0.beta2

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 (339) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +2 -22
  3. data/CONTRIBUTING.md +28 -109
  4. data/README.md +17 -30
  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/scoping.rb +1 -1
  12. data/{lib → app/controllers}/active_admin/resource_controller/streaming.rb +2 -2
  13. data/app/controllers/active_admin/resource_controller.rb +102 -0
  14. data/app/helpers/active_admin/auto_link_helper.rb +66 -0
  15. data/app/helpers/active_admin/breadcrumb_helper.rb +41 -0
  16. data/app/helpers/active_admin/display_helper.rb +117 -0
  17. data/app/helpers/active_admin/form_helper.rb +95 -0
  18. data/app/helpers/active_admin/index_helper.rb +40 -0
  19. data/app/helpers/active_admin/layout_helper.rb +63 -0
  20. data/app/javascript/active_admin/features/batch_actions.js +89 -0
  21. data/app/javascript/active_admin/features/dark_mode_toggle.js +37 -0
  22. data/app/javascript/active_admin/features/filters.js +34 -0
  23. data/app/javascript/active_admin/features/has_many.js +28 -0
  24. data/app/javascript/active_admin/features/main_menu.js +12 -0
  25. data/app/javascript/active_admin/features/per_page.js +9 -0
  26. data/app/javascript/active_admin/utils/dom.js +17 -0
  27. data/app/javascript/active_admin.js +10 -0
  28. data/app/views/active_admin/_flash_messages.html.erb +22 -0
  29. data/app/views/active_admin/_html_head.html.erb +13 -0
  30. data/app/views/active_admin/_main_navigation.html.erb +28 -0
  31. data/app/views/active_admin/_page_header.html.erb +27 -0
  32. data/app/views/active_admin/_sidebar.html.erb +5 -0
  33. data/app/views/active_admin/_site_footer.html.erb +7 -0
  34. data/app/views/active_admin/_site_header.html.erb +30 -0
  35. data/app/views/active_admin/devise/confirmations/new.html.erb +5 -3
  36. data/app/views/active_admin/devise/passwords/edit.html.erb +5 -3
  37. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  38. data/app/views/active_admin/devise/registrations/new.html.erb +6 -4
  39. data/app/views/active_admin/devise/sessions/new.html.erb +6 -4
  40. data/app/views/active_admin/devise/shared/_links.erb +3 -1
  41. data/app/views/active_admin/devise/unlocks/new.html.erb +6 -4
  42. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_gap.html.erb +3 -1
  43. data/app/views/active_admin/kaminari/_next_page.html.erb +16 -0
  44. data/app/views/active_admin/kaminari/_page.html.erb +14 -0
  45. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_paginator.html.erb +1 -2
  46. data/app/views/active_admin/kaminari/_prev_page.html.erb +16 -0
  47. data/app/views/active_admin/page/index.html.arb +5 -1
  48. data/app/views/active_admin/resource/_active_filters.html.erb +32 -0
  49. data/app/views/active_admin/resource/_batch_actions_dropdown.html.erb +19 -0
  50. data/app/views/active_admin/resource/_form.html.arb +16 -0
  51. data/app/views/active_admin/resource/_form_default.html.arb +12 -0
  52. data/app/views/active_admin/resource/_index_as_table_default.html.arb +9 -0
  53. data/app/views/active_admin/resource/_index_blank_slate.html.erb +14 -0
  54. data/app/views/active_admin/resource/_index_empty_results.html.erb +5 -0
  55. data/app/views/active_admin/resource/_index_table_actions_default.html.erb +9 -0
  56. data/app/views/active_admin/resource/_show_default.html.arb +3 -0
  57. data/app/views/active_admin/resource/edit.html.arb +1 -1
  58. data/app/views/active_admin/resource/index.html.arb +94 -1
  59. data/app/views/active_admin/resource/new.html.arb +1 -1
  60. data/app/views/active_admin/resource/show.html.arb +12 -1
  61. data/app/views/active_admin/shared/_action_items.html.erb +3 -0
  62. data/app/views/active_admin/shared/_download_format_links.html.erb +7 -0
  63. data/app/views/active_admin/shared/_resource_comments.html.erb +51 -0
  64. data/app/views/active_admin/shared/_sidebar_section.html.arb +7 -0
  65. data/app/views/active_admin/shared/_sidebar_sections.html.erb +5 -0
  66. data/app/views/layouts/active_admin.html.erb +20 -0
  67. data/app/views/layouts/active_admin_logged_out.html.erb +8 -45
  68. data/config/locales/ar.yml +0 -16
  69. data/config/locales/az.yml +0 -16
  70. data/config/locales/bg.yml +0 -9
  71. data/config/locales/bs.yml +0 -7
  72. data/config/locales/ca.yml +0 -9
  73. data/config/locales/cs.yml +0 -9
  74. data/config/locales/da.yml +0 -16
  75. data/config/locales/de-CH.yml +0 -10
  76. data/config/locales/de.yml +0 -16
  77. data/config/locales/el.yml +0 -13
  78. data/config/locales/en-CA.yml +0 -16
  79. data/config/locales/en-GB.yml +0 -16
  80. data/config/locales/en.yml +18 -28
  81. data/config/locales/eo.yml +0 -17
  82. data/config/locales/es-MX.yml +0 -9
  83. data/config/locales/es.yml +0 -16
  84. data/config/locales/fa.yml +0 -9
  85. data/config/locales/fi.yml +0 -9
  86. data/config/locales/fr.yml +32 -26
  87. data/config/locales/he.yml +0 -16
  88. data/config/locales/hr.yml +0 -9
  89. data/config/locales/hu.yml +0 -6
  90. data/config/locales/id.yml +0 -16
  91. data/config/locales/it.yml +0 -16
  92. data/config/locales/ja.yml +0 -16
  93. data/config/locales/ko.yml +0 -9
  94. data/config/locales/lt.yml +0 -16
  95. data/config/locales/lv.yml +0 -6
  96. data/config/locales/mk.yml +0 -15
  97. data/config/locales/nb.yml +0 -12
  98. data/config/locales/nl.yml +21 -29
  99. data/config/locales/pl.yml +0 -16
  100. data/config/locales/pt-BR.yml +0 -16
  101. data/config/locales/pt-PT.yml +0 -6
  102. data/config/locales/ro.yml +0 -6
  103. data/config/locales/ru.yml +0 -16
  104. data/config/locales/sk.yml +0 -16
  105. data/config/locales/sv-SE.yml +0 -16
  106. data/config/locales/tr.yml +0 -16
  107. data/config/locales/uk.yml +0 -16
  108. data/config/locales/vi.yml +0 -16
  109. data/config/locales/zh-CN.yml +0 -16
  110. data/config/locales/zh-TW.yml +0 -16
  111. data/lib/active_admin/application.rb +1 -9
  112. data/lib/active_admin/batch_actions/controller.rb +1 -4
  113. data/lib/active_admin/batch_actions/resource_extension.rb +6 -13
  114. data/lib/active_admin/batch_actions/views/batch_action_form.rb +0 -6
  115. data/lib/active_admin/batch_actions/views/selection_cells.rb +2 -2
  116. data/lib/active_admin/batch_actions.rb +0 -5
  117. data/lib/active_admin/callbacks.rb +6 -4
  118. data/lib/active_admin/component.rb +0 -1
  119. data/lib/active_admin/csv_builder.rb +1 -1
  120. data/lib/active_admin/devise.rb +3 -3
  121. data/lib/active_admin/dsl.rb +2 -2
  122. data/lib/active_admin/dynamic_settings_node.rb +4 -4
  123. data/lib/active_admin/engine.rb +19 -6
  124. data/lib/active_admin/filters/active.rb +6 -4
  125. data/lib/active_admin/filters/active_filter.rb +1 -3
  126. data/lib/active_admin/filters/forms.rb +1 -42
  127. data/lib/active_admin/filters/resource_extension.rb +17 -9
  128. data/lib/active_admin/filters.rb +0 -2
  129. data/lib/active_admin/form_builder.rb +15 -14
  130. data/lib/active_admin/inputs/filters/base/search_method_select.rb +8 -10
  131. data/lib/active_admin/inputs/filters/base.rb +1 -1
  132. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -6
  133. data/lib/active_admin/inputs/filters/date_range_input.rb +4 -2
  134. data/lib/active_admin/inputs.rb +0 -3
  135. data/lib/active_admin/menu.rb +10 -7
  136. data/lib/active_admin/menu_collection.rb +1 -1
  137. data/lib/active_admin/menu_item.rb +24 -3
  138. data/lib/active_admin/namespace.rb +2 -44
  139. data/lib/active_admin/namespace_settings.rb +2 -35
  140. data/lib/active_admin/order_clause.rb +4 -1
  141. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +3 -75
  142. data/lib/active_admin/orm/active_record/comments.rb +10 -5
  143. data/lib/active_admin/resource/action_items.rb +15 -20
  144. data/lib/active_admin/resource/naming.rb +1 -2
  145. data/lib/active_admin/resource.rb +1 -0
  146. data/lib/active_admin/resource_dsl.rb +1 -1
  147. data/lib/active_admin/scope.rb +1 -1
  148. data/lib/active_admin/settings_node.rb +1 -1
  149. data/lib/active_admin/sidebar_section.rb +0 -5
  150. data/lib/active_admin/version.rb +1 -1
  151. data/lib/active_admin/view_helpers.rb +0 -12
  152. data/lib/active_admin/views/components/active_admin_form.rb +20 -16
  153. data/lib/active_admin/views/components/attributes_table.rb +4 -12
  154. data/lib/active_admin/views/components/index_list.rb +10 -23
  155. data/lib/active_admin/views/components/paginated_collection.rb +34 -39
  156. data/lib/active_admin/views/components/panel.rb +2 -10
  157. data/lib/active_admin/views/components/scopes.rb +12 -21
  158. data/lib/active_admin/views/components/status_tag.rb +22 -19
  159. data/lib/active_admin/views/components/table_for.rb +19 -24
  160. data/lib/active_admin/views/components/tabs.rb +10 -11
  161. data/lib/active_admin/views/index_as_table.rb +24 -97
  162. data/lib/active_admin.rb +7 -11
  163. data/lib/generators/active_admin/assets/assets_generator.rb +4 -4
  164. data/lib/generators/active_admin/assets/templates/active_admin.css +3 -0
  165. data/lib/generators/active_admin/assets/templates/tailwind.config.js +18 -0
  166. data/lib/generators/active_admin/install/install_generator.rb +2 -8
  167. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +10 -87
  168. data/lib/generators/active_admin/install/templates/dashboard.rb +8 -25
  169. data/lib/generators/active_admin/page/page_generator.rb +0 -1
  170. data/lib/generators/active_admin/resource/resource_generator.rb +46 -7
  171. data/lib/generators/active_admin/resource/templates/resource.rb.erb +42 -0
  172. data/lib/generators/active_admin/views_generator.rb +18 -0
  173. data/vendor/javascript/flowbite.js +2 -0
  174. metadata +68 -201
  175. data/app/assets/javascripts/active_admin/base.js +0 -521
  176. data/app/assets/stylesheets/active_admin/_base.scss +0 -57
  177. data/app/assets/stylesheets/active_admin/_forms.scss +0 -316
  178. data/app/assets/stylesheets/active_admin/_header.scss +0 -188
  179. data/app/assets/stylesheets/active_admin/_mixins.scss +0 -1
  180. data/app/assets/stylesheets/active_admin/_normalize.scss +0 -349
  181. data/app/assets/stylesheets/active_admin/_print.scss +0 -287
  182. data/app/assets/stylesheets/active_admin/_typography.scss +0 -100
  183. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -6
  184. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -30
  185. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +0 -20
  186. data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -6
  187. data/app/assets/stylesheets/active_admin/components/_columns.scss +0 -3
  188. data/app/assets/stylesheets/active_admin/components/_comments.scss +0 -41
  189. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +0 -148
  190. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -151
  191. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +0 -37
  192. data/app/assets/stylesheets/active_admin/components/_grid.scss +0 -9
  193. data/app/assets/stylesheets/active_admin/components/_index_list.scss +0 -12
  194. data/app/assets/stylesheets/active_admin/components/_links.scss +0 -5
  195. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +0 -34
  196. data/app/assets/stylesheets/active_admin/components/_pagination.scss +0 -55
  197. data/app/assets/stylesheets/active_admin/components/_panels.scss +0 -6
  198. data/app/assets/stylesheets/active_admin/components/_scopes.scss +0 -13
  199. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -12
  200. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +0 -67
  201. data/app/assets/stylesheets/active_admin/components/_tables.scss +0 -112
  202. data/app/assets/stylesheets/active_admin/components/_tabs.scss +0 -65
  203. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +0 -16
  204. data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -8
  205. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +0 -65
  206. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +0 -28
  207. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +0 -22
  208. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -41
  209. data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +0 -15
  210. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +0 -3
  211. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -17
  212. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +0 -51
  213. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +0 -44
  214. data/app/assets/stylesheets/active_admin/structure/_footer.scss +0 -19
  215. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +0 -29
  216. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -40
  217. data/app/javascript/active_admin/base.js +0 -28
  218. data/app/javascript/active_admin/ext/jquery-ui.js +0 -7
  219. data/app/javascript/active_admin/ext/jquery.js +0 -9
  220. data/app/javascript/active_admin/initializers/batch-actions.js +0 -61
  221. data/app/javascript/active_admin/initializers/checkbox-toggler.js +0 -3
  222. data/app/javascript/active_admin/initializers/datepicker.js +0 -16
  223. data/app/javascript/active_admin/initializers/dropdown-menu.js +0 -9
  224. data/app/javascript/active_admin/initializers/filters.js +0 -10
  225. data/app/javascript/active_admin/initializers/has-many.js +0 -98
  226. data/app/javascript/active_admin/initializers/per-page.js +0 -13
  227. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +0 -3
  228. data/app/javascript/active_admin/initializers/tabs.js +0 -6
  229. data/app/javascript/active_admin/lib/checkbox-toggler.js +0 -49
  230. data/app/javascript/active_admin/lib/dropdown-menu.js +0 -116
  231. data/app/javascript/active_admin/lib/filters.js +0 -39
  232. data/app/javascript/active_admin/lib/modal-dialog.js +0 -63
  233. data/app/javascript/active_admin/lib/per-page.js +0 -38
  234. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +0 -38
  235. data/app/javascript/active_admin/lib/utils.js +0 -40
  236. data/app/views/kaminari/active_admin/_first_page.html.erb +0 -11
  237. data/app/views/kaminari/active_admin/_gap.html.erb +0 -8
  238. data/app/views/kaminari/active_admin/_last_page.html.erb +0 -11
  239. data/app/views/kaminari/active_admin/_next_page.html.erb +0 -11
  240. data/app/views/kaminari/active_admin/_page.html.erb +0 -12
  241. data/app/views/kaminari/active_admin/_paginator.html.erb +0 -25
  242. data/app/views/kaminari/active_admin/_prev_page.html.erb +0 -11
  243. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +0 -11
  244. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +0 -11
  245. data/app/views/kaminari/active_admin_countless/_page.html.erb +0 -12
  246. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +0 -11
  247. data/app/views/layouts/active_admin.html.arb +0 -2
  248. data/lib/active_admin/abstract_view_factory.rb +0 -48
  249. data/lib/active_admin/asset_registration.rb +0 -30
  250. data/lib/active_admin/base_controller/menu.rb +0 -35
  251. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +0 -59
  252. data/lib/active_admin/filters/active_sidebar.rb +0 -28
  253. data/lib/active_admin/generators/boilerplate.rb +0 -54
  254. data/lib/active_admin/helpers/collection.rb +0 -21
  255. data/lib/active_admin/helpers/i18n.rb +0 -8
  256. data/lib/active_admin/inputs/datepicker_input.rb +0 -28
  257. data/lib/active_admin/inputs/filters/date_picker_input.rb +0 -14
  258. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +0 -24
  259. data/lib/active_admin/orm/mongoid.rb +0 -2
  260. data/lib/active_admin/resource_controller/sidebars.rb +0 -19
  261. data/lib/active_admin/resource_controller.rb +0 -68
  262. data/lib/active_admin/view_factory.rb +0 -28
  263. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +0 -13
  264. data/lib/active_admin/view_helpers/auto_link_helper.rb +0 -46
  265. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +0 -34
  266. data/lib/active_admin/view_helpers/display_helper.rb +0 -119
  267. data/lib/active_admin/view_helpers/download_format_links_helper.rb +0 -60
  268. data/lib/active_admin/view_helpers/fields_for.rb +0 -51
  269. data/lib/active_admin/view_helpers/flash_helper.rb +0 -15
  270. data/lib/active_admin/view_helpers/form_helper.rb +0 -21
  271. data/lib/active_admin/view_helpers/scope_name_helper.rb +0 -17
  272. data/lib/active_admin/view_helpers/sidebar_helper.rb +0 -16
  273. data/lib/active_admin/view_helpers/title_helper.rb +0 -12
  274. data/lib/active_admin/view_helpers/view_factory_helper.rb +0 -12
  275. data/lib/active_admin/views/action_items.rb +0 -18
  276. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +0 -59
  277. data/lib/active_admin/views/components/blank_slate.rb +0 -18
  278. data/lib/active_admin/views/components/columns.rb +0 -162
  279. data/lib/active_admin/views/components/dropdown_menu.rb +0 -69
  280. data/lib/active_admin/views/components/menu.rb +0 -33
  281. data/lib/active_admin/views/components/menu_item.rb +0 -59
  282. data/lib/active_admin/views/components/sidebar.rb +0 -14
  283. data/lib/active_admin/views/components/sidebar_section.rb +0 -35
  284. data/lib/active_admin/views/components/site_title.rb +0 -55
  285. data/lib/active_admin/views/components/unsupported_browser.rb +0 -12
  286. data/lib/active_admin/views/footer.rb +0 -32
  287. data/lib/active_admin/views/header.rb +0 -20
  288. data/lib/active_admin/views/index_as_block.rb +0 -37
  289. data/lib/active_admin/views/index_as_blog.rb +0 -156
  290. data/lib/active_admin/views/index_as_grid.rb +0 -81
  291. data/lib/active_admin/views/pages/base.rb +0 -134
  292. data/lib/active_admin/views/pages/form.rb +0 -65
  293. data/lib/active_admin/views/pages/index.rb +0 -166
  294. data/lib/active_admin/views/pages/layout.rb +0 -27
  295. data/lib/active_admin/views/pages/page.rb +0 -31
  296. data/lib/active_admin/views/pages/show.rb +0 -60
  297. data/lib/active_admin/views/tabbed_navigation.rb +0 -12
  298. data/lib/active_admin/views/title_bar.rb +0 -56
  299. data/lib/generators/active_admin/assets/templates/active_admin.js +0 -1
  300. data/lib/generators/active_admin/assets/templates/active_admin.scss +0 -17
  301. data/lib/generators/active_admin/resource/templates/admin.rb.erb +0 -46
  302. data/lib/generators/active_admin/webpacker/plugins/jquery.js +0 -7
  303. data/lib/generators/active_admin/webpacker/templates/active_admin.js +0 -5
  304. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +0 -17
  305. data/lib/generators/active_admin/webpacker/templates/print.scss +0 -2
  306. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +0 -27
  307. data/vendor/assets/javascripts/jquery-ui/data.js +0 -41
  308. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +0 -48
  309. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +0 -23
  310. data/vendor/assets/javascripts/jquery-ui/focusable.js +0 -86
  311. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +0 -80
  312. data/vendor/assets/javascripts/jquery-ui/form.js +0 -22
  313. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -17
  314. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -47
  315. data/vendor/assets/javascripts/jquery-ui/labels.js +0 -65
  316. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -46
  317. data/vendor/assets/javascripts/jquery-ui/position.js +0 -500
  318. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -42
  319. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -23
  320. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -47
  321. data/vendor/assets/javascripts/jquery-ui/tabbable.js +0 -38
  322. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -51
  323. data/vendor/assets/javascripts/jquery-ui/version.js +0 -17
  324. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -735
  325. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +0 -391
  326. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +0 -291
  327. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +0 -300
  328. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +0 -2123
  329. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +0 -954
  330. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1259
  331. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -230
  332. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +0 -1207
  333. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1561
  334. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  335. /data/{lib → app/controllers}/active_admin/base_controller/authorization.rb +0 -0
  336. /data/{lib → app/controllers}/active_admin/resource_controller/decorators.rb +0 -0
  337. /data/{lib → app/controllers}/active_admin/resource_controller/polymorphic_routes.rb +0 -0
  338. /data/{lib → app/controllers}/active_admin/resource_controller/resource_class_methods.rb +0 -0
  339. /data/lib/{active_admin/orm/mongoid/.gitkeep → generators/active_admin/assets/templates/builds/.keep} +0 -0
@@ -0,0 +1,22 @@
1
+ <% if flash_messages.present? %>
2
+ <div class="px-2.5 lg:px-5 mb-8">
3
+ <% flash_messages.each do |type, message| %>
4
+ <% if type == "error" %>
5
+ <div class="flex items-center gap-3 p-4 mb-2 rounded-lg bg-red-50 text-red-800 dark:bg-red-800 dark:text-red-300">
6
+ <svg class="w-5 h-5 shrink-0" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20"><path d="M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5ZM10 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm1-4a1 1 0 0 1-2 0V6a1 1 0 0 1 2 0v5Z"/></svg>
7
+ <%= message %>
8
+ </div>
9
+ <% elsif type == "alert" %>
10
+ <div class="flex items-center gap-3 p-4 mb-2 rounded-lg bg-yellow-50 text-yellow-800 dark:bg-yellow-800 dark:text-yellow-300">
11
+ <svg class="w-5 h-5 shrink-0 rtl:-scale-x-100" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20"><path d="M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5ZM9.5 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM12 15H8a1 1 0 0 1 0-2h1v-3H8a1 1 0 0 1 0-2h2a1 1 0 0 1 1 1v4h1a1 1 0 0 1 0 2Z"/></svg>
12
+ <%= message %>
13
+ </div>
14
+ <% elsif type == "notice" %>
15
+ <div class="flex items-center gap-3 p-4 mb-2 rounded-lg bg-green-50 text-green-800 dark:bg-green-800 dark:text-green-400">
16
+ <svg class="w-5 h-5 shrink-0 rtl:-scale-x-100" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20"><path d="M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5Zm3.707 8.207-4 4a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L9 10.586l3.293-3.293a1 1 0 0 1 1.414 1.414Z"/></svg>
17
+ <%= message %>
18
+ </div>
19
+ <% end %>
20
+ <% end %>
21
+ </div>
22
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <%= stylesheet_link_tag "active_admin" %>
2
+ <meta name="viewport" content="width=device-width,initial-scale=1">
3
+ <%= csrf_meta_tags %>
4
+ <%= csp_meta_tag %>
5
+ <% # On page load or when changing themes, best to add inline in `head` to avoid FOUC %>
6
+ <%= javascript_tag nonce: true do %>
7
+ if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
8
+ document.documentElement.classList.add('dark')
9
+ } else {
10
+ document.documentElement.classList.remove('dark')
11
+ }
12
+ <% end %>
13
+ <%= javascript_importmap_tags "active_admin", importmap: ActiveAdmin.importmap %>
@@ -0,0 +1,28 @@
1
+ <div id="main-menu" class="fixed top-0 xl:top-16 bottom-0 start-0 z-40 w-72 xl:w-60 p-4 overflow-y-auto transition-transform duration-200 -translate-x-full xl:translate-x-0 bg-white dark:bg-gray-950 xl:border-e xl:border-gray-200 xl:dark:border-white/10" tabindex="-1" aria-labelledby="drawer-navigation-label">
2
+ <ul role="list" class="flex flex-1 flex-col space-y-1.5">
3
+ <% current_menu.items(self).each do |item| %>
4
+ <% children = item.items(self).presence %>
5
+ <li <%= current_menu_item?(item) && "data-open" %> class="group" data-item-id="<%= item.id %>">
6
+ <% if children %>
7
+ <button data-menu-button class="text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white flex items-center w-full rounded-md p-2 gap-x-2 text-sm">
8
+ <%= item.label(self) %>
9
+ <svg class="group-data-[open]:rotate-90 group-data-[open]:rtl:-rotate-90 ms-auto h-5 w-5 shrink-0 rtl:-scale-x-100" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
10
+ <path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd" />
11
+ </svg>
12
+ </button>
13
+ <ul role="list" class="mt-1 space-y-1 hidden group-data-[open]:block">
14
+ <% children.each do |j| %>
15
+ <li data-item-id="<%= j.id %>">
16
+ <%= link_to j.label(self), j.url(self), j.html_options.merge(class: "text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white block rounded-md py-1.5 px-2 text-sm no-underline #{(current_menu_item?(j) ? "bg-gray-100 dark:bg-white/5 text-gray-900 dark:text-white selected" : "")}") %>
17
+ </li>
18
+ <% end %>
19
+ </ul>
20
+ <% elsif url = item.url(self) %>
21
+ <%= link_to item.label(self), url, item.html_options.merge(class: "text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white flex items-center w-full rounded-md p-2 gap-x-2 text-sm no-underline #{(current_menu_item?(item) ? "bg-gray-100 dark:bg-white/5 text-gray-900 dark:text-white selected" : "")}") %>
22
+ <% else %>
23
+ <%= item.label(self) %>
24
+ <% end %>
25
+ </li>
26
+ <% end %>
27
+ </ul>
28
+ </div>
@@ -0,0 +1,27 @@
1
+ <div data-test-page-header class="bg-gray-50 border-b p-4 mb-8 flex flex-col gap-4 md:flex-row md:items-center justify-between dark:border-gray-800/50 dark:bg-inherit">
2
+ <div class="flex flex-col gap-3 pt-1">
3
+ <% breadcrumb_links = build_breadcrumb_links(request.path, class: "text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 no-underline") %>
4
+ <% if breadcrumb_links.present? %>
5
+ <nav aria-label="breadcrumb">
6
+ <ol class="flex flex-wrap gap-1 text-sm">
7
+ <% breadcrumb_links.each_with_index do |link, index| %>
8
+ <li class="inline-flex items-center h-5 gap-1">
9
+ <% if index > 0 %>
10
+ <svg class="h-5 w-5 text-gray-300 dark:text-gray-700 flex-shrink-0 rtl:rotate-180" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
11
+ <path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd"/>
12
+ </svg>
13
+ <% end %>
14
+ <%= link %>
15
+ </li>
16
+ <% end %>
17
+ </ol>
18
+ </nav>
19
+ <% end %>
20
+ <h2 class="text-2xl font-semibold"><%= title %></h2>
21
+ </div>
22
+ <% if action_items_for_action.present? %>
23
+ <div data-test-action-items class="flex gap-2 flex-wrap lg:justify-end">
24
+ <%= render "active_admin/shared/action_items" %>
25
+ </div>
26
+ <% end %>
27
+ </div>
@@ -0,0 +1,5 @@
1
+ <% unless skip_sidebar? || sidebar_sections_for_action.blank? %>
2
+ <div class="space-y-8">
3
+ <%= render "active_admin/shared/sidebar_sections" %>
4
+ </div>
5
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <div class="text-sm text-center mt-16 mx-8 pt-9 pb-12 text-gray-500 border-t dark:border-gray-800">
2
+ <%= I18n.t(
3
+ "active_admin.powered_by",
4
+ active_admin: link_to("Active Admin", "https://activeadmin.info", class: "text-gray-500 dark:text-gray-500 hover:text-gray-900 dark:hover:text-gray-400 no-underline"),
5
+ version: ActiveAdmin::VERSION
6
+ ).html_safe %>
7
+ </div>
@@ -0,0 +1,30 @@
1
+ <div class="border-b border-gray-200 dark:border-white/10 dark:bg-gray-950/75 px-4 py-2 flex items-center sticky top-0 z-20 h-16 w-full backdrop-blur-md">
2
+ <button class="xl:hidden pe-3 inline-flex items-center w-8 h-8 justify-center text-sm text-gray-500 dark:text-gray-400 focus-visible:outline-none focus-visible:ring-ring focus-visible:bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0" data-drawer-target="main-menu" data-drawer-show="main-menu" aria-controls="drawer-navigation">
3
+ <svg class="w-5 h-5 text-gray-800 dark:text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 17 14"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M1 1h15M1 7h15M1 13h15"/></svg>
4
+ </button>
5
+
6
+ <div class="grow">
7
+ <h1 data-test-site-title class="text-lg font-semibold">
8
+ <%= title %>
9
+ </h1>
10
+ </div>
11
+
12
+ <button type="button" class="dark-mode-toggle flex items-center w-9 h-9 justify-center me-1 text-gray-400 hover:text-gray-500 dark:text-gray-500 dark:hover:text-gray-400 focus:outline-none text-sm">
13
+ <svg class="hidden dark:block w-5 h-5 rtl:-scale-x-100" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 18 20"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.509 5.75c0-1.493.394-2.96 1.144-4.25h-.081a8.5 8.5 0 1 0 7.356 12.746A8.5 8.5 0 0 1 8.509 5.75Z"/></svg>
14
+ <svg class="dark:hidden w-5 h-5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 3V1m0 18v-2M5.05 5.05 3.636 3.636m12.728 12.728L14.95 14.95M3 10H1m18 0h-2M5.05 14.95l-1.414 1.414M16.364 3.636 14.95 5.05M14 10a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z"/></svg>
15
+ </button>
16
+
17
+ <button id="user-menu-button" class="flex items-center w-9 h-9 justify-center text-sm text-gray-500 focus:outline-none dark:text-gray-200" data-dropdown-toggle="user-menu" data-dropdown-offset-distance="3" data-dropdown-placement="bottom-end">
18
+ <svg class="w-7 h-7" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20"><path d="M10 0a10 10 0 1 0 10 10A10.011 10.011 0 0 0 10 0Zm0 5a3 3 0 1 1 0 6 3 3 0 0 1 0-6Zm0 13a8.949 8.949 0 0 1-4.951-1.488A3.987 3.987 0 0 1 9 13h2a3.987 3.987 0 0 1 3.951 3.512A8.949 8.949 0 0 1 10 18Z"/></svg>
19
+ </button>
20
+
21
+ <div id="user-menu" class="z-50 hidden min-w-max bg-white rounded shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:bg-gray-700 py-1 text-sm text-gray-700 dark:text-gray-200" aria-labelledby="user-menu-button">
22
+ <ul>
23
+ <% if current_active_admin_user? %>
24
+ <li><%= auto_link current_active_admin_user, class: "block px-2.5 py-2 no-underline text-gray-700 hover:bg-gray-100 hover:text-gray-900 dark:text-white dark:hover:bg-gray-600 dark:hover:text-white" %></li>
25
+ <li><%= link_to I18n.t("active_admin.logout"), auto_logout_link_path, class: "block px-2.5 py-2 no-underline text-gray-700 hover:bg-gray-100 hover:text-gray-900 dark:text-white dark:hover:bg-gray-600 dark:hover:text-white", data: { method: :delete } %></li>
26
+ <% end %>
27
+ </ul>
28
+ </div>
29
+
30
+ </div>
@@ -1,5 +1,7 @@
1
- <div id="login">
2
- <h2><%= active_admin_application.site_title(self) %> <%= title t('active_admin.devise.resend_confirmation_instructions.title') %></h2>
1
+ <div class="p-6 sm:p-8 space-y-4 md:space-y-6 w-full sm:max-w-md bg-white sm:rounded-md shadow dark:border dark:bg-gray-800 dark:border-gray-700">
2
+ <h2 class="text-xl font-bold text-gray-900 md:text-2xl dark:text-white">
3
+ <%= active_admin_application.site_title(self) %> <%= set_page_title t('active_admin.devise.resend_confirmation_instructions.title') %>
4
+ </h2>
3
5
 
4
6
  <%= render partial: "active_admin/devise/shared/error_messages", resource: resource %>
5
7
  <%= active_admin_form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f|
@@ -7,7 +9,7 @@
7
9
  f.input :email
8
10
  end
9
11
  f.actions do
10
- f.action :submit, label: t('active_admin.devise.resend_confirmation_instructions.submit'), button_html: { value: t('active_admin.devise.resend_confirmation_instructions.submit') }
12
+ f.action :submit, label: t('active_admin.devise.resend_confirmation_instructions.submit'), button_html: { class: "w-full", value: t('active_admin.devise.resend_confirmation_instructions.submit') }
11
13
  end
12
14
  end %>
13
15
 
@@ -1,5 +1,7 @@
1
- <div id="login">
2
- <h2><%= active_admin_application.site_title(self) %> <%= title t('active_admin.devise.change_password.title') %></h2>
1
+ <div class="p-6 sm:p-8 space-y-4 md:space-y-6 w-full sm:max-w-md bg-white sm:rounded-md shadow dark:border dark:bg-gray-800 dark:border-gray-700">
2
+ <h2 class="text-xl font-bold text-gray-900 md:text-2xl dark:text-white">
3
+ <%= active_admin_application.site_title(self) %> <%= set_page_title t('active_admin.devise.change_password.title') %>
4
+ </h2>
3
5
 
4
6
  <%= render partial: "active_admin/devise/shared/error_messages", resource: resource %>
5
7
  <%= active_admin_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f|
@@ -9,7 +11,7 @@
9
11
  f.input :reset_password_token, as: :hidden, input_html: { value: resource.reset_password_token }
10
12
  end
11
13
  f.actions do
12
- f.action :submit, label: t('active_admin.devise.change_password.submit'), button_html: { value: t('active_admin.devise.change_password.submit') }
14
+ f.action :submit, label: t('active_admin.devise.change_password.submit'), button_html: { class: "w-full", value: t('active_admin.devise.change_password.submit') }
13
15
  end
14
16
  end
15
17
  %>
@@ -1,13 +1,14 @@
1
- <div id="login">
2
- <h2><%= active_admin_application.site_title(self) %> <%= title t('active_admin.devise.reset_password.title') %></h2>
1
+ <div class="p-6 sm:p-8 space-y-4 md:space-y-6 w-full sm:max-w-md bg-white sm:rounded-md shadow dark:border dark:bg-gray-800 dark:border-gray-700">
2
+ <h2 class="text-xl font-bold text-gray-900 md:text-2xl dark:text-white">
3
+ <%= active_admin_application.site_title(self) %> <%= set_page_title t('active_admin.devise.reset_password.title') %>
4
+ </h2>
3
5
 
4
- <%= render partial: "active_admin/devise/shared/error_messages", resource: resource %>
5
6
  <%= active_admin_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f|
6
7
  f.inputs do
7
8
  f.input :email
8
9
  end
9
10
  f.actions do
10
- f.action :submit, label: t('active_admin.devise.reset_password.submit'), button_html: { value: t('active_admin.devise.reset_password.submit') }
11
+ f.action :submit, label: t('active_admin.devise.reset_password.submit'), button_html: { class: "w-full", value: t('active_admin.devise.reset_password.submit') }
11
12
  end
12
13
  end %>
13
14
 
@@ -1,9 +1,11 @@
1
- <div id="login">
2
- <h2><%= active_admin_application.site_title(self) %> <%= title t('active_admin.devise.sign_up.title') %></h2>
1
+ <div class="p-6 sm:p-8 space-y-4 md:space-y-6 w-full sm:max-w-md bg-white sm:rounded-md shadow dark:border dark:bg-gray-800 dark:border-gray-700">
2
+ <h2 class="text-xl font-bold text-gray-900 md:text-2xl dark:text-white">
3
+ <%= active_admin_application.site_title(self) %> <%= set_page_title t('active_admin.devise.sign_up.title') %>
4
+ </h2>
3
5
 
4
6
  <% scope = Devise::Mapping.find_scope!(resource_name) %>
5
7
  <%= render partial: "active_admin/devise/shared/error_messages", resource: resource %>
6
- <%= active_admin_form_for(resource, as: resource_name, url: send(:"#{scope}_registration_path"), html: { id: "registration_new" }) do |f|
8
+ <%= active_admin_form_for(resource, as: resource_name, url: main_app.send(:"#{scope}_registration_path"), html: { id: "registration_new" }) do |f|
7
9
  f.inputs do
8
10
  resource.class.authentication_keys.each_with_index { |key, index|
9
11
  f.input key, label: t('active_admin.devise.'+key.to_s+'.title'), input_html: { autofocus: index.zero? }
@@ -12,7 +14,7 @@
12
14
  f.input :password_confirmation, label: t('active_admin.devise.password_confirmation.title')
13
15
  end
14
16
  f.actions do
15
- f.action :submit, label: t('active_admin.devise.login.submit'), button_html: { value: t('active_admin.devise.sign_up.submit') }
17
+ f.action :submit, label: t('active_admin.devise.login.submit'), button_html: { class: "w-full", value: t('active_admin.devise.sign_up.submit') }
16
18
  end
17
19
  end
18
20
  %>
@@ -1,8 +1,10 @@
1
- <div id="login">
2
- <h2><%= active_admin_application.site_title(self) %> <%= title t('active_admin.devise.login.title') %></h2>
1
+ <div class="p-6 sm:p-8 space-y-4 md:space-y-6 w-full sm:max-w-md bg-white sm:rounded-md shadow dark:border dark:bg-gray-800 dark:border-gray-700">
2
+ <h2 class="text-xl font-bold text-gray-900 md:text-2xl dark:text-white">
3
+ <%= site_title %> <%= set_page_title t('active_admin.devise.login.title') %>
4
+ </h2>
3
5
 
4
6
  <% scope = Devise::Mapping.find_scope!(resource_name) %>
5
- <%= active_admin_form_for(resource, as: resource_name, url: send(:"#{scope}_session_path"), html: { id: "session_new" }) do |f|
7
+ <%= active_admin_form_for(resource, as: resource_name, url: main_app.send(:"#{scope}_session_path")) do |f|
6
8
  f.inputs do
7
9
  resource.class.authentication_keys.each_with_index { |key, index|
8
10
  f.input key, label: t("active_admin.devise.#{key}.title"), input_html: { autofocus: index.zero? }
@@ -11,7 +13,7 @@
11
13
  f.input :remember_me, label: t('active_admin.devise.login.remember_me'), as: :boolean if devise_mapping.rememberable?
12
14
  end
13
15
  f.actions do
14
- f.action :submit, label: t('active_admin.devise.login.submit'), button_html: { value: t('active_admin.devise.login.submit') }
16
+ f.action :submit, label: t('active_admin.devise.login.submit'), wrapper_html: { class: "grow" }, button_html: { class: "w-full", value: t('active_admin.devise.login.submit') }
15
17
  end
16
18
  end
17
19
  %>
@@ -1,6 +1,7 @@
1
+ <div class="mt-6 text-sm">
1
2
  <%- if controller_name != 'sessions' %>
2
3
  <% scope = Devise::Mapping.find_scope!(resource_name) %>
3
- <%= link_to t('active_admin.devise.links.sign_in'), send(:"new_#{scope}_session_path") %>
4
+ <%= link_to t('active_admin.devise.links.sign_in'), main_app.send(:"new_#{scope}_session_path") %>
4
5
  <br>
5
6
  <% end -%>
6
7
 
@@ -31,3 +32,4 @@
31
32
  <br>
32
33
  <% end -%>
33
34
  <% end -%>
35
+ </div>
@@ -1,5 +1,7 @@
1
- <div id="login">
2
- <h2><%= active_admin_application.site_title(self) %> <%= title t('active_admin.devise.unlock.title') %></h2>
1
+ <div class="p-6 sm:p-8 space-y-4 md:space-y-6 w-full sm:max-w-md bg-white sm:rounded-md shadow dark:border dark:bg-gray-800 dark:border-gray-700">
2
+ <h2 class="text-xl font-bold text-gray-900 md:text-2xl dark:text-white">
3
+ <%= site_title %> <%= set_page_title t('active_admin.devise.unlock.title') %>
4
+ </h2>
3
5
 
4
6
  <%= render partial: "active_admin/devise/shared/error_messages", resource: resource %>
5
7
  <%= active_admin_form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f|
@@ -7,9 +9,9 @@
7
9
  f.input :email
8
10
  end
9
11
  f.actions do
10
- f.action :submit, label: t('active_admin.devise.unlock.submit'), button_html: { value: t('active_admin.devise.unlock.submit') }
12
+ f.action :submit, label: t('active_admin.devise.unlock.submit'), button_html: { class: "w-full", value: t('active_admin.devise.unlock.submit') }
11
13
  end
12
14
  end %>
13
15
 
14
- <%= render partial: "active_admin/devise/shared/links" %>
16
+ <%= render partial: "active_admin/devise/shared/links" %>
15
17
  </div>
@@ -5,4 +5,6 @@
5
5
  per_page: number of items to fetch per page
6
6
  remote: data-remote
7
7
  -%>
8
- <span class="page gap"><%= t('views.pagination.truncate').html_safe %></span>
8
+ <span class="flex items-center justify-center px-2.5 py-3 h-8 leading-tight text-gray-500 dark:text-gray-400">
9
+ <%= t('views.pagination.truncate').html_safe %>
10
+ </span>
@@ -0,0 +1,16 @@
1
+ <%# Link to the "Next" page
2
+ - available local variables
3
+ url: url to the next page
4
+ current_page: a page object for the currently displayed page
5
+ total_pages: total number of pages
6
+ per_page: number of items to fetch per page
7
+ remote: data-remote
8
+ -%>
9
+ <% unless current_page.last? %>
10
+ <%= link_to url, rel: 'next', remote: remote, class: "flex items-center justify-center px-2.5 py-3 h-8 leading-tight text-gray-500 dark:text-gray-400 hover:bg-gray-100 hover:text-gray-700 dark:hover:bg-gray-800 dark:hover:text-white rounded no-underline" do %>
11
+ <span class="sr-only"><%= t('views.pagination.next').html_safe %></span>
12
+ <svg class="w-2.5 h-2.5 rtl:rotate-180" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 6 10">
13
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 9 4-4-4-4"/>
14
+ </svg>
15
+ <% end %>
16
+ <% end %>
@@ -0,0 +1,14 @@
1
+ <%# Link showing page number
2
+ - available local variables
3
+ page: a page object for "this" page
4
+ url: url to this page
5
+ current_page: a page object for the currently displayed page
6
+ total_pages: total number of pages
7
+ per_page: number of items to fetch per page
8
+ remote: data-remote
9
+ -%>
10
+ <% if page.current? %>
11
+ <%= link_to page, url, { remote: remote, rel: page.rel, class: "flex items-center justify-center px-2.5 py-3 h-8 leading-tight text-white bg-blue-500 dark:text-white dark:bg-blue-600 hover:bg-blue-500 hover:text-white dark:hover:bg-blue-600 dark:hover:text-white rounded no-underline" } %>
12
+ <% else %>
13
+ <%= link_to page, url, { remote: remote, rel: page.rel, class: "flex items-center justify-center px-2.5 py-3 h-8 leading-tight text-gray-500 dark:text-gray-400 hover:bg-gray-100 hover:text-gray-700 dark:hover:bg-gray-800 dark:hover:text-white rounded no-underline" } %>
14
+ <% end %>
@@ -7,8 +7,7 @@
7
7
  paginator: the paginator that renders the pagination tags inside
8
8
  -%>
9
9
  <%= paginator.render do -%>
10
- <nav class="pagination">
11
- <%= first_page_tag unless current_page.first? %>
10
+ <nav data-test-pagination class="inline-flex flex-wrap -space-x-px text-sm gap-1">
12
11
  <%= prev_page_tag unless current_page.first? %>
13
12
  <% each_page do |page| -%>
14
13
  <% if page.display_tag? -%>
@@ -0,0 +1,16 @@
1
+ <%# Link to the "Previous" page
2
+ - available local variables
3
+ url: url to the previous page
4
+ current_page: a page object for the currently displayed page
5
+ total_pages: total number of pages
6
+ per_page: number of items to fetch per page
7
+ remote: data-remote
8
+ -%>
9
+ <% unless current_page.first? %>
10
+ <%= link_to url, rel: 'prev', remote: remote, class: "flex items-center justify-center px-2.5 py-3 h-8 leading-tight text-gray-500 dark:text-gray-400 hover:bg-gray-100 hover:text-gray-700 dark:hover:bg-gray-800 dark:hover:text-white rounded no-underline" do %>
11
+ <span class="sr-only"><%= t('views.pagination.previous').html_safe %></span>
12
+ <svg class="w-2.5 h-2.5 rtl:rotate-180" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 6 10">
13
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 1 1 5l4 4"/>
14
+ </svg>
15
+ <% end %>
16
+ <% end %>
@@ -1,2 +1,6 @@
1
1
  # frozen_string_literal: true
2
- insert_tag active_admin_application.view_factory["page"]
2
+ div class: "main-content-container" do
3
+ if page_presenter.block
4
+ instance_exec &page_presenter.block
5
+ end
6
+ end
@@ -0,0 +1,32 @@
1
+ <div class="active-filters">
2
+ <h3 class="active-filters-title">
3
+ <% if current_scope %>
4
+ <%= I18n.t("active_admin.search_status.title_with_scope", name: scope_name(current_scope)) %>
5
+ <% else %>
6
+ <%= I18n.t("active_admin.search_status.title") %>
7
+ <% end %>
8
+ </h3>
9
+ <ul class="active-filters-list">
10
+ <% if active_filters.all_blank? %>
11
+ <li><%= I18n.t("active_admin.search_status.no_current_filters") %></li>
12
+ <% else %>
13
+ <% active_filters.filters.each do |filter| %>
14
+ <%= content_tag :li, filter.html_options do %>
15
+ <span>
16
+ <%= filter.label %>
17
+ <strong><%= to_sentence(filter.values.map { |v| pretty_format(v) }) %></strong>
18
+ </span>
19
+ <% end %>
20
+ <% end %>
21
+ <% active_filters.scopes.each do |name, value| %>
22
+ <% filter_name = name.gsub(/_eq$/, "") %>
23
+ <% filter = active_admin_config.filters[filter_name.to_sym] %>
24
+ <% label = filter.try(:[], :label) || filter_name.titleize %>
25
+ <li data-filter="<%= name %>">
26
+ <span><%= "#{label} #{Ransack::Translate.predicate('eq')}" %></span>
27
+ <strong><%= value %></strong>
28
+ </li>
29
+ <% end %>
30
+ <% end %>
31
+ </ul>
32
+ </div>
@@ -0,0 +1,19 @@
1
+ <% if batch_actions_to_display.any? %>
2
+ <div class="batch-actions-dropdown">
3
+ <button type="button" class="batch-actions-dropdown-toggle" data-dropdown-toggle="batch-action-menu" disabled data-dropdown-offset-distance="5" data-dropdown-placement="bottom-start">
4
+ <%= I18n.t("active_admin.batch_actions.button_label") %>
5
+ <svg class="batch-actions-dropdown-arrow" aria-hidden="true" fill="none" viewBox="0 0 10 6"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 4 4 4-4"/></svg>
6
+ </button>
7
+ <ul class="batch-actions-dropdown-menu" id="batch-action-menu">
8
+ <% batch_actions_to_display.each do |batch_action| %>
9
+ <li>
10
+ <% confirmation_text = render_or_call_method_or_proc_on(self, batch_action.confirm) %>
11
+ <% default_title = render_or_call_method_or_proc_on(self, batch_action.title) %>
12
+ <% title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", default: default_title) %>
13
+ <% label = I18n.t("active_admin.batch_actions.action_label", title: title) %>
14
+ <%= link_to(label, "#", batch_action.link_html_options.merge(data: { action: batch_action.sym, confirm: confirmation_text.presence, batch_action_item: "" })) %>
15
+ </li>
16
+ <% end %>
17
+ </ul>
18
+ </div>
19
+ <% end %>
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+ div class: "main-content-container" do
3
+ if page_presenter.block
4
+ options = {
5
+ url: resource.persisted? ? resource_path(resource) : collection_path,
6
+ as: active_admin_config.param_key
7
+ }
8
+ options.merge!(page_presenter.options)
9
+
10
+ active_admin_form_for(resource, options, &page_presenter.block)
11
+ elsif page_presenter.options[:partial].present?
12
+ render page_presenter.options[:partial]
13
+ else
14
+ render "form_default"
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+ options = {
3
+ url: resource.persisted? ? resource_path(resource) : collection_path,
4
+ as: active_admin_config.param_key
5
+ }
6
+ options.merge!(page_presenter.options)
7
+
8
+ active_admin_form_for(resource, options) do |f|
9
+ f.semantic_errors # show errors on :base by default
10
+ f.inputs
11
+ f.actions
12
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+ insert_tag(ActiveAdmin::Views::IndexAsTable::IndexTableFor, collection, table_options) do |t|
3
+ selectable_column
4
+ id_column if resource_class.primary_key
5
+ active_admin_config.resource_columns.each do |attribute|
6
+ column attribute
7
+ end
8
+ actions
9
+ end
@@ -0,0 +1,14 @@
1
+ <div class="w-full rounded-lg border-2 border-dashed border-gray-300 hover:border-gray-400 dark:border-gray-700 dark:hover:border-gray-600 px-6 py-12 text-center">
2
+ <h2 class="block mb-4 only:mb-0 font-semibold leading-6 text-gray-900 dark:text-gray-200">
3
+ <%= I18n.t("active_admin.blank_slate.content", resource_name: active_admin_config.plural_resource_label) %>
4
+ </h2>
5
+ <% if new_action_authorized?(active_admin_config.resource_class) %>
6
+ <%= if page_presenter.options.has_key?(:blank_slate_link)
7
+ link = page_presenter.options[:blank_slate_link]
8
+ instance_exec(&link) if link.is_a?(Proc)
9
+ else
10
+ link_to(I18n.t("active_admin.blank_slate.link"), new_resource_path)
11
+ end
12
+ %>
13
+ <% end %>
14
+ </div>
@@ -0,0 +1,5 @@
1
+ <div class="w-full rounded-lg border-2 border-dashed border-gray-300 hover:border-gray-400 dark:border-gray-700 dark:hover:border-gray-600 px-6 py-12 text-center min-h-20">
2
+ <h2 class="block mb-4 only:mb-0 font-semibold leading-6 text-gray-900 dark:text-gray-200">
3
+ <%= I18n.t("active_admin.pagination.empty", model: active_admin_config.plural_resource_label) %>
4
+ </h2>
5
+ </div>
@@ -0,0 +1,9 @@
1
+ <% if show_action_authorized?(resource) %>
2
+ <%= link_to view_label, resource_path(resource) %>
3
+ <% end %>
4
+ <% if edit_action_authorized?(resource) %>
5
+ <%= link_to edit_label, edit_resource_path(resource) %>
6
+ <% end %>
7
+ <% if destroy_action_authorized?(resource) %>
8
+ <%= link_to delete_label, resource_path(resource), method: :delete, data: { confirm: delete_confirmation_text } %>
9
+ <% end %>
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+ attributes_table_for(resource, *active_admin_config.resource_columns)
3
+ active_admin_comments_for(resource) if active_admin_config.comments?
@@ -1,2 +1,2 @@
1
1
  # frozen_string_literal: true
2
- insert_tag renderer_for(:edit)
2
+ render "form"
@@ -1,2 +1,95 @@
1
1
  # frozen_string_literal: true
2
- insert_tag renderer_for(:index)
2
+ def wrap_with_batch_action_form(&block)
3
+ if active_admin_config.batch_actions.any?
4
+ insert_tag(ActiveAdmin::BatchActions::BatchActionForm, &block)
5
+ batch_actions_to_display.each do |batch_action|
6
+ if batch_action.partial.present?
7
+ render(batch_action.partial)
8
+ end
9
+ end
10
+ else
11
+ block.call
12
+ end
13
+ end
14
+
15
+ def build_collection
16
+ if collection_empty?(collection)
17
+ if params[:q] || params[:scope]
18
+ render("active_admin/resource/index_empty_results")
19
+ else
20
+ render("active_admin/resource/index_blank_slate")
21
+ end
22
+ else
23
+ render_index
24
+ end
25
+ end
26
+
27
+ def build_table_tools
28
+ div class: "index-data-table-toolbar" do
29
+ render "batch_actions_dropdown"
30
+ build_scopes
31
+ build_index_list
32
+ end if any_table_tools?
33
+ end
34
+
35
+ def any_table_tools?
36
+ active_admin_config.batch_actions.any? ||
37
+ active_admin_config.scopes.any? ||
38
+ active_admin_config.page_presenters[:index].try(:size).try(:>, 1)
39
+ end
40
+
41
+ def build_scopes
42
+ if active_admin_config.scopes.any?
43
+ scope_options = { scope_count: page_presenter.fetch(:scope_count, true) }
44
+ insert_tag(ActiveAdmin::Views::Scopes, active_admin_config.scopes, scope_options)
45
+ end
46
+ end
47
+
48
+ def build_index_list
49
+ indexes = active_admin_config.page_presenters[:index]
50
+
51
+ if indexes.kind_of?(Hash) && indexes.length > 1
52
+ index_classes = []
53
+ active_admin_config.page_presenters[:index].each do |type, page_presenter|
54
+ index_classes << find_index_renderer_class(page_presenter[:as])
55
+ end
56
+
57
+ insert_tag(ActiveAdmin::Views::IndexList, index_classes)
58
+ end
59
+ end
60
+
61
+ # Returns the actual class for renderering the main content on the index
62
+ # page. To set this, use the :as option in the page_presenter block.
63
+ def find_index_renderer_class(klass)
64
+ if klass.is_a?(Class)
65
+ klass
66
+ else
67
+ ::ActiveAdmin::Views.const_get("IndexAs" + klass.to_s.camelcase)
68
+ end
69
+ end
70
+
71
+ def render_index
72
+ renderer_class = find_index_renderer_class(page_presenter[:as])
73
+
74
+ paginator = page_presenter.fetch(:paginator, true)
75
+ download_links = page_presenter.fetch(:download_links, active_admin_config.namespace.download_links)
76
+ pagination_total = page_presenter.fetch(:pagination_total, true)
77
+ per_page = page_presenter.fetch(:per_page, active_admin_config.per_page)
78
+
79
+ paginated_collection(
80
+ collection, entry_name: active_admin_config.resource_label,
81
+ entries_name: active_admin_config.plural_resource_label(count: collection_size),
82
+ download_links: download_links,
83
+ paginator: paginator,
84
+ per_page: per_page,
85
+ pagination_total: pagination_total) do
86
+ insert_tag(renderer_class, page_presenter, collection)
87
+ end
88
+ end
89
+
90
+ div class: "main-content-container" do
91
+ wrap_with_batch_action_form do
92
+ build_table_tools
93
+ build_collection
94
+ end
95
+ end
@@ -1,2 +1,2 @@
1
1
  # frozen_string_literal: true
2
- insert_tag renderer_for(:new)
2
+ render "form"