activeadmin 2.3.1 → 2.7.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 +120 -35
- data/CONTRIBUTING.md +51 -55
- data/README.md +2 -2
- data/app/assets/javascripts/active_admin/base.js +519 -0
- data/app/assets/stylesheets/active_admin/_base.scss +29 -29
- data/app/assets/stylesheets/active_admin/_header.scss +40 -8
- 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 +8 -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 +28 -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} +4 -2
- 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/layouts/active_admin_logged_out.html.erb +15 -5
- data/config/locales/az.yml +138 -0
- data/config/locales/de.yml +18 -0
- data/config/locales/en-CA.yml +3 -3
- data/config/locales/en-GB.yml +3 -3
- data/config/locales/en.yml +3 -3
- data/config/locales/es.yml +3 -3
- data/config/locales/fr.yml +4 -4
- data/config/locales/lv.yml +2 -2
- data/config/locales/sk.yml +59 -0
- data/config/locales/vi.yml +6 -5
- data/docs/0-installation.md +26 -2
- data/docs/1-general-configuration.md +20 -0
- data/docs/2-resource-customization.md +10 -1
- data/docs/3-index-pages.md +1 -1
- data/docs/9-batch-actions.md +2 -2
- data/docs/Gemfile.lock +103 -103
- data/docs/_includes/top-menu.html +1 -1
- data/docs/documentation.md +1 -1
- data/docs/index.html +6 -6
- data/lib/active_admin.rb +0 -1
- data/lib/active_admin/application.rb +1 -1
- data/lib/active_admin/csv_builder.rb +7 -3
- data/lib/active_admin/filters/active_filter.rb +1 -1
- data/lib/active_admin/filters/resource_extension.rb +24 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +15 -12
- data/lib/active_admin/localizers/resource_localizer.rb +1 -1
- data/lib/active_admin/menu.rb +5 -2
- data/lib/active_admin/namespace_settings.rb +16 -0
- data/lib/active_admin/order_clause.rb +1 -1
- data/lib/active_admin/resource.rb +1 -1
- data/lib/active_admin/resource/naming.rb +1 -1
- data/lib/active_admin/resource_controller/decorators.rb +2 -2
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +3 -2
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/views/components/paginated_collection.rb +2 -1
- data/lib/active_admin/views/components/scopes.rb +2 -0
- data/lib/active_admin/views/components/table_for.rb +2 -1
- data/lib/active_admin/views/pages/base.rb +9 -5
- data/lib/active_admin/views/pages/index.rb +1 -0
- data/lib/generators/active_admin/install/install_generator.rb +7 -1
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
- data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
- metadata +32 -43
- 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;
|
@@ -54,6 +52,11 @@
|
|
54
52
|
margin: 0;
|
55
53
|
padding: 0;
|
56
54
|
|
55
|
+
li {
|
56
|
+
/* Hover on li, display the ul */
|
57
|
+
&:hover > ul { display: block;}
|
58
|
+
}
|
59
|
+
|
57
60
|
& > li {
|
58
61
|
display: inline-block;
|
59
62
|
margin-right: 4px;
|
@@ -75,12 +78,12 @@
|
|
75
78
|
}
|
76
79
|
|
77
80
|
&.has_nested > a {
|
78
|
-
background:
|
81
|
+
background: url($menu-arrow-light-icon-url) no-repeat calc(100% - 7px) 50%;
|
79
82
|
padding-right: 20px;
|
80
83
|
}
|
81
84
|
|
82
85
|
&.has_nested.current > a {
|
83
|
-
background: $current-menu-item-background
|
86
|
+
background: $current-menu-item-background url($menu-arrow-dark-icon-url) no-repeat calc(100% - 7px) 50%;
|
84
87
|
padding-right: 20px;
|
85
88
|
}
|
86
89
|
|
@@ -92,13 +95,11 @@
|
|
92
95
|
&.has_nested:hover > a {
|
93
96
|
@include rounded-top(10px);
|
94
97
|
border-bottom: 5px solid $hover-menu-item-background;
|
95
|
-
background: $hover-menu-item-background
|
98
|
+
background: $hover-menu-item-background url($menu-arrow-dark-icon-url) no-repeat calc(100% - 7px) 50%;
|
96
99
|
z-index: 1020;
|
97
100
|
}
|
98
101
|
|
99
102
|
|
100
|
-
/* Hover on li, display the ul */
|
101
|
-
&:hover ul { display: block;}
|
102
103
|
/* Drop down menus */
|
103
104
|
ul {
|
104
105
|
background: $hover-menu-item-background;
|
@@ -116,6 +117,7 @@
|
|
116
117
|
z-index: 1010;
|
117
118
|
|
118
119
|
li {
|
120
|
+
position: relative;
|
119
121
|
margin: 0px;
|
120
122
|
a {
|
121
123
|
background: none;
|
@@ -126,10 +128,40 @@
|
|
126
128
|
&.current {
|
127
129
|
a { @include rounded(0) }
|
128
130
|
}
|
131
|
+
|
132
|
+
&.has_nested > a {
|
133
|
+
background: url($menu-arrow-right-light-icon-url) no-repeat calc(100% - 7px) 55%;
|
134
|
+
padding-right: 20px;
|
135
|
+
}
|
136
|
+
|
137
|
+
&.has_nested:hover > a {
|
138
|
+
background: url($menu-arrow-right-dark-icon-url) no-repeat calc(100% - 7px) 55%;
|
139
|
+
color: #fff;
|
140
|
+
}
|
141
|
+
|
142
|
+
ul {
|
143
|
+
@include rounded-all(10px,10px,10px,10px);
|
144
|
+
margin-top: 0;
|
145
|
+
top: -3px;
|
146
|
+
left: 100%;
|
147
|
+
|
148
|
+
/* Create an invisible backdrop that adds 8px margin around the dropdown menu or submenu
|
149
|
+
that maintains the hover. This makes it much easier to navigate to submenus in
|
150
|
+
particular without losing hover accientally, especially near rounded corners. */
|
151
|
+
&:after {
|
152
|
+
content: "";
|
153
|
+
display: block;
|
154
|
+
position: absolute;
|
155
|
+
top: -8px;
|
156
|
+
left: -8px;
|
157
|
+
height: calc(100% + 16px);
|
158
|
+
width: calc(100% + 16px);
|
159
|
+
z-index: -2;
|
160
|
+
}
|
161
|
+
}
|
129
162
|
}
|
130
163
|
}
|
131
164
|
}
|
132
|
-
|
133
165
|
}
|
134
166
|
|
135
167
|
#tabs {
|
@@ -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,14 @@
|
|
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
|
+
$menu-arrow-right-light-icon-url: 'data:image/gif;base64,R0lGODlhBAAHAKECAKqqqszMzPkVFfkVFSH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAIALAAAAAAEAAcAAAIJlA0XKbH9nmAFADs=' !default;
|
9
|
+
$menu-arrow-right-dark-icon-url: 'data:image/gif;base64,R0lGODlhBAAHAMIEAG1tbWxsbElJSVBQUPkVFfkVFfkVFfkVFSH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAEALAAAAAAEAAcAAAMKGKqy02G8OGeACQA7' !default;
|
10
|
+
|
11
|
+
$orderable-icon-url: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAABGCAYAAAAAVo4aAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUeNpi3LhlOwMU1AExGxDXwARYoHQLEFdD2cxAXAliMKFJgEAFEHfBJEHGMKLhMpgkTsAEdch/NNwCk2xCdiEQtML4LEgCf6EubUX3Cgh0oNvJ+P//f7wOGpUclRwYSZb41CyidNbB8giNM+9oXhmVHHm5bJjUSAABBgDKKiwMMUxPwgAAAABJRU5ErkJggg==' !default;
|
12
|
+
|
5
13
|
// Colors
|
6
14
|
$body-background-color: #FFF !default;
|
7
15
|
$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,28 @@
|
|
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"
|
20
|
+
|
21
|
+
import ModalDialog from "./lib/modal-dialog";
|
22
|
+
|
23
|
+
function modal_dialog(message, inputs, callback) {
|
24
|
+
console.warn("ActiveAdmin.modal_dialog is deprecated in favor of ActiveAdmin.ModalDialog, please update usage.");
|
25
|
+
return ModalDialog(message, inputs, callback);
|
26
|
+
}
|
27
|
+
|
28
|
+
export { ModalDialog, modal_dialog };
|
File without changes
|
data/app/{assets/javascripts/active_admin/ext/jquery.es6 → javascript/active_admin/ext/jquery.js}
RENAMED
File without changes
|
@@ -1,10 +1,12 @@
|
|
1
|
+
import ModalDialog from "../lib/modal-dialog";
|
2
|
+
|
1
3
|
const onDOMReady = function() {
|
2
4
|
// Detach any previously attached handlers before re-attaching them.
|
3
5
|
// This avoids double-registered handlers when Turbolinks is enabled
|
4
6
|
$('.batch_actions_selector li a').off('click confirm:complete');
|
5
7
|
|
6
8
|
//
|
7
|
-
// Use
|
9
|
+
// Use ModalDialog to prompt user if
|
8
10
|
// confirmation is required for current Batch Action
|
9
11
|
//
|
10
12
|
$('.batch_actions_selector li a').on('click', function(event){
|
@@ -12,7 +14,7 @@ const onDOMReady = function() {
|
|
12
14
|
event.stopPropagation(); // prevent Rails UJS click event
|
13
15
|
event.preventDefault();
|
14
16
|
if ((message = $(this).data('confirm'))) {
|
15
|
-
|
17
|
+
ModalDialog(message, $(this).data('inputs'), inputs => {
|
16
18
|
$(this).trigger('confirm:complete', inputs);
|
17
19
|
});
|
18
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;
|