activeadmin 2.1.0 → 2.5.0
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 +112 -27
- data/CONTRIBUTING.md +50 -26
- data/README.md +8 -1
- data/app/assets/javascripts/active_admin/base.js +509 -0
- data/app/assets/stylesheets/active_admin/_base.scss +29 -29
- data/app/assets/stylesheets/active_admin/_header.scss +3 -5
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
- data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +0 -0
- data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +5 -0
- data/app/assets/stylesheets/active_admin/print.scss +2 -2
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
- data/app/javascript/active_admin/base.js +19 -0
- data/app/{assets/javascripts/active_admin/ext/jquery-ui.es6 → javascript/active_admin/ext/jquery-ui.js} +0 -0
- data/app/{assets/javascripts/active_admin/ext/jquery.es6 → javascript/active_admin/ext/jquery.js} +0 -0
- data/app/{assets/javascripts/active_admin/lib/batch_actions.es6 → javascript/active_admin/initializers/batch-actions.js} +9 -3
- data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
- data/app/{assets/javascripts/active_admin/initializers/datepicker.es6 → javascript/active_admin/initializers/datepicker.js} +0 -0
- data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
- data/app/javascript/active_admin/initializers/filters.js +10 -0
- data/app/{assets/javascripts/active_admin/lib/has_many.es6 → javascript/active_admin/initializers/has-many.js} +0 -0
- data/app/javascript/active_admin/initializers/per-page.js +13 -0
- data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
- data/app/{assets/javascripts/active_admin/initializers/tabs.es6 → javascript/active_admin/initializers/tabs.js} +0 -0
- data/app/{assets/javascripts/active_admin/lib/checkbox-toggler.es6 → javascript/active_admin/lib/checkbox-toggler.js} +2 -2
- data/app/{assets/javascripts/active_admin/lib/dropdown-menu.es6 → javascript/active_admin/lib/dropdown-menu.js} +2 -9
- data/app/javascript/active_admin/lib/filters.js +39 -0
- data/app/{assets/javascripts/active_admin/lib/modal_dialog.es6 → javascript/active_admin/lib/modal-dialog.js} +3 -1
- data/app/javascript/active_admin/lib/per-page.js +38 -0
- data/app/{assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 → javascript/active_admin/lib/table-checkbox-toggler.js} +4 -2
- data/app/javascript/active_admin/lib/utils.js +40 -0
- data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
- data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
- data/config/locales/ar.yml +3 -2
- data/config/locales/az.yml +138 -0
- data/config/locales/bg.yml +1 -0
- data/config/locales/bs.yml +1 -0
- data/config/locales/ca.yml +1 -1
- data/config/locales/cs.yml +1 -0
- data/config/locales/da.yml +1 -0
- data/config/locales/de-CH.yml +1 -0
- data/config/locales/de.yml +19 -0
- data/config/locales/el.yml +1 -0
- data/config/locales/en-CA.yml +1 -0
- data/config/locales/en-GB.yml +1 -0
- data/config/locales/en.yml +1 -0
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/config/locales/fa.yml +1 -0
- data/config/locales/fi.yml +1 -0
- data/config/locales/fr.yml +2 -1
- data/config/locales/he.yml +1 -0
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +1 -0
- data/config/locales/id.yml +1 -0
- data/config/locales/it.yml +1 -0
- data/config/locales/ja.yml +1 -0
- data/config/locales/ko.yml +1 -0
- data/config/locales/lt.yml +1 -0
- data/config/locales/lv.yml +1 -0
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +1 -0
- data/config/locales/nl.yml +1 -0
- data/config/locales/pl.yml +1 -0
- data/config/locales/pt-BR.yml +1 -0
- data/config/locales/pt-PT.yml +1 -0
- data/config/locales/ro.yml +1 -0
- data/config/locales/ru.yml +1 -0
- data/config/locales/sk.yml +60 -0
- data/config/locales/sv-SE.yml +1 -0
- data/config/locales/tr.yml +1 -0
- data/config/locales/uk.yml +1 -0
- data/config/locales/vi.yml +1 -0
- data/config/locales/zh-CN.yml +1 -0
- data/config/locales/zh-TW.yml +1 -0
- data/docs/1-general-configuration.md +20 -0
- data/docs/12-arbre-components.md +13 -0
- data/docs/13-authorization-adapter.md +2 -2
- data/docs/2-resource-customization.md +1 -1
- data/docs/3-index-pages/index-as-table.md +7 -0
- data/docs/Gemfile +0 -1
- data/docs/Gemfile.lock +58 -58
- data/docs/_config.yml +2 -0
- data/docs/_includes/top-menu.html +2 -2
- data/docs/index.html +108 -7
- data/docs/stylesheets/main.css +29 -0
- data/lib/active_admin.rb +0 -1
- data/lib/active_admin/application.rb +12 -3
- data/lib/active_admin/batch_actions/resource_extension.rb +5 -1
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +3 -2
- data/lib/active_admin/dependency.rb +0 -4
- data/lib/active_admin/error.rb +3 -1
- data/lib/active_admin/filters/active_filter.rb +3 -4
- data/lib/active_admin/filters/resource_extension.rb +24 -0
- data/lib/active_admin/generators/boilerplate.rb +12 -4
- data/lib/active_admin/inputs/filters/date_range_input.rb +4 -4
- data/lib/active_admin/namespace_settings.rb +13 -0
- data/lib/active_admin/order_clause.rb +1 -1
- data/lib/active_admin/page_presenter.rb +2 -1
- data/lib/active_admin/pundit_adapter.rb +7 -3
- data/lib/active_admin/resource.rb +16 -2
- data/lib/active_admin/resource/belongs_to.rb +6 -1
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/routes.rb +11 -3
- data/lib/active_admin/resource_controller.rb +2 -0
- data/lib/active_admin/resource_controller/decorators.rb +2 -2
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +37 -0
- data/lib/active_admin/router.rb +2 -1
- data/lib/active_admin/scope.rb +7 -3
- data/lib/active_admin/sidebar_section.rb +3 -1
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +2 -2
- data/lib/active_admin/view_helpers/display_helper.rb +3 -2
- data/lib/active_admin/views/components/paginated_collection.rb +3 -2
- data/lib/active_admin/views/components/status_tag.rb +5 -1
- data/lib/active_admin/views/components/table_for.rb +1 -0
- data/lib/active_admin/views/index_as_table.rb +7 -0
- data/lib/active_admin/views/pages/base.rb +1 -1
- data/lib/active_admin/views/pages/index.rb +1 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +14 -1
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
- data/lib/ransack_ext.rb +2 -2
- metadata +38 -45
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.es6 +0 -23
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +0 -45
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +0 -41
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +0 -47
@@ -1,36 +1,36 @@
|
|
1
1
|
/* Active Admin CSS */
|
2
2
|
// Normalize
|
3
|
-
@import "
|
3
|
+
@import "./normalize";
|
4
4
|
|
5
5
|
// Partials
|
6
|
-
@import "
|
7
|
-
@import "
|
8
|
-
@import "
|
9
|
-
@import "
|
10
|
-
@import "
|
11
|
-
@import "
|
12
|
-
@import "
|
13
|
-
@import "
|
14
|
-
@import "
|
15
|
-
@import "
|
16
|
-
@import "
|
17
|
-
@import "
|
18
|
-
@import "
|
19
|
-
@import "
|
20
|
-
@import "
|
21
|
-
@import "
|
22
|
-
@import "
|
23
|
-
@import "
|
24
|
-
@import "
|
25
|
-
@import "
|
26
|
-
@import "
|
27
|
-
@import "
|
28
|
-
@import "
|
29
|
-
@import "
|
30
|
-
@import "
|
31
|
-
@import "
|
32
|
-
@import "
|
33
|
-
@import "
|
6
|
+
@import "./typography";
|
7
|
+
@import "./header";
|
8
|
+
@import "./forms";
|
9
|
+
@import "./components/comments";
|
10
|
+
@import "./components/flash_messages";
|
11
|
+
@import "./components/date_picker";
|
12
|
+
@import "./components/tables";
|
13
|
+
@import "./components/batch_actions";
|
14
|
+
@import "./components/modal_dialog";
|
15
|
+
@import "./components/blank_slates";
|
16
|
+
@import "./components/breadcrumbs";
|
17
|
+
@import "./components/dropdown_menu";
|
18
|
+
@import "./components/buttons";
|
19
|
+
@import "./components/grid";
|
20
|
+
@import "./components/links";
|
21
|
+
@import "./components/pagination";
|
22
|
+
@import "./components/panels";
|
23
|
+
@import "./components/columns";
|
24
|
+
@import "./components/scopes";
|
25
|
+
@import "./components/status_tags";
|
26
|
+
@import "./components/table_tools";
|
27
|
+
@import "./components/index_list";
|
28
|
+
@import "./components/unsupported_browser";
|
29
|
+
@import "./components/tabs";
|
30
|
+
@import "./pages/logged_out";
|
31
|
+
@import "./structure/footer";
|
32
|
+
@import "./structure/main_structure";
|
33
|
+
@import "./structure/title_bar";
|
34
34
|
|
35
35
|
body {
|
36
36
|
@include sans-family;
|
@@ -1,5 +1,3 @@
|
|
1
|
-
//= depend_on_asset "active_admin/nested_menu_arrow.gif"
|
2
|
-
//= depend_on_asset "active_admin/nested_menu_arrow_dark.gif"
|
3
1
|
// ----------------------------------- Header
|
4
2
|
#header {
|
5
3
|
@include primary-gradient;
|
@@ -75,12 +73,12 @@
|
|
75
73
|
}
|
76
74
|
|
77
75
|
&.has_nested > a {
|
78
|
-
background:
|
76
|
+
background: url($menu-arrow-light-icon-url) no-repeat calc(100% - 7px) 50%;
|
79
77
|
padding-right: 20px;
|
80
78
|
}
|
81
79
|
|
82
80
|
&.has_nested.current > a {
|
83
|
-
background: $current-menu-item-background
|
81
|
+
background: $current-menu-item-background url($menu-arrow-dark-icon-url) no-repeat calc(100% - 7px) 50%;
|
84
82
|
padding-right: 20px;
|
85
83
|
}
|
86
84
|
|
@@ -92,7 +90,7 @@
|
|
92
90
|
&.has_nested:hover > a {
|
93
91
|
@include rounded-top(10px);
|
94
92
|
border-bottom: 5px solid $hover-menu-item-background;
|
95
|
-
background: $hover-menu-item-background
|
93
|
+
background: $hover-menu-item-background url($menu-arrow-dark-icon-url) no-repeat calc(100% - 7px) 50%;
|
96
94
|
z-index: 1020;
|
97
95
|
}
|
98
96
|
|
@@ -1 +1 @@
|
|
1
|
-
@import "
|
1
|
+
@import "./mixins/all";
|
File without changes
|
@@ -1,4 +1,3 @@
|
|
1
|
-
//= depend_on_asset "active_admin/orderable.png"
|
2
1
|
// ----------------------------------- Tables
|
3
2
|
|
4
3
|
table tr {
|
@@ -33,7 +32,7 @@ table.index_table {
|
|
33
32
|
}
|
34
33
|
|
35
34
|
&.sortable a {
|
36
|
-
background:
|
35
|
+
background: url($orderable-icon-url) no-repeat 0 4px; padding-left: 13px;
|
37
36
|
}
|
38
37
|
|
39
38
|
&.sorted-asc a { background-position: 0 -27px; }
|
@@ -1,8 +1,8 @@
|
|
1
|
-
@import "
|
2
|
-
@import "
|
3
|
-
@import "
|
4
|
-
@import "
|
5
|
-
@import "
|
6
|
-
@import "
|
7
|
-
@import "
|
8
|
-
@import "
|
1
|
+
@import "./variables";
|
2
|
+
@import "./gradients";
|
3
|
+
@import "./shadows";
|
4
|
+
@import "./rounded";
|
5
|
+
@import "./buttons";
|
6
|
+
@import "./sections";
|
7
|
+
@import "./utilities";
|
8
|
+
@import "./typography";
|
@@ -2,6 +2,11 @@
|
|
2
2
|
// They can be overridden by prepending your own
|
3
3
|
// to 'app/assets/stylesheets/active_admin.scss'.
|
4
4
|
|
5
|
+
// Images
|
6
|
+
$menu-arrow-light-icon-url: 'data:image/png;base64,R0lGODlhBwAEAKIAAL6+vry8vIiIiJWVlf///3t7ewAAAAAAACH5BAEAAAUALAAAAAAHAAQAAAMLWLol80MoF5mQKgEAOw==' !default;
|
7
|
+
$menu-arrow-dark-icon-url: 'data:image/png;base64,R0lGODlhBwAEAKIAAG1tbWxsbElJSVBQUP///0JCQgAAAAAAACH5BAEAAAUALAAAAAAHAAQAAAMLWLol80MoF5mQKgEAOw==' !default;
|
8
|
+
$orderable-icon-url: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAABGCAYAAAAAVo4aAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUeNpi3LhlOwMU1AExGxDXwARYoHQLEFdD2cxAXAliMKFJgEAFEHfBJEHGMKLhMpgkTsAEdch/NNwCk2xCdiEQtML4LEgCf6EubUX3Cgh0oNvJ+P//f7wOGpUclRwYSZb41CyidNbB8giNM+9oXhmVHHm5bJjUSAABBgDKKiwMMUxPwgAAAABJRU5ErkJggg==' !default;
|
9
|
+
|
5
10
|
// Colors
|
6
11
|
$body-background-color: #FFF !default;
|
7
12
|
$primary-color: #5E6469 !default;
|
@@ -5,10 +5,10 @@ $primary-color: black;
|
|
5
5
|
$text-color: black;
|
6
6
|
|
7
7
|
// Normalize
|
8
|
-
@import "
|
8
|
+
@import "./normalize";
|
9
9
|
|
10
10
|
// Partials
|
11
|
-
@import "
|
11
|
+
@import "./typography";
|
12
12
|
|
13
13
|
body {
|
14
14
|
font-family: Helvetica, Arial, sans-serif;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import "jquery"
|
2
|
+
import "jquery-ui/ui/widgets/datepicker"
|
3
|
+
import "jquery-ui/ui/widgets/dialog"
|
4
|
+
import "jquery-ui/ui/widgets/sortable"
|
5
|
+
import "jquery-ui/ui/widgets/tabs"
|
6
|
+
import "jquery-ui/ui/widget"
|
7
|
+
import "jquery-ujs"
|
8
|
+
|
9
|
+
import "./ext/jquery"
|
10
|
+
import "./ext/jquery-ui"
|
11
|
+
import "./initializers/batch-actions"
|
12
|
+
import "./initializers/checkbox-toggler"
|
13
|
+
import "./initializers/datepicker"
|
14
|
+
import "./initializers/dropdown-menu"
|
15
|
+
import "./initializers/filters"
|
16
|
+
import "./initializers/has-many"
|
17
|
+
import "./initializers/per-page"
|
18
|
+
import "./initializers/table-checkbox-toggler"
|
19
|
+
import "./initializers/tabs"
|
File without changes
|
data/app/{assets/javascripts/active_admin/ext/jquery.es6 → javascript/active_admin/ext/jquery.js}
RENAMED
File without changes
|
@@ -1,14 +1,20 @@
|
|
1
|
+
import ModalDialog from "../lib/modal-dialog";
|
2
|
+
|
1
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
|
+
|
2
8
|
//
|
3
|
-
// Use
|
9
|
+
// Use ModalDialog to prompt user if
|
4
10
|
// confirmation is required for current Batch Action
|
5
11
|
//
|
6
|
-
$('.batch_actions_selector li a').click
|
12
|
+
$('.batch_actions_selector li a').on('click', function(event){
|
7
13
|
let message;
|
8
14
|
event.stopPropagation(); // prevent Rails UJS click event
|
9
15
|
event.preventDefault();
|
10
16
|
if ((message = $(this).data('confirm'))) {
|
11
|
-
|
17
|
+
ModalDialog(message, $(this).data('inputs'), inputs => {
|
12
18
|
$(this).trigger('confirm:complete', inputs);
|
13
19
|
});
|
14
20
|
} else {
|
File without changes
|
@@ -0,0 +1,10 @@
|
|
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);
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
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);
|
File without changes
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
class CheckboxToggler {
|
2
2
|
constructor(options, container){
|
3
3
|
this.options = options;
|
4
4
|
this.container = container;
|
@@ -46,4 +46,4 @@ ActiveAdmin.CheckboxToggler = class CheckboxToggler {
|
|
46
46
|
}
|
47
47
|
};
|
48
48
|
|
49
|
-
|
49
|
+
export default CheckboxToggler;
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
class DropdownMenu {
|
3
2
|
constructor(options, element) {
|
4
3
|
this.options = options;
|
5
4
|
this.element = element;
|
@@ -114,10 +113,4 @@ ActiveAdmin.DropdownMenu = class DropdownMenu {
|
|
114
113
|
}
|
115
114
|
};
|
116
115
|
|
117
|
-
|
118
|
-
|
119
|
-
const onDOMReady = () => $('.dropdown_menu').aaDropdownMenu();
|
120
|
-
|
121
|
-
$(document).
|
122
|
-
ready(onDOMReady).
|
123
|
-
on('page:load turbolinks:load', onDOMReady);
|
116
|
+
export default DropdownMenu;
|
@@ -0,0 +1,39 @@
|
|
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,4 +1,4 @@
|
|
1
|
-
|
1
|
+
function ModalDialog(message, inputs, callback){
|
2
2
|
let html = `<form id="dialog_confirm" title="${message}"><ul>`;
|
3
3
|
for (let name in inputs) {
|
4
4
|
var elem, opts, wrapper;
|
@@ -59,3 +59,5 @@ ActiveAdmin.modal_dialog = function(message, inputs, callback){
|
|
59
59
|
}
|
60
60
|
});
|
61
61
|
};
|
62
|
+
|
63
|
+
export default ModalDialog;
|
@@ -0,0 +1,38 @@
|
|
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,4 +1,6 @@
|
|
1
|
-
|
1
|
+
import CheckboxToggler from "./checkbox-toggler";
|
2
|
+
|
3
|
+
class TableCheckboxToggler extends CheckboxToggler {
|
2
4
|
_bind() {
|
3
5
|
super._bind(...arguments);
|
4
6
|
|
@@ -33,4 +35,4 @@ ActiveAdmin.TableCheckboxToggler = class TableCheckboxToggler extends ActiveAdmi
|
|
33
35
|
}
|
34
36
|
};
|
35
37
|
|
36
|
-
|
38
|
+
export default TableCheckboxToggler;
|
@@ -0,0 +1,40 @@
|
|
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
|
+
};
|