activeadmin 3.2.1 → 4.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (338) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +2 -31
  3. data/CONTRIBUTING.md +25 -108
  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. metadata +67 -215
  174. data/app/assets/javascripts/active_admin/base.js +0 -521
  175. data/app/assets/stylesheets/active_admin/_base.scss +0 -57
  176. data/app/assets/stylesheets/active_admin/_forms.scss +0 -316
  177. data/app/assets/stylesheets/active_admin/_header.scss +0 -188
  178. data/app/assets/stylesheets/active_admin/_mixins.scss +0 -1
  179. data/app/assets/stylesheets/active_admin/_normalize.scss +0 -349
  180. data/app/assets/stylesheets/active_admin/_print.scss +0 -287
  181. data/app/assets/stylesheets/active_admin/_typography.scss +0 -100
  182. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -6
  183. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -30
  184. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +0 -20
  185. data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -6
  186. data/app/assets/stylesheets/active_admin/components/_columns.scss +0 -3
  187. data/app/assets/stylesheets/active_admin/components/_comments.scss +0 -41
  188. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +0 -148
  189. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -151
  190. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +0 -37
  191. data/app/assets/stylesheets/active_admin/components/_grid.scss +0 -9
  192. data/app/assets/stylesheets/active_admin/components/_index_list.scss +0 -12
  193. data/app/assets/stylesheets/active_admin/components/_links.scss +0 -5
  194. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +0 -34
  195. data/app/assets/stylesheets/active_admin/components/_pagination.scss +0 -55
  196. data/app/assets/stylesheets/active_admin/components/_panels.scss +0 -6
  197. data/app/assets/stylesheets/active_admin/components/_scopes.scss +0 -13
  198. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -12
  199. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +0 -67
  200. data/app/assets/stylesheets/active_admin/components/_tables.scss +0 -112
  201. data/app/assets/stylesheets/active_admin/components/_tabs.scss +0 -65
  202. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +0 -16
  203. data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -8
  204. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +0 -65
  205. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +0 -28
  206. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +0 -22
  207. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -41
  208. data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +0 -15
  209. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +0 -3
  210. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -17
  211. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +0 -51
  212. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +0 -44
  213. data/app/assets/stylesheets/active_admin/structure/_footer.scss +0 -19
  214. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +0 -29
  215. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -40
  216. data/app/javascript/active_admin/base.js +0 -28
  217. data/app/javascript/active_admin/ext/jquery-ui.js +0 -7
  218. data/app/javascript/active_admin/ext/jquery.js +0 -9
  219. data/app/javascript/active_admin/initializers/batch-actions.js +0 -61
  220. data/app/javascript/active_admin/initializers/checkbox-toggler.js +0 -3
  221. data/app/javascript/active_admin/initializers/datepicker.js +0 -16
  222. data/app/javascript/active_admin/initializers/dropdown-menu.js +0 -9
  223. data/app/javascript/active_admin/initializers/filters.js +0 -10
  224. data/app/javascript/active_admin/initializers/has-many.js +0 -98
  225. data/app/javascript/active_admin/initializers/per-page.js +0 -13
  226. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +0 -3
  227. data/app/javascript/active_admin/initializers/tabs.js +0 -6
  228. data/app/javascript/active_admin/lib/checkbox-toggler.js +0 -49
  229. data/app/javascript/active_admin/lib/dropdown-menu.js +0 -116
  230. data/app/javascript/active_admin/lib/filters.js +0 -39
  231. data/app/javascript/active_admin/lib/modal-dialog.js +0 -63
  232. data/app/javascript/active_admin/lib/per-page.js +0 -38
  233. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +0 -38
  234. data/app/javascript/active_admin/lib/utils.js +0 -40
  235. data/app/views/kaminari/active_admin/_first_page.html.erb +0 -11
  236. data/app/views/kaminari/active_admin/_gap.html.erb +0 -8
  237. data/app/views/kaminari/active_admin/_last_page.html.erb +0 -11
  238. data/app/views/kaminari/active_admin/_next_page.html.erb +0 -11
  239. data/app/views/kaminari/active_admin/_page.html.erb +0 -12
  240. data/app/views/kaminari/active_admin/_paginator.html.erb +0 -25
  241. data/app/views/kaminari/active_admin/_prev_page.html.erb +0 -11
  242. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +0 -11
  243. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +0 -11
  244. data/app/views/kaminari/active_admin_countless/_page.html.erb +0 -12
  245. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +0 -11
  246. data/app/views/layouts/active_admin.html.arb +0 -2
  247. data/lib/active_admin/abstract_view_factory.rb +0 -48
  248. data/lib/active_admin/asset_registration.rb +0 -30
  249. data/lib/active_admin/base_controller/menu.rb +0 -35
  250. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +0 -59
  251. data/lib/active_admin/filters/active_sidebar.rb +0 -28
  252. data/lib/active_admin/generators/boilerplate.rb +0 -54
  253. data/lib/active_admin/helpers/collection.rb +0 -21
  254. data/lib/active_admin/helpers/i18n.rb +0 -8
  255. data/lib/active_admin/inputs/datepicker_input.rb +0 -28
  256. data/lib/active_admin/inputs/filters/date_picker_input.rb +0 -14
  257. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +0 -24
  258. data/lib/active_admin/orm/mongoid.rb +0 -2
  259. data/lib/active_admin/resource_controller/sidebars.rb +0 -19
  260. data/lib/active_admin/resource_controller.rb +0 -68
  261. data/lib/active_admin/view_factory.rb +0 -28
  262. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +0 -13
  263. data/lib/active_admin/view_helpers/auto_link_helper.rb +0 -46
  264. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +0 -34
  265. data/lib/active_admin/view_helpers/display_helper.rb +0 -119
  266. data/lib/active_admin/view_helpers/download_format_links_helper.rb +0 -60
  267. data/lib/active_admin/view_helpers/fields_for.rb +0 -51
  268. data/lib/active_admin/view_helpers/flash_helper.rb +0 -15
  269. data/lib/active_admin/view_helpers/form_helper.rb +0 -21
  270. data/lib/active_admin/view_helpers/scope_name_helper.rb +0 -17
  271. data/lib/active_admin/view_helpers/sidebar_helper.rb +0 -16
  272. data/lib/active_admin/view_helpers/title_helper.rb +0 -12
  273. data/lib/active_admin/view_helpers/view_factory_helper.rb +0 -12
  274. data/lib/active_admin/views/action_items.rb +0 -18
  275. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +0 -59
  276. data/lib/active_admin/views/components/blank_slate.rb +0 -18
  277. data/lib/active_admin/views/components/columns.rb +0 -162
  278. data/lib/active_admin/views/components/dropdown_menu.rb +0 -69
  279. data/lib/active_admin/views/components/menu.rb +0 -33
  280. data/lib/active_admin/views/components/menu_item.rb +0 -59
  281. data/lib/active_admin/views/components/sidebar.rb +0 -14
  282. data/lib/active_admin/views/components/sidebar_section.rb +0 -35
  283. data/lib/active_admin/views/components/site_title.rb +0 -55
  284. data/lib/active_admin/views/components/unsupported_browser.rb +0 -12
  285. data/lib/active_admin/views/footer.rb +0 -32
  286. data/lib/active_admin/views/header.rb +0 -20
  287. data/lib/active_admin/views/index_as_block.rb +0 -37
  288. data/lib/active_admin/views/index_as_blog.rb +0 -156
  289. data/lib/active_admin/views/index_as_grid.rb +0 -81
  290. data/lib/active_admin/views/pages/base.rb +0 -134
  291. data/lib/active_admin/views/pages/form.rb +0 -65
  292. data/lib/active_admin/views/pages/index.rb +0 -166
  293. data/lib/active_admin/views/pages/layout.rb +0 -27
  294. data/lib/active_admin/views/pages/page.rb +0 -31
  295. data/lib/active_admin/views/pages/show.rb +0 -60
  296. data/lib/active_admin/views/tabbed_navigation.rb +0 -12
  297. data/lib/active_admin/views/title_bar.rb +0 -56
  298. data/lib/generators/active_admin/assets/templates/active_admin.js +0 -1
  299. data/lib/generators/active_admin/assets/templates/active_admin.scss +0 -17
  300. data/lib/generators/active_admin/resource/templates/admin.rb.erb +0 -46
  301. data/lib/generators/active_admin/webpacker/plugins/jquery.js +0 -7
  302. data/lib/generators/active_admin/webpacker/templates/active_admin.js +0 -5
  303. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +0 -17
  304. data/lib/generators/active_admin/webpacker/templates/print.scss +0 -2
  305. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +0 -27
  306. data/vendor/assets/javascripts/jquery-ui/data.js +0 -41
  307. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +0 -48
  308. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +0 -23
  309. data/vendor/assets/javascripts/jquery-ui/focusable.js +0 -86
  310. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +0 -80
  311. data/vendor/assets/javascripts/jquery-ui/form.js +0 -22
  312. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -17
  313. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -47
  314. data/vendor/assets/javascripts/jquery-ui/labels.js +0 -65
  315. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -46
  316. data/vendor/assets/javascripts/jquery-ui/position.js +0 -500
  317. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -42
  318. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -23
  319. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -47
  320. data/vendor/assets/javascripts/jquery-ui/tabbable.js +0 -38
  321. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -51
  322. data/vendor/assets/javascripts/jquery-ui/version.js +0 -17
  323. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -735
  324. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +0 -391
  325. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +0 -291
  326. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +0 -300
  327. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +0 -2123
  328. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +0 -954
  329. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1259
  330. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -230
  331. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +0 -1207
  332. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1561
  333. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  334. /data/{lib → app/controllers}/active_admin/base_controller/authorization.rb +0 -0
  335. /data/{lib → app/controllers}/active_admin/resource_controller/decorators.rb +0 -0
  336. /data/{lib → app/controllers}/active_admin/resource_controller/polymorphic_routes.rb +0 -0
  337. /data/{lib → app/controllers}/active_admin/resource_controller/resource_class_methods.rb +0 -0
  338. /data/lib/{active_admin/orm/mongoid/.gitkeep → generators/active_admin/assets/templates/builds/.keep} +0 -0
@@ -1,61 +0,0 @@
1
- import ModalDialog from "../lib/modal-dialog";
2
-
3
- const onDOMReady = function() {
4
- // Detach any previously attached handlers before re-attaching them.
5
- // This avoids double-registered handlers when Turbolinks is enabled
6
- $('.batch_actions_selector li a').off('click confirm:complete');
7
-
8
- //
9
- // Use ModalDialog to prompt user if
10
- // confirmation is required for current Batch Action
11
- //
12
- $('.batch_actions_selector li a').on('click', function(event){
13
- let message;
14
- event.stopPropagation(); // prevent Rails UJS click event
15
- event.preventDefault();
16
- if ((message = $(this).data('confirm'))) {
17
- ModalDialog(message, $(this).data('inputs'), inputs => {
18
- $(this).trigger('confirm:complete', inputs);
19
- });
20
- } else {
21
- $(this).trigger('confirm:complete');
22
- }
23
- });
24
-
25
- $('.batch_actions_selector li a').on('confirm:complete', function(event, inputs){
26
- let val;
27
- if ((val = JSON.stringify(inputs))) {
28
- $('#batch_action_inputs').removeAttr('disabled').val(val);
29
- } else {
30
- $('#batch_action_inputs').attr('disabled', 'disabled');
31
- }
32
-
33
- $('#batch_action').val($(this).data('action'));
34
- $('#collection_selection').submit();
35
- });
36
-
37
- //
38
- // Add checkbox selection to resource tables and lists if batch actions are enabled
39
- //
40
-
41
- if ($(".batch_actions_selector").length && $(":checkbox.toggle_all").length) {
42
-
43
- if ($(".paginated_collection table.index_table").length) {
44
- $(".paginated_collection table.index_table").tableCheckboxToggler();
45
- } else {
46
- $(".paginated_collection").checkboxToggler();
47
- }
48
-
49
- $(document).on('change', '.paginated_collection :checkbox', function() {
50
- if ($(".paginated_collection :checkbox:checked").length && $(".dropdown_menu_list").children().length) {
51
- $(".batch_actions_selector").each(function() { $(this).aaDropdownMenu("enable"); });
52
- } else {
53
- $(".batch_actions_selector").each(function() { $(this).aaDropdownMenu("disable"); });
54
- }
55
- });
56
- }
57
- };
58
-
59
- $(document).
60
- ready(onDOMReady).
61
- on('page:load turbolinks:load', onDOMReady);
@@ -1,3 +0,0 @@
1
- import CheckboxToggler from "../lib/checkbox-toggler";
2
-
3
- $.widget.bridge('checkboxToggler', CheckboxToggler);
@@ -1,16 +0,0 @@
1
- (($) => {
2
-
3
- $(document)
4
- .on('focus', 'input.datepicker:not(.hasDatepicker)', function() {
5
- const input = $(this);
6
-
7
- // Only create datepickers in compatible browsers
8
- if (input[0].type === 'date') { return; }
9
-
10
- const defaults = { dateFormat: 'yy-mm-dd' };
11
- const options = input.data('datepicker-options');
12
-
13
- input.datepicker($.extend(defaults, options));
14
- });
15
-
16
- })(jQuery);
@@ -1,9 +0,0 @@
1
- import DropdownMenu from "../lib/dropdown-menu";
2
-
3
- $.widget.bridge('aaDropdownMenu', DropdownMenu);
4
-
5
- const onDOMReady = () => $('.dropdown_menu').aaDropdownMenu();
6
-
7
- $(document).
8
- ready(onDOMReady).
9
- on('page:load turbolinks:load', onDOMReady);
@@ -1,10 +0,0 @@
1
- import Filters from '../lib/filters';
2
-
3
- (($) => {
4
-
5
- $(document).
6
- on('click', '.clear_filters_btn', Filters._clearForm).
7
- on('submit', '.filter_form', Filters._disableEmptyInputFields).
8
- on('change', '.filter_form_field.select_and_search select', Filters._setSearchType);
9
-
10
- })(jQuery);
@@ -1,98 +0,0 @@
1
- $(function() {
2
- // Provides a before-removal hook:
3
- // $ ->
4
- // # This is a good place to tear down JS plugins to prevent memory leaks.
5
- // $(document).on 'has_many_remove:before', '.has_many_container', (e, fieldset, container)->
6
- // fieldset.find('.select2').select2 'destroy'
7
- //
8
- // # If you need to do anything after removing the items you can use the
9
- // has_many_remove:after hook
10
- // $(document).on 'has_many_remove:after', '.has_many_container', (e, fieldset, container)->
11
- // list_item_count = container.find('.has_many_fields').length
12
- // alert("There are now #{list_item_count} items in the list")
13
- //
14
- $(document).on('click', 'a.button.has_many_remove', function(event){
15
- event.preventDefault();
16
- const parent = $(this).closest('.has_many_container');
17
- const to_remove = $(this).closest('fieldset');
18
- recompute_positions(parent);
19
-
20
- parent.trigger('has_many_remove:before', [to_remove, parent]);
21
- to_remove.remove();
22
- return parent.trigger('has_many_remove:after', [to_remove, parent]);
23
- });
24
-
25
- // Provides before and after creation hooks:
26
- // $ ->
27
- // # The before hook allows you to prevent the creation of new records.
28
- // $(document).on 'has_many_add:before', '.has_many_container', (e, container)->
29
- // if $(@).children('fieldset').length >= 3
30
- // alert "you've reached the maximum number of items"
31
- // e.preventDefault()
32
- //
33
- // # The after hook is a good place to initialize JS plugins and the like.
34
- // $(document).on 'has_many_add:after', '.has_many_container', (e, fieldset, container)->
35
- // fieldset.find('select').chosen()
36
- //
37
- $(document).on('click', 'a.button.has_many_add', function(event){
38
- let before_add;
39
- event.preventDefault();
40
- const parent = $(this).closest('.has_many_container');
41
- parent.trigger((before_add = $.Event('has_many_add:before')), [parent]);
42
-
43
- if (!before_add.isDefaultPrevented()) {
44
- let index = parent.data('has_many_index') || (parent.children('fieldset').length - 1);
45
- parent.data({has_many_index: ++index});
46
-
47
- const regex = new RegExp($(this).data('placeholder'), 'g');
48
- const html = $(this).data('html').replace(regex, index);
49
-
50
- const fieldset = $(html).insertBefore(this);
51
- recompute_positions(parent);
52
- return parent.trigger('has_many_add:after', [fieldset, parent]);
53
- }
54
- });
55
-
56
- $(document).on('change', '.has_many_container[data-sortable] :input[name$="[_destroy]"]', function() {
57
- recompute_positions($(this).closest('.has_many'));
58
- });
59
-
60
- $(document).on('has_many_add:after', '.has_many_container', init_sortable);
61
- });
62
-
63
- var init_sortable = function() {
64
- const elems = $('.has_many_container[data-sortable]:not(.ui-sortable)');
65
- elems.sortable({
66
- items: '> fieldset',
67
- handle: '> ol > .handle',
68
- start: (ev, ui) => {
69
- ui.item.css({opacity: 0.3});
70
- },
71
- stop: function (ev, ui) {
72
- ui.item.css({opacity: 1.0});
73
- recompute_positions($(this));
74
- }
75
- });
76
- elems.each(recompute_positions);
77
- };
78
-
79
- var recompute_positions = function(parent){
80
- parent = parent instanceof jQuery ? parent : $(this);
81
- const input_name = parent.data('sortable');
82
- let position = parseInt(parent.data('sortable-start') || 0, 10);
83
-
84
- parent.children('fieldset').each(function() {
85
- // We ignore nested inputs, so when defining your has_many, be sure to keep
86
- // your sortable input at the root of the has_many block.
87
- const destroy_input = $(this).find("> ol > .input > :input[name$='[_destroy]']");
88
- const sortable_input = $(this).find(`> ol > .input > :input[name$='[${input_name}]']`);
89
-
90
- if (sortable_input.length) {
91
- sortable_input.val(destroy_input.is(':checked') ? '' : position++);
92
- }
93
- });
94
- };
95
-
96
- $(document).
97
- ready(init_sortable).
98
- on('page:load turbolinks:load', init_sortable);
@@ -1,13 +0,0 @@
1
- import PerPage from "../lib/per-page";
2
-
3
- (($) => {
4
-
5
- $(document).
6
- on('change', '.pagination_per_page > select', function(_event) {
7
- PerPage._jQueryInterface.call($(this), 'update')
8
- });
9
-
10
- $.fn['perPage'] = PerPage._jQueryInterface
11
- $.fn['perPage'].Constructor = PerPage
12
-
13
- })(jQuery);
@@ -1,3 +0,0 @@
1
- import TableCheckboxToggler from "../lib/table-checkbox-toggler";
2
-
3
- $.widget.bridge('tableCheckboxToggler', TableCheckboxToggler);
@@ -1,6 +0,0 @@
1
- let onDOMReady = () =>
2
- $('#active_admin_content .tabs').tabs()
3
-
4
- $(document).
5
- ready(onDOMReady).
6
- on('page:load turbolinks:load', onDOMReady)
@@ -1,49 +0,0 @@
1
- class CheckboxToggler {
2
- constructor(options, container){
3
- this.options = options;
4
- this.container = container;
5
- this._init();
6
- this._bind();
7
- }
8
-
9
- option(_key, _value) {
10
- }
11
-
12
- _init() {
13
- if (!this.container) {
14
- throw new Error('Container element not found');
15
- } else {
16
- this.$container = $(this.container);
17
- }
18
-
19
- if (!this.$container.find('.toggle_all').length) {
20
- throw new Error('"toggle all" checkbox not found');
21
- } else {
22
- this.toggle_all_checkbox = this.$container.find('.toggle_all');
23
- }
24
-
25
- this.checkboxes = this.$container.find(':checkbox').not(this.toggle_all_checkbox);
26
- }
27
-
28
- _bind() {
29
- this.checkboxes.change(event => this._didChangeCheckbox(event.target));
30
- this.toggle_all_checkbox.change(() => this._didChangeToggleAllCheckbox());
31
- }
32
-
33
- _didChangeCheckbox(_checkbox){
34
- const numChecked = this.checkboxes.filter(':checked').length;
35
-
36
- const allChecked = numChecked === this.checkboxes.length;
37
- const someChecked = (numChecked > 0) && (numChecked < this.checkboxes.length);
38
-
39
- this.toggle_all_checkbox.prop({ checked: allChecked, indeterminate: someChecked });
40
- }
41
-
42
- _didChangeToggleAllCheckbox() {
43
- const setting = this.toggle_all_checkbox.prop('checked');
44
- this.checkboxes.prop({ checked: setting });
45
- return setting;
46
- }
47
- }
48
-
49
- export default CheckboxToggler;
@@ -1,116 +0,0 @@
1
- class DropdownMenu {
2
- constructor(options, element) {
3
- this.options = options;
4
- this.element = element;
5
- this.$element = $(this.element);
6
-
7
- const defaults = {
8
- fadeInDuration: 20,
9
- fadeOutDuration: 100,
10
- onClickActionItemCallback: null
11
- };
12
-
13
- this.options = $.extend(defaults, this.options);
14
- this.isOpen = false;
15
-
16
- this.$menuButton = this.$element.find('.dropdown_menu_button');
17
- this.$menuList = this.$element.find('.dropdown_menu_list_wrapper');
18
-
19
- this._buildMenuList();
20
- this._bind();
21
- }
22
-
23
- open() {
24
- this.isOpen = true;
25
- this.$menuList.fadeIn(this.options.fadeInDuration);
26
-
27
- this._position();
28
- return this;
29
- }
30
-
31
- close() {
32
- this.isOpen = false;
33
- this.$menuList.fadeOut(this.options.fadeOutDuration);
34
- return this;
35
- }
36
-
37
- destroy() {
38
- this.$element = null;
39
- return this;
40
- }
41
-
42
- isDisabled() {
43
- return this.$menuButton.hasClass('disabled');
44
- }
45
-
46
- disable() {
47
- this.$menuButton.addClass('disabled');
48
- }
49
-
50
- enable() {
51
- this.$menuButton.removeClass('disabled');
52
- }
53
-
54
- option(key, value) {
55
- if ($.isPlainObject(key)) {
56
- return this.options = $.extend(true, this.options, key);
57
- } else if (key != null) {
58
- return this.options[key];
59
- } else {
60
- return this.options[key] = value;
61
- }
62
- }
63
-
64
- _buildMenuList() {
65
- this.$nipple = $('<div class="dropdown_menu_nipple"></div>');
66
- this.$menuList.prepend(this.$nipple);
67
- this.$menuList.hide();
68
- }
69
-
70
- _bind() {
71
- $('body').click(() => {
72
- if (this.isOpen) { this.close(); }
73
- });
74
-
75
- this.$menuButton.click(() => {
76
- if (!this.isDisabled()) {
77
- if (this.isOpen) {
78
- this.close();
79
- } else {
80
- this.open();
81
- }
82
- }
83
- return false;
84
- });
85
- }
86
-
87
- _position() {
88
- this.$menuList.css('top', this.$menuButton.position().top + this.$menuButton.outerHeight() + 10);
89
-
90
- const button_left = this.$menuButton.position().left;
91
- const button_center = this.$menuButton.outerWidth() / 2;
92
- const button_right = button_left + (button_center * 2);
93
- const menu_center = this.$menuList.outerWidth() / 2;
94
- const nipple_center = this.$nipple.outerWidth() / 2;
95
- const window_right = $(window).width();
96
-
97
- const centered_menu_left = (button_left + button_center) - menu_center;
98
- const centered_menu_right = button_left + button_center + menu_center;
99
-
100
- if (centered_menu_left < 0) {
101
- // Left align with button
102
- this.$menuList.css('left', button_left);
103
- this.$nipple.css('left', button_center - nipple_center);
104
- } else if (centered_menu_right > window_right) {
105
- // Right align with button
106
- this.$menuList.css('right', window_right - button_right);
107
- this.$nipple.css('right', button_center - nipple_center);
108
- } else {
109
- // Center align under button
110
- this.$menuList.css('left', centered_menu_left);
111
- this.$nipple.css('left', menu_center - nipple_center);
112
- }
113
- }
114
- }
115
-
116
- export default DropdownMenu;
@@ -1,39 +0,0 @@
1
- import { queryStringToParams, hasTurbolinks, turbolinksVisit, toQueryString } from '../lib/utils';
2
-
3
- class Filters {
4
-
5
- static _clearForm(event) {
6
- const regex = /^(q\[|q%5B|q%5b|page|utf8|commit)/;
7
- const params = queryStringToParams()
8
- .filter(({name}) => !name.match(regex));
9
-
10
- event.preventDefault();
11
-
12
- if (hasTurbolinks()) {
13
- turbolinksVisit(params);
14
- } else {
15
- window.location.search = toQueryString(params);
16
- }
17
- }
18
-
19
- static _disableEmptyInputFields(event) {
20
- const params = $(this)
21
- .find(':input')
22
- .filter((i, input) => input.value === '')
23
- .prop({ disabled: true })
24
- .end()
25
- .serializeArray();
26
-
27
- if (hasTurbolinks()) {
28
- event.preventDefault();
29
- turbolinksVisit(params);
30
- }
31
- }
32
-
33
- static _setSearchType() {
34
- $(this).siblings('input').prop({name: `q[${this.value}]`});
35
- }
36
-
37
- }
38
-
39
- export default Filters;
@@ -1,63 +0,0 @@
1
- function ModalDialog(message, inputs, callback){
2
- let html = `<form id="dialog_confirm" title="${message}"><ul>`;
3
- for (let name in inputs) {
4
- var opts, wrapper;
5
- let type = inputs[name];
6
- if (/^(datepicker|checkbox|text|number)$/.test(type)) {
7
- wrapper = 'input';
8
- } else if (type === 'textarea') {
9
- wrapper = 'textarea';
10
- } else if ($.isArray(type)) {
11
- [wrapper, opts, type] = ['select', type, ''];
12
- } else {
13
- throw new Error(`Unsupported input type: {${name}: ${type}}`);
14
- }
15
-
16
- let klass = type === 'datepicker' ? type : '';
17
- html += `<li>
18
- <label>${name.charAt(0).toUpperCase() + name.slice(1)}</label>
19
- <${wrapper} name="${name}" class="${klass}" type="${type}">` +
20
- (opts ? ((() => {
21
- const result = [];
22
-
23
- opts.forEach(v => {
24
- const $elem = $('<option></option>');
25
- if ($.isArray(v)) {
26
- $elem.text(v[0]).val(v[1]);
27
- } else {
28
- $elem.text(v);
29
- }
30
- result.push($elem.wrap('<div></div>').parent().html());
31
- });
32
-
33
- return result;
34
- })()).join('') : '') +
35
- `</${wrapper}>` +
36
- "</li>";
37
- [wrapper, opts, type, klass] = []; // unset any temporary variables
38
- }
39
-
40
- html += "</ul></form>";
41
-
42
- const form = $(html).appendTo('body');
43
- $('body').trigger('modal_dialog:before_open', [form]);
44
-
45
- form.dialog({
46
- modal: true,
47
- open(_event, _ui) {
48
- $('body').trigger('modal_dialog:after_open', [form]);
49
- },
50
- dialogClass: 'active_admin_dialog',
51
- buttons: {
52
- OK() {
53
- callback($(this).serializeObject());
54
- $(this).dialog('close');
55
- },
56
- Cancel() {
57
- $(this).dialog('close').remove();
58
- }
59
- }
60
- });
61
- }
62
-
63
- export default ModalDialog;
@@ -1,38 +0,0 @@
1
- import { queryStringToParams, hasTurbolinks, turbolinksVisit, toQueryString } from './utils';
2
-
3
- class PerPage {
4
- constructor(element) {
5
- this.element = element;
6
- }
7
-
8
- update() {
9
- const params = queryStringToParams()
10
- .filter(({name}) => name != 'per_page' || name != 'page')
11
-
12
- params.push({ name: 'per_page', value: this.element.value });
13
-
14
- if (hasTurbolinks()) {
15
- turbolinksVisit(params);
16
- } else {
17
- window.location.search = toQueryString(params);
18
- }
19
- }
20
-
21
- static _jQueryInterface(config) {
22
- return this.each(function () {
23
- const $this = $(this)
24
- let data = $this.data('perPage')
25
-
26
- if (!data) {
27
- data = new PerPage(this)
28
- $this.data('perPage', data)
29
- }
30
-
31
- if (config === 'update') {
32
- data[config]()
33
- }
34
- })
35
- }
36
- }
37
-
38
- export default PerPage;
@@ -1,38 +0,0 @@
1
- import CheckboxToggler from "./checkbox-toggler";
2
-
3
- class TableCheckboxToggler extends CheckboxToggler {
4
- _bind() {
5
- super._bind(...arguments);
6
-
7
- this.$container
8
- .find('tbody td')
9
- .click(event => {
10
- if (event.target.type !== 'checkbox') {
11
- this._didClickCell(event.target);
12
- }
13
- });
14
- }
15
-
16
- _didChangeCheckbox(checkbox) {
17
- super._didChangeCheckbox(...arguments);
18
-
19
- $(checkbox)
20
- .parents('tr')
21
- .toggleClass('selected', checkbox.checked);
22
- }
23
-
24
- _didChangeToggleAllCheckbox() {
25
- this.$container
26
- .find('tbody tr')
27
- .toggleClass('selected', super._didChangeToggleAllCheckbox(...arguments));
28
- }
29
-
30
- _didClickCell(cell) {
31
- $(cell)
32
- .parent('tr')
33
- .find(':checkbox')
34
- .click();
35
- }
36
- }
37
-
38
- export default TableCheckboxToggler;
@@ -1,40 +0,0 @@
1
- function hasTurbolinks() {
2
- return (typeof Turbolinks !== 'undefined' && Turbolinks.supported);
3
- }
4
-
5
- function turbolinksVisit(params) {
6
- const path = [window.location.pathname, '?', toQueryString(params)].join('')
7
- Turbolinks.visit(path);
8
- }
9
-
10
- function queryString() {
11
- return (window.location.search || '').replace(/^\?/, '');
12
- }
13
-
14
- function queryStringToParams() {
15
- const decode = (value) => decodeURIComponent((value || '').replace(/\+/g, '%20'));
16
-
17
- return queryString()
18
- .split("&")
19
- .map(pair => pair.split("="))
20
- .map(([key, value]) => {
21
- return { name: decode(key), value: decode(value) }
22
- });
23
- }
24
-
25
- function toQueryString(params) {
26
- const encode = (value) => encodeURIComponent(value || '');
27
-
28
- return params
29
- .map(({name, value}) => [ encode(name), encode(value) ])
30
- .map(pair => pair.join('='))
31
- .join('&')
32
- }
33
-
34
- export {
35
- hasTurbolinks,
36
- turbolinksVisit,
37
- queryString,
38
- queryStringToParams,
39
- toQueryString
40
- };
@@ -1,11 +0,0 @@
1
- <%# Link to the "First" page
2
- - available local variables
3
- url: url to the first 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
- <span class="first">
10
- <%= link_to_unless current_page.first?, t('views.pagination.first').html_safe, url, remote: remote %>
11
- </span>
@@ -1,8 +0,0 @@
1
- <%# Non-link tag that stands for skipped pages...
2
- - available local variables
3
- current_page: a page object for the currently displayed page
4
- total_pages: total number of pages
5
- per_page: number of items to fetch per page
6
- remote: data-remote
7
- -%>
8
- <span class="page gap"><%= t('views.pagination.truncate').html_safe %></span>
@@ -1,11 +0,0 @@
1
- <%# Link to the "Last" page
2
- - available local variables
3
- url: url to the last 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
- <span class="last">
10
- <%= link_to_unless current_page.last?, t('views.pagination.last').html_safe, url, remote: remote %>
11
- </span>
@@ -1,11 +0,0 @@
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
- <span class="next">
10
- <%= link_to_unless current_page.last?, t('views.pagination.next').html_safe, url, rel: 'next', remote: remote %>
11
- </span>
@@ -1,12 +0,0 @@
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
- <span class="page<%= ' current' if page.current? %>">
11
- <%= link_to_unless page.current?, page, url, {remote: remote, rel: page.rel} %>
12
- </span>