adminterface 0.0.0 → 0.2.3
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/LICENSE.md +1 -1
- data/README.md +69 -0
- data/Rakefile +43 -0
- data/app/assets/config/adminterface_manifest.js +1 -0
- data/app/assets/stylesheets/adminterface/_base.scss +20 -0
- data/app/assets/stylesheets/adminterface/_print.scss +56 -0
- data/app/assets/stylesheets/adminterface/components/_active_admin_comment.scss +19 -0
- data/app/assets/stylesheets/adminterface/components/_all.scss +24 -0
- data/app/assets/stylesheets/adminterface/components/_aside.scss +28 -0
- data/app/assets/stylesheets/adminterface/components/_attributes_table.scss +19 -0
- data/app/assets/stylesheets/adminterface/components/_comments.scss +7 -0
- data/app/assets/stylesheets/adminterface/components/_divider.scss +28 -0
- data/app/assets/stylesheets/adminterface/components/_filters.scss +27 -0
- data/app/assets/stylesheets/adminterface/components/_flash.scss +4 -0
- data/app/assets/stylesheets/adminterface/components/_footer.scss +4 -0
- data/app/assets/stylesheets/adminterface/components/_form.scss +219 -0
- data/app/assets/stylesheets/adminterface/components/_header.scss +30 -0
- data/app/assets/stylesheets/adminterface/components/_index.scss +1 -0
- data/app/assets/stylesheets/adminterface/components/_index_as_grid.scss +5 -0
- data/app/assets/stylesheets/adminterface/components/_index_as_table.scss +1 -0
- data/app/assets/stylesheets/adminterface/components/_index_footer.scss +19 -0
- data/app/assets/stylesheets/adminterface/components/_modal_dialog.scss +4 -0
- data/app/assets/stylesheets/adminterface/components/_pagination.scss +3 -0
- data/app/assets/stylesheets/adminterface/components/_panel.scss +21 -0
- data/app/assets/stylesheets/adminterface/components/_sidebar.scss +13 -0
- data/app/assets/stylesheets/adminterface/components/_site_title.scss +17 -0
- data/app/assets/stylesheets/adminterface/components/_table_for.scss +37 -0
- data/app/assets/stylesheets/adminterface/components/_table_tools.scss +19 -0
- data/app/assets/stylesheets/adminterface/components/_thumbnail.scss +29 -0
- data/app/assets/stylesheets/adminterface/components/_title_bar.scss +36 -0
- data/app/assets/stylesheets/adminterface/components/inputs/_all.scss +2 -0
- data/app/assets/stylesheets/adminterface/components/inputs/_password.scss +28 -0
- data/app/assets/stylesheets/adminterface/components/inputs/_text.scss +30 -0
- data/app/assets/stylesheets/adminterface/helpers/_aa_icon.scss +1 -0
- data/app/assets/stylesheets/adminterface/helpers/_all.scss +2 -0
- data/app/assets/stylesheets/adminterface/helpers/_pointer.scss +1 -0
- data/app/assets/stylesheets/adminterface/layouts/_all.scss +4 -0
- data/app/assets/stylesheets/adminterface/layouts/_base.scss +5 -0
- data/app/assets/stylesheets/adminterface/layouts/_logged_in.scss +30 -0
- data/app/assets/stylesheets/adminterface/layouts/_logged_out.scss +14 -0
- data/app/assets/stylesheets/adminterface/layouts/types/_all.scss +4 -0
- data/app/assets/stylesheets/adminterface/layouts/types/_mixins.scss +195 -0
- data/app/assets/stylesheets/adminterface/layouts/types/_navigation_aside.scss +33 -0
- data/app/assets/stylesheets/adminterface/layouts/types/_navigation_sidebar.scss +15 -0
- data/app/assets/stylesheets/adminterface/layouts/types/_navigation_top.scss +33 -0
- data/app/assets/stylesheets/adminterface/mixins/_all.scss +3 -0
- data/app/assets/stylesheets/adminterface/mixins/_layouts.scss +38 -0
- data/app/assets/stylesheets/adminterface/mixins/_utilities.scss +39 -0
- data/app/assets/stylesheets/adminterface/mixins/_variables.scss +100 -0
- data/app/assets/stylesheets/adminterface/placeholders/_aa_icon.scss +10 -0
- data/app/assets/stylesheets/adminterface/placeholders/_all.scss +3 -0
- data/app/assets/stylesheets/adminterface/placeholders/_background.scss +5 -0
- data/app/assets/stylesheets/adminterface/placeholders/_typography.scss +11 -0
- data/app/assets/stylesheets/adminterface/vendors/_all.scss +4 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/_all.scss +6 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/_variables.scss +51 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_buttons.scss +5 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_dropdowns.scss +28 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_navs.scss +25 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/form/_labels.scss +5 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/content/_tables.scss +2 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/content/_typography.scss +2 -0
- data/app/assets/stylesheets/adminterface/vendors/flatpickr/_all.scss +2 -0
- data/app/assets/stylesheets/adminterface/vendors/flatpickr/_variables.scss +7 -0
- data/app/assets/stylesheets/adminterface/vendors/flatpickr/main.scss +50 -0
- data/app/assets/stylesheets/adminterface/vendors/tom_select/_all.scss +1 -0
- data/app/assets/stylesheets/adminterface/vendors/tom_select/_main.scss +6 -0
- data/app/assets/stylesheets/adminterface/vendors/trix/_actiontext.scss +36 -0
- data/app/assets/stylesheets/adminterface/vendors/trix/_all.scss +3 -0
- data/app/assets/stylesheets/adminterface/vendors/trix/_trix_editor.scss +86 -0
- data/app/assets/stylesheets/adminterface/vendors/trix/_variables.scss +31 -0
- data/app/javascript/adminterface/base.js +14 -0
- data/app/javascript/adminterface/config.js +129 -0
- data/app/javascript/adminterface/initializers/batch_actions.js +9 -0
- data/app/javascript/adminterface/initializers/bootstrap.js +29 -0
- data/app/javascript/adminterface/initializers/confirm_dialog.js +23 -0
- data/app/javascript/adminterface/initializers/detached_dropdown.js +16 -0
- data/app/javascript/adminterface/initializers/drawer_menu_item_toggler.js +15 -0
- data/app/javascript/adminterface/initializers/filters.js +23 -0
- data/app/javascript/adminterface/initializers/has_many.js +7 -0
- data/app/javascript/adminterface/initializers/header_toggler.js +10 -0
- data/app/javascript/adminterface/initializers/index.js +2 -0
- data/app/javascript/adminterface/initializers/per_page.js +12 -0
- data/app/javascript/adminterface/initializers/plugins/flatpickr.js +24 -0
- data/app/javascript/adminterface/initializers/plugins/input_counter.js +21 -0
- data/app/javascript/adminterface/initializers/plugins/password_visibility.js +23 -0
- data/app/javascript/adminterface/initializers/plugins/tom_select.js +24 -0
- data/app/javascript/adminterface/lib/__tests__/checkbox_toggler.html +5 -0
- data/app/javascript/adminterface/lib/__tests__/checkbox_toggler.spec.js +110 -0
- data/app/javascript/adminterface/lib/__tests__/detached_dropdown.spec.js +69 -0
- data/app/javascript/adminterface/lib/__tests__/filters.spec.js +150 -0
- data/app/javascript/adminterface/lib/__tests__/has_many.html +14 -0
- data/app/javascript/adminterface/lib/__tests__/has_many.spec.js +224 -0
- data/app/javascript/adminterface/lib/__tests__/utils.spec.js +280 -0
- data/app/javascript/adminterface/lib/batch_actions.js +106 -0
- data/app/javascript/adminterface/lib/checkbox_toggler.js +55 -0
- data/app/javascript/adminterface/lib/confirm_dialog.js +113 -0
- data/app/javascript/adminterface/lib/detached_dropdown.js +34 -0
- data/app/javascript/adminterface/lib/filters.js +34 -0
- data/app/javascript/adminterface/lib/has_many.js +125 -0
- data/app/javascript/adminterface/lib/header_toggler.js +54 -0
- data/app/javascript/adminterface/lib/input.js +108 -0
- data/app/javascript/adminterface/lib/inputs/base/groupish.js +55 -0
- data/app/javascript/adminterface/lib/inputs/base/pluginish.js +63 -0
- data/app/javascript/adminterface/lib/inputs/base_input.js +87 -0
- data/app/javascript/adminterface/lib/inputs/boolean_input.js +30 -0
- data/app/javascript/adminterface/lib/inputs/check_boxes_input.js +14 -0
- data/app/javascript/adminterface/lib/inputs/choices_input.js +96 -0
- data/app/javascript/adminterface/lib/inputs/color_input.js +14 -0
- data/app/javascript/adminterface/lib/inputs/country_input.js +90 -0
- data/app/javascript/adminterface/lib/inputs/datalist_input.js +41 -0
- data/app/javascript/adminterface/lib/inputs/date_picker_input.js +11 -0
- data/app/javascript/adminterface/lib/inputs/datetime_picker_input.js +11 -0
- data/app/javascript/adminterface/lib/inputs/hidden_input.js +21 -0
- data/app/javascript/adminterface/lib/inputs/password_input.js +13 -0
- data/app/javascript/adminterface/lib/inputs/radio_input.js +13 -0
- data/app/javascript/adminterface/lib/inputs/select_input.js +68 -0
- data/app/javascript/adminterface/lib/inputs/string_input.js +13 -0
- data/app/javascript/adminterface/lib/inputs/switch_input.js +9 -0
- data/app/javascript/adminterface/lib/inputs/text_input.js +12 -0
- data/app/javascript/adminterface/lib/inputs/time_picker_input.js +13 -0
- data/app/javascript/adminterface/lib/inputs/time_zone_input.js +66 -0
- data/app/javascript/adminterface/lib/per_page.js +18 -0
- data/app/javascript/adminterface/lib/plugins/input_counter.js +94 -0
- data/app/javascript/adminterface/lib/plugins/password_visibility.js +70 -0
- data/app/javascript/adminterface/lib/table_checkbox_toggler.js +47 -0
- data/app/javascript/adminterface/lib/utils.js +148 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +19 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +21 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +19 -0
- data/app/views/active_admin/devise/registrations/new.html.erb +24 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +23 -0
- data/app/views/active_admin/devise/shared/_links.html.erb +25 -0
- data/app/views/active_admin/devise/shared/_omniauth.html.erb +10 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +19 -0
- data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_gap.html.erb +12 -0
- data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin/_paginator.html.erb +27 -0
- data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +56 -0
- data/config/locales/active_admin.en.yml +25 -0
- data/lib/adminterface/callable.rb +7 -0
- data/lib/adminterface/configs.rb +76 -0
- data/lib/adminterface/data/base.rb +11 -0
- data/lib/adminterface/data/countries.rb +44 -0
- data/lib/adminterface/data/time_zones.rb +31 -0
- data/lib/adminterface/data.rb +6 -0
- data/lib/adminterface/encryption/encryptor.rb +26 -0
- data/lib/adminterface/engine.rb +22 -0
- data/lib/adminterface/extensions/base_controller.rb +59 -0
- data/lib/adminterface/extensions/batch_actions/resource_extension.rb +64 -0
- data/lib/adminterface/extensions/batch_actions/views/batch_action_selector.rb +48 -0
- data/lib/adminterface/extensions/batch_actions/views/selection_cells.rb +39 -0
- data/lib/adminterface/extensions/dsl.rb +13 -0
- data/lib/adminterface/extensions/dynamic_settings_node.rb +26 -0
- data/lib/adminterface/extensions/filters/forms.rb +76 -0
- data/lib/adminterface/extensions/form_builder.rb +165 -0
- data/lib/adminterface/extensions/inputs/base/active_admin_config.rb +21 -0
- data/lib/adminterface/extensions/inputs/base/choices.rb +33 -0
- data/lib/adminterface/extensions/inputs/base/groupish.rb +50 -0
- data/lib/adminterface/extensions/inputs/base/html.rb +15 -0
- data/lib/adminterface/extensions/inputs/base/labelling.rb +15 -0
- data/lib/adminterface/extensions/inputs/base/pluginish.rb +56 -0
- data/lib/adminterface/extensions/inputs/base/stringish.rb +19 -0
- data/lib/adminterface/extensions/inputs/base/wrapping.rb +25 -0
- data/lib/adminterface/extensions/inputs/base.rb +19 -0
- data/lib/adminterface/extensions/inputs/boolean_input.rb +42 -0
- data/lib/adminterface/extensions/inputs/check_boxes_input.rb +34 -0
- data/lib/adminterface/extensions/inputs/color_input.rb +29 -0
- data/lib/adminterface/extensions/inputs/country_input.rb +33 -0
- data/lib/adminterface/extensions/inputs/datalist_input.rb +26 -0
- data/lib/adminterface/extensions/inputs/date_picker_input.rb +30 -0
- data/lib/adminterface/extensions/inputs/date_select_input.rb +7 -0
- data/lib/adminterface/extensions/inputs/datetime_picker_input.rb +19 -0
- data/lib/adminterface/extensions/inputs/datetime_select_input.rb +7 -0
- data/lib/adminterface/extensions/inputs/email_input.rb +23 -0
- data/lib/adminterface/extensions/inputs/file_input.rb +19 -0
- data/lib/adminterface/extensions/inputs/filters/base/search_method_select.rb +37 -0
- data/lib/adminterface/extensions/inputs/filters/base.rb +3 -0
- data/lib/adminterface/extensions/inputs/filters/boolean_input.rb +4 -0
- data/lib/adminterface/extensions/inputs/filters/check_boxes_input.rb +12 -0
- data/lib/adminterface/extensions/inputs/filters/date_picker_input.rb +4 -0
- data/lib/adminterface/extensions/inputs/filters/date_range_input.rb +50 -0
- data/lib/adminterface/extensions/inputs/filters/select_input.rb +4 -0
- data/lib/adminterface/extensions/inputs/number_input.rb +23 -0
- data/lib/adminterface/extensions/inputs/password_input.rb +23 -0
- data/lib/adminterface/extensions/inputs/phone_input.rb +23 -0
- data/lib/adminterface/extensions/inputs/radio_input.rb +41 -0
- data/lib/adminterface/extensions/inputs/range_input.rb +22 -0
- data/lib/adminterface/extensions/inputs/rich_text_area_input.rb +21 -0
- data/lib/adminterface/extensions/inputs/search_input.rb +23 -0
- data/lib/adminterface/extensions/inputs/select_input.rb +33 -0
- data/lib/adminterface/extensions/inputs/string_input.rb +19 -0
- data/lib/adminterface/extensions/inputs/switch_input.rb +11 -0
- data/lib/adminterface/extensions/inputs/text_input.rb +27 -0
- data/lib/adminterface/extensions/inputs/time_picker_input.rb +19 -0
- data/lib/adminterface/extensions/inputs/time_select_input.rb +7 -0
- data/lib/adminterface/extensions/inputs/time_zone_input.rb +33 -0
- data/lib/adminterface/extensions/inputs/url_input.rb +23 -0
- data/lib/adminterface/extensions/menu_item.rb +16 -0
- data/lib/adminterface/extensions/namespace_settings.rb +30 -0
- data/lib/adminterface/extensions/orm/active_record/comments/views/active_admin_comments.rb +122 -0
- data/lib/adminterface/extensions/resource/action_items.rb +117 -0
- data/lib/adminterface/extensions/sidebar_section.rb +35 -0
- data/lib/adminterface/extensions/view_helpers/alert_helper.rb +38 -0
- data/lib/adminterface/extensions/view_helpers/component_helper.rb +23 -0
- data/lib/adminterface/extensions/views/action_items.rb +39 -0
- data/lib/adminterface/extensions/views/columns.rb +59 -0
- data/lib/adminterface/extensions/views/components/active_admin_form.rb +47 -0
- data/lib/adminterface/extensions/views/components/attributes_table.rb +28 -0
- data/lib/adminterface/extensions/views/components/blank_slate.rb +19 -0
- data/lib/adminterface/extensions/views/components/dropdown_menu.rb +58 -0
- data/lib/adminterface/extensions/views/components/icon.rb +26 -0
- data/lib/adminterface/extensions/views/components/index_list.rb +43 -0
- data/lib/adminterface/extensions/views/components/menu.rb +18 -0
- data/lib/adminterface/extensions/views/components/menu_item.rb +69 -0
- data/lib/adminterface/extensions/views/components/paginated_collection.rb +52 -0
- data/lib/adminterface/extensions/views/components/panel.rb +71 -0
- data/lib/adminterface/extensions/views/components/scopes.rb +53 -0
- data/lib/adminterface/extensions/views/components/sidebar_section.rb +39 -0
- data/lib/adminterface/extensions/views/components/site_title.rb +36 -0
- data/lib/adminterface/extensions/views/components/status_tag.rb +26 -0
- data/lib/adminterface/extensions/views/components/table_for.rb +23 -0
- data/lib/adminterface/extensions/views/components/tabs.rb +101 -0
- data/lib/adminterface/extensions/views/footer.rb +27 -0
- data/lib/adminterface/extensions/views/header.rb +60 -0
- data/lib/adminterface/extensions/views/index_as_grid.rb +53 -0
- data/lib/adminterface/extensions/views/index_as_table.rb +77 -0
- data/lib/adminterface/extensions/views/pages/base.rb +165 -0
- data/lib/adminterface/extensions/views/pages/form.rb +27 -0
- data/lib/adminterface/extensions/views/pages/index.rb +136 -0
- data/lib/adminterface/extensions/views/pages/page.rb +18 -0
- data/lib/adminterface/extensions/views/title_bar.rb +74 -0
- data/lib/adminterface/fixtures/components.yml +73 -0
- data/lib/adminterface/fixtures/css_classes.yml +107 -0
- data/lib/adminterface/initializers/batch_actions.rb +15 -0
- data/lib/adminterface/initializers/comments.rb +13 -0
- data/lib/adminterface/initializers/configurations.rb +38 -0
- data/lib/adminterface/initializers/formtastic.rb +58 -0
- data/lib/adminterface/initializers/resource.rb +20 -0
- data/lib/adminterface/initializers/view_helpers.rb +14 -0
- data/lib/adminterface/initializers/views.rb +39 -0
- data/lib/adminterface/license.rb +18 -0
- data/lib/adminterface/licensing/base.rb +99 -0
- data/lib/adminterface/licensing/commercial.rb +7 -0
- data/lib/adminterface/licensing/notice.rb +54 -0
- data/lib/adminterface/licensing/personal.rb +13 -0
- data/lib/adminterface/public.pem +9 -0
- data/lib/adminterface/version.rb +3 -0
- data/lib/adminterface.rb +55 -0
- data/lib/generators/adminterface/comments/comments_generator.rb +33 -0
- data/lib/generators/adminterface/comments/templates/README +13 -0
- data/lib/generators/adminterface/comments/templates/active_admin_comment_action_text.rb +18 -0
- data/lib/generators/adminterface/comments/templates/migrations/drop_body_for_active_admin_comments.rb.erb +28 -0
- data/lib/generators/adminterface/configs/configs_generator.rb +19 -0
- data/lib/generators/adminterface/configs/templates/README +33 -0
- data/lib/generators/adminterface/install/install_generator.rb +39 -0
- data/lib/generators/adminterface/install/templates/dashboard.rb +32 -0
- data/lib/generators/adminterface/views/views_generator.rb +15 -0
- data/lib/generators/adminterface/webpacker/templates/README +27 -0
- data/lib/generators/adminterface/webpacker/templates/active_admin.js +12 -0
- data/lib/generators/adminterface/webpacker/templates/active_admin.scss +8 -0
- data/lib/generators/adminterface/webpacker/templates/print.scss +3 -0
- data/lib/generators/adminterface/webpacker/webpacker_generator.rb +69 -0
- data/lib/tasks/adminterface_tasks.rake +4 -0
- metadata +291 -10
- data/lib/name.rb +0 -1
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Resource
|
|
4
|
+
module ActionItems
|
|
5
|
+
def action_items_for(action, render_context = nil)
|
|
6
|
+
super.sort_by { |x| [x.group, x.priority] }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def add_default_action_items
|
|
10
|
+
add_default_new_action_item
|
|
11
|
+
add_default_edit_action_item
|
|
12
|
+
add_default_destroy_action_item
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Adds the default New link on index
|
|
16
|
+
def add_default_new_action_item
|
|
17
|
+
add_action_item :new, only: proc { components.dig(:action_items, :new, :only)&.map(&:to_sym) } do
|
|
18
|
+
if controller.action_methods.include?("new") && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
|
|
19
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
|
20
|
+
icon_class = active_admin_config.components.dig(:action_items, :new, :icon_class)
|
|
21
|
+
|
|
22
|
+
link_to(
|
|
23
|
+
safe_join([icon_html(icon_class), content_tag(:span, localizer.t(:new_model))]),
|
|
24
|
+
new_resource_path,
|
|
25
|
+
title: localizer.t(:new_model),
|
|
26
|
+
class: active_admin_config.components.dig(:action_items, :new, :css_class)
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Adds the default Edit link on show
|
|
33
|
+
def add_default_edit_action_item
|
|
34
|
+
add_action_item :edit, only: proc { components.dig(:action_items, :edit, :only)&.map(&:to_sym) } do
|
|
35
|
+
if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::UPDATE, resource)
|
|
36
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
|
37
|
+
icon_class = active_admin_config.components.dig(:action_items, :edit, :icon_class)
|
|
38
|
+
|
|
39
|
+
link_to(
|
|
40
|
+
safe_join([icon_html(icon_class), content_tag(:span, localizer.t(:edit_model))]),
|
|
41
|
+
edit_resource_path(resource),
|
|
42
|
+
title: localizer.t(:edit_model),
|
|
43
|
+
class: active_admin_config.components.dig(:action_items, :edit, :css_class)
|
|
44
|
+
)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Adds the default Destroy link on show
|
|
50
|
+
def add_default_destroy_action_item
|
|
51
|
+
add_action_item :destroy, only: proc { components.dig(:action_items, :destroy, :only)&.map(&:to_sym) } do
|
|
52
|
+
if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
|
|
53
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
|
54
|
+
icon_class = active_admin_config.components.dig(:action_items, :destroy, :icon_class)
|
|
55
|
+
confirm_dialog_config = {
|
|
56
|
+
buttons: {
|
|
57
|
+
confirm: {
|
|
58
|
+
text: I18n.t(:confirm, scope: "active_admin.confirm_dialog"),
|
|
59
|
+
class: active_admin_config.css_classes.dig(:confirm_dialog, :confirm)
|
|
60
|
+
},
|
|
61
|
+
cancel: {
|
|
62
|
+
text: I18n.t(:cancel, scope: "active_admin.confirm_dialog"),
|
|
63
|
+
class: active_admin_config.css_classes.dig(:confirm_dialog, :cancel)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
link_to(
|
|
69
|
+
safe_join([icon_html(icon_class), content_tag(:span, localizer.t(:delete_model))]),
|
|
70
|
+
resource_path(resource),
|
|
71
|
+
title: localizer.t(:delete_model),
|
|
72
|
+
class: active_admin_config.components.dig(:action_items, :destroy, :css_class),
|
|
73
|
+
method: :delete, data: {confirm: localizer.t(:delete_confirmation), "aa-confirm-dialog": confirm_dialog_config}
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
module ActionItem
|
|
81
|
+
def display_on?(action, render_context = self)
|
|
82
|
+
@options[:only] = Array(return_or_proc_exec(@options[:only])) if @options[:only]
|
|
83
|
+
@options[:except] = Array(return_or_proc_exec(@options[:except])) if @options[:except]
|
|
84
|
+
super
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def group
|
|
88
|
+
@options[:group] || 99
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def priority
|
|
92
|
+
@options[:priority] || 99
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
private
|
|
96
|
+
|
|
97
|
+
def return_or_proc_exec(option)
|
|
98
|
+
option.is_a?(Proc) ? option.call : option
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def normalize_display_options!
|
|
102
|
+
@options[:only] = @options[:only] if @options[:only]
|
|
103
|
+
@options[:except] = @options[:except] if @options[:except]
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Overwrite activeadmin/lib/active_admin/resource/action_items.rb
|
|
111
|
+
ActiveAdmin::Resource::ActionItems.module_eval do
|
|
112
|
+
prepend Adminterface::Extensions::Resource::ActionItems
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
ActiveAdmin::ActionItem.class_eval do
|
|
116
|
+
prepend Adminterface::Extensions::Resource::ActionItem
|
|
117
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module SidebarSection
|
|
4
|
+
def initialize(*args, &block)
|
|
5
|
+
options = args.extract_options!
|
|
6
|
+
name = args.first
|
|
7
|
+
@position = options[:position]&.to_s
|
|
8
|
+
super(name, options, &block)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def id
|
|
12
|
+
return if name.blank?
|
|
13
|
+
|
|
14
|
+
super
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def title
|
|
18
|
+
return if name.blank?
|
|
19
|
+
|
|
20
|
+
super
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def partial_name
|
|
24
|
+
return options[:partial] if name.blank?
|
|
25
|
+
|
|
26
|
+
super
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
ActiveAdmin::SidebarSection.class_eval do
|
|
33
|
+
prepend Adminterface::Extensions::SidebarSection
|
|
34
|
+
attr_accessor :position
|
|
35
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module ViewHelpers
|
|
4
|
+
module AlertHelper
|
|
5
|
+
def flashes_html
|
|
6
|
+
flash.each do |type, msg|
|
|
7
|
+
concat(content_tag(:div, msg,
|
|
8
|
+
class: "flash flash_#{type} alert #{flash_css_classes[type.to_sym]}".squish,
|
|
9
|
+
role: "alert"))
|
|
10
|
+
end
|
|
11
|
+
nil
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def devise_error_messages!
|
|
15
|
+
return "" unless devise_error_messages?
|
|
16
|
+
|
|
17
|
+
safe_join [devise_error_html]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def devise_error_messages?
|
|
21
|
+
!resource.errors.empty?
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def devise_error_html
|
|
27
|
+
messages = resource.errors.full_messages.join(", ")
|
|
28
|
+
content_tag :div, messages, class: "alert #{flash_css_classes[:error]}"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
ActiveAdmin::ViewHelpers.module_eval do
|
|
36
|
+
prepend Adminterface::Extensions::ViewHelpers::AlertHelper
|
|
37
|
+
has_css_classes_for :flash
|
|
38
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module ViewHelpers
|
|
4
|
+
module ComponentHelper
|
|
5
|
+
def site_title(namespace)
|
|
6
|
+
Arbre::Context.new({}, self) do
|
|
7
|
+
site_title namespace, false
|
|
8
|
+
end.content
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def footer(namespace)
|
|
12
|
+
Arbre::Context.new({}, self) do
|
|
13
|
+
footer namespace
|
|
14
|
+
end.content
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
ActiveAdmin::ViewHelpers.module_eval do
|
|
22
|
+
prepend Adminterface::Extensions::ViewHelpers::ComponentHelper
|
|
23
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module ActionItems
|
|
5
|
+
private
|
|
6
|
+
|
|
7
|
+
def link_to(*args, &block)
|
|
8
|
+
options = args.extract_options!
|
|
9
|
+
options[:class] ||= action_items_css_classes[:item]
|
|
10
|
+
text_node super(*args, options, &block)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def icon_html(icon)
|
|
14
|
+
return if icon.blank?
|
|
15
|
+
|
|
16
|
+
Arbre::Context.new({}, self) do
|
|
17
|
+
aa_icon(icon)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def default_class_name
|
|
22
|
+
"#{super} #{action_items_css_classes[:group]}".squish
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Overwrite activeadmin/lib/active_admin/views/action_items.rb
|
|
30
|
+
ActiveAdmin::Views::ActionItems.class_eval do
|
|
31
|
+
prepend Adminterface::Extensions::Views::ActionItems
|
|
32
|
+
has_css_classes_for :action_items
|
|
33
|
+
|
|
34
|
+
def build(action_items)
|
|
35
|
+
action_items.each do |action_item|
|
|
36
|
+
instance_exec(&action_item.block)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Columns
|
|
5
|
+
def build(...)
|
|
6
|
+
super(...)
|
|
7
|
+
add_class "row"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def default_class_name
|
|
11
|
+
columns_css_classes
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
protected
|
|
15
|
+
|
|
16
|
+
def calculate_columns!
|
|
17
|
+
columns.each(&:assign_column_span)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
module Column
|
|
22
|
+
def assign_column_span
|
|
23
|
+
set_attribute :class, "#{column_klass} #{css_class}".squish
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def column_klass
|
|
27
|
+
["col", size, span_size].delete_if(&:blank?).join("-")
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Overwrite activeadmin/lib/active_admin/views/columns.rb
|
|
35
|
+
ActiveAdmin::Views::Columns.class_eval do
|
|
36
|
+
prepend Adminterface::Extensions::Views::Columns
|
|
37
|
+
has_css_classes_for :columns
|
|
38
|
+
|
|
39
|
+
protected
|
|
40
|
+
|
|
41
|
+
def closing_tag
|
|
42
|
+
super
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
ActiveAdmin::Views::Column.class_eval do
|
|
47
|
+
prepend Adminterface::Extensions::Views::Column
|
|
48
|
+
has_components_for :columns
|
|
49
|
+
|
|
50
|
+
attr_reader :size, :span_size, :css_class
|
|
51
|
+
|
|
52
|
+
def build(options = {})
|
|
53
|
+
options = options.dup
|
|
54
|
+
@css_class = options.delete(:class)
|
|
55
|
+
@span_size = options.delete(:span)
|
|
56
|
+
@size = options.delete(:size) { columns_components[:breakpoint] }
|
|
57
|
+
super(options)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module ActiveAdminForm
|
|
5
|
+
def input(...)
|
|
6
|
+
default_field_error_proc = ::ActionView::Base.field_error_proc
|
|
7
|
+
::ActionView::Base.field_error_proc = proc { |html_tag, _instance_tag| html_tag }
|
|
8
|
+
super
|
|
9
|
+
ensure
|
|
10
|
+
::ActionView::Base.field_error_proc = default_field_error_proc
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def action(method, options = {})
|
|
14
|
+
if method.eql?(:submit)
|
|
15
|
+
options.reverse_merge!(button_html: {class: form_css_classes.dig(:actions, :submit)})
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
super(method, options)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def cancel_link(url = {action: "index"}, html_options = {class: form_css_classes.dig(:actions, :cancel)}, li_attrs = {})
|
|
22
|
+
super(url, html_options, li_attrs)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Overwrite activeadmin/lib/active_admin/views/active_admin_form.rb
|
|
30
|
+
ActiveAdmin::Views::ActiveAdminForm.class_eval do
|
|
31
|
+
prepend Adminterface::Extensions::Views::ActiveAdminForm
|
|
32
|
+
has_css_classes_for :form
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
ActiveAdmin::Views::SemanticInputsProxy.class_eval do
|
|
36
|
+
def build(form_builder, *args, &block)
|
|
37
|
+
html_options = args.extract_options!
|
|
38
|
+
html_options[:class] ||= "inputs"
|
|
39
|
+
legend = args.shift if args.first.is_a?(::String)
|
|
40
|
+
legend = html_options.delete(:name) if html_options.key?(:name)
|
|
41
|
+
legend_tag = legend ? "<legend><span>#{legend}</span></legend>" : ""
|
|
42
|
+
fieldset_attrs = html_options.map { |k, v| %(#{k}="#{v}") }.join(" ")
|
|
43
|
+
@opening_tag = "<fieldset #{fieldset_attrs}>#{legend_tag}"
|
|
44
|
+
@closing_tag = "</fieldset>"
|
|
45
|
+
super(*(args << html_options), &block)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Components
|
|
5
|
+
module AttributesTable
|
|
6
|
+
def table
|
|
7
|
+
super(class: attributes_table_css_classes[:table])
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def default_class_name
|
|
11
|
+
"#{super} #{attributes_table_css_classes[:wrapper]}".squish
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def tr(options = {})
|
|
15
|
+
options[:class] = options[:class].split.reject { |x| x.eql?("row") }.join(" ")
|
|
16
|
+
super(options)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Overwirte lib/active_admin/views/components/attributes_table.rb
|
|
25
|
+
ActiveAdmin::Views::AttributesTable.class_eval do
|
|
26
|
+
prepend Adminterface::Extensions::Views::Components::AttributesTable
|
|
27
|
+
has_css_classes_for :attributes_table
|
|
28
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Components
|
|
5
|
+
module BlankSlate
|
|
6
|
+
def default_class_name
|
|
7
|
+
"#{super} #{blank_slate_css_classes}".squish
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Overwrite activeadmin/lib/active_admin/views/components/blank_slate.rb
|
|
16
|
+
ActiveAdmin::Views::BlankSlate.class_eval do
|
|
17
|
+
prepend Adminterface::Extensions::Views::Components::BlankSlate
|
|
18
|
+
has_css_classes_for :blank_slate
|
|
19
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Components
|
|
5
|
+
module DropdownMenu
|
|
6
|
+
def item_divider
|
|
7
|
+
within @menu do
|
|
8
|
+
li class: "dropdown-divider"
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def item_html
|
|
13
|
+
within @menu do
|
|
14
|
+
li { yield }
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def link_to(*args, &block)
|
|
19
|
+
options = args.extract_options!
|
|
20
|
+
options[:class] = "dropdown-item #{options[:class]}".squish
|
|
21
|
+
super(*args, options, &block)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def build_menu(options)
|
|
27
|
+
options[:class] ||= ""
|
|
28
|
+
options[:class] = "#{options[:class]} dropdown_menu_list dropdown-menu".squish
|
|
29
|
+
ul(options)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Overwrite activeadmin/lib/active_admin/views/components/dropdown_menu.rb
|
|
38
|
+
ActiveAdmin::Views::DropdownMenu.class_eval do
|
|
39
|
+
prepend Adminterface::Extensions::Views::Components::DropdownMenu
|
|
40
|
+
|
|
41
|
+
def build(name, options = {})
|
|
42
|
+
options = options.dup
|
|
43
|
+
|
|
44
|
+
# Easily set options for the button or menu
|
|
45
|
+
button_options = options.delete(:button) || {}
|
|
46
|
+
menu_options = options.delete(:menu) || {}
|
|
47
|
+
button_options[:class] = "#{button_options[:class]} dropdown-toggle".squish
|
|
48
|
+
options[:class] = "#{options[:class]} dropdown".squish
|
|
49
|
+
|
|
50
|
+
@button = build_button(
|
|
51
|
+
name,
|
|
52
|
+
button_options.merge("data-bs-toggle": "dropdown", role: "button", "aria-expanded": "false")
|
|
53
|
+
)
|
|
54
|
+
@menu = build_menu(menu_options)
|
|
55
|
+
|
|
56
|
+
super(options)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Components
|
|
5
|
+
# Custom component for icon
|
|
6
|
+
class Icon < ActiveAdmin::Component
|
|
7
|
+
builder_method :aa_icon
|
|
8
|
+
has_css_classes_for :icon
|
|
9
|
+
|
|
10
|
+
def build(icon, attributes = {})
|
|
11
|
+
super(attributes)
|
|
12
|
+
add_class icon
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def tag_name
|
|
16
|
+
:i
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def default_class_name
|
|
20
|
+
"aa-icon #{icon_css_classes}".squish
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Components
|
|
5
|
+
module IndexList
|
|
6
|
+
def default_class_name
|
|
7
|
+
"#{super} nav #{table_tools_css_classes.dig(:indexes, :tabs)}".squish
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def tag_name
|
|
11
|
+
:div
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
protected
|
|
15
|
+
|
|
16
|
+
def build_index_list(index_class)
|
|
17
|
+
params = request.query_parameters.except :page, :commit, :format
|
|
18
|
+
url_with_params = url_for(params.merge(as: index_class.index_name.to_sym))
|
|
19
|
+
name = index_class.index_name
|
|
20
|
+
|
|
21
|
+
a(href: url_with_params,
|
|
22
|
+
class: "index-mode-#{name} #{classes_for_link(index_class)}",
|
|
23
|
+
title: name) do
|
|
24
|
+
span I18n.t("active_admin.index_list.#{name}", default: name.to_s.titleize)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def classes_for_link(index_class)
|
|
29
|
+
klass = "nav-item nav-link"
|
|
30
|
+
klass += " active" if current_index?(index_class)
|
|
31
|
+
klass
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Overwrite activeadmin/lib/active_admin/views/components/index_list.rb
|
|
40
|
+
ActiveAdmin::Views::IndexList.class_eval do
|
|
41
|
+
prepend Adminterface::Extensions::Views::Components::IndexList
|
|
42
|
+
has_css_classes_for :table_tools
|
|
43
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Overwrite activeadmin/lib/active_admin/views/components/menu.rb
|
|
2
|
+
ActiveAdmin::Views::Menu.class_eval do
|
|
3
|
+
def build(menu, options = {})
|
|
4
|
+
dropdown = options.delete(:dropdown) { false }
|
|
5
|
+
menu_class = dropdown ? "dropdown-menu" : ""
|
|
6
|
+
item_class = dropdown ? "dropdown-item" : ""
|
|
7
|
+
|
|
8
|
+
@menu = menu
|
|
9
|
+
super(options.reverse_merge!(class: menu_class))
|
|
10
|
+
|
|
11
|
+
menu.items.each do |item|
|
|
12
|
+
next unless helpers.render_in_context self, item.should_display
|
|
13
|
+
|
|
14
|
+
menu_item(item, class: item_class, dropdown: dropdown)
|
|
15
|
+
end
|
|
16
|
+
children.sort!
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Components
|
|
5
|
+
module MenuItem
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
def menu_label
|
|
9
|
+
if icon.present?
|
|
10
|
+
Arbre::Context.new({}, self) do
|
|
11
|
+
aa_icon(icon)
|
|
12
|
+
end + helpers.content_tag(:span, label)
|
|
13
|
+
else
|
|
14
|
+
label
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def current_item_options(item)
|
|
19
|
+
return {} unless item.current?(assigns[:current_tab])
|
|
20
|
+
|
|
21
|
+
{
|
|
22
|
+
class: "#{item.html_options[:class]} active".squish,
|
|
23
|
+
"aria-current": "page"
|
|
24
|
+
}
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Overwrite activeadmin/lib/active_admin/views/components/menu_item.rb
|
|
33
|
+
ActiveAdmin::Views::MenuItem.class_eval do
|
|
34
|
+
prepend Adminterface::Extensions::Views::Components::MenuItem
|
|
35
|
+
attr_reader :icon
|
|
36
|
+
|
|
37
|
+
def build(item, options = {})
|
|
38
|
+
dropdown = options.delete(:dropdown) { false }
|
|
39
|
+
|
|
40
|
+
super(options.merge(id: item.id))
|
|
41
|
+
@label = helpers.render_in_context self, item.label
|
|
42
|
+
@url = helpers.render_in_context self, item.url
|
|
43
|
+
@icon = helpers.render_in_context self, item.icon
|
|
44
|
+
@priority = item.priority
|
|
45
|
+
@submenu = nil
|
|
46
|
+
|
|
47
|
+
unless dropdown
|
|
48
|
+
add_class "nav-item"
|
|
49
|
+
item.html_options.reverse_merge!(class: "nav-link")
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
add_class "active" if item.current?(assigns[:current_tab])
|
|
53
|
+
|
|
54
|
+
if item.items.any?
|
|
55
|
+
item.html_options.merge!(class: "nav-link dropdown-toggle", "data-bs-toggle": "dropdown")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
if url
|
|
59
|
+
item_options = item.html_options.merge(current_item_options(item)).delete_if { |_k, v| v.blank? }
|
|
60
|
+
text_node link_to(menu_label, url, **item_options)
|
|
61
|
+
else
|
|
62
|
+
span menu_label, item.html_options.merge(class: "navbar-text")
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
return unless item.items.any?
|
|
66
|
+
add_class "has_nested dropdown"
|
|
67
|
+
@submenu = menu(item, dropdown: true)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Components
|
|
5
|
+
module PaginatedCollection
|
|
6
|
+
protected
|
|
7
|
+
|
|
8
|
+
def build_pagination
|
|
9
|
+
options = {theme: @display_total ? "active_admin" : "active_admin_countless"}
|
|
10
|
+
options[:params] = @params if @params
|
|
11
|
+
options[:param_name] = @param_name if @param_name
|
|
12
|
+
|
|
13
|
+
if !@display_total
|
|
14
|
+
# The #paginate method in kaminari will query the resource with a
|
|
15
|
+
# count(*) to determine how many pages there should be unless
|
|
16
|
+
# you pass in the :total_pages option. We issue a query to determine
|
|
17
|
+
# if there is another page or not, but the limit/offset make this
|
|
18
|
+
# query fast.
|
|
19
|
+
offset = collection.offset(collection.current_page * collection.limit_value).limit(1).count
|
|
20
|
+
options[:total_pages] = collection.current_page + offset
|
|
21
|
+
options[:right] = 0
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
options.merge!(configs.pager)
|
|
25
|
+
text_node paginate collection, **options
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def build_per_page_select
|
|
29
|
+
div class: "pagination_per_page" do
|
|
30
|
+
div class: "input-group input-group-sm" do
|
|
31
|
+
span I18n.t("active_admin.pagination.per_page"), class: "input-group-text"
|
|
32
|
+
|
|
33
|
+
select(class: "form-select") do
|
|
34
|
+
@per_page.each do |per_page|
|
|
35
|
+
option(per_page,
|
|
36
|
+
value: per_page,
|
|
37
|
+
selected: collection.limit_value == per_page ? "selected" : nil)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Overwrite activeadmin/lib/active_admin/views/components/paginated_collection.rb
|
|
50
|
+
ActiveAdmin::Views::PaginatedCollection.class_eval do
|
|
51
|
+
prepend Adminterface::Extensions::Views::Components::PaginatedCollection
|
|
52
|
+
end
|