activeadmin 2.2.0 → 2.12.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.

Files changed (274) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +382 -32
  3. data/CONTRIBUTING.md +45 -67
  4. data/README.md +11 -4
  5. data/app/assets/javascripts/active_admin/base.js +524 -0
  6. data/app/assets/stylesheets/active_admin/_base.scss +53 -37
  7. data/app/assets/stylesheets/active_admin/_forms.scss +0 -10
  8. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  9. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  10. data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +25 -123
  11. data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +2 -2
  12. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  13. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
  14. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
  15. data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
  16. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
  17. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
  18. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  19. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
  20. data/app/javascript/active_admin/base.js +28 -0
  21. data/app/{assets/javascripts/active_admin/lib/batch_actions.es6 → javascript/active_admin/initializers/batch-actions.js} +9 -3
  22. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  23. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  24. data/app/javascript/active_admin/initializers/filters.js +10 -0
  25. data/app/{assets/javascripts/active_admin/lib/has_many.es6 → javascript/active_admin/initializers/has-many.js} +4 -1
  26. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  27. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  28. data/app/{assets/javascripts/active_admin/lib/checkbox-toggler.es6 → javascript/active_admin/lib/checkbox-toggler.js} +5 -5
  29. data/app/{assets/javascripts/active_admin/lib/dropdown-menu.es6 → javascript/active_admin/lib/dropdown-menu.js} +3 -10
  30. data/app/javascript/active_admin/lib/filters.js +39 -0
  31. data/app/{assets/javascripts/active_admin/lib/modal_dialog.es6 → javascript/active_admin/lib/modal-dialog.js} +10 -8
  32. data/app/javascript/active_admin/lib/per-page.js +38 -0
  33. data/app/{assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 → javascript/active_admin/lib/table-checkbox-toggler.js} +5 -3
  34. data/app/javascript/active_admin/lib/utils.js +40 -0
  35. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  36. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  37. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  38. data/app/views/active_admin/page/index.html.arb +1 -0
  39. data/app/views/active_admin/resource/edit.html.arb +1 -0
  40. data/app/views/active_admin/resource/index.html.arb +1 -0
  41. data/app/views/active_admin/resource/new.html.arb +1 -0
  42. data/app/views/active_admin/resource/show.html.arb +1 -0
  43. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  44. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  45. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  46. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  47. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  48. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  49. data/app/views/layouts/active_admin.html.arb +1 -0
  50. data/app/views/layouts/active_admin_logged_out.html.erb +15 -5
  51. data/config/locales/ar.yml +6 -6
  52. data/config/locales/az.yml +138 -0
  53. data/config/locales/ca.yml +0 -1
  54. data/config/locales/de.yml +18 -0
  55. data/config/locales/en-CA.yml +3 -3
  56. data/config/locales/en-GB.yml +3 -3
  57. data/config/locales/en.yml +3 -3
  58. data/config/locales/es-MX.yml +2 -1
  59. data/config/locales/es.yml +5 -5
  60. data/config/locales/fr.yml +4 -4
  61. data/config/locales/it.yml +18 -0
  62. data/config/locales/ja.yml +3 -3
  63. data/config/locales/ko.yml +1 -1
  64. data/config/locales/lv.yml +2 -2
  65. data/config/locales/nl.yml +1 -1
  66. data/config/locales/ro.yml +3 -2
  67. data/config/locales/sk.yml +59 -0
  68. data/config/locales/vi.yml +6 -5
  69. data/docs/0-installation.md +27 -3
  70. data/docs/1-general-configuration.md +20 -0
  71. data/docs/11-decorators.md +16 -5
  72. data/docs/2-resource-customization.md +11 -2
  73. data/docs/3-index-pages/index-as-table.md +7 -0
  74. data/docs/3-index-pages.md +1 -1
  75. data/docs/5-forms.md +7 -2
  76. data/docs/6-show-pages.md +12 -0
  77. data/docs/8-custom-actions.md +1 -1
  78. data/docs/9-batch-actions.md +2 -2
  79. data/docs/Gemfile +3 -3
  80. data/docs/Gemfile.lock +192 -158
  81. data/docs/_config.yml +2 -0
  82. data/docs/_includes/top-menu.html +2 -2
  83. data/docs/documentation.md +1 -1
  84. data/docs/index.html +109 -8
  85. data/docs/stylesheets/main.css +29 -0
  86. data/lib/active_admin/abstract_view_factory.rb +1 -0
  87. data/lib/active_admin/application.rb +20 -20
  88. data/lib/active_admin/application_settings.rb +4 -3
  89. data/lib/active_admin/asset_registration.rb +1 -0
  90. data/lib/active_admin/authorization_adapter.rb +4 -3
  91. data/lib/active_admin/base_controller/authorization.rb +15 -13
  92. data/lib/active_admin/base_controller/menu.rb +1 -0
  93. data/lib/active_admin/base_controller.rb +6 -5
  94. data/lib/active_admin/batch_actions/controller.rb +4 -3
  95. data/lib/active_admin/batch_actions/resource_extension.rb +10 -8
  96. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
  97. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
  98. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
  99. data/lib/active_admin/batch_actions.rb +1 -0
  100. data/lib/active_admin/callbacks.rb +1 -0
  101. data/lib/active_admin/cancan_adapter.rb +2 -1
  102. data/lib/active_admin/collection_decorator.rb +32 -0
  103. data/lib/active_admin/component.rb +1 -0
  104. data/lib/active_admin/controller_action.rb +1 -0
  105. data/lib/active_admin/csv_builder.rb +13 -23
  106. data/lib/active_admin/dependency.rb +13 -12
  107. data/lib/active_admin/deprecation.rb +1 -0
  108. data/lib/active_admin/devise.rb +16 -5
  109. data/lib/active_admin/dsl.rb +2 -1
  110. data/lib/active_admin/dynamic_setting.rb +1 -0
  111. data/lib/active_admin/dynamic_settings_node.rb +3 -2
  112. data/lib/active_admin/engine.rb +13 -9
  113. data/lib/active_admin/error.rb +1 -2
  114. data/lib/active_admin/filters/active.rb +2 -1
  115. data/lib/active_admin/filters/active_filter.rb +7 -7
  116. data/lib/active_admin/filters/active_sidebar.rb +4 -30
  117. data/lib/active_admin/filters/dsl.rb +1 -0
  118. data/lib/active_admin/filters/forms.rb +7 -6
  119. data/lib/active_admin/filters/formtastic_addons.rb +2 -6
  120. data/lib/active_admin/filters/resource_extension.rb +26 -1
  121. data/lib/active_admin/filters.rb +8 -7
  122. data/lib/active_admin/form_builder.rb +25 -20
  123. data/lib/active_admin/generators/boilerplate.rb +13 -4
  124. data/lib/active_admin/helpers/collection.rb +2 -0
  125. data/lib/active_admin/helpers/i18n.rb +1 -0
  126. data/lib/active_admin/helpers/optional_display.rb +3 -2
  127. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  128. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  129. data/lib/active_admin/inputs/datepicker_input.rb +2 -1
  130. data/lib/active_admin/inputs/filters/base/search_method_select.rb +5 -4
  131. data/lib/active_admin/inputs/filters/base.rb +2 -1
  132. data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
  133. data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
  134. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  135. data/lib/active_admin/inputs/filters/date_range_input.rb +16 -12
  136. data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
  137. data/lib/active_admin/inputs/filters/select_input.rb +3 -2
  138. data/lib/active_admin/inputs/filters/string_input.rb +1 -0
  139. data/lib/active_admin/inputs/filters/text_input.rb +1 -0
  140. data/lib/active_admin/inputs.rb +1 -0
  141. data/lib/active_admin/localizers/resource_localizer.rb +4 -3
  142. data/lib/active_admin/localizers.rb +2 -1
  143. data/lib/active_admin/menu.rb +7 -3
  144. data/lib/active_admin/menu_collection.rb +1 -0
  145. data/lib/active_admin/menu_item.rb +8 -7
  146. data/lib/active_admin/namespace.rb +14 -13
  147. data/lib/active_admin/namespace_settings.rb +21 -4
  148. data/lib/active_admin/order_clause.rb +3 -2
  149. data/lib/active_admin/orm/active_record/comments/comment.rb +4 -3
  150. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  151. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  152. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  153. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +20 -19
  154. data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
  155. data/lib/active_admin/orm/active_record/comments.rb +20 -19
  156. data/lib/active_admin/orm/active_record.rb +2 -1
  157. data/lib/active_admin/orm/mongoid.rb +1 -0
  158. data/lib/active_admin/page.rb +2 -1
  159. data/lib/active_admin/page_controller.rb +1 -0
  160. data/lib/active_admin/page_dsl.rb +1 -0
  161. data/lib/active_admin/page_presenter.rb +1 -0
  162. data/lib/active_admin/pundit_adapter.rb +47 -11
  163. data/lib/active_admin/resource/action_items.rb +6 -5
  164. data/lib/active_admin/resource/attributes.rb +2 -1
  165. data/lib/active_admin/resource/belongs_to.rb +6 -2
  166. data/lib/active_admin/resource/controllers.rb +2 -1
  167. data/lib/active_admin/resource/includes.rb +1 -0
  168. data/lib/active_admin/resource/menu.rb +5 -4
  169. data/lib/active_admin/resource/model.rb +16 -0
  170. data/lib/active_admin/resource/naming.rb +6 -5
  171. data/lib/active_admin/resource/ordering.rb +1 -0
  172. data/lib/active_admin/resource/page_presenters.rb +1 -0
  173. data/lib/active_admin/resource/pagination.rb +1 -0
  174. data/lib/active_admin/resource/routes.rb +17 -10
  175. data/lib/active_admin/resource/scope_to.rb +8 -7
  176. data/lib/active_admin/resource/scopes.rb +1 -0
  177. data/lib/active_admin/resource/sidebars.rb +2 -1
  178. data/lib/active_admin/resource.rb +33 -19
  179. data/lib/active_admin/resource_collection.rb +1 -0
  180. data/lib/active_admin/resource_controller/action_builder.rb +1 -0
  181. data/lib/active_admin/resource_controller/data_access.rb +31 -5
  182. data/lib/active_admin/resource_controller/decorators.rb +8 -29
  183. data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
  184. data/lib/active_admin/resource_controller/resource_class_methods.rb +1 -0
  185. data/lib/active_admin/resource_controller/scoping.rb +1 -0
  186. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  187. data/lib/active_admin/resource_controller/streaming.rb +9 -7
  188. data/lib/active_admin/resource_controller.rb +14 -10
  189. data/lib/active_admin/resource_dsl.rb +11 -25
  190. data/lib/active_admin/router.rb +1 -0
  191. data/lib/active_admin/scope.rb +7 -6
  192. data/lib/active_admin/settings_node.rb +1 -0
  193. data/lib/active_admin/sidebar_section.rb +1 -0
  194. data/lib/active_admin/version.rb +2 -1
  195. data/lib/active_admin/view_factory.rb +18 -17
  196. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  197. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
  198. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
  199. data/lib/active_admin/view_helpers/display_helper.rb +15 -7
  200. data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -1
  201. data/lib/active_admin/view_helpers/fields_for.rb +3 -2
  202. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  203. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  204. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -0
  205. data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
  206. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  207. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  208. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  209. data/lib/active_admin/view_helpers.rb +2 -1
  210. data/lib/active_admin/views/action_items.rb +1 -0
  211. data/lib/active_admin/views/components/active_admin_form.rb +7 -6
  212. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  213. data/lib/active_admin/views/components/attributes_table.rb +6 -5
  214. data/lib/active_admin/views/components/blank_slate.rb +2 -1
  215. data/lib/active_admin/views/components/columns.rb +1 -0
  216. data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
  217. data/lib/active_admin/views/components/index_list.rb +4 -3
  218. data/lib/active_admin/views/components/menu.rb +2 -1
  219. data/lib/active_admin/views/components/menu_item.rb +5 -4
  220. data/lib/active_admin/views/components/paginated_collection.rb +21 -19
  221. data/lib/active_admin/views/components/panel.rb +2 -1
  222. data/lib/active_admin/views/components/scopes.rb +8 -5
  223. data/lib/active_admin/views/components/sidebar.rb +1 -0
  224. data/lib/active_admin/views/components/sidebar_section.rb +1 -0
  225. data/lib/active_admin/views/components/site_title.rb +2 -1
  226. data/lib/active_admin/views/components/status_tag.rb +12 -11
  227. data/lib/active_admin/views/components/table_for.rb +19 -17
  228. data/lib/active_admin/views/components/tabs.rb +4 -3
  229. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  230. data/lib/active_admin/views/footer.rb +3 -1
  231. data/lib/active_admin/views/header.rb +3 -2
  232. data/lib/active_admin/views/index_as_block.rb +1 -0
  233. data/lib/active_admin/views/index_as_blog.rb +2 -1
  234. data/lib/active_admin/views/index_as_grid.rb +2 -1
  235. data/lib/active_admin/views/index_as_table.rb +24 -16
  236. data/lib/active_admin/views/pages/base.rb +19 -12
  237. data/lib/active_admin/views/pages/form.rb +1 -0
  238. data/lib/active_admin/views/pages/index.rb +16 -13
  239. data/lib/active_admin/views/pages/layout.rb +1 -0
  240. data/lib/active_admin/views/pages/page.rb +1 -0
  241. data/lib/active_admin/views/pages/show.rb +1 -0
  242. data/lib/active_admin/views/tabbed_navigation.rb +3 -2
  243. data/lib/active_admin/views/title_bar.rb +2 -1
  244. data/lib/active_admin/views.rb +2 -1
  245. data/lib/active_admin.rb +63 -64
  246. data/lib/activeadmin.rb +2 -1
  247. data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
  248. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  249. data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
  250. data/lib/generators/active_admin/install/install_generator.rb +15 -8
  251. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
  252. data/lib/generators/active_admin/install/templates/dashboard.rb +1 -0
  253. data/lib/generators/active_admin/page/page_generator.rb +2 -1
  254. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  255. data/lib/generators/active_admin/resource/resource_generator.rb +4 -3
  256. data/lib/generators/active_admin/resource/templates/admin.rb.erb +4 -2
  257. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  258. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  259. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  260. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  261. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  262. data/lib/ransack_ext.rb +9 -8
  263. metadata +62 -91
  264. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  265. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  266. data/app/assets/images/active_admin/orderable.png +0 -0
  267. data/app/assets/javascripts/active_admin/base.es6 +0 -23
  268. data/app/assets/javascripts/active_admin/initializers/filters.es6 +0 -45
  269. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +0 -41
  270. data/app/assets/javascripts/active_admin/lib/per_page.es6 +0 -47
  271. /data/app/{assets/javascripts/active_admin/ext/jquery-ui.es6 → javascript/active_admin/ext/jquery-ui.js} +0 -0
  272. /data/app/{assets/javascripts/active_admin/ext/jquery.es6 → javascript/active_admin/ext/jquery.js} +0 -0
  273. /data/app/{assets/javascripts/active_admin/initializers/datepicker.es6 → javascript/active_admin/initializers/datepicker.js} +0 -0
  274. /data/app/{assets/javascripts/active_admin/initializers/tabs.es6 → javascript/active_admin/initializers/tabs.js} +0 -0
@@ -0,0 +1,524 @@
1
+ /**
2
+ * Warning: This file is auto-generated, do not modify. Instead, make your changes in 'app/javascript/active_admin/' and run `yarn build`
3
+ */
4
+ //= require jquery3
5
+ //= require jquery-ui/widgets/datepicker
6
+ //= require jquery-ui/widgets/dialog
7
+ //= require jquery-ui/widgets/sortable
8
+ //= require jquery-ui/widgets/tabs
9
+ //= require jquery-ui/widget
10
+ //= require jquery_ujs
11
+ //= require_self
12
+
13
+ (function(global, factory) {
14
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("jquery"), require("jquery-ui/ui/widgets/datepicker"), require("jquery-ui/ui/widgets/dialog"), require("jquery-ui/ui/widgets/sortable"), require("jquery-ui/ui/widgets/tabs"), require("jquery-ui/ui/widget"), require("jquery-ujs")) : typeof define === "function" && define.amd ? define([ "exports", "jquery", "jquery-ui/ui/widgets/datepicker", "jquery-ui/ui/widgets/dialog", "jquery-ui/ui/widgets/sortable", "jquery-ui/ui/widgets/tabs", "jquery-ui/ui/widget", "jquery-ujs" ], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self,
15
+ factory(global.ActiveAdmin = {}));
16
+ })(this, function(exports) {
17
+ "use strict";
18
+ $.fn.serializeObject = function() {
19
+ return this.serializeArray().reduce(function(obj, item) {
20
+ obj[item.name] = item.value;
21
+ return obj;
22
+ }, {});
23
+ };
24
+ $.ui.dialog.prototype._focusTabbable = function() {
25
+ this.uiDialog.focus();
26
+ };
27
+ function ModalDialog(message, inputs, callback) {
28
+ var html = '<form id="dialog_confirm" title="' + message + '"><ul>';
29
+ for (var name in inputs) {
30
+ var opts, wrapper;
31
+ var type = inputs[name];
32
+ if (/^(datepicker|checkbox|text|number)$/.test(type)) {
33
+ wrapper = "input";
34
+ } else if (type === "textarea") {
35
+ wrapper = "textarea";
36
+ } else if ($.isArray(type)) {
37
+ var _ref = [ "select", type, "" ];
38
+ wrapper = _ref[0];
39
+ opts = _ref[1];
40
+ type = _ref[2];
41
+ } else {
42
+ throw new Error("Unsupported input type: {" + name + ": " + type + "}");
43
+ }
44
+ var klass = type === "datepicker" ? type : "";
45
+ html += "<li>\n <label>" + (name.charAt(0).toUpperCase() + name.slice(1)) + "</label>\n <" + wrapper + ' name="' + name + '" class="' + klass + '" type="' + type + '">' + (opts ? function() {
46
+ var result = [];
47
+ opts.forEach(function(v) {
48
+ var $elem = $("<option></option>");
49
+ if ($.isArray(v)) {
50
+ $elem.text(v[0]).val(v[1]);
51
+ } else {
52
+ $elem.text(v);
53
+ }
54
+ result.push($elem.wrap("<div></div>").parent().html());
55
+ });
56
+ return result;
57
+ }().join("") : "") + ("</" + wrapper + ">") + "</li>";
58
+ var _ref2 = [];
59
+ wrapper = _ref2[0];
60
+ opts = _ref2[1];
61
+ type = _ref2[2];
62
+ klass = _ref2[3];
63
+ }
64
+ html += "</ul></form>";
65
+ var form = $(html).appendTo("body");
66
+ $("body").trigger("modal_dialog:before_open", [ form ]);
67
+ form.dialog({
68
+ modal: true,
69
+ open: function open(_event, _ui) {
70
+ $("body").trigger("modal_dialog:after_open", [ form ]);
71
+ },
72
+ dialogClass: "active_admin_dialog",
73
+ buttons: {
74
+ OK: function OK() {
75
+ callback($(this).serializeObject());
76
+ $(this).dialog("close");
77
+ },
78
+ Cancel: function Cancel() {
79
+ $(this).dialog("close").remove();
80
+ }
81
+ }
82
+ });
83
+ }
84
+ var onDOMReady$2 = function onDOMReady() {
85
+ $(".batch_actions_selector li a").off("click confirm:complete");
86
+ $(".batch_actions_selector li a").on("click", function(event) {
87
+ var _this = this;
88
+ var message;
89
+ event.stopPropagation();
90
+ event.preventDefault();
91
+ if (message = $(this).data("confirm")) {
92
+ ModalDialog(message, $(this).data("inputs"), function(inputs) {
93
+ $(_this).trigger("confirm:complete", inputs);
94
+ });
95
+ } else {
96
+ $(this).trigger("confirm:complete");
97
+ }
98
+ });
99
+ $(".batch_actions_selector li a").on("confirm:complete", function(event, inputs) {
100
+ var val;
101
+ if (val = JSON.stringify(inputs)) {
102
+ $("#batch_action_inputs").removeAttr("disabled").val(val);
103
+ } else {
104
+ $("#batch_action_inputs").attr("disabled", "disabled");
105
+ }
106
+ $("#batch_action").val($(this).data("action"));
107
+ $("#collection_selection").submit();
108
+ });
109
+ if ($(".batch_actions_selector").length && $(":checkbox.toggle_all").length) {
110
+ if ($(".paginated_collection table.index_table").length) {
111
+ $(".paginated_collection table.index_table").tableCheckboxToggler();
112
+ } else {
113
+ $(".paginated_collection").checkboxToggler();
114
+ }
115
+ $(document).on("change", ".paginated_collection :checkbox", function() {
116
+ if ($(".paginated_collection :checkbox:checked").length && $(".dropdown_menu_list").children().length) {
117
+ $(".batch_actions_selector").each(function() {
118
+ $(this).aaDropdownMenu("enable");
119
+ });
120
+ } else {
121
+ $(".batch_actions_selector").each(function() {
122
+ $(this).aaDropdownMenu("disable");
123
+ });
124
+ }
125
+ });
126
+ }
127
+ };
128
+ $(document).ready(onDOMReady$2).on("page:load turbolinks:load", onDOMReady$2);
129
+ var CheckboxToggler = function() {
130
+ function CheckboxToggler(options, container) {
131
+ this.options = options;
132
+ this.container = container;
133
+ this._init();
134
+ this._bind();
135
+ }
136
+ var _proto = CheckboxToggler.prototype;
137
+ _proto.option = function option(_key, _value) {};
138
+ _proto._init = function _init() {
139
+ if (!this.container) {
140
+ throw new Error("Container element not found");
141
+ } else {
142
+ this.$container = $(this.container);
143
+ }
144
+ if (!this.$container.find(".toggle_all").length) {
145
+ throw new Error('"toggle all" checkbox not found');
146
+ } else {
147
+ this.toggle_all_checkbox = this.$container.find(".toggle_all");
148
+ }
149
+ this.checkboxes = this.$container.find(":checkbox").not(this.toggle_all_checkbox);
150
+ };
151
+ _proto._bind = function _bind() {
152
+ var _this = this;
153
+ this.checkboxes.change(function(event) {
154
+ return _this._didChangeCheckbox(event.target);
155
+ });
156
+ this.toggle_all_checkbox.change(function() {
157
+ return _this._didChangeToggleAllCheckbox();
158
+ });
159
+ };
160
+ _proto._didChangeCheckbox = function _didChangeCheckbox(_checkbox) {
161
+ var numChecked = this.checkboxes.filter(":checked").length;
162
+ var allChecked = numChecked === this.checkboxes.length;
163
+ var someChecked = numChecked > 0 && numChecked < this.checkboxes.length;
164
+ this.toggle_all_checkbox.prop({
165
+ checked: allChecked,
166
+ indeterminate: someChecked
167
+ });
168
+ };
169
+ _proto._didChangeToggleAllCheckbox = function _didChangeToggleAllCheckbox() {
170
+ var setting = this.toggle_all_checkbox.prop("checked");
171
+ this.checkboxes.prop({
172
+ checked: setting
173
+ });
174
+ return setting;
175
+ };
176
+ return CheckboxToggler;
177
+ }();
178
+ $.widget.bridge("checkboxToggler", CheckboxToggler);
179
+ (function($) {
180
+ $(document).on("focus", "input.datepicker:not(.hasDatepicker)", function() {
181
+ var input = $(this);
182
+ if (input[0].type === "date") {
183
+ return;
184
+ }
185
+ var defaults = {
186
+ dateFormat: "yy-mm-dd"
187
+ };
188
+ var options = input.data("datepicker-options");
189
+ input.datepicker($.extend(defaults, options));
190
+ });
191
+ })(jQuery);
192
+ var DropdownMenu = function() {
193
+ function DropdownMenu(options, element) {
194
+ this.options = options;
195
+ this.element = element;
196
+ this.$element = $(this.element);
197
+ var defaults = {
198
+ fadeInDuration: 20,
199
+ fadeOutDuration: 100,
200
+ onClickActionItemCallback: null
201
+ };
202
+ this.options = $.extend(defaults, this.options);
203
+ this.isOpen = false;
204
+ this.$menuButton = this.$element.find(".dropdown_menu_button");
205
+ this.$menuList = this.$element.find(".dropdown_menu_list_wrapper");
206
+ this._buildMenuList();
207
+ this._bind();
208
+ }
209
+ var _proto = DropdownMenu.prototype;
210
+ _proto.open = function open() {
211
+ this.isOpen = true;
212
+ this.$menuList.fadeIn(this.options.fadeInDuration);
213
+ this._position();
214
+ return this;
215
+ };
216
+ _proto.close = function close() {
217
+ this.isOpen = false;
218
+ this.$menuList.fadeOut(this.options.fadeOutDuration);
219
+ return this;
220
+ };
221
+ _proto.destroy = function destroy() {
222
+ this.$element = null;
223
+ return this;
224
+ };
225
+ _proto.isDisabled = function isDisabled() {
226
+ return this.$menuButton.hasClass("disabled");
227
+ };
228
+ _proto.disable = function disable() {
229
+ this.$menuButton.addClass("disabled");
230
+ };
231
+ _proto.enable = function enable() {
232
+ this.$menuButton.removeClass("disabled");
233
+ };
234
+ _proto.option = function option(key, value) {
235
+ if ($.isPlainObject(key)) {
236
+ return this.options = $.extend(true, this.options, key);
237
+ } else if (key != null) {
238
+ return this.options[key];
239
+ } else {
240
+ return this.options[key] = value;
241
+ }
242
+ };
243
+ _proto._buildMenuList = function _buildMenuList() {
244
+ this.$nipple = $('<div class="dropdown_menu_nipple"></div>');
245
+ this.$menuList.prepend(this.$nipple);
246
+ this.$menuList.hide();
247
+ };
248
+ _proto._bind = function _bind() {
249
+ var _this = this;
250
+ $("body").click(function() {
251
+ if (_this.isOpen) {
252
+ _this.close();
253
+ }
254
+ });
255
+ this.$menuButton.click(function() {
256
+ if (!_this.isDisabled()) {
257
+ if (_this.isOpen) {
258
+ _this.close();
259
+ } else {
260
+ _this.open();
261
+ }
262
+ }
263
+ return false;
264
+ });
265
+ };
266
+ _proto._position = function _position() {
267
+ this.$menuList.css("top", this.$menuButton.position().top + this.$menuButton.outerHeight() + 10);
268
+ var button_left = this.$menuButton.position().left;
269
+ var button_center = this.$menuButton.outerWidth() / 2;
270
+ var button_right = button_left + button_center * 2;
271
+ var menu_center = this.$menuList.outerWidth() / 2;
272
+ var nipple_center = this.$nipple.outerWidth() / 2;
273
+ var window_right = $(window).width();
274
+ var centered_menu_left = button_left + button_center - menu_center;
275
+ var centered_menu_right = button_left + button_center + menu_center;
276
+ if (centered_menu_left < 0) {
277
+ this.$menuList.css("left", button_left);
278
+ this.$nipple.css("left", button_center - nipple_center);
279
+ } else if (centered_menu_right > window_right) {
280
+ this.$menuList.css("right", window_right - button_right);
281
+ this.$nipple.css("right", button_center - nipple_center);
282
+ } else {
283
+ this.$menuList.css("left", centered_menu_left);
284
+ this.$nipple.css("left", menu_center - nipple_center);
285
+ }
286
+ };
287
+ return DropdownMenu;
288
+ }();
289
+ $.widget.bridge("aaDropdownMenu", DropdownMenu);
290
+ var onDOMReady$1 = function onDOMReady() {
291
+ return $(".dropdown_menu").aaDropdownMenu();
292
+ };
293
+ $(document).ready(onDOMReady$1).on("page:load turbolinks:load", onDOMReady$1);
294
+ function hasTurbolinks() {
295
+ return typeof Turbolinks !== "undefined" && Turbolinks.supported;
296
+ }
297
+ function turbolinksVisit(params) {
298
+ var path = [ window.location.pathname, "?", toQueryString(params) ].join("");
299
+ Turbolinks.visit(path);
300
+ }
301
+ function queryString() {
302
+ return (window.location.search || "").replace(/^\?/, "");
303
+ }
304
+ function queryStringToParams() {
305
+ var decode = function decode(value) {
306
+ return decodeURIComponent((value || "").replace(/\+/g, "%20"));
307
+ };
308
+ return queryString().split("&").map(function(pair) {
309
+ return pair.split("=");
310
+ }).map(function(_ref) {
311
+ var key = _ref[0], value = _ref[1];
312
+ return {
313
+ name: decode(key),
314
+ value: decode(value)
315
+ };
316
+ });
317
+ }
318
+ function toQueryString(params) {
319
+ var encode = function encode(value) {
320
+ return encodeURIComponent(value || "");
321
+ };
322
+ return params.map(function(_ref2) {
323
+ var name = _ref2.name, value = _ref2.value;
324
+ return [ encode(name), encode(value) ];
325
+ }).map(function(pair) {
326
+ return pair.join("=");
327
+ }).join("&");
328
+ }
329
+ var Filters = function() {
330
+ function Filters() {}
331
+ Filters._clearForm = function _clearForm(event) {
332
+ var regex = /^(q\[|q%5B|q%5b|page|utf8|commit)/;
333
+ var params = queryStringToParams().filter(function(_ref) {
334
+ var name = _ref.name;
335
+ return !name.match(regex);
336
+ });
337
+ event.preventDefault();
338
+ if (hasTurbolinks()) {
339
+ turbolinksVisit(params);
340
+ } else {
341
+ window.location.search = toQueryString(params);
342
+ }
343
+ };
344
+ Filters._disableEmptyInputFields = function _disableEmptyInputFields(event) {
345
+ var params = $(this).find(":input").filter(function(i, input) {
346
+ return input.value === "";
347
+ }).prop({
348
+ disabled: true
349
+ }).end().serializeArray();
350
+ if (hasTurbolinks()) {
351
+ event.preventDefault();
352
+ turbolinksVisit(params);
353
+ }
354
+ };
355
+ Filters._setSearchType = function _setSearchType() {
356
+ $(this).siblings("input").prop({
357
+ name: "q[" + this.value + "]"
358
+ });
359
+ };
360
+ return Filters;
361
+ }();
362
+ (function($) {
363
+ $(document).on("click", ".clear_filters_btn", Filters._clearForm).on("submit", ".filter_form", Filters._disableEmptyInputFields).on("change", ".filter_form_field.select_and_search select", Filters._setSearchType);
364
+ })(jQuery);
365
+ $(function() {
366
+ $(document).on("click", "a.button.has_many_remove", function(event) {
367
+ event.preventDefault();
368
+ var parent = $(this).closest(".has_many_container");
369
+ var to_remove = $(this).closest("fieldset");
370
+ recompute_positions(parent);
371
+ parent.trigger("has_many_remove:before", [ to_remove, parent ]);
372
+ to_remove.remove();
373
+ return parent.trigger("has_many_remove:after", [ to_remove, parent ]);
374
+ });
375
+ $(document).on("click", "a.button.has_many_add", function(event) {
376
+ var before_add;
377
+ event.preventDefault();
378
+ var parent = $(this).closest(".has_many_container");
379
+ parent.trigger(before_add = $.Event("has_many_add:before"), [ parent ]);
380
+ if (!before_add.isDefaultPrevented()) {
381
+ var index = parent.data("has_many_index") || parent.children("fieldset").length - 1;
382
+ parent.data({
383
+ has_many_index: ++index
384
+ });
385
+ var regex = new RegExp($(this).data("placeholder"), "g");
386
+ var html = $(this).data("html").replace(regex, index);
387
+ var fieldset = $(html).insertBefore(this);
388
+ recompute_positions(parent);
389
+ return parent.trigger("has_many_add:after", [ fieldset, parent ]);
390
+ }
391
+ });
392
+ $(document).on("change", '.has_many_container[data-sortable] :input[name$="[_destroy]"]', function() {
393
+ recompute_positions($(this).closest(".has_many"));
394
+ });
395
+ $(document).on("has_many_add:after", ".has_many_container", init_sortable);
396
+ });
397
+ var init_sortable = function init_sortable() {
398
+ var elems = $(".has_many_container[data-sortable]:not(.ui-sortable)");
399
+ elems.sortable({
400
+ items: "> fieldset",
401
+ handle: "> ol > .handle",
402
+ start: function start(ev, ui) {
403
+ ui.item.css({
404
+ opacity: .3
405
+ });
406
+ },
407
+ stop: function stop(ev, ui) {
408
+ ui.item.css({
409
+ opacity: 1
410
+ });
411
+ recompute_positions($(this));
412
+ }
413
+ });
414
+ elems.each(recompute_positions);
415
+ };
416
+ var recompute_positions = function recompute_positions(parent) {
417
+ parent = parent instanceof jQuery ? parent : $(this);
418
+ var input_name = parent.data("sortable");
419
+ var position = parseInt(parent.data("sortable-start") || 0, 10);
420
+ parent.children("fieldset").each(function() {
421
+ var destroy_input = $(this).find("> ol > .input > :input[name$='[_destroy]']");
422
+ var sortable_input = $(this).find("> ol > .input > :input[name$='[" + input_name + "]']");
423
+ if (sortable_input.length) {
424
+ sortable_input.val(destroy_input.is(":checked") ? "" : position++);
425
+ }
426
+ });
427
+ };
428
+ $(document).ready(init_sortable).on("page:load turbolinks:load", init_sortable);
429
+ var PerPage = function() {
430
+ function PerPage(element) {
431
+ this.element = element;
432
+ }
433
+ var _proto = PerPage.prototype;
434
+ _proto.update = function update() {
435
+ var params = queryStringToParams().filter(function(_ref) {
436
+ var name = _ref.name;
437
+ return name != "per_page" || name != "page";
438
+ });
439
+ params.push({
440
+ name: "per_page",
441
+ value: this.element.value
442
+ });
443
+ if (hasTurbolinks()) {
444
+ turbolinksVisit(params);
445
+ } else {
446
+ window.location.search = toQueryString(params);
447
+ }
448
+ };
449
+ PerPage._jQueryInterface = function _jQueryInterface(config) {
450
+ return this.each(function() {
451
+ var $this = $(this);
452
+ var data = $this.data("perPage");
453
+ if (!data) {
454
+ data = new PerPage(this);
455
+ $this.data("perPage", data);
456
+ }
457
+ if (config === "update") {
458
+ data[config]();
459
+ }
460
+ });
461
+ };
462
+ return PerPage;
463
+ }();
464
+ (function($) {
465
+ $(document).on("change", ".pagination_per_page > select", function(_event) {
466
+ PerPage._jQueryInterface.call($(this), "update");
467
+ });
468
+ $.fn["perPage"] = PerPage._jQueryInterface;
469
+ $.fn["perPage"].Constructor = PerPage;
470
+ })(jQuery);
471
+ function _inheritsLoose(subClass, superClass) {
472
+ subClass.prototype = Object.create(superClass.prototype);
473
+ subClass.prototype.constructor = subClass;
474
+ _setPrototypeOf(subClass, superClass);
475
+ }
476
+ function _setPrototypeOf(o, p) {
477
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
478
+ o.__proto__ = p;
479
+ return o;
480
+ };
481
+ return _setPrototypeOf(o, p);
482
+ }
483
+ var TableCheckboxToggler = function(_CheckboxToggler) {
484
+ _inheritsLoose(TableCheckboxToggler, _CheckboxToggler);
485
+ function TableCheckboxToggler() {
486
+ return _CheckboxToggler.apply(this, arguments) || this;
487
+ }
488
+ var _proto = TableCheckboxToggler.prototype;
489
+ _proto._bind = function _bind() {
490
+ var _this = this;
491
+ _CheckboxToggler.prototype._bind.apply(this, arguments);
492
+ this.$container.find("tbody td").click(function(event) {
493
+ if (event.target.type !== "checkbox") {
494
+ _this._didClickCell(event.target);
495
+ }
496
+ });
497
+ };
498
+ _proto._didChangeCheckbox = function _didChangeCheckbox(checkbox) {
499
+ _CheckboxToggler.prototype._didChangeCheckbox.apply(this, arguments);
500
+ $(checkbox).parents("tr").toggleClass("selected", checkbox.checked);
501
+ };
502
+ _proto._didChangeToggleAllCheckbox = function _didChangeToggleAllCheckbox() {
503
+ this.$container.find("tbody tr").toggleClass("selected", _CheckboxToggler.prototype._didChangeToggleAllCheckbox.apply(this, arguments));
504
+ };
505
+ _proto._didClickCell = function _didClickCell(cell) {
506
+ $(cell).parent("tr").find(":checkbox").click();
507
+ };
508
+ return TableCheckboxToggler;
509
+ }(CheckboxToggler);
510
+ $.widget.bridge("tableCheckboxToggler", TableCheckboxToggler);
511
+ var onDOMReady = function onDOMReady() {
512
+ return $("#active_admin_content .tabs").tabs();
513
+ };
514
+ $(document).ready(onDOMReady).on("page:load turbolinks:load", onDOMReady);
515
+ function modal_dialog(message, inputs, callback) {
516
+ console.warn("ActiveAdmin.modal_dialog is deprecated in favor of ActiveAdmin.ModalDialog, please update usage.");
517
+ return ModalDialog(message, inputs, callback);
518
+ }
519
+ exports.ModalDialog = ModalDialog;
520
+ exports.modal_dialog = modal_dialog;
521
+ Object.defineProperty(exports, "__esModule", {
522
+ value: true
523
+ });
524
+ });
@@ -1,41 +1,57 @@
1
1
  /* Active Admin CSS */
2
- // Normalize
3
- @import "active_admin/normalize";
2
+ @media screen {
3
+ // Normalize
4
+ @import "./normalize";
4
5
 
5
- // Partials
6
- @import "active_admin/typography";
7
- @import "active_admin/header";
8
- @import "active_admin/forms";
9
- @import "active_admin/components/comments";
10
- @import "active_admin/components/flash_messages";
11
- @import "active_admin/components/date_picker";
12
- @import "active_admin/components/tables";
13
- @import "active_admin/components/batch_actions";
14
- @import "active_admin/components/modal_dialog";
15
- @import "active_admin/components/blank_slates";
16
- @import "active_admin/components/breadcrumbs";
17
- @import "active_admin/components/dropdown_menu";
18
- @import "active_admin/components/buttons";
19
- @import "active_admin/components/grid";
20
- @import "active_admin/components/links";
21
- @import "active_admin/components/pagination";
22
- @import "active_admin/components/panels";
23
- @import "active_admin/components/columns";
24
- @import "active_admin/components/scopes";
25
- @import "active_admin/components/status_tags";
26
- @import "active_admin/components/table_tools";
27
- @import "active_admin/components/index_list";
28
- @import "active_admin/components/unsupported_browser";
29
- @import "active_admin/components/tabs";
30
- @import "active_admin/pages/logged_out";
31
- @import "active_admin/structure/footer";
32
- @import "active_admin/structure/main_structure";
33
- @import "active_admin/structure/title_bar";
6
+ // Partials
7
+ @import "./typography";
8
+ @import "./header";
9
+ @import "./forms";
10
+ @import "./components/comments";
11
+ @import "./components/flash_messages";
12
+ @import "./components/date_picker";
13
+ @import "./components/tables";
14
+ @import "./components/batch_actions";
15
+ @import "./components/modal_dialog";
16
+ @import "./components/blank_slates";
17
+ @import "./components/breadcrumbs";
18
+ @import "./components/dropdown_menu";
19
+ @import "./components/buttons";
20
+ @import "./components/grid";
21
+ @import "./components/links";
22
+ @import "./components/pagination";
23
+ @import "./components/panels";
24
+ @import "./components/columns";
25
+ @import "./components/scopes";
26
+ @import "./components/status_tags";
27
+ @import "./components/table_tools";
28
+ @import "./components/index_list";
29
+ @import "./components/unsupported_browser";
30
+ @import "./components/tabs";
31
+ @import "./pages/logged_out";
32
+ @import "./structure/footer";
33
+ @import "./structure/main_structure";
34
+ @import "./structure/title_bar";
34
35
 
35
- body {
36
- @include sans-family;
37
- line-height: 1.5;
38
- font-size: 72%;
39
- background: $body-background-color;
40
- color: $text-color;
36
+ html {
37
+ box-sizing: border-box;
38
+ }
39
+
40
+ *,
41
+ *:before,
42
+ *:after {
43
+ box-sizing: inherit;
44
+ }
45
+
46
+ body {
47
+ @include sans-family;
48
+ line-height: 1.5;
49
+ font-size: 72%;
50
+ background: $body-background-color;
51
+ color: $text-color;
52
+ }
53
+ }
54
+
55
+ @media print {
56
+ @import "./print";
41
57
  }
@@ -250,8 +250,6 @@ form {
250
250
 
251
251
  // -------------------------------------- Sidebar Forms
252
252
 
253
- $sidebar-inner-content-width: $sidebar-width - ($section-padding * 2);
254
-
255
253
  .sidebar_section {
256
254
 
257
255
  label {
@@ -274,13 +272,6 @@ $sidebar-inner-content-width: $sidebar-width - ($section-padding * 2);
274
272
 
275
273
  // -------------------------------------- Filter Forms
276
274
 
277
- $filter-field-seperator-width: 12px;
278
-
279
- $side-by-side-filter-input-width: ($sidebar-inner-content-width / 2) - ($text-input-horizontal-padding * 2) - $filter-field-seperator-width;
280
- $side-by-side-filter-select-width: ($sidebar-inner-content-width / 2) - $filter-field-seperator-width;
281
-
282
- $date-range-filter-input-width: ($sidebar-inner-content-width / 2) - ($filter-field-seperator-width / 2);
283
-
284
275
  form.filter_form {
285
276
  .filter_form_field {
286
277
  margin-bottom: 10px;
@@ -313,7 +304,6 @@ form.filter_form {
313
304
 
314
305
  &.filter_date_range {
315
306
  input[type=text] {
316
- box-sizing: border-box;
317
307
  width: $date-range-filter-input-width;
318
308
 
319
309
  + input {