activeadmin 3.4.0 → 4.0.0.beta18
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -102
- data/CONTRIBUTING.md +32 -117
- data/README.md +17 -30
- data/UPGRADING.md +241 -0
- data/app/assets/config/active_admin_manifest.js +2 -0
- data/{lib → app/controllers}/active_admin/base_controller/authorization.rb +1 -1
- data/app/controllers/active_admin/base_controller/menu.rb +39 -0
- data/{lib → app/controllers}/active_admin/base_controller.rb +46 -18
- data/{lib → app/controllers}/active_admin/page_controller.rb +0 -4
- data/{lib → app/controllers}/active_admin/resource_controller/action_builder.rb +1 -1
- data/{lib → app/controllers}/active_admin/resource_controller/data_access.rb +11 -6
- data/{lib → app/controllers}/active_admin/resource_controller/scoping.rb +1 -1
- data/{lib → app/controllers}/active_admin/resource_controller/streaming.rb +4 -4
- data/app/controllers/active_admin/resource_controller.rb +102 -0
- data/app/helpers/active_admin/auto_link_helper.rb +66 -0
- data/app/helpers/active_admin/breadcrumb_helper.rb +41 -0
- data/app/helpers/active_admin/display_helper.rb +117 -0
- data/app/helpers/active_admin/form_helper.rb +95 -0
- data/app/helpers/active_admin/index_helper.rb +40 -0
- data/app/helpers/active_admin/layout_helper.rb +63 -0
- data/app/javascript/active_admin/features/batch_actions.js +95 -0
- data/app/javascript/active_admin/features/dark_mode_toggle.js +37 -0
- data/app/javascript/active_admin/features/filters.js +34 -0
- data/app/javascript/active_admin/features/has_many.js +28 -0
- data/app/javascript/active_admin/features/main_menu.js +12 -0
- data/app/javascript/active_admin/features/per_page.js +9 -0
- data/app/javascript/active_admin/utils/dom.js +17 -0
- data/app/javascript/active_admin.js +10 -0
- data/app/views/active_admin/_flash_messages.html.erb +22 -0
- data/app/views/active_admin/_html_head.html.erb +13 -0
- data/app/views/active_admin/_main_navigation.html.erb +28 -0
- data/app/views/active_admin/_page_header.html.erb +27 -0
- data/app/views/active_admin/_sidebar.html.erb +5 -0
- data/app/views/active_admin/_site_footer.html.erb +7 -0
- data/app/views/active_admin/_site_header.html.erb +30 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +5 -3
- data/app/views/active_admin/devise/passwords/edit.html.erb +5 -3
- data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
- data/app/views/active_admin/devise/registrations/new.html.erb +6 -4
- data/app/views/active_admin/devise/sessions/new.html.erb +6 -4
- data/app/views/active_admin/devise/shared/_links.erb +3 -1
- data/app/views/active_admin/devise/unlocks/new.html.erb +6 -4
- data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_gap.html.erb +3 -1
- data/app/views/active_admin/kaminari/_next_page.html.erb +16 -0
- data/app/views/active_admin/kaminari/_page.html.erb +14 -0
- data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_paginator.html.erb +1 -2
- data/app/views/active_admin/kaminari/_prev_page.html.erb +16 -0
- data/app/views/active_admin/page/index.html.arb +5 -2
- data/app/views/active_admin/resource/_active_filters.html.erb +32 -0
- data/app/views/active_admin/resource/_batch_actions_dropdown.html.erb +19 -0
- data/app/views/active_admin/resource/_form.html.arb +15 -0
- data/app/views/active_admin/resource/_form_default.html.arb +11 -0
- data/app/views/active_admin/resource/_index_as_table_default.html.arb +8 -0
- data/app/views/active_admin/resource/_index_blank_slate.html.erb +14 -0
- data/app/views/active_admin/resource/_index_empty_results.html.erb +5 -0
- data/app/views/active_admin/resource/_index_table_actions_default.html.erb +9 -0
- data/app/views/active_admin/resource/_show_default.html.arb +2 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -2
- data/app/views/active_admin/resource/index.html.arb +94 -2
- data/app/views/active_admin/resource/new.html.arb +1 -2
- data/app/views/active_admin/resource/show.html.arb +12 -2
- data/app/views/active_admin/shared/_action_items.html.erb +3 -0
- data/app/views/active_admin/shared/_download_format_links.html.erb +7 -0
- data/app/views/active_admin/shared/_resource_comments.html.erb +51 -0
- data/app/views/active_admin/shared/_sidebar_section.html.arb +6 -0
- data/app/views/active_admin/shared/_sidebar_sections.html.erb +5 -0
- data/app/views/layouts/active_admin.html.erb +20 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +8 -45
- data/config/importmap.rb +5 -0
- data/config/locales/ar.yml +136 -116
- data/config/locales/az.yml +103 -118
- data/config/locales/bg.yml +91 -99
- data/config/locales/bs.yml +95 -101
- data/config/locales/ca.yml +131 -86
- data/config/locales/cs.yml +82 -90
- data/config/locales/da.yml +102 -117
- data/config/locales/de.yml +130 -141
- data/config/locales/el.yml +94 -106
- data/config/locales/en-CA.yml +104 -119
- data/config/locales/en-GB.yml +104 -119
- data/config/locales/en.yml +134 -140
- data/config/locales/eo.yml +107 -123
- data/config/locales/es-MX.yml +70 -78
- data/config/locales/es.yml +129 -138
- data/config/locales/fa.yml +91 -99
- data/config/locales/fi.yml +84 -92
- data/config/locales/fr.yml +135 -120
- data/config/locales/he.yml +103 -118
- data/config/locales/hr.yml +95 -103
- data/config/locales/hu.yml +76 -81
- data/config/locales/id.yml +97 -112
- data/config/locales/it.yml +134 -140
- data/config/locales/ja.yml +109 -120
- data/config/locales/ko.yml +136 -101
- data/config/locales/lt.yml +106 -121
- data/config/locales/lv.yml +70 -75
- data/config/locales/mk.yml +100 -114
- data/config/locales/nb.yml +98 -109
- data/config/locales/nl.yml +113 -122
- data/config/locales/pl.yml +137 -146
- data/config/locales/pt-BR.yml +134 -121
- data/config/locales/pt-PT.yml +71 -76
- data/config/locales/ro.yml +74 -79
- data/config/locales/ru.yml +142 -122
- data/config/locales/sk.yml +131 -146
- data/config/locales/sv-SE.yml +126 -141
- data/config/locales/tr.yml +105 -120
- data/config/locales/uk.yml +140 -119
- data/config/locales/vi.yml +125 -140
- data/config/locales/zh-CN.yml +135 -141
- data/config/locales/zh-TW.yml +136 -116
- data/lib/active_admin/application.rb +6 -14
- data/lib/active_admin/application_settings.rb +1 -1
- data/lib/active_admin/async_count.rb +23 -0
- data/lib/active_admin/batch_actions/controller.rb +1 -4
- data/lib/active_admin/batch_actions/resource_extension.rb +8 -15
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +1 -7
- data/lib/active_admin/batch_actions/views/selection_cells.rb +3 -3
- data/lib/active_admin/batch_actions.rb +4 -9
- data/lib/active_admin/callbacks.rb +6 -4
- data/lib/active_admin/collection_decorator.rb +1 -1
- data/lib/active_admin/component.rb +0 -1
- data/lib/active_admin/csv_builder.rb +2 -2
- data/lib/active_admin/devise.rb +3 -3
- data/lib/active_admin/dsl.rb +3 -3
- data/lib/active_admin/dynamic_settings_node.rb +6 -6
- data/lib/active_admin/engine.rb +23 -7
- data/lib/active_admin/filters/active.rb +8 -6
- data/lib/active_admin/filters/active_filter.rb +2 -10
- data/lib/active_admin/filters/forms.rb +1 -45
- data/lib/active_admin/filters/resource_extension.rb +18 -10
- data/lib/active_admin/filters.rb +5 -7
- data/lib/active_admin/form_builder.rb +14 -17
- data/lib/active_admin/helpers/optional_display.rb +1 -1
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +10 -12
- data/lib/active_admin/inputs/filters/base.rb +1 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -6
- data/lib/active_admin/inputs/filters/date_range_input.rb +4 -2
- data/lib/active_admin/inputs.rb +0 -3
- data/lib/active_admin/localizers.rb +1 -1
- data/lib/active_admin/menu.rb +10 -7
- data/lib/active_admin/menu_collection.rb +1 -1
- data/lib/active_admin/menu_item.rb +24 -3
- data/lib/active_admin/namespace.rb +3 -45
- data/lib/active_admin/namespace_settings.rb +3 -36
- data/lib/active_admin/order_clause.rb +4 -1
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +4 -76
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
- data/lib/active_admin/orm/active_record/comments.rb +13 -8
- data/lib/active_admin/orm/active_record.rb +1 -1
- data/lib/active_admin/pundit_adapter.rb +3 -3
- data/lib/active_admin/resource/action_items.rb +18 -23
- data/lib/active_admin/resource/naming.rb +2 -3
- data/lib/active_admin/resource/page_presenters.rb +2 -2
- data/lib/active_admin/resource/sidebars.rb +1 -1
- data/lib/active_admin/resource.rb +17 -16
- data/lib/active_admin/resource_collection.rb +1 -1
- data/lib/active_admin/resource_dsl.rb +3 -3
- data/lib/active_admin/scope.rb +11 -1
- data/lib/active_admin/settings_node.rb +1 -1
- data/lib/active_admin/sidebar_section.rb +0 -5
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -1
- data/lib/active_admin/view_helpers.rb +0 -12
- data/lib/active_admin/views/components/active_admin_form.rb +21 -29
- data/lib/active_admin/views/components/attributes_table.rb +14 -16
- data/lib/active_admin/views/components/index_list.rb +10 -23
- data/lib/active_admin/views/components/paginated_collection.rb +34 -39
- data/lib/active_admin/views/components/panel.rb +3 -11
- data/lib/active_admin/views/components/scopes.rb +39 -26
- data/lib/active_admin/views/components/status_tag.rb +22 -19
- data/lib/active_admin/views/components/table_for.rb +25 -25
- data/lib/active_admin/views/index_as_table.rb +39 -101
- data/lib/active_admin.rb +16 -15
- data/lib/activeadmin.rb +1 -1
- data/lib/generators/active_admin/assets/assets_generator.rb +4 -4
- data/lib/generators/active_admin/assets/templates/active_admin.css +3 -0
- data/lib/generators/active_admin/assets/templates/tailwind.config.js +21 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +2 -2
- data/lib/generators/active_admin/install/install_generator.rb +2 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +10 -87
- data/lib/generators/active_admin/install/templates/dashboard.rb +8 -25
- data/lib/generators/active_admin/page/page_generator.rb +0 -1
- data/lib/generators/active_admin/resource/resource_generator.rb +50 -7
- data/lib/generators/active_admin/resource/templates/resource.rb.erb +42 -0
- data/lib/generators/active_admin/views_generator.rb +18 -0
- data/plugin.js +414 -0
- data/vendor/bundle/offense.rb +1 -0
- data/vendor/javascript/flowbite.js +1 -0
- data/vendor/javascript/rails_ujs_esm.js +1 -0
- metadata +80 -207
- data/app/assets/javascripts/active_admin/base.js +0 -517
- data/app/assets/stylesheets/active_admin/_base.scss +0 -57
- data/app/assets/stylesheets/active_admin/_forms.scss +0 -315
- data/app/assets/stylesheets/active_admin/_header.scss +0 -188
- data/app/assets/stylesheets/active_admin/_mixins.scss +0 -1
- data/app/assets/stylesheets/active_admin/_normalize.scss +0 -349
- data/app/assets/stylesheets/active_admin/_print.scss +0 -287
- data/app/assets/stylesheets/active_admin/_typography.scss +0 -100
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -6
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -30
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +0 -20
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -6
- data/app/assets/stylesheets/active_admin/components/_columns.scss +0 -3
- data/app/assets/stylesheets/active_admin/components/_comments.scss +0 -41
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +0 -148
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -154
- data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +0 -37
- data/app/assets/stylesheets/active_admin/components/_grid.scss +0 -9
- data/app/assets/stylesheets/active_admin/components/_index_list.scss +0 -12
- data/app/assets/stylesheets/active_admin/components/_links.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +0 -34
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +0 -58
- data/app/assets/stylesheets/active_admin/components/_panels.scss +0 -6
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +0 -13
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -12
- data/app/assets/stylesheets/active_admin/components/_table_tools.scss +0 -70
- data/app/assets/stylesheets/active_admin/components/_tables.scss +0 -112
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +0 -68
- data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +0 -16
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -8
- data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +0 -65
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +0 -28
- data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +0 -22
- data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -41
- data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +0 -15
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +0 -3
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -17
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +0 -51
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +0 -44
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +0 -19
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +0 -29
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -43
- data/app/javascript/active_admin/base.js +0 -28
- data/app/javascript/active_admin/ext/jquery-ui.js +0 -7
- data/app/javascript/active_admin/ext/jquery.js +0 -9
- data/app/javascript/active_admin/initializers/batch-actions.js +0 -61
- data/app/javascript/active_admin/initializers/checkbox-toggler.js +0 -3
- data/app/javascript/active_admin/initializers/datepicker.js +0 -16
- data/app/javascript/active_admin/initializers/dropdown-menu.js +0 -9
- data/app/javascript/active_admin/initializers/filters.js +0 -10
- data/app/javascript/active_admin/initializers/has-many.js +0 -98
- data/app/javascript/active_admin/initializers/per-page.js +0 -13
- data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +0 -3
- data/app/javascript/active_admin/initializers/tabs.js +0 -6
- data/app/javascript/active_admin/lib/checkbox-toggler.js +0 -49
- data/app/javascript/active_admin/lib/dropdown-menu.js +0 -116
- data/app/javascript/active_admin/lib/filters.js +0 -39
- data/app/javascript/active_admin/lib/modal-dialog.js +0 -63
- data/app/javascript/active_admin/lib/per-page.js +0 -38
- data/app/javascript/active_admin/lib/table-checkbox-toggler.js +0 -38
- data/app/javascript/active_admin/lib/utils.js +0 -40
- data/app/views/kaminari/active_admin/_first_page.html.erb +0 -11
- data/app/views/kaminari/active_admin/_gap.html.erb +0 -8
- data/app/views/kaminari/active_admin/_last_page.html.erb +0 -11
- data/app/views/kaminari/active_admin/_next_page.html.erb +0 -11
- data/app/views/kaminari/active_admin/_page.html.erb +0 -12
- data/app/views/kaminari/active_admin/_paginator.html.erb +0 -25
- data/app/views/kaminari/active_admin/_prev_page.html.erb +0 -11
- data/app/views/kaminari/active_admin_countless/_first_page.html.erb +0 -11
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +0 -11
- data/app/views/kaminari/active_admin_countless/_page.html.erb +0 -12
- data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +0 -11
- data/app/views/layouts/active_admin.html.arb +0 -2
- data/config/locales/de-CH.yml +0 -94
- data/lib/active_admin/abstract_view_factory.rb +0 -48
- data/lib/active_admin/asset_registration.rb +0 -30
- data/lib/active_admin/base_controller/menu.rb +0 -35
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +0 -59
- data/lib/active_admin/filters/active_sidebar.rb +0 -28
- data/lib/active_admin/generators/boilerplate.rb +0 -54
- data/lib/active_admin/helpers/collection.rb +0 -21
- data/lib/active_admin/helpers/i18n.rb +0 -8
- data/lib/active_admin/inputs/datepicker_input.rb +0 -28
- data/lib/active_admin/inputs/filters/date_picker_input.rb +0 -14
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +0 -24
- data/lib/active_admin/orm/mongoid.rb +0 -2
- data/lib/active_admin/resource_controller/sidebars.rb +0 -19
- data/lib/active_admin/resource_controller.rb +0 -68
- data/lib/active_admin/view_factory.rb +0 -28
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +0 -13
- data/lib/active_admin/view_helpers/auto_link_helper.rb +0 -46
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +0 -34
- data/lib/active_admin/view_helpers/display_helper.rb +0 -119
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +0 -60
- data/lib/active_admin/view_helpers/fields_for.rb +0 -51
- data/lib/active_admin/view_helpers/flash_helper.rb +0 -15
- data/lib/active_admin/view_helpers/form_helper.rb +0 -21
- data/lib/active_admin/view_helpers/scope_name_helper.rb +0 -17
- data/lib/active_admin/view_helpers/sidebar_helper.rb +0 -16
- data/lib/active_admin/view_helpers/title_helper.rb +0 -12
- data/lib/active_admin/view_helpers/view_factory_helper.rb +0 -12
- data/lib/active_admin/views/action_items.rb +0 -18
- data/lib/active_admin/views/components/active_filters_sidebar_content.rb +0 -59
- data/lib/active_admin/views/components/blank_slate.rb +0 -18
- data/lib/active_admin/views/components/columns.rb +0 -162
- data/lib/active_admin/views/components/dropdown_menu.rb +0 -69
- data/lib/active_admin/views/components/menu.rb +0 -33
- data/lib/active_admin/views/components/menu_item.rb +0 -59
- data/lib/active_admin/views/components/sidebar.rb +0 -14
- data/lib/active_admin/views/components/sidebar_section.rb +0 -35
- data/lib/active_admin/views/components/site_title.rb +0 -55
- data/lib/active_admin/views/components/tabs.rb +0 -41
- data/lib/active_admin/views/components/unsupported_browser.rb +0 -12
- data/lib/active_admin/views/footer.rb +0 -32
- data/lib/active_admin/views/header.rb +0 -20
- data/lib/active_admin/views/index_as_block.rb +0 -37
- data/lib/active_admin/views/index_as_blog.rb +0 -156
- data/lib/active_admin/views/index_as_grid.rb +0 -81
- data/lib/active_admin/views/pages/base.rb +0 -134
- data/lib/active_admin/views/pages/form.rb +0 -65
- data/lib/active_admin/views/pages/index.rb +0 -166
- data/lib/active_admin/views/pages/layout.rb +0 -27
- data/lib/active_admin/views/pages/page.rb +0 -31
- data/lib/active_admin/views/pages/show.rb +0 -60
- data/lib/active_admin/views/tabbed_navigation.rb +0 -12
- data/lib/active_admin/views/title_bar.rb +0 -56
- data/lib/generators/active_admin/assets/templates/active_admin.js +0 -1
- data/lib/generators/active_admin/assets/templates/active_admin.scss +0 -17
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +0 -46
- data/lib/generators/active_admin/webpacker/plugins/jquery.js +0 -7
- data/lib/generators/active_admin/webpacker/templates/active_admin.js +0 -5
- data/lib/generators/active_admin/webpacker/templates/active_admin.scss +0 -17
- data/lib/generators/active_admin/webpacker/templates/print.scss +0 -2
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +0 -27
- data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
- data/vendor/assets/javascripts/jquery-ui/disable-selection.js +0 -51
- data/vendor/assets/javascripts/jquery-ui/focusable.js +0 -89
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +0 -83
- data/vendor/assets/javascripts/jquery-ui/form.js +0 -25
- data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
- data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
- data/vendor/assets/javascripts/jquery-ui/labels.js +0 -71
- data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
- data/vendor/assets/javascripts/jquery-ui/position.js +0 -513
- data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
- data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
- data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
- data/vendor/assets/javascripts/jquery-ui/tabbable.js +0 -41
- data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
- data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
- data/vendor/assets/javascripts/jquery-ui/widget.js +0 -758
- data/vendor/assets/javascripts/jquery-ui/widgets/button.js +0 -454
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +0 -294
- data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +0 -304
- data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +0 -2243
- data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +0 -971
- data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
- data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
- data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +0 -1228
- data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1622
- data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
- /data/{lib → app/controllers}/active_admin/resource_controller/decorators.rb +0 -0
- /data/{lib → app/controllers}/active_admin/resource_controller/polymorphic_routes.rb +0 -0
- /data/{lib → app/controllers}/active_admin/resource_controller/resource_class_methods.rb +0 -0
- /data/lib/{active_admin/orm/mongoid/.gitkeep → generators/active_admin/assets/templates/builds/.keep} +0 -0
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
|
|
5
|
-
# Action List - A button with a drop down menu of links
|
|
6
|
-
#
|
|
7
|
-
# Creating a new action list:
|
|
8
|
-
#
|
|
9
|
-
# dropdown_menu "Administration" do
|
|
10
|
-
# item "Edit Details", edit_details_path
|
|
11
|
-
# item "Edit My Account", edit_my_account_path
|
|
12
|
-
# end
|
|
13
|
-
#
|
|
14
|
-
# This will create a button with the label "Administration" and
|
|
15
|
-
# a drop down once clicked with 2 options.
|
|
16
|
-
#
|
|
17
|
-
class DropdownMenu < ActiveAdmin::Component
|
|
18
|
-
builder_method :dropdown_menu
|
|
19
|
-
|
|
20
|
-
# Build a new action list
|
|
21
|
-
#
|
|
22
|
-
# @param [String] name The name to display in the button
|
|
23
|
-
#
|
|
24
|
-
# @param [Hash] options A set of options that get passed along to
|
|
25
|
-
# to the parent dom element.
|
|
26
|
-
def build(name, options = {})
|
|
27
|
-
options = options.dup
|
|
28
|
-
|
|
29
|
-
# Easily set options for the button or menu
|
|
30
|
-
button_options = options.delete(:button) || {}
|
|
31
|
-
menu_options = options.delete(:menu) || {}
|
|
32
|
-
|
|
33
|
-
@button = build_button(name, button_options)
|
|
34
|
-
@menu = build_menu(menu_options)
|
|
35
|
-
|
|
36
|
-
super(options)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def item(*args, **kwargs)
|
|
40
|
-
within @menu do
|
|
41
|
-
li link_to(*args, **kwargs)
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
private
|
|
46
|
-
|
|
47
|
-
def build_button(name, button_options)
|
|
48
|
-
button_options[:class] = "#{button_options[:class]} dropdown_menu_button"
|
|
49
|
-
button_options[:href] = "#"
|
|
50
|
-
|
|
51
|
-
a name, button_options
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def build_menu(options)
|
|
55
|
-
options[:class] = "#{options[:class]} dropdown_menu_list"
|
|
56
|
-
|
|
57
|
-
menu_list = nil
|
|
58
|
-
|
|
59
|
-
div class: "dropdown_menu_list_wrapper" do
|
|
60
|
-
menu_list = ul(options)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
menu_list
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
end
|
|
69
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
|
|
5
|
-
# Renders an ActiveAdmin::Menu as a set of unordered list items.
|
|
6
|
-
#
|
|
7
|
-
# This component takes cares of deciding which items should be
|
|
8
|
-
# displayed given the current context and renders them appropriately.
|
|
9
|
-
#
|
|
10
|
-
# The entire component is rendered within one ul element.
|
|
11
|
-
class Menu < Component
|
|
12
|
-
attr_reader :menu
|
|
13
|
-
builder_method :menu
|
|
14
|
-
|
|
15
|
-
# @param [ActiveAdmin::Menu] menu the Menu to render
|
|
16
|
-
# @param [Hash] options the options as passed to the underlying ul element.
|
|
17
|
-
#
|
|
18
|
-
def build(menu, options = {})
|
|
19
|
-
@menu = menu
|
|
20
|
-
super(options)
|
|
21
|
-
|
|
22
|
-
menu.items.each do |item|
|
|
23
|
-
menu_item(item) if helpers.render_in_context self, item.should_display
|
|
24
|
-
end
|
|
25
|
-
children.sort!
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def tag_name
|
|
29
|
-
"ul"
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
|
|
5
|
-
# Arbre component used to render ActiveAdmin::MenuItem
|
|
6
|
-
class MenuItem < Component
|
|
7
|
-
builder_method :menu_item
|
|
8
|
-
attr_reader :label
|
|
9
|
-
attr_reader :url
|
|
10
|
-
attr_reader :priority
|
|
11
|
-
|
|
12
|
-
def build(item, options = {})
|
|
13
|
-
super(options.merge(id: item.id))
|
|
14
|
-
@label = helpers.render_in_context self, item.label
|
|
15
|
-
@url = helpers.render_in_context self, item.url
|
|
16
|
-
@priority = item.priority
|
|
17
|
-
@submenu = nil
|
|
18
|
-
|
|
19
|
-
add_class "current" if item.current? assigns[:current_tab]
|
|
20
|
-
|
|
21
|
-
if url
|
|
22
|
-
text_node link_to label, url, **item.html_options
|
|
23
|
-
else
|
|
24
|
-
span label, item.html_options
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
if item.items.any?
|
|
28
|
-
add_class "has_nested"
|
|
29
|
-
@submenu = menu(item)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def tag_name
|
|
34
|
-
"li"
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# Sorts by priority first, then alphabetically by label if needed.
|
|
38
|
-
def <=>(other)
|
|
39
|
-
result = priority <=> other.priority
|
|
40
|
-
result == 0 ? label <=> other.label : result
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def visible?
|
|
44
|
-
url.nil? || real_url? || @submenu && @submenu.children.any?
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def to_s
|
|
48
|
-
visible? ? super : ""
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
private
|
|
52
|
-
|
|
53
|
-
# URL is not nil, empty, or '#'
|
|
54
|
-
def real_url?
|
|
55
|
-
url && url.present? && url != "#"
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
|
|
5
|
-
class Sidebar < Component
|
|
6
|
-
builder_method :sidebar
|
|
7
|
-
|
|
8
|
-
def build(sections, attributes = {})
|
|
9
|
-
super(attributes)
|
|
10
|
-
sections.map(&method(:sidebar_section))
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
|
|
5
|
-
class SidebarSection < Panel
|
|
6
|
-
builder_method :sidebar_section
|
|
7
|
-
|
|
8
|
-
# Takes a ActiveAdmin::SidebarSection instance
|
|
9
|
-
def build(section)
|
|
10
|
-
@section = section
|
|
11
|
-
super(@section.title)
|
|
12
|
-
add_class @section.custom_class if @section.custom_class
|
|
13
|
-
self.id = @section.id
|
|
14
|
-
build_sidebar_content
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# Renders attributes_table_for current resource
|
|
18
|
-
def attributes_table(*args, &block)
|
|
19
|
-
attributes_table_for resource, *args, &block
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
protected
|
|
23
|
-
|
|
24
|
-
def build_sidebar_content
|
|
25
|
-
if @section.block
|
|
26
|
-
rvalue = instance_exec(&@section.block)
|
|
27
|
-
self << rvalue if rvalue.is_a?(String)
|
|
28
|
-
else
|
|
29
|
-
render(@section.partial_name)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
|
|
5
|
-
class SiteTitle < Component
|
|
6
|
-
|
|
7
|
-
def tag_name
|
|
8
|
-
"h1"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def build(namespace)
|
|
12
|
-
super(id: "site_title")
|
|
13
|
-
@namespace = namespace
|
|
14
|
-
|
|
15
|
-
if site_title_link?
|
|
16
|
-
text_node site_title_with_link
|
|
17
|
-
else
|
|
18
|
-
text_node site_title_content
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def site_title_link?
|
|
23
|
-
@namespace.site_title_link.present?
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def site_title_image
|
|
27
|
-
@site_title_image ||= @namespace.site_title_image(helpers)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
def site_title_with_link
|
|
33
|
-
helpers.link_to(site_title_content, @namespace.site_title_link)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def site_title_content
|
|
37
|
-
if site_title_image.present?
|
|
38
|
-
title_image
|
|
39
|
-
else
|
|
40
|
-
title_text
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def title_text
|
|
45
|
-
@title_text ||= @namespace.site_title(helpers)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def title_image
|
|
49
|
-
helpers.image_tag(site_title_image, id: "site_title_image", alt: title_text)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
end
|
|
55
|
-
end
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
class Tabs < ActiveAdmin::Component
|
|
5
|
-
builder_method :tabs
|
|
6
|
-
|
|
7
|
-
def tab(title, options = {}, &block)
|
|
8
|
-
title = title.to_s.titleize if title.is_a? Symbol
|
|
9
|
-
@menu << build_menu_item(title, options, &block)
|
|
10
|
-
@tabs_content << build_content_item(title, options, &block)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def build(&block)
|
|
14
|
-
@menu = ul(class: "nav nav-tabs", role: "tablist")
|
|
15
|
-
@tabs_content = div(class: "tab-content")
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def build_menu_item(title, options, &block)
|
|
19
|
-
fragment = options.fetch(:id, fragmentize(title))
|
|
20
|
-
|
|
21
|
-
html_options = options.fetch(:html_options, {})
|
|
22
|
-
li html_options do
|
|
23
|
-
link_to title, "##{fragment}"
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def build_content_item(title, options, &block)
|
|
28
|
-
options = options.reverse_merge(id: fragmentize(title))
|
|
29
|
-
div(options, &block)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
private
|
|
33
|
-
|
|
34
|
-
def fragmentize(string)
|
|
35
|
-
result = string.parameterize
|
|
36
|
-
result = CGI.escape(string) if result.blank?
|
|
37
|
-
result
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
class UnsupportedBrowser < Component
|
|
5
|
-
def build
|
|
6
|
-
h1 I18n.t("active_admin.unsupported_browser.headline").html_safe
|
|
7
|
-
para I18n.t("active_admin.unsupported_browser.recommendation").html_safe
|
|
8
|
-
para I18n.t("active_admin.unsupported_browser.turn_off_compatibility_view").html_safe
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
class Footer < Component
|
|
5
|
-
|
|
6
|
-
def build(namespace)
|
|
7
|
-
super id: "footer"
|
|
8
|
-
@namespace = namespace
|
|
9
|
-
|
|
10
|
-
if footer_text.present?
|
|
11
|
-
para footer_text
|
|
12
|
-
else
|
|
13
|
-
para powered_by_message
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
private
|
|
18
|
-
|
|
19
|
-
def footer_text
|
|
20
|
-
@footer_text ||= @namespace.footer(self)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def powered_by_message
|
|
24
|
-
I18n.t(
|
|
25
|
-
"active_admin.powered_by",
|
|
26
|
-
active_admin: link_to("Active Admin", "https://activeadmin.info"),
|
|
27
|
-
version: ActiveAdmin::VERSION).html_safe
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
class Header < Component
|
|
5
|
-
|
|
6
|
-
def build(namespace, menu)
|
|
7
|
-
super(id: "header")
|
|
8
|
-
|
|
9
|
-
@namespace = namespace
|
|
10
|
-
@menu = menu
|
|
11
|
-
@utility_menu = @namespace.fetch_menu(:utility_navigation)
|
|
12
|
-
|
|
13
|
-
site_title @namespace
|
|
14
|
-
global_navigation @menu, class: "header-item tabs"
|
|
15
|
-
utility_navigation @utility_menu, id: "utility_nav", class: "header-item tabs"
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
|
|
5
|
-
# # Index as a Block
|
|
6
|
-
#
|
|
7
|
-
# If you want to fully customize the display of your resources on the index
|
|
8
|
-
# screen, Index as a Block allows you to render a block of content for each
|
|
9
|
-
# resource.
|
|
10
|
-
#
|
|
11
|
-
# ```ruby
|
|
12
|
-
# index as: :block do |product|
|
|
13
|
-
# div for: product do
|
|
14
|
-
# resource_selection_cell product
|
|
15
|
-
# h2 auto_link product.title
|
|
16
|
-
# div simple_format product.description
|
|
17
|
-
# end
|
|
18
|
-
# end
|
|
19
|
-
# ```
|
|
20
|
-
#
|
|
21
|
-
class IndexAsBlock < ActiveAdmin::Component
|
|
22
|
-
|
|
23
|
-
def build(page_presenter, collection)
|
|
24
|
-
add_class "index"
|
|
25
|
-
resource_selection_toggle_panel if active_admin_config.batch_actions.any?
|
|
26
|
-
collection.each do |obj|
|
|
27
|
-
instance_exec(obj, &page_presenter.block)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def self.index_name
|
|
32
|
-
"block"
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
|
|
5
|
-
# # Index as Blog
|
|
6
|
-
#
|
|
7
|
-
# Render your index page as a set of posts. The post has two main options:
|
|
8
|
-
# title and body.
|
|
9
|
-
#
|
|
10
|
-
# ```ruby
|
|
11
|
-
# index as: :blog do
|
|
12
|
-
# title :my_title # Calls #my_title on each resource
|
|
13
|
-
# body :my_body # Calls #my_body on each resource
|
|
14
|
-
# end
|
|
15
|
-
# ```
|
|
16
|
-
#
|
|
17
|
-
# ## Post Title
|
|
18
|
-
#
|
|
19
|
-
# The title is the content that will be rendered within a link to the
|
|
20
|
-
# resource. There are two main ways to set the content for the title
|
|
21
|
-
#
|
|
22
|
-
# First, you can pass in a method to be called on your resource. For example:
|
|
23
|
-
#
|
|
24
|
-
# ```ruby
|
|
25
|
-
# index as: :blog do
|
|
26
|
-
# title :a_method_to_call
|
|
27
|
-
# end
|
|
28
|
-
# ```
|
|
29
|
-
#
|
|
30
|
-
# Second, you can pass a block to the tile option which will then be
|
|
31
|
-
# used as the contents of the title. The resource being rendered
|
|
32
|
-
# is passed in to the block. For Example:
|
|
33
|
-
#
|
|
34
|
-
# ```ruby
|
|
35
|
-
# index as: :blog do
|
|
36
|
-
# title do |post|
|
|
37
|
-
# span post.title, class: 'title'
|
|
38
|
-
# span post.created_at, class: 'created_at'
|
|
39
|
-
# end
|
|
40
|
-
# end
|
|
41
|
-
# ```
|
|
42
|
-
#
|
|
43
|
-
# ## Post Body
|
|
44
|
-
#
|
|
45
|
-
# The body is rendered underneath the title of each post. The same two
|
|
46
|
-
# style of options work as the Post Title above.
|
|
47
|
-
#
|
|
48
|
-
# Call a method on the resource as the body:
|
|
49
|
-
#
|
|
50
|
-
# ```ruby
|
|
51
|
-
# index as: :blog do
|
|
52
|
-
# title :my_title
|
|
53
|
-
# body :my_body
|
|
54
|
-
# end
|
|
55
|
-
# ```
|
|
56
|
-
#
|
|
57
|
-
# Or, render a block as the body:
|
|
58
|
-
#
|
|
59
|
-
# ```ruby
|
|
60
|
-
# index as: :blog do
|
|
61
|
-
# title :my_title
|
|
62
|
-
# body do |post|
|
|
63
|
-
# div truncate post.title
|
|
64
|
-
# div class: 'meta' do
|
|
65
|
-
# span "Post in #{post.categories.join(', ')}"
|
|
66
|
-
# end
|
|
67
|
-
# end
|
|
68
|
-
# end
|
|
69
|
-
# ```
|
|
70
|
-
#
|
|
71
|
-
class IndexAsBlog < ActiveAdmin::Component
|
|
72
|
-
|
|
73
|
-
def build(page_presenter, collection)
|
|
74
|
-
@page_presenter = page_presenter
|
|
75
|
-
@collection = collection
|
|
76
|
-
|
|
77
|
-
# Call the block passed in. This will set the
|
|
78
|
-
# title and body methods
|
|
79
|
-
instance_exec &page_presenter.block if page_presenter.block
|
|
80
|
-
|
|
81
|
-
add_class "index"
|
|
82
|
-
build_posts
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
# Setter method for the configuration of the title
|
|
86
|
-
def title(method = nil, &block)
|
|
87
|
-
if block_given? || method
|
|
88
|
-
@title = block_given? ? block : method
|
|
89
|
-
end
|
|
90
|
-
@title
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
# Setter method for the configuration of the body
|
|
94
|
-
#
|
|
95
|
-
def body(method = nil, &block)
|
|
96
|
-
if block_given? || method
|
|
97
|
-
@body = block_given? ? block : method
|
|
98
|
-
end
|
|
99
|
-
@body
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def self.index_name
|
|
103
|
-
"blog"
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
private
|
|
107
|
-
|
|
108
|
-
def build_posts
|
|
109
|
-
resource_selection_toggle_panel if active_admin_config.batch_actions.any?
|
|
110
|
-
@collection.each do |post|
|
|
111
|
-
build_post(post)
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
def build_post(post)
|
|
116
|
-
div for: post do
|
|
117
|
-
resource_selection_cell(post) if active_admin_config.batch_actions.any?
|
|
118
|
-
build_title(post)
|
|
119
|
-
build_body(post)
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
def build_title(post)
|
|
124
|
-
if @title
|
|
125
|
-
h3 do
|
|
126
|
-
a(href: resource_path(post)) do
|
|
127
|
-
render_method_on_post_or_call_proc post, @title
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
else
|
|
131
|
-
h3 do
|
|
132
|
-
auto_link(post)
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
def build_body(post)
|
|
138
|
-
if @body
|
|
139
|
-
div class: "content" do
|
|
140
|
-
render_method_on_post_or_call_proc post, @body
|
|
141
|
-
end
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
def render_method_on_post_or_call_proc(post, proc)
|
|
146
|
-
case proc
|
|
147
|
-
when String, Symbol
|
|
148
|
-
post.public_send proc
|
|
149
|
-
else
|
|
150
|
-
instance_exec post, &proc
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
end # Posts
|
|
155
|
-
end
|
|
156
|
-
end
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module ActiveAdmin
|
|
3
|
-
module Views
|
|
4
|
-
|
|
5
|
-
# # Index as a Grid
|
|
6
|
-
#
|
|
7
|
-
# Sometimes you want to display the index screen for a set of resources as a grid
|
|
8
|
-
# (possibly a grid of thumbnail images). To do so, use the :grid option for the
|
|
9
|
-
# index block.
|
|
10
|
-
#
|
|
11
|
-
# ```ruby
|
|
12
|
-
# index as: :grid do |product|
|
|
13
|
-
# link_to image_tag(product.image_path), admin_product_path(product)
|
|
14
|
-
# end
|
|
15
|
-
# ```
|
|
16
|
-
#
|
|
17
|
-
# The block is rendered within a cell in the grid once for each resource in the
|
|
18
|
-
# collection. The resource is passed into the block for you to use in the view.
|
|
19
|
-
#
|
|
20
|
-
# You can customize the number of columns that are rendered using the columns
|
|
21
|
-
# option:
|
|
22
|
-
#
|
|
23
|
-
# ```ruby
|
|
24
|
-
# index as: :grid, columns: 5 do |product|
|
|
25
|
-
# link_to image_tag(product.image_path), admin_product_path(product)
|
|
26
|
-
# end
|
|
27
|
-
# ```
|
|
28
|
-
#
|
|
29
|
-
class IndexAsGrid < ActiveAdmin::Component
|
|
30
|
-
|
|
31
|
-
def build(page_presenter, collection)
|
|
32
|
-
@page_presenter = page_presenter
|
|
33
|
-
@collection = collection.to_a
|
|
34
|
-
add_class "index"
|
|
35
|
-
build_table
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def number_of_columns
|
|
39
|
-
@page_presenter[:columns] || default_number_of_columns
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def self.index_name
|
|
43
|
-
"grid"
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
protected
|
|
47
|
-
|
|
48
|
-
def build_table
|
|
49
|
-
resource_selection_toggle_panel if active_admin_config.batch_actions.any?
|
|
50
|
-
table class: "index_grid" do
|
|
51
|
-
@collection.in_groups_of(number_of_columns).each do |group|
|
|
52
|
-
build_row(group)
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def build_row(group)
|
|
58
|
-
tr do
|
|
59
|
-
group.each do |item|
|
|
60
|
-
item ? build_item(item) : build_empty_cell
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def build_item(item)
|
|
66
|
-
td for: item do
|
|
67
|
-
instance_exec(item, &@page_presenter.block)
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def build_empty_cell
|
|
72
|
-
td " ".html_safe
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def default_number_of_columns
|
|
76
|
-
3
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|