activeadmin 3.2.4 → 4.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -69
- data/CONTRIBUTING.md +25 -108
- data/README.md +19 -32
- data/app/assets/config/active_admin_manifest.js +2 -0
- 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 +2 -2
- data/{lib → app/controllers}/active_admin/resource_controller/scoping.rb +1 -1
- data/{lib → app/controllers}/active_admin/resource_controller/streaming.rb +2 -2
- 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 +89 -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 -1
- 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 +16 -0
- data/app/views/active_admin/resource/_form_default.html.arb +12 -0
- data/app/views/active_admin/resource/_index_as_table_default.html.arb +9 -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 +3 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -1
- data/app/views/active_admin/resource/index.html.arb +94 -1
- data/app/views/active_admin/resource/new.html.arb +1 -1
- data/app/views/active_admin/resource/show.html.arb +12 -1
- 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 +7 -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/locales/ar.yml +0 -16
- data/config/locales/az.yml +0 -16
- data/config/locales/bg.yml +0 -9
- data/config/locales/bs.yml +0 -7
- data/config/locales/ca.yml +0 -9
- data/config/locales/cs.yml +0 -9
- data/config/locales/da.yml +0 -16
- data/config/locales/de-CH.yml +0 -10
- data/config/locales/de.yml +0 -16
- data/config/locales/el.yml +0 -13
- data/config/locales/en-CA.yml +0 -16
- data/config/locales/en-GB.yml +0 -16
- data/config/locales/en.yml +18 -28
- data/config/locales/eo.yml +0 -17
- data/config/locales/es-MX.yml +0 -9
- data/config/locales/es.yml +0 -16
- data/config/locales/fa.yml +0 -9
- data/config/locales/fi.yml +0 -9
- data/config/locales/fr.yml +32 -26
- data/config/locales/he.yml +0 -16
- data/config/locales/hr.yml +0 -9
- data/config/locales/hu.yml +0 -6
- data/config/locales/id.yml +0 -16
- data/config/locales/it.yml +0 -16
- data/config/locales/ja.yml +0 -16
- data/config/locales/ko.yml +0 -9
- data/config/locales/lt.yml +0 -16
- data/config/locales/lv.yml +0 -6
- data/config/locales/mk.yml +0 -15
- data/config/locales/nb.yml +0 -12
- data/config/locales/nl.yml +21 -29
- data/config/locales/pl.yml +0 -16
- data/config/locales/pt-BR.yml +0 -16
- data/config/locales/pt-PT.yml +0 -6
- data/config/locales/ro.yml +0 -6
- data/config/locales/ru.yml +0 -16
- data/config/locales/sk.yml +0 -16
- data/config/locales/sv-SE.yml +0 -16
- data/config/locales/tr.yml +0 -16
- data/config/locales/uk.yml +0 -16
- data/config/locales/vi.yml +0 -16
- data/config/locales/zh-CN.yml +0 -16
- data/config/locales/zh-TW.yml +0 -16
- data/lib/active_admin/application.rb +1 -9
- data/lib/active_admin/batch_actions/controller.rb +1 -4
- data/lib/active_admin/batch_actions/resource_extension.rb +6 -13
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +0 -6
- data/lib/active_admin/batch_actions/views/selection_cells.rb +2 -2
- data/lib/active_admin/batch_actions.rb +0 -5
- data/lib/active_admin/callbacks.rb +6 -4
- data/lib/active_admin/component.rb +0 -1
- data/lib/active_admin/csv_builder.rb +1 -1
- data/lib/active_admin/devise.rb +3 -3
- data/lib/active_admin/dsl.rb +2 -2
- data/lib/active_admin/dynamic_settings_node.rb +4 -4
- data/lib/active_admin/engine.rb +19 -6
- data/lib/active_admin/filters/active.rb +6 -4
- data/lib/active_admin/filters/active_filter.rb +1 -3
- data/lib/active_admin/filters/forms.rb +1 -42
- data/lib/active_admin/filters/resource_extension.rb +17 -9
- data/lib/active_admin/filters.rb +0 -2
- data/lib/active_admin/form_builder.rb +15 -14
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +8 -10
- 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/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 +2 -44
- data/lib/active_admin/namespace_settings.rb +2 -35
- data/lib/active_admin/order_clause.rb +4 -1
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +3 -75
- data/lib/active_admin/orm/active_record/comments.rb +10 -5
- data/lib/active_admin/pundit_adapter.rb +1 -1
- data/lib/active_admin/resource/action_items.rb +15 -20
- data/lib/active_admin/resource/attributes.rb +1 -8
- data/lib/active_admin/resource/naming.rb +1 -2
- data/lib/active_admin/resource.rb +1 -0
- data/lib/active_admin/resource_dsl.rb +1 -1
- data/lib/active_admin/scope.rb +1 -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.rb +0 -12
- data/lib/active_admin/views/components/active_admin_form.rb +21 -29
- data/lib/active_admin/views/components/attributes_table.rb +4 -12
- 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 +2 -10
- data/lib/active_admin/views/components/scopes.rb +12 -21
- data/lib/active_admin/views/components/status_tag.rb +22 -19
- data/lib/active_admin/views/components/table_for.rb +19 -24
- data/lib/active_admin/views/components/tabs.rb +10 -11
- data/lib/active_admin/views/index_as_table.rb +24 -97
- data/lib/active_admin.rb +7 -11
- 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 +18 -0
- 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 +46 -7
- data/lib/generators/active_admin/resource/templates/resource.rb.erb +42 -0
- data/lib/generators/active_admin/views_generator.rb +18 -0
- metadata +67 -214
- data/app/assets/javascripts/active_admin/base.js +0 -521
- 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/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/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/base_controller/authorization.rb +0 -0
- /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,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,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,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,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>
|