activeadmin 1.0.0 → 2.13.1

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 (618) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +851 -68
  3. data/CODE_OF_CONDUCT.md +64 -12
  4. data/CONTRIBUTING.md +80 -82
  5. data/README.md +73 -19
  6. data/app/assets/javascripts/active_admin/base.js +524 -0
  7. data/app/assets/stylesheets/active_admin/_base.scss +53 -37
  8. data/app/assets/stylesheets/active_admin/_forms.scss +7 -35
  9. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  10. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  11. data/app/assets/stylesheets/active_admin/_normalize.scss +349 -0
  12. data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +3 -4
  13. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
  14. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  15. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
  16. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
  17. data/app/assets/stylesheets/active_admin/components/_pagination.scss +11 -0
  18. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  19. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -4
  20. data/app/assets/stylesheets/active_admin/components/_tables.scss +5 -3
  21. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  22. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -10
  23. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
  25. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  26. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
  27. data/app/javascript/active_admin/base.js +28 -0
  28. data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  29. data/app/javascript/active_admin/ext/jquery.js +9 -0
  30. data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  31. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  32. data/app/javascript/active_admin/initializers/datepicker.js +16 -0
  33. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  34. data/app/javascript/active_admin/initializers/filters.js +10 -0
  35. data/app/javascript/active_admin/initializers/has-many.js +98 -0
  36. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  37. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  38. data/app/javascript/active_admin/initializers/tabs.js +6 -0
  39. data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  40. data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  41. data/app/javascript/active_admin/lib/filters.js +39 -0
  42. data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  43. data/app/javascript/active_admin/lib/per-page.js +38 -0
  44. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  45. data/app/javascript/active_admin/lib/utils.js +40 -0
  46. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  47. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  48. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  49. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  50. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  51. data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
  52. data/app/views/active_admin/devise/sessions/new.html.erb +2 -2
  53. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  54. data/app/views/active_admin/devise/shared/_links.erb +12 -6
  55. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  56. data/app/views/active_admin/page/index.html.arb +1 -0
  57. data/app/views/active_admin/resource/edit.html.arb +1 -0
  58. data/app/views/active_admin/resource/index.html.arb +1 -0
  59. data/app/views/active_admin/resource/new.html.arb +1 -0
  60. data/app/views/active_admin/resource/show.html.arb +1 -0
  61. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  62. data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  63. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  64. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  65. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  66. data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  67. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  68. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  69. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  70. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  71. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  72. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  73. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  74. data/app/views/layouts/active_admin.html.arb +1 -0
  75. data/app/views/layouts/active_admin_logged_out.html.erb +17 -7
  76. data/config/locales/ar.yml +10 -11
  77. data/config/locales/az.yml +138 -0
  78. data/config/locales/bg.yml +1 -3
  79. data/config/locales/bs.yml +1 -2
  80. data/config/locales/ca.yml +1 -3
  81. data/config/locales/cs.yml +1 -2
  82. data/config/locales/da.yml +2 -3
  83. data/config/locales/de-CH.yml +2 -3
  84. data/config/locales/de.yml +30 -3
  85. data/config/locales/el.yml +2 -3
  86. data/config/locales/en-CA.yml +139 -0
  87. data/config/locales/en-GB.yml +46 -5
  88. data/config/locales/en.yml +32 -8
  89. data/config/locales/eo.yml +145 -0
  90. data/config/locales/es-MX.yml +6 -3
  91. data/config/locales/es.yml +36 -10
  92. data/config/locales/fa.yml +1 -2
  93. data/config/locales/fi.yml +2 -3
  94. data/config/locales/fr.yml +15 -7
  95. data/config/locales/he.yml +53 -7
  96. data/config/locales/hr.yml +1 -2
  97. data/config/locales/hu.yml +5 -2
  98. data/config/locales/id.yml +2 -3
  99. data/config/locales/it.yml +33 -7
  100. data/config/locales/ja.yml +9 -5
  101. data/config/locales/ko.yml +2 -3
  102. data/config/locales/lt.yml +27 -6
  103. data/config/locales/lv.yml +3 -4
  104. data/config/locales/mk.yml +134 -0
  105. data/config/locales/nb.yml +16 -7
  106. data/config/locales/nl.yml +14 -4
  107. data/config/locales/pl.yml +75 -5
  108. data/config/locales/pt-BR.yml +10 -3
  109. data/config/locales/pt-PT.yml +1 -2
  110. data/config/locales/ro.yml +4 -4
  111. data/config/locales/ru.yml +4 -3
  112. data/config/locales/sk.yml +60 -2
  113. data/config/locales/sv-SE.yml +4 -3
  114. data/config/locales/tr.yml +10 -2
  115. data/config/locales/uk.yml +4 -3
  116. data/config/locales/vi.yml +53 -12
  117. data/config/locales/zh-CN.yml +34 -7
  118. data/config/locales/zh-TW.yml +2 -3
  119. data/docs/.gitignore +1 -0
  120. data/docs/0-installation.md +42 -15
  121. data/docs/1-general-configuration.md +46 -4
  122. data/docs/10-custom-pages.md +24 -5
  123. data/docs/11-decorators.md +17 -5
  124. data/docs/12-arbre-components.md +47 -9
  125. data/docs/13-authorization-adapter.md +69 -35
  126. data/docs/14-gotchas.md +41 -22
  127. data/docs/2-resource-customization.md +57 -20
  128. data/docs/3-index-pages/custom-index.md +2 -1
  129. data/docs/3-index-pages/index-as-block.md +0 -5
  130. data/docs/3-index-pages/index-as-blog.md +1 -6
  131. data/docs/3-index-pages/index-as-grid.md +0 -5
  132. data/docs/3-index-pages/index-as-table.md +13 -14
  133. data/docs/3-index-pages.md +47 -12
  134. data/docs/4-csv-format.md +2 -1
  135. data/docs/5-forms.md +68 -24
  136. data/docs/6-show-pages.md +14 -1
  137. data/docs/7-sidebars.md +2 -1
  138. data/docs/8-custom-actions.md +16 -2
  139. data/docs/9-batch-actions.md +5 -3
  140. data/docs/CNAME +1 -1
  141. data/docs/Gemfile +4 -2
  142. data/docs/Gemfile.lock +283 -0
  143. data/docs/_config.yml +3 -1
  144. data/docs/_includes/toc.html +1 -1
  145. data/docs/_includes/top-menu.html +9 -1
  146. data/docs/documentation.md +21 -23
  147. data/docs/images/tidelift.svg +14 -0
  148. data/docs/index.html +110 -9
  149. data/docs/stylesheets/main.css +55 -2
  150. data/lib/active_admin/abstract_view_factory.rb +14 -51
  151. data/lib/active_admin/application.rb +65 -170
  152. data/lib/active_admin/application_settings.rb +43 -0
  153. data/lib/active_admin/asset_registration.rb +1 -0
  154. data/lib/active_admin/authorization_adapter.rb +4 -6
  155. data/lib/active_admin/base_controller/authorization.rb +18 -19
  156. data/lib/active_admin/base_controller/menu.rb +10 -9
  157. data/lib/active_admin/base_controller.rb +12 -12
  158. data/lib/active_admin/batch_actions/controller.rb +6 -5
  159. data/lib/active_admin/batch_actions/resource_extension.rb +16 -10
  160. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
  161. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
  162. data/lib/active_admin/batch_actions/views/selection_cells.rb +8 -6
  163. data/lib/active_admin/batch_actions.rb +1 -0
  164. data/lib/active_admin/callbacks.rb +2 -1
  165. data/lib/active_admin/cancan_adapter.rb +2 -1
  166. data/lib/active_admin/collection_decorator.rb +32 -0
  167. data/lib/active_admin/component.rb +1 -0
  168. data/lib/active_admin/controller_action.rb +3 -1
  169. data/lib/active_admin/csv_builder.rb +17 -23
  170. data/lib/active_admin/dependency.rb +15 -78
  171. data/lib/active_admin/deprecation.rb +1 -25
  172. data/lib/active_admin/devise.rb +18 -7
  173. data/lib/active_admin/dsl.rb +5 -11
  174. data/lib/active_admin/dynamic_setting.rb +39 -0
  175. data/lib/active_admin/dynamic_settings_node.rb +29 -0
  176. data/lib/active_admin/engine.rb +16 -7
  177. data/lib/active_admin/error.rb +5 -4
  178. data/lib/active_admin/filters/active.rb +14 -14
  179. data/lib/active_admin/filters/active_filter.rb +124 -0
  180. data/lib/active_admin/filters/active_sidebar.rb +28 -0
  181. data/lib/active_admin/filters/dsl.rb +1 -0
  182. data/lib/active_admin/filters/forms.rb +12 -9
  183. data/lib/active_admin/filters/formtastic_addons.rb +3 -7
  184. data/lib/active_admin/filters/resource_extension.rb +32 -35
  185. data/lib/active_admin/filters.rb +8 -5
  186. data/lib/active_admin/form_builder.rb +110 -70
  187. data/lib/active_admin/generators/boilerplate.rb +13 -4
  188. data/lib/active_admin/helpers/collection.rb +2 -0
  189. data/lib/active_admin/helpers/i18n.rb +1 -0
  190. data/lib/active_admin/helpers/optional_display.rb +3 -2
  191. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  192. data/lib/active_admin/helpers/scope_chain.rb +2 -0
  193. data/lib/active_admin/inputs/datepicker_input.rb +14 -6
  194. data/lib/active_admin/inputs/filters/base/search_method_select.rb +7 -6
  195. data/lib/active_admin/inputs/filters/base.rb +2 -1
  196. data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
  197. data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
  198. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  199. data/lib/active_admin/inputs/filters/date_range_input.rb +24 -12
  200. data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
  201. data/lib/active_admin/inputs/filters/select_input.rb +8 -3
  202. data/lib/active_admin/inputs/filters/string_input.rb +1 -0
  203. data/lib/active_admin/inputs/filters/text_input.rb +1 -1
  204. data/lib/active_admin/inputs.rb +1 -0
  205. data/lib/active_admin/localizers/resource_localizer.rb +4 -3
  206. data/lib/active_admin/localizers.rb +2 -1
  207. data/lib/active_admin/menu.rb +13 -15
  208. data/lib/active_admin/menu_collection.rb +1 -2
  209. data/lib/active_admin/menu_item.rb +11 -38
  210. data/lib/active_admin/namespace.rb +34 -21
  211. data/lib/active_admin/namespace_settings.rb +127 -0
  212. data/lib/active_admin/order_clause.rb +4 -3
  213. data/lib/active_admin/orm/active_record/comments/comment.rb +6 -9
  214. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  215. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  216. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  217. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +37 -24
  218. data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
  219. data/lib/active_admin/orm/active_record/comments.rb +35 -23
  220. data/lib/active_admin/orm/active_record.rb +2 -1
  221. data/lib/active_admin/orm/mongoid.rb +1 -0
  222. data/lib/active_admin/page.rb +2 -1
  223. data/lib/active_admin/page_controller.rb +2 -1
  224. data/lib/active_admin/page_dsl.rb +2 -1
  225. data/lib/active_admin/page_presenter.rb +3 -1
  226. data/lib/active_admin/pundit_adapter.rb +73 -16
  227. data/lib/active_admin/resource/action_items.rb +16 -6
  228. data/lib/active_admin/resource/attributes.rb +10 -6
  229. data/lib/active_admin/resource/belongs_to.rb +9 -3
  230. data/lib/active_admin/resource/controllers.rb +2 -1
  231. data/lib/active_admin/resource/includes.rb +1 -0
  232. data/lib/active_admin/resource/menu.rb +6 -5
  233. data/lib/active_admin/resource/model.rb +16 -0
  234. data/lib/active_admin/resource/naming.rb +6 -5
  235. data/lib/active_admin/resource/ordering.rb +1 -0
  236. data/lib/active_admin/resource/page_presenters.rb +2 -1
  237. data/lib/active_admin/resource/pagination.rb +1 -0
  238. data/lib/active_admin/resource/routes.rb +26 -15
  239. data/lib/active_admin/resource/scope_to.rb +8 -7
  240. data/lib/active_admin/resource/scopes.rb +5 -3
  241. data/lib/active_admin/resource/sidebars.rb +3 -2
  242. data/lib/active_admin/resource.rb +37 -22
  243. data/lib/active_admin/resource_collection.rb +3 -2
  244. data/lib/active_admin/resource_controller/action_builder.rb +11 -0
  245. data/lib/active_admin/resource_controller/data_access.rb +43 -14
  246. data/lib/active_admin/resource_controller/decorators.rb +10 -31
  247. data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
  248. data/lib/active_admin/resource_controller/resource_class_methods.rb +3 -0
  249. data/lib/active_admin/resource_controller/scoping.rb +2 -1
  250. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  251. data/lib/active_admin/resource_controller/streaming.rb +9 -7
  252. data/lib/active_admin/resource_controller.rb +15 -11
  253. data/lib/active_admin/resource_dsl.rb +18 -28
  254. data/lib/active_admin/router.rb +91 -84
  255. data/lib/active_admin/scope.rb +22 -13
  256. data/lib/active_admin/settings_node.rb +20 -0
  257. data/lib/active_admin/sidebar_section.rb +4 -1
  258. data/lib/active_admin/version.rb +2 -1
  259. data/lib/active_admin/view_factory.rb +18 -17
  260. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  261. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
  262. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +6 -5
  263. data/lib/active_admin/view_helpers/display_helper.rb +26 -9
  264. data/lib/active_admin/view_helpers/download_format_links_helper.rb +3 -1
  265. data/lib/active_admin/view_helpers/fields_for.rb +3 -2
  266. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  267. data/lib/active_admin/view_helpers/form_helper.rb +2 -1
  268. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +4 -0
  269. data/lib/active_admin/view_helpers/scope_name_helper.rb +17 -0
  270. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  271. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  272. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  273. data/lib/active_admin/view_helpers.rb +3 -1
  274. data/lib/active_admin/views/action_items.rb +2 -1
  275. data/lib/active_admin/views/components/active_admin_form.rb +15 -9
  276. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  277. data/lib/active_admin/views/components/attributes_table.rb +9 -8
  278. data/lib/active_admin/views/components/blank_slate.rb +2 -1
  279. data/lib/active_admin/views/components/columns.rb +1 -0
  280. data/lib/active_admin/views/components/dropdown_menu.rb +9 -11
  281. data/lib/active_admin/views/components/index_list.rb +4 -5
  282. data/lib/active_admin/views/components/menu.rb +33 -0
  283. data/lib/active_admin/views/components/menu_item.rb +59 -0
  284. data/lib/active_admin/views/components/paginated_collection.rb +22 -20
  285. data/lib/active_admin/views/components/panel.rb +2 -1
  286. data/lib/active_admin/views/components/scopes.rb +19 -17
  287. data/lib/active_admin/views/components/sidebar.rb +14 -0
  288. data/lib/active_admin/views/components/sidebar_section.rb +1 -0
  289. data/lib/active_admin/views/components/site_title.rb +7 -7
  290. data/lib/active_admin/views/components/status_tag.rb +19 -23
  291. data/lib/active_admin/views/components/table_for.rb +22 -29
  292. data/lib/active_admin/views/components/tabs.rb +18 -5
  293. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  294. data/lib/active_admin/views/footer.rb +6 -8
  295. data/lib/active_admin/views/header.rb +4 -16
  296. data/lib/active_admin/views/index_as_block.rb +1 -0
  297. data/lib/active_admin/views/index_as_blog.rb +4 -4
  298. data/lib/active_admin/views/index_as_grid.rb +27 -26
  299. data/lib/active_admin/views/index_as_table.rb +53 -26
  300. data/lib/active_admin/views/pages/base.rb +47 -63
  301. data/lib/active_admin/views/pages/form.rb +1 -0
  302. data/lib/active_admin/views/pages/index.rb +16 -13
  303. data/lib/active_admin/views/pages/layout.rb +1 -0
  304. data/lib/active_admin/views/pages/page.rb +1 -0
  305. data/lib/active_admin/views/pages/show.rb +7 -1
  306. data/lib/active_admin/views/tabbed_navigation.rb +5 -59
  307. data/lib/active_admin/views/title_bar.rb +6 -5
  308. data/lib/active_admin/views.rb +2 -1
  309. data/lib/active_admin.rb +70 -68
  310. data/lib/activeadmin.rb +2 -1
  311. data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
  312. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  313. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  314. data/lib/generators/active_admin/devise/devise_generator.rb +7 -6
  315. data/lib/generators/active_admin/install/install_generator.rb +19 -8
  316. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +45 -3
  317. data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -1
  318. data/lib/generators/active_admin/install/templates/dashboard.rb +3 -3
  319. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  320. data/lib/generators/active_admin/page/page_generator.rb +2 -1
  321. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  322. data/lib/generators/active_admin/resource/resource_generator.rb +5 -4
  323. data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
  324. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  325. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  326. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  327. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  328. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  329. data/lib/ransack_ext.rb +10 -9
  330. data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
  331. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
  332. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
  333. data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
  334. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  335. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  336. data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
  337. data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
  338. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  339. data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
  340. data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
  341. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
  342. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
  343. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
  344. data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
  345. data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
  346. data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
  347. data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
  348. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
  349. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
  350. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
  351. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
  352. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
  353. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
  354. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
  355. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
  356. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
  357. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  358. metadata +158 -580
  359. data/.gitignore +0 -49
  360. data/.hound.yml +0 -14
  361. data/.rubocop.yml +0 -27
  362. data/.travis.yml +0 -66
  363. data/.yardopts +0 -8
  364. data/Appraisals +0 -41
  365. data/Gemfile +0 -49
  366. data/Rakefile +0 -65
  367. data/activeadmin.gemspec +0 -34
  368. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  369. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  370. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  371. data/app/assets/images/active_admin/orderable.png +0 -0
  372. data/app/assets/javascripts/active_admin/base.js.coffee +0 -9
  373. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  374. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  375. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -7
  376. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -10
  377. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -22
  378. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -3
  379. data/app/assets/javascripts/active_admin/jquery_ui.js.erb +0 -18
  380. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -39
  381. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -44
  382. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -101
  383. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  384. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  385. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  386. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -42
  387. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
  388. data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
  389. data/codecov.yml +0 -23
  390. data/cucumber.yml +0 -3
  391. data/features/action_item.feature +0 -73
  392. data/features/authorization.feature +0 -64
  393. data/features/authorization_cancan.feature +0 -52
  394. data/features/authorization_pundit.feature +0 -37
  395. data/features/belongs_to.feature +0 -124
  396. data/features/breadcrumb.feature +0 -75
  397. data/features/comments/commenting.feature +0 -158
  398. data/features/comments/viewing_index.feature +0 -19
  399. data/features/create_another.feature +0 -55
  400. data/features/dashboard.feature +0 -16
  401. data/features/decorators.feature +0 -43
  402. data/features/development_reloading.feature +0 -28
  403. data/features/edit_page.feature +0 -116
  404. data/features/favicon.feature +0 -20
  405. data/features/first_boot.feature +0 -16
  406. data/features/footer.feature +0 -28
  407. data/features/global_navigation.feature +0 -29
  408. data/features/i18n.feature +0 -55
  409. data/features/index/batch_actions.feature +0 -218
  410. data/features/index/filters.feature +0 -199
  411. data/features/index/format_as_csv.feature +0 -203
  412. data/features/index/formats.feature +0 -88
  413. data/features/index/index_as_block.feature +0 -15
  414. data/features/index/index_as_blog.feature +0 -69
  415. data/features/index/index_as_grid.feature +0 -45
  416. data/features/index/index_as_table.feature +0 -291
  417. data/features/index/index_blank_slate.feature +0 -83
  418. data/features/index/index_parameters.feature +0 -75
  419. data/features/index/index_scope_to.feature +0 -56
  420. data/features/index/index_scopes.feature +0 -270
  421. data/features/index/page_title.feature +0 -41
  422. data/features/index/pagination.feature +0 -63
  423. data/features/index/switch_index_view.feature +0 -73
  424. data/features/menu.feature +0 -72
  425. data/features/meta_tags.feature +0 -21
  426. data/features/new_page.feature +0 -107
  427. data/features/registering_assets.feature +0 -34
  428. data/features/registering_pages.feature +0 -237
  429. data/features/registering_resources.feature +0 -33
  430. data/features/renamed_resource.feature +0 -30
  431. data/features/root_to.feature +0 -17
  432. data/features/show/columns.feature +0 -40
  433. data/features/show/default_content.feature +0 -44
  434. data/features/show/page_title.feature +0 -58
  435. data/features/show/tabs.feature +0 -27
  436. data/features/sidebar_sections.feature +0 -210
  437. data/features/site_title.feature +0 -47
  438. data/features/specifying_actions.feature +0 -118
  439. data/features/step_definitions/action_item_steps.rb +0 -7
  440. data/features/step_definitions/action_link_steps.rb +0 -20
  441. data/features/step_definitions/additional_web_steps.rb +0 -81
  442. data/features/step_definitions/asset_steps.rb +0 -15
  443. data/features/step_definitions/attribute_steps.rb +0 -18
  444. data/features/step_definitions/batch_action_steps.rb +0 -81
  445. data/features/step_definitions/blog_steps.rb +0 -3
  446. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  447. data/features/step_definitions/column_steps.rb +0 -8
  448. data/features/step_definitions/comment_steps.rb +0 -12
  449. data/features/step_definitions/configuration_steps.rb +0 -100
  450. data/features/step_definitions/dashboard_steps.rb +0 -15
  451. data/features/step_definitions/factory_steps.rb +0 -35
  452. data/features/step_definitions/filter_steps.rb +0 -39
  453. data/features/step_definitions/flash_steps.rb +0 -11
  454. data/features/step_definitions/footer_steps.rb +0 -11
  455. data/features/step_definitions/format_steps.rb +0 -56
  456. data/features/step_definitions/i18n_steps.rb +0 -11
  457. data/features/step_definitions/index_scope_steps.rb +0 -25
  458. data/features/step_definitions/index_views_steps.rb +0 -3
  459. data/features/step_definitions/layout_steps.rb +0 -3
  460. data/features/step_definitions/member_link_steps.rb +0 -7
  461. data/features/step_definitions/menu_steps.rb +0 -11
  462. data/features/step_definitions/meta_tag_steps.rb +0 -3
  463. data/features/step_definitions/pagination_steps.rb +0 -15
  464. data/features/step_definitions/sidebar_steps.rb +0 -11
  465. data/features/step_definitions/site_title_steps.rb +0 -17
  466. data/features/step_definitions/tab_steps.rb +0 -8
  467. data/features/step_definitions/table_steps.rb +0 -116
  468. data/features/step_definitions/user_steps.rb +0 -52
  469. data/features/step_definitions/web_steps.rb +0 -86
  470. data/features/sti_resource.feature +0 -65
  471. data/features/strong_parameters.feature +0 -69
  472. data/features/support/env.rb +0 -121
  473. data/features/support/paths.rb +0 -73
  474. data/features/support/selectors.rb +0 -45
  475. data/features/users/logging_in.feature +0 -36
  476. data/features/users/logging_out.feature +0 -13
  477. data/features/users/resetting_password.feature +0 -34
  478. data/gemfiles/rails_42.gemfile +0 -45
  479. data/gemfiles/rails_50.gemfile +0 -45
  480. data/gemfiles/rails_51.gemfile +0 -45
  481. data/lib/active_admin/event.rb +0 -24
  482. data/lib/active_admin/filters/humanized.rb +0 -68
  483. data/lib/active_admin/helpers/settings.rb +0 -115
  484. data/lib/active_admin/reloader.rb +0 -25
  485. data/lib/bug_report_templates/rails_5_master.rb +0 -118
  486. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  487. data/spec/bug_report_templates_spec.rb +0 -27
  488. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  489. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  490. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  491. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  492. data/spec/javascripts/fixtures/flashes.html +0 -2
  493. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  494. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  495. data/spec/javascripts/support/jasmine.yml +0 -74
  496. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  497. data/spec/rails_helper.rb +0 -62
  498. data/spec/requests/default_namespace_spec.rb +0 -81
  499. data/spec/requests/javascript_spec.rb +0 -22
  500. data/spec/requests/memory_spec.rb +0 -25
  501. data/spec/requests/stylesheets_spec.rb +0 -18
  502. data/spec/spec_helper.rb +0 -12
  503. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  504. data/spec/support/active_admin_request_helpers.rb +0 -39
  505. data/spec/support/jslint.yml +0 -80
  506. data/spec/support/rails_template.rb +0 -182
  507. data/spec/support/rails_template_with_data.rb +0 -68
  508. data/spec/support/templates/admin/stores.rb +0 -7
  509. data/spec/support/templates/en.yml +0 -8
  510. data/spec/support/templates/manifest.js +0 -3
  511. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  512. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  513. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  514. data/spec/support/templates/policies/application_policy.rb +0 -45
  515. data/spec/support/templates/policies/category_policy.rb +0 -7
  516. data/spec/support/templates/policies/post_policy.rb +0 -15
  517. data/spec/support/templates/policies/store_policy.rb +0 -11
  518. data/spec/support/templates/policies/user_policy.rb +0 -11
  519. data/spec/support/templates/post_decorator.rb +0 -11
  520. data/spec/unit/abstract_view_factory_spec.rb +0 -79
  521. data/spec/unit/action_builder_spec.rb +0 -125
  522. data/spec/unit/active_admin_spec.rb +0 -11
  523. data/spec/unit/application_spec.rb +0 -180
  524. data/spec/unit/asset_registration_spec.rb +0 -52
  525. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  526. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  527. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  528. data/spec/unit/auto_link_spec.rb +0 -93
  529. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  530. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  531. data/spec/unit/belongs_to_spec.rb +0 -77
  532. data/spec/unit/cancan_adapter_spec.rb +0 -43
  533. data/spec/unit/comments_spec.rb +0 -176
  534. data/spec/unit/component_spec.rb +0 -18
  535. data/spec/unit/config_shared_examples.rb +0 -59
  536. data/spec/unit/controller_filters_spec.rb +0 -41
  537. data/spec/unit/csv_builder_spec.rb +0 -306
  538. data/spec/unit/dependency_spec.rb +0 -135
  539. data/spec/unit/devise_spec.rb +0 -110
  540. data/spec/unit/dsl_spec.rb +0 -122
  541. data/spec/unit/filters/active_spec.rb +0 -14
  542. data/spec/unit/filters/filter_form_builder_spec.rb +0 -500
  543. data/spec/unit/filters/humanized_spec.rb +0 -64
  544. data/spec/unit/filters/resource_spec.rb +0 -128
  545. data/spec/unit/form_builder_spec.rb +0 -990
  546. data/spec/unit/generators/install_spec.rb +0 -31
  547. data/spec/unit/helpers/collection_spec.rb +0 -68
  548. data/spec/unit/helpers/scope_chain_spec.rb +0 -36
  549. data/spec/unit/helpers/settings_spec.rb +0 -30
  550. data/spec/unit/i18n_spec.rb +0 -12
  551. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  552. data/spec/unit/menu_collection_spec.rb +0 -62
  553. data/spec/unit/menu_item_spec.rb +0 -143
  554. data/spec/unit/menu_spec.rb +0 -71
  555. data/spec/unit/namespace/authorization_spec.rb +0 -27
  556. data/spec/unit/namespace/register_page_spec.rb +0 -99
  557. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  558. data/spec/unit/namespace_spec.rb +0 -125
  559. data/spec/unit/order_clause_spec.rb +0 -81
  560. data/spec/unit/page_controller_spec.rb +0 -5
  561. data/spec/unit/page_spec.rb +0 -131
  562. data/spec/unit/pretty_format_spec.rb +0 -82
  563. data/spec/unit/pundit_adapter_spec.rb +0 -98
  564. data/spec/unit/resource/action_items_spec.rb +0 -65
  565. data/spec/unit/resource/attributes_spec.rb +0 -50
  566. data/spec/unit/resource/includes_spec.rb +0 -21
  567. data/spec/unit/resource/menu_spec.rb +0 -18
  568. data/spec/unit/resource/naming_spec.rb +0 -122
  569. data/spec/unit/resource/ordering_spec.rb +0 -38
  570. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  571. data/spec/unit/resource/pagination_spec.rb +0 -38
  572. data/spec/unit/resource/routes_spec.rb +0 -125
  573. data/spec/unit/resource/scopes_spec.rb +0 -50
  574. data/spec/unit/resource/sidebars_spec.rb +0 -43
  575. data/spec/unit/resource_collection_spec.rb +0 -175
  576. data/spec/unit/resource_controller/data_access_spec.rb +0 -230
  577. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  578. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  579. data/spec/unit/resource_controller_spec.rb +0 -274
  580. data/spec/unit/resource_registration_spec.rb +0 -61
  581. data/spec/unit/resource_spec.rb +0 -313
  582. data/spec/unit/routing_spec.rb +0 -213
  583. data/spec/unit/scope_spec.rb +0 -209
  584. data/spec/unit/settings_spec.rb +0 -118
  585. data/spec/unit/view_factory_spec.rb +0 -19
  586. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -252
  587. data/spec/unit/view_helpers/display_helper_spec.rb +0 -195
  588. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  589. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  590. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -25
  591. data/spec/unit/view_helpers/form_helper_spec.rb +0 -43
  592. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -139
  593. data/spec/unit/views/components/attributes_table_spec.rb +0 -272
  594. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  595. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  596. data/spec/unit/views/components/columns_spec.rb +0 -189
  597. data/spec/unit/views/components/index_list_spec.rb +0 -49
  598. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  599. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  600. data/spec/unit/views/components/panel_spec.rb +0 -58
  601. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  602. data/spec/unit/views/components/site_title_spec.rb +0 -78
  603. data/spec/unit/views/components/status_tag_spec.rb +0 -249
  604. data/spec/unit/views/components/table_for_spec.rb +0 -436
  605. data/spec/unit/views/components/tabs_spec.rb +0 -39
  606. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  607. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  608. data/spec/unit/views/pages/form_spec.rb +0 -54
  609. data/spec/unit/views/pages/index_spec.rb +0 -60
  610. data/spec/unit/views/pages/layout_spec.rb +0 -59
  611. data/spec/unit/views/pages/show_spec.rb +0 -32
  612. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  613. data/tasks/docs.rake +0 -37
  614. data/tasks/lint.rake +0 -8
  615. data/tasks/local.rake +0 -25
  616. data/tasks/parallel_tests.rake +0 -66
  617. data/tasks/test.rake +0 -46
  618. data/tasks/yard.rake +0 -9
@@ -1,500 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Filters::ViewHelper do
4
-
5
- # Setup an ActionView::Base object which can be used for
6
- # generating the form for.
7
- let(:helpers) do
8
- view = action_view
9
- def view.collection_path
10
- "/posts"
11
- end
12
-
13
- def view.protect_against_forgery?
14
- false
15
- end
16
-
17
- def view.a_helper_method
18
- "A Helper Method"
19
- end
20
-
21
- view
22
- end
23
-
24
- def render_filter(search, filters)
25
- render_arbre_component({filter_args: [search, filters]}, helpers) do
26
- text_node active_admin_filters_form_for *assigns[:filter_args]
27
- end.to_s
28
- end
29
-
30
- def filter(name, options = {})
31
- render_filter scope, name => options
32
- end
33
-
34
- let(:scope) { Post.search }
35
-
36
- describe "the form in general" do
37
- let(:body) { Capybara.string(filter :title) }
38
-
39
- it "should generate a form which submits via get" do
40
- expect(body).to have_selector("form.filter_form[method=get]")
41
- end
42
-
43
- it "should generate a filter button" do
44
- expect(body).to have_selector("input[type=submit][value=Filter]")
45
- end
46
-
47
- it "should only generate the form once" do
48
- expect(body).to have_selector("form", count: 1)
49
- end
50
-
51
- it "should generate a clear filters link" do
52
- expect(body).to have_selector("a.clear_filters_btn", text: "Clear Filters")
53
- end
54
-
55
- describe "label as proc" do
56
- let(:body) { Capybara.string(filter :title, label: proc { 'Title from proc' }) }
57
-
58
- it "should render proper label" do
59
- expect(body).to have_selector("label", text: "Title from proc")
60
- end
61
- end
62
- end
63
-
64
- describe "string attribute" do
65
- let(:body) { Capybara.string(filter :title) }
66
-
67
- it "should generate a select option for starts with" do
68
- expect(body).to have_selector("option[value=title_starts_with]", text: "Starts with")
69
- end
70
-
71
- it "should generate a select option for ends with" do
72
- expect(body).to have_selector("option[value=title_ends_with]", text: "Ends with")
73
- end
74
-
75
- it "should generate a select option for contains" do
76
- expect(body).to have_selector("option[value=title_contains]", text: "Contains")
77
- end
78
-
79
- it "should generate a text field for input" do
80
- expect(body).to have_selector("input[name='q[title_contains]']")
81
- end
82
-
83
- it "should have a proper label" do
84
- expect(body).to have_selector("label", text: "Title")
85
- end
86
-
87
- it "should translate the label for text field" do
88
- with_translation activerecord: {attributes: {post: {title: 'Name'}}} do
89
- expect(body).to have_selector("label", text: "Name")
90
- end
91
- end
92
-
93
- it "should select the option which is currently being filtered" do
94
- scope = Post.search title_starts_with: "foo"
95
- body = Capybara.string(render_filter scope, title: {})
96
- expect(body).to have_selector("option[value=title_starts_with][selected=selected]", text: "Starts with")
97
- end
98
-
99
- context "with filters options" do
100
- let(:body) { Capybara.string(filter :title, filters: [:contains, :starts_with]) }
101
-
102
- it "should generate provided options for filter select" do
103
- expect(body).to have_selector("option[value=title_contains]", text: "Contains")
104
- expect(body).to have_selector("option[value=title_starts_with]", text: "Starts with")
105
- end
106
-
107
- it "should not generate a select option for ends with" do
108
- expect(body).not_to have_selector("option[value=title_ends_with]")
109
- end
110
- end
111
-
112
- context "with predicate" do
113
- %w[eq equals cont contains start starts_with end ends_with].each do |predicate|
114
- describe "'#{predicate}'" do
115
- let(:body) { Capybara.string(filter :"title_#{predicate}") }
116
-
117
- it "shouldn't include a select field" do
118
- expect(body).not_to have_selector("select")
119
- end
120
-
121
- it "should build correctly" do
122
- expect(body).to have_selector("input[name='q[title_#{predicate}]']")
123
- end
124
- end
125
- end
126
- end
127
- end
128
-
129
- describe "text attribute" do
130
- let(:body) { Capybara.string(filter :body) }
131
-
132
- it "should generate a search field for a text attribute" do
133
- expect(body).to have_selector("input[name='q[body_contains]']")
134
- end
135
-
136
- it "should have a proper label" do
137
- expect(body).to have_selector("label", text: "Body")
138
- end
139
- end
140
-
141
- describe "string attribute, as a select" do
142
- let(:body) { filter :title, as: :select }
143
- let(:builder) { ActiveAdmin::Inputs::Filters::SelectInput }
144
-
145
- context "when loading collection from DB" do
146
- it "should use pluck for efficiency" do
147
- expect_any_instance_of(builder).to receive(:pluck_column) { [] }
148
- body
149
- end
150
-
151
- it "should remove original ordering to prevent PostgreSQL error" do
152
- expect(scope.object.klass).to receive(:reorder).with('title asc') {
153
- m = double distinct: double(pluck: ['A Title'])
154
- expect(m.distinct).to receive(:pluck).with :title
155
- m
156
- }
157
- body
158
- end
159
- end
160
- end
161
-
162
- describe "date attribute" do
163
- let(:body) { Capybara.string(filter :published_date) }
164
-
165
- it "should generate a date greater than" do
166
- expect(body).to have_selector("input.datepicker[name='q[published_date_gteq]']")
167
- end
168
- it "should generate a seperator" do
169
- expect(body).to have_selector("span.seperator")
170
- end
171
- it "should generate a date less than" do
172
- expect(body).to have_selector("input.datepicker[name='q[published_date_lteq]']")
173
- end
174
- end
175
-
176
- describe "datetime attribute" do
177
- let(:body) { Capybara.string(filter :created_at) }
178
-
179
- it "should generate a date greater than" do
180
- expect(body).to have_selector("input.datepicker[name='q[created_at_gteq_datetime]']")
181
- end
182
- it "should generate a seperator" do
183
- expect(body).to have_selector("span.seperator")
184
- end
185
- it "should generate a date less than" do
186
- expect(body).to have_selector("input.datepicker[name='q[created_at_lteq_datetime]']")
187
- end
188
- end
189
-
190
- describe "integer attribute" do
191
- context "without options" do
192
- let(:body) { Capybara.string(filter :id) }
193
-
194
- it "should generate a select option for equal to" do
195
- expect(body).to have_selector("option[value=id_equals]", text: "Equals")
196
- end
197
- it "should generate a select option for greater than" do
198
- expect(body).to have_selector("option[value=id_greater_than]", text: "Greater than")
199
- end
200
- it "should generate a select option for less than" do
201
- expect(body).to have_selector("option[value=id_less_than]", text: "Less than")
202
- end
203
- it "should generate a text field for input" do
204
- expect(body).to have_selector("input[name='q[id_equals]']")
205
- end
206
- it "should select the option which is currently being filtered" do
207
- scope = Post.search id_greater_than: 1
208
- body = Capybara.string(render_filter scope, id: {})
209
- expect(body).to have_selector("option[value=id_greater_than][selected=selected]", text: "Greater than")
210
- end
211
- end
212
-
213
- context "with filters options" do
214
- let(:body) { Capybara.string(filter :id, filters: [:equals, :greater_than]) }
215
-
216
- it "should generate provided options for filter select" do
217
- expect(body).to have_selector("option[value=id_equals]", text: "Equals")
218
- expect(body).to have_selector("option[value=id_greater_than]", text: "Greater than")
219
- end
220
-
221
- it "should not generate a select option for less than" do
222
- expect(body).not_to have_selector("option[value=id_less_than]")
223
- end
224
- end
225
- end
226
-
227
- describe "boolean attribute" do
228
- context "boolean datatypes" do
229
- let(:body) { Capybara.string(filter :starred) }
230
-
231
- it "should generate a select" do
232
- expect(body).to have_selector("select[name='q[starred_eq]']")
233
- end
234
- it "should set the default text to 'Any'" do
235
- expect(body).to have_selector("option[value='']", text: "Any")
236
- end
237
- it "should create an option for true and false" do
238
- expect(body).to have_selector("option[value=true]", text: "Yes")
239
- expect(body).to have_selector("option[value=false]", text: "No")
240
- end
241
-
242
- it "should translate the label for boolean field" do
243
- with_translation activerecord: {attributes: {post: {starred: 'Faved'}}} do
244
- expect(body).to have_selector("label", text: "Faved")
245
- end
246
- end
247
- end
248
-
249
- context "non-boolean data types" do
250
- let(:body) { Capybara.string(filter :title_present, as: :boolean) }
251
-
252
- it "should generate a select" do
253
- expect(body).to have_selector("select[name='q[title_present]']")
254
- end
255
- it "should set the default text to 'Any'" do
256
- expect(body).to have_selector("option[value='']", text: "Any")
257
- end
258
- it "should create an option for true and false" do
259
- expect(body).to have_selector("option[value=true]", text: "Yes")
260
- expect(body).to have_selector("option[value=false]", text: "No")
261
- end
262
- end
263
- end
264
-
265
- describe "belongs_to" do
266
- before do
267
- @john = User.create first_name: "John", last_name: "Doe", username: "john_doe"
268
- @jane = User.create first_name: "Jane", last_name: "Doe", username: "jane_doe"
269
- end
270
-
271
- context "when given as the _id attribute name" do
272
- let(:body) { Capybara.string(filter :author_id) }
273
-
274
- it "should generate a numeric filter" do
275
- expect(body).to have_selector("label", text: "Author") # really this should be Author ID :/)
276
- expect(body).to have_selector("option[value=author_id_less_than]")
277
- expect(body).to have_selector("input#q_author_id[name='q[author_id_equals]']")
278
- end
279
- end
280
-
281
- context "when given as the name of the relationship" do
282
- let(:body) { Capybara.string(filter :author) }
283
-
284
- it "should generate a select" do
285
- expect(body).to have_selector("select[name='q[author_id_eq]']")
286
- end
287
- it "should set the default text to 'Any'" do
288
- expect(body).to have_selector("option[value='']", text: "Any")
289
- end
290
- it "should create an option for each related object" do
291
- expect(body).to have_selector("option[value='#{@john.id}']", text: "John Doe")
292
- expect(body).to have_selector("option[value='#{@jane.id}']", text: "Jane Doe")
293
- end
294
-
295
- context "with a proc" do
296
- let :body do
297
- Capybara.string(filter :title, as: :select, collection: proc{ ['Title One', 'Title Two'] })
298
- end
299
-
300
- it "should use call the proc as the collection" do
301
- expect(body).to have_selector("option", text: "Title One")
302
- expect(body).to have_selector("option", text: "Title Two")
303
- end
304
-
305
- it "should render the collection in the context of the view" do
306
- body = Capybara.string(filter(:title, as: :select, collection: proc{[a_helper_method]}))
307
- expect(body).to have_selector("option", text: "A Helper Method")
308
- end
309
- end
310
- end
311
-
312
- context "as check boxes" do
313
- let(:body) { Capybara.string(filter :author, as: :check_boxes) }
314
-
315
- it "should create a check box for each related object" do
316
- expect(body).to have_selector("input[type=checkbox][name='q[author_id_in][]'][value='#{@jane.id}']")
317
- expect(body).to have_selector("input[type=checkbox][name='q[author_id_in][]'][value='#{@jane.id}']")
318
- end
319
- end
320
-
321
- context "when polymorphic relationship" do
322
- let(:scope) { ActiveAdmin::Comment.search }
323
- it "should raise an error if a collection isn't provided" do
324
- expect { filter :resource }.to raise_error \
325
- Formtastic::PolymorphicInputWithoutCollectionError
326
- end
327
- end
328
-
329
- context "when using a custom foreign key" do
330
- let(:scope) { Post.search }
331
- let(:body) { Capybara.string(filter :category) }
332
- it "should ignore that foreign key and let Ransack handle it" do
333
- expect(Post.reflect_on_association(:category).foreign_key).to eq :custom_category_id
334
- expect(body).to have_selector("select[name='q[category_id_eq]']")
335
- end
336
- end
337
- end # belongs to
338
-
339
- describe "has_and_belongs_to_many" do
340
- skip "add HABTM models so this can be tested"
341
- end
342
-
343
- describe "has_many :through" do
344
- # Setup an ActionView::Base object which can be used for
345
- # generating the form for.
346
- let(:helpers) do
347
- view = action_view
348
- def view.collection_path
349
- "/categories"
350
- end
351
-
352
- def view.protect_against_forgery?
353
- false
354
- end
355
-
356
- def view.a_helper_method
357
- "A Helper Method"
358
- end
359
-
360
- view
361
- end
362
- let(:scope) { Category.search }
363
-
364
- let!(:john) { User.create first_name: "John", last_name: "Doe", username: "john_doe" }
365
- let!(:jane) { User.create first_name: "Jane", last_name: "Doe", username: "jane_doe" }
366
-
367
- context "when given as the name of the relationship" do
368
- let(:body) { Capybara.string(filter :authors) }
369
-
370
- it "should generate a select" do
371
- expect(body).to have_selector("select[name='q[posts_author_id_eq]']")
372
- end
373
-
374
- it "should set the default text to 'Any'" do
375
- expect(body).to have_selector("option[value='']", text: "Any")
376
- end
377
-
378
- it "should create an option for each related object" do
379
- expect(body).to have_selector("option[value='#{john.id}']", text: "John Doe")
380
- expect(body).to have_selector("option[value='#{jane.id}']", text: "Jane Doe")
381
- end
382
- end
383
-
384
- context "as check boxes" do
385
- let(:body) { Capybara.string(filter :authors, as: :check_boxes) }
386
-
387
- it "should create a check box for each related object" do
388
- expect(body).to have_selector("input[name='q[posts_author_id_in][]'][type=checkbox][value='#{john.id}']")
389
- expect(body).to have_selector("input[name='q[posts_author_id_in][]'][type=checkbox][value='#{jane.id}']")
390
- end
391
- end
392
- end
393
-
394
- describe "conditional display" do
395
- [:if, :unless].each do |verb|
396
- should = verb == :if ? "should" : "shouldn't"
397
- if_true = verb == :if ? :to : :to_not
398
- if_false = verb == :if ? :to_not : :to
399
- context "with #{verb.inspect} proc" do
400
- it "#{should} be displayed if true" do
401
- body = Capybara.string(filter :body, verb => proc{ true })
402
- expect(body).send if_true, have_selector("input[name='q[body_contains]']")
403
- end
404
- it "#{should} be displayed if false" do
405
- body = Capybara.string(filter :body, verb => proc{ false })
406
- expect(body).send if_false, have_selector("input[name='q[body_contains]']")
407
- end
408
- it "should still be hidden on the second render" do
409
- filters = {body: { verb => proc{ verb == :unless }}}
410
- 2.times do
411
- body = Capybara.string(render_filter scope, filters)
412
- expect(body).not_to have_selector("input[name='q[body_contains]']")
413
- end
414
- end
415
- it "should successfully keep rendering other filters after one is hidden" do
416
- filters = {body: { verb => proc{ verb == :unless }}, author: {}}
417
- body = Capybara.string(render_filter scope, filters)
418
- expect(body).not_to have_selector("input[name='q[body_contains]']")
419
- expect(body).to have_selector("select[name='q[author_id_eq]']")
420
- end
421
- end
422
- end
423
- end
424
-
425
- describe "custom search methods" do
426
-
427
- it "should use the default type of the ransacker" do
428
- body = Capybara.string(filter :custom_searcher_numeric)
429
- expect(body).to have_selector("option[value=custom_searcher_numeric_equals]")
430
- expect(body).to have_selector("option[value=custom_searcher_numeric_greater_than]")
431
- expect(body).to have_selector("option[value=custom_searcher_numeric_less_than]")
432
- end
433
-
434
- it "should work as select" do
435
- body = Capybara.string(filter :custom_title_searcher, as: :select, collection: ['foo'])
436
- expect(body).to have_selector("select[name='q[custom_title_searcher_eq]']")
437
- end
438
-
439
- it "should work as string" do
440
- body = Capybara.string(filter :custom_title_searcher, as: :string)
441
- expect(body).to have_selector("option[value=custom_title_searcher_contains]")
442
- expect(body).to have_selector("option[value=custom_title_searcher_starts_with]")
443
- end
444
-
445
- describe "custom date range search" do
446
- let(:qteq) { "2010-10-01" }
447
- let(:lteq) { "2010-10-02" }
448
- let(:scope){ Post.search custom_created_at_searcher_gteq_datetime: qteq, custom_created_at_searcher_lteq_datetime: lteq }
449
- let(:body) { Capybara.string(render_filter scope, custom_created_at_searcher: {as: :date_range}) }
450
-
451
- it "should work as date_range" do
452
- expect(body).to have_selector("input[name='q[custom_created_at_searcher_gteq_datetime]'][value='2010-10-01']")
453
- expect(body).to have_selector("input[name='q[custom_created_at_searcher_lteq_datetime]'][value='2010-10-02']")
454
- end
455
-
456
- context "filter value can't be casted to date" do
457
- let(:qteq) { "Ooops" }
458
- let(:lteq) { "Ooops" }
459
-
460
- it "should work display empty filter values" do
461
- expect(body).to have_selector("input[name='q[custom_created_at_searcher_gteq_datetime]'][value='']")
462
- expect(body).to have_selector("input[name='q[custom_created_at_searcher_lteq_datetime]'][value='']")
463
- end
464
- end
465
-
466
- end
467
- end
468
-
469
- describe "does not support some filter inputs" do
470
- it "should fallback to use formtastic inputs" do
471
- body = Capybara.string(filter :custom_title_searcher, as: :text)
472
- expect(body).to have_selector("textarea[name='q[custom_title_searcher]']")
473
- end
474
- end
475
-
476
- describe "blank option" do
477
- context "for a select filter" do
478
- it "should be there by default" do
479
- body = Capybara.string(filter(:author))
480
- expect(body).to have_selector("option", text: "Any")
481
- end
482
- it "should be able to be disabled" do
483
- body = Capybara.string(filter(:author, include_blank: false))
484
- expect(body).to_not have_selector("option", text: "Any")
485
- end
486
- end
487
-
488
- context "for a multi-select filter" do
489
- it "should not be there by default" do
490
- body = Capybara.string(filter(:author, multiple: true))
491
- expect(body).to_not have_selector("option", text: "Any")
492
- end
493
- it "should be able to be enabled" do
494
- body = Capybara.string(filter(:author, multiple: true, include_blank: true))
495
- expect(body).to have_selector("option", text: "Any")
496
- end
497
- end
498
- end
499
-
500
- end
@@ -1,64 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Filters::Humanized do
4
- describe '#value' do
5
- it 'should equal query string parameter if not an Array' do
6
- param = ['category_id_eq', '1']
7
- subject = ActiveAdmin::Filters::Humanized.new(param)
8
- expect(subject.value).to eq('1')
9
- end
10
-
11
- it 'should equal query string parameters separated by commas if an Array' do
12
- param = ['category_id_eq', ['1', '2']]
13
- subject = ActiveAdmin::Filters::Humanized.new(param)
14
- expect(subject.value).to eq("1, 2")
15
- end
16
-
17
- it 'should remove nil values before joining equal query string parameters separated by commas if an Array' do
18
- param = ['category_id_eq', ['1', nil, '2']]
19
- subject = ActiveAdmin::Filters::Humanized.new(param)
20
- expect(subject.value).to eq("1, 2")
21
- end
22
- end
23
-
24
- describe '#body' do
25
- context 'when Ransack predicate' do
26
- it 'parses language from Ransack' do
27
- param = ['category_id_eq', '1']
28
- subject = ActiveAdmin::Filters::Humanized.new(param)
29
- expect(subject.body).to eq('Category ID equals')
30
- end
31
-
32
- it 'handles strings with embedded predicates' do
33
- param = ['requires_approval_eq', '1']
34
- humanizer = ActiveAdmin::Filters::Humanized.new(param)
35
- expect(humanizer.value).to eq('1')
36
- expect(humanizer.body).to eq('Requires Approval equals')
37
- end
38
- end
39
-
40
- context 'when ActiveAdmin predicate' do
41
- it 'parses language from ActiveAdmin' do
42
- param = ['name_starts_with', 'test']
43
- humanizer = ActiveAdmin::Filters::Humanized.new(param)
44
- expect(humanizer.body).to eq('Name starts with')
45
- end
46
- end
47
-
48
- context 'when unknown predicate' do
49
- it 'uses raw predicate string' do
50
- param = ['name_predicate_does_not_exist', 'test']
51
- humanizer = ActiveAdmin::Filters::Humanized.new(param)
52
- expect(humanizer.body).to eq("Name Predicate Does Not Exist")
53
- end
54
- end
55
-
56
- context 'when column name similar to predicate' do
57
- it 'parses correct predicate' do
58
- param = ['time_start_gteq', 'test']
59
- humanizer = ActiveAdmin::Filters::Humanized.new(param)
60
- expect(humanizer.body).to eq('Time Start greater than or equal to')
61
- end
62
- end
63
- end
64
- end
@@ -1,128 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Filters::ResourceExtension do
4
-
5
- let(:resource) do
6
- namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
7
- namespace.register(Post)
8
- end
9
-
10
- it "should return a Hash" do
11
- expect(resource.filters).to be_a Hash
12
- end
13
-
14
- it "should return the defaults if no filters are set" do
15
- expect(resource.filters.keys).to match_array([
16
- :author, :body, :category, :created_at, :custom_created_at_searcher, :custom_title_searcher, :custom_searcher_numeric, :position, :published_date, :starred, :taggings, :title, :updated_at, :foo_id
17
- ])
18
- end
19
-
20
- it "should not have defaults when filters are disabled on the resource" do
21
- resource.filters = false
22
- expect(resource.filters).to be_empty
23
- end
24
-
25
- it "should not have defaults when the filters are disabled on the namespace" do
26
- resource.namespace.filters = false
27
- expect(resource.filters).to be_empty
28
- end
29
-
30
- it "should not have defaults when the filters are disabled on the application" do
31
- resource.namespace.application.filters = false
32
- expect(resource.filters).to be_empty
33
- end
34
-
35
- it "should return the defaults without associations if default association filters are disabled on the namespace" do
36
- resource.namespace.include_default_association_filters = false
37
- expect(resource.filters.keys).to match_array([
38
- :body, :created_at, :custom_created_at_searcher, :custom_title_searcher, :custom_searcher_numeric, :position, :published_date, :starred, :title, :updated_at, :foo_id
39
- ])
40
- end
41
-
42
- describe "removing a filter" do
43
- it "should work" do
44
- expect(resource.filters.keys).to include :author
45
- resource.remove_filter :author
46
- expect(resource.filters.keys).to_not include :author
47
- end
48
-
49
- it "should work as a string" do
50
- expect(resource.filters.keys).to include :author
51
- resource.remove_filter 'author'
52
- expect(resource.filters.keys).to_not include :author
53
- end
54
-
55
- it "should be lazy" do
56
- expect(resource).to_not receive :default_filters # this hits the DB
57
- resource.remove_filter :author
58
- end
59
-
60
- it "should not prevent the default filters from being added" do
61
- resource.remove_filter :author
62
- expect(resource.filters).to_not be_empty
63
- end
64
-
65
- it "should raise an exception when filters are disabled" do
66
- resource.filters = false
67
- expect{ resource.remove_filter :author }.to raise_error ActiveAdmin::Filters::Disabled
68
- end
69
- end
70
-
71
- describe "removing a multiple filters inline" do
72
- it "should work" do
73
- expect(resource.filters.keys).to include :author, :body
74
- resource.remove_filter :author, :body
75
- expect(resource.filters.keys).to_not include :author, :body
76
- end
77
- end
78
-
79
- describe "adding a filter" do
80
- it "should work" do
81
- resource.add_filter :title
82
- expect(resource.filters).to eq title: {}
83
- end
84
-
85
- it "should work as a string" do
86
- resource.add_filter 'title'
87
- expect(resource.filters).to eq title: {}
88
- end
89
-
90
- it "should work with specified options" do
91
- resource.add_filter :title, as: :string
92
- expect(resource.filters).to eq title: {as: :string}
93
- end
94
-
95
- it "should override an existing filter" do
96
- resource.add_filter :title, one: :two
97
- resource.add_filter :title, three: :four
98
-
99
- expect(resource.filters).to eq title: {three: :four}
100
- end
101
-
102
- it "should preserve default filters" do
103
- resource.preserve_default_filters!
104
- resource.add_filter :count, as: :string
105
-
106
- expect(resource.filters.keys).to match_array([
107
- :author, :body, :category, :count, :created_at, :custom_created_at_searcher, :custom_title_searcher, :custom_searcher_numeric, :position, :published_date, :starred, :taggings, :title, :updated_at, :foo_id
108
- ])
109
- end
110
-
111
- it "should raise an exception when filters are disabled" do
112
- resource.filters = false
113
- expect{ resource.add_filter :title }.to raise_error ActiveAdmin::Filters::Disabled
114
- end
115
- end
116
-
117
- it "should reset filters" do
118
- resource.add_filter :title
119
- expect(resource.filters.size).to eq 1
120
- resource.reset_filters!
121
- expect(resource.filters.size).to be > 1
122
- end
123
-
124
- it "should add a sidebar section for the filters" do
125
- expect(resource.sidebar_sections.first.name).to eq "filters"
126
- end
127
-
128
- end