rails_admin 2.0.2 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -16
  3. data/README.md +44 -44
  4. data/Rakefile +15 -2
  5. data/app/assets/javascripts/rails_admin/application.js.erb +29 -0
  6. data/app/assets/stylesheets/rails_admin/application.scss.erb +35 -0
  7. data/app/assets/stylesheets/rails_admin/custom/mixins.scss +1 -1
  8. data/app/assets/stylesheets/rails_admin/custom/variables.scss +1 -1
  9. data/app/controllers/rails_admin/application_controller.rb +6 -3
  10. data/app/controllers/rails_admin/main_controller.rb +55 -50
  11. data/app/helpers/rails_admin/application_helper.rb +129 -63
  12. data/app/helpers/rails_admin/form_builder.rb +25 -13
  13. data/app/helpers/rails_admin/main_helper.rb +18 -41
  14. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb +5 -0
  15. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb +9 -0
  16. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.erb +9 -0
  17. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb +15 -0
  18. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb +9 -0
  19. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb +9 -0
  20. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb +8 -0
  21. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb +9 -0
  22. data/app/views/layouts/rails_admin/_head.html.erb +29 -0
  23. data/app/views/layouts/rails_admin/_navigation.html.erb +17 -0
  24. data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +26 -0
  25. data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +5 -0
  26. data/app/views/layouts/rails_admin/application.html.erb +27 -0
  27. data/app/views/layouts/rails_admin/content.html.erb +22 -0
  28. data/app/views/layouts/rails_admin/modal.js.erb +7 -0
  29. data/app/views/rails_admin/main/_dashboard_history.html.erb +45 -0
  30. data/app/views/rails_admin/main/_delete_notice.html.erb +35 -0
  31. data/app/views/rails_admin/main/_form_action_text.html.erb +8 -0
  32. data/app/views/rails_admin/main/_form_boolean.html.erb +14 -0
  33. data/app/views/rails_admin/main/{_form_ck_editor.html.haml → _form_ck_editor.html.erb} +3 -3
  34. data/app/views/rails_admin/main/_form_code_mirror.html.erb +9 -0
  35. data/app/views/rails_admin/main/_form_colorpicker.html.erb +5 -0
  36. data/app/views/rails_admin/main/_form_datetime.html.erb +10 -0
  37. data/app/views/rails_admin/main/_form_enumeration.html.erb +25 -0
  38. data/app/views/rails_admin/main/_form_field.html.erb +1 -0
  39. data/app/views/rails_admin/main/_form_file_upload.html.erb +17 -0
  40. data/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +49 -0
  41. data/app/views/rails_admin/main/_form_filtering_select.html.erb +33 -0
  42. data/app/views/rails_admin/main/_form_froala.html.erb +8 -0
  43. data/app/views/rails_admin/main/_form_multiple_file_upload.html.erb +20 -0
  44. data/app/views/rails_admin/main/_form_nested_many.html.erb +21 -0
  45. data/app/views/rails_admin/main/_form_nested_one.html.erb +21 -0
  46. data/app/views/rails_admin/main/_form_polymorphic_association.html.erb +32 -0
  47. data/app/views/rails_admin/main/_form_simple_mde.html.erb +8 -0
  48. data/app/views/rails_admin/main/_form_text.html.erb +1 -0
  49. data/app/views/rails_admin/main/_form_wysihtml5.html.erb +8 -0
  50. data/app/views/rails_admin/main/_submit_buttons.html.erb +25 -0
  51. data/app/views/rails_admin/main/bulk_delete.html.erb +19 -0
  52. data/app/views/rails_admin/main/dashboard.html.erb +64 -0
  53. data/app/views/rails_admin/main/delete.html.erb +21 -0
  54. data/app/views/rails_admin/main/edit.html.erb +3 -0
  55. data/app/views/rails_admin/main/export.html.erb +149 -0
  56. data/app/views/rails_admin/main/history.html.erb +80 -0
  57. data/app/views/rails_admin/main/index.html.erb +184 -0
  58. data/app/views/rails_admin/main/new.html.erb +3 -0
  59. data/app/views/rails_admin/main/show.html.erb +30 -0
  60. data/config/initializers/active_record_extensions.rb +25 -0
  61. data/config/initializers/mongoid_extensions.rb +3 -1
  62. data/config/locales/rails_admin.en.yml +8 -4
  63. data/config/routes.rb +2 -0
  64. data/lib/generators/rails_admin/importmap_formatter.rb +28 -0
  65. data/lib/generators/rails_admin/install_generator.rb +117 -5
  66. data/lib/generators/rails_admin/templates/initializer.erb +2 -1
  67. data/lib/generators/rails_admin/templates/rails_admin.js +1 -0
  68. data/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -0
  69. data/lib/generators/rails_admin/templates/rails_admin.webpacker.js +2 -0
  70. data/lib/generators/rails_admin/utils.rb +2 -0
  71. data/lib/rails_admin/abstract_model.rb +35 -15
  72. data/lib/rails_admin/adapters/active_record/association.rb +31 -2
  73. data/lib/rails_admin/adapters/active_record/object_extension.rb +31 -0
  74. data/lib/rails_admin/adapters/active_record/property.rb +4 -2
  75. data/lib/rails_admin/adapters/active_record.rb +67 -29
  76. data/lib/rails_admin/adapters/composite_primary_keys/association.rb +45 -0
  77. data/lib/rails_admin/adapters/composite_primary_keys.rb +40 -0
  78. data/lib/rails_admin/adapters/mongoid/association.rb +52 -13
  79. data/lib/rails_admin/adapters/mongoid/bson.rb +6 -5
  80. data/lib/rails_admin/adapters/mongoid/extension.rb +2 -0
  81. data/lib/rails_admin/adapters/mongoid/object_extension.rb +34 -0
  82. data/lib/rails_admin/adapters/mongoid/property.rb +7 -5
  83. data/lib/rails_admin/adapters/mongoid.rb +33 -23
  84. data/lib/rails_admin/config/actions/base.rb +11 -4
  85. data/lib/rails_admin/config/actions/bulk_delete.rb +4 -2
  86. data/lib/rails_admin/config/actions/dashboard.rb +16 -9
  87. data/lib/rails_admin/config/actions/delete.rb +11 -9
  88. data/lib/rails_admin/config/actions/edit.rb +13 -7
  89. data/lib/rails_admin/config/actions/export.rb +6 -3
  90. data/lib/rails_admin/config/actions/history_index.rb +4 -2
  91. data/lib/rails_admin/config/actions/history_show.rb +4 -2
  92. data/lib/rails_admin/config/actions/index.rb +9 -8
  93. data/lib/rails_admin/config/actions/new.rb +18 -10
  94. data/lib/rails_admin/config/actions/show.rb +3 -1
  95. data/lib/rails_admin/config/actions/show_in_app.rb +9 -3
  96. data/lib/rails_admin/config/actions.rb +6 -4
  97. data/lib/rails_admin/config/configurable.rb +4 -2
  98. data/lib/rails_admin/config/const_load_suppressor.rb +78 -0
  99. data/lib/rails_admin/config/fields/association.rb +21 -11
  100. data/lib/rails_admin/config/fields/base.rb +86 -32
  101. data/lib/rails_admin/config/fields/factories/action_text.rb +2 -0
  102. data/lib/rails_admin/config/fields/factories/active_storage.rb +5 -1
  103. data/lib/rails_admin/config/fields/factories/association.rb +12 -13
  104. data/lib/rails_admin/config/fields/factories/carrierwave.rb +6 -2
  105. data/lib/rails_admin/config/fields/factories/devise.rb +6 -2
  106. data/lib/rails_admin/config/fields/factories/dragonfly.rb +6 -2
  107. data/lib/rails_admin/config/fields/factories/enum.rb +2 -0
  108. data/lib/rails_admin/config/fields/factories/paperclip.rb +6 -2
  109. data/lib/rails_admin/config/fields/factories/password.rb +2 -0
  110. data/lib/rails_admin/config/fields/factories/shrine.rb +3 -1
  111. data/lib/rails_admin/config/fields/group.rb +3 -2
  112. data/lib/rails_admin/config/fields/types/action_text.rb +7 -1
  113. data/lib/rails_admin/config/fields/types/active_record_enum.rb +4 -0
  114. data/lib/rails_admin/config/fields/types/active_storage.rb +23 -3
  115. data/lib/rails_admin/config/fields/types/all.rb +4 -0
  116. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +9 -15
  117. data/lib/rails_admin/config/fields/types/boolean.rb +38 -8
  118. data/lib/rails_admin/config/fields/types/bson_object_id.rb +2 -0
  119. data/lib/rails_admin/config/fields/types/carrierwave.rb +3 -0
  120. data/lib/rails_admin/config/fields/types/citext.rb +15 -0
  121. data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -0
  122. data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -0
  123. data/lib/rails_admin/config/fields/types/color.rb +8 -2
  124. data/lib/rails_admin/config/fields/types/composite_keys_belongs_to_association.rb +31 -0
  125. data/lib/rails_admin/config/fields/types/date.rb +12 -6
  126. data/lib/rails_admin/config/fields/types/datetime.rb +36 -21
  127. data/lib/rails_admin/config/fields/types/decimal.rb +11 -2
  128. data/lib/rails_admin/config/fields/types/dragonfly.rb +5 -1
  129. data/lib/rails_admin/config/fields/types/enum.rb +16 -3
  130. data/lib/rails_admin/config/fields/types/file_upload.rb +11 -4
  131. data/lib/rails_admin/config/fields/types/float.rb +11 -2
  132. data/lib/rails_admin/config/fields/types/froala.rb +2 -0
  133. data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +2 -0
  134. data/lib/rails_admin/config/fields/types/has_many_association.rb +7 -5
  135. data/lib/rails_admin/config/fields/types/has_one_association.rb +12 -14
  136. data/lib/rails_admin/config/fields/types/hidden.rb +2 -0
  137. data/lib/rails_admin/config/fields/types/inet.rb +2 -0
  138. data/lib/rails_admin/config/fields/types/integer.rb +4 -6
  139. data/lib/rails_admin/config/fields/types/json.rb +2 -0
  140. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +30 -2
  141. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +3 -0
  142. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +8 -4
  143. data/lib/rails_admin/config/fields/types/numeric.rb +24 -0
  144. data/lib/rails_admin/config/fields/types/paperclip.rb +2 -0
  145. data/lib/rails_admin/config/fields/types/password.rb +2 -0
  146. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +5 -2
  147. data/lib/rails_admin/config/fields/types/serialized.rb +2 -0
  148. data/lib/rails_admin/config/fields/types/shrine.rb +15 -11
  149. data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -0
  150. data/lib/rails_admin/config/fields/types/string.rb +3 -1
  151. data/lib/rails_admin/config/fields/types/string_like.rb +6 -0
  152. data/lib/rails_admin/config/fields/types/text.rb +2 -0
  153. data/lib/rails_admin/config/fields/types/time.rb +16 -4
  154. data/lib/rails_admin/config/fields/types/timestamp.rb +2 -4
  155. data/lib/rails_admin/config/fields/types/uuid.rb +2 -0
  156. data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -0
  157. data/lib/rails_admin/config/fields/types.rb +3 -1
  158. data/lib/rails_admin/config/fields.rb +6 -2
  159. data/lib/rails_admin/config/groupable.rb +2 -0
  160. data/lib/rails_admin/config/has_description.rb +2 -0
  161. data/lib/rails_admin/config/has_fields.rb +12 -7
  162. data/lib/rails_admin/config/has_groups.rb +2 -0
  163. data/lib/rails_admin/config/hideable.rb +3 -1
  164. data/lib/rails_admin/config/inspectable.rb +3 -3
  165. data/lib/rails_admin/config/lazy_model.rb +13 -7
  166. data/lib/rails_admin/config/model.rb +22 -10
  167. data/lib/rails_admin/config/proxyable/proxy.rb +2 -0
  168. data/lib/rails_admin/config/proxyable.rb +2 -0
  169. data/lib/rails_admin/config/sections/base.rb +4 -3
  170. data/lib/rails_admin/config/sections/create.rb +2 -0
  171. data/lib/rails_admin/config/sections/edit.rb +2 -0
  172. data/lib/rails_admin/config/sections/export.rb +2 -0
  173. data/lib/rails_admin/config/sections/list.rb +14 -19
  174. data/lib/rails_admin/config/sections/modal.rb +2 -0
  175. data/lib/rails_admin/config/sections/nested.rb +2 -0
  176. data/lib/rails_admin/config/sections/show.rb +2 -0
  177. data/lib/rails_admin/config/sections/update.rb +2 -0
  178. data/lib/rails_admin/config/sections.rb +3 -1
  179. data/lib/rails_admin/config.rb +80 -47
  180. data/lib/rails_admin/engine.rb +43 -32
  181. data/lib/rails_admin/extension.rb +8 -14
  182. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +25 -6
  183. data/lib/rails_admin/extensions/cancancan.rb +2 -0
  184. data/lib/rails_admin/extensions/controller_extension.rb +2 -0
  185. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +62 -35
  186. data/lib/rails_admin/extensions/paper_trail.rb +2 -0
  187. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +8 -7
  188. data/lib/rails_admin/extensions/pundit.rb +2 -0
  189. data/lib/rails_admin/support/csv_converter.rb +14 -15
  190. data/lib/rails_admin/support/datetime.rb +50 -85
  191. data/lib/rails_admin/support/es_module_processor.rb +23 -0
  192. data/lib/rails_admin/support/hash_helper.rb +8 -5
  193. data/lib/rails_admin/version.rb +41 -2
  194. data/lib/rails_admin.rb +7 -5
  195. data/lib/tasks/rails_admin.rake +19 -8
  196. data/package.json +30 -0
  197. data/src/rails_admin/base.js +29 -0
  198. data/src/rails_admin/filter-box.js +360 -0
  199. data/src/rails_admin/filtering-multiselect.js +389 -0
  200. data/src/rails_admin/filtering-select.js +308 -0
  201. data/src/rails_admin/i18n.js +18 -0
  202. data/src/rails_admin/jquery.js +3 -0
  203. data/src/rails_admin/nested-form-hooks.js +110 -0
  204. data/src/rails_admin/remote-form.js +193 -0
  205. data/src/rails_admin/sidescroll.js +20 -0
  206. data/src/rails_admin/styles/base/theming.scss +342 -0
  207. data/src/rails_admin/styles/base/variables.scss +3 -0
  208. data/src/rails_admin/styles/base.scss +27 -0
  209. data/src/rails_admin/styles/filtering-multiselect.scss +53 -0
  210. data/src/rails_admin/styles/filtering-select.scss +70 -0
  211. data/src/rails_admin/styles/widgets.scss +26 -0
  212. data/src/rails_admin/ui.js +176 -0
  213. data/src/rails_admin/vendor/jquery_nested_form.js +122 -0
  214. data/src/rails_admin/widgets.js +507 -0
  215. data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  216. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
  217. data/vendor/assets/javascripts/rails_admin/bootstrap.js +5046 -0
  218. data/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +11246 -0
  219. data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +41 -0
  220. data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +1637 -0
  221. data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +17 -0
  222. data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +47 -0
  223. data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +500 -0
  224. data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +42 -0
  225. data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +47 -0
  226. data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +51 -0
  227. data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +17 -0
  228. data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +735 -0
  229. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +689 -0
  230. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +680 -0
  231. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +230 -0
  232. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +1561 -0
  233. data/vendor/assets/javascripts/rails_admin/jquery3.js +10881 -0
  234. data/vendor/assets/javascripts/rails_admin/popper.js +1974 -0
  235. data/vendor/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +118 -0
  236. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alert.scss +57 -0
  237. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badge.scss +29 -0
  238. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumb.scss +28 -0
  239. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-group.scss +139 -0
  240. data/vendor/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +64 -110
  241. data/vendor/assets/stylesheets/rails_admin/bootstrap/_card.scss +216 -0
  242. data/vendor/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +162 -176
  243. data/vendor/assets/stylesheets/rails_admin/bootstrap/_close.scss +31 -26
  244. data/vendor/assets/stylesheets/rails_admin/bootstrap/_containers.scss +41 -0
  245. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdown.scss +240 -0
  246. data/vendor/assets/stylesheets/rails_admin/bootstrap/_forms.scss +9 -538
  247. data/vendor/assets/stylesheets/rails_admin/bootstrap/_functions.scss +302 -0
  248. data/vendor/assets/stylesheets/rails_admin/bootstrap/_grid.scss +18 -69
  249. data/vendor/assets/stylesheets/rails_admin/bootstrap/_helpers.scss +9 -0
  250. data/vendor/assets/stylesheets/rails_admin/bootstrap/_images.scss +42 -0
  251. data/vendor/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +127 -84
  252. data/vendor/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +26 -22
  253. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modal.scss +209 -0
  254. data/vendor/assets/stylesheets/rails_admin/bootstrap/_nav.scss +139 -0
  255. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +218 -542
  256. data/vendor/assets/stylesheets/rails_admin/bootstrap/_offcanvas.scss +83 -0
  257. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +46 -70
  258. data/vendor/assets/stylesheets/rails_admin/bootstrap/_placeholders.scss +51 -0
  259. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popover.scss +158 -0
  260. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress.scss +48 -0
  261. data/vendor/assets/stylesheets/rails_admin/bootstrap/_reboot.scss +625 -0
  262. data/vendor/assets/stylesheets/rails_admin/bootstrap/_root.scss +54 -0
  263. data/vendor/assets/stylesheets/rails_admin/bootstrap/_spinners.scss +69 -0
  264. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tables.scss +100 -178
  265. data/vendor/assets/stylesheets/rails_admin/bootstrap/_toasts.scss +51 -0
  266. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +97 -77
  267. data/vendor/assets/stylesheets/rails_admin/bootstrap/_transitions.scss +27 -0
  268. data/vendor/assets/stylesheets/rails_admin/bootstrap/_type.scss +54 -254
  269. data/vendor/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +628 -55
  270. data/vendor/assets/stylesheets/rails_admin/bootstrap/_variables.scss +1572 -781
  271. data/vendor/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +38 -35
  272. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_floating-labels.scss +63 -0
  273. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-check.scss +152 -0
  274. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-control.scss +219 -0
  275. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-range.scss +91 -0
  276. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-select.scss +72 -0
  277. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-text.scss +11 -0
  278. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_input-group.scss +121 -0
  279. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_labels.scss +36 -0
  280. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_validation.scss +12 -0
  281. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_clearfix.scss +3 -0
  282. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_colored-links.scss +12 -0
  283. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_position.scss +30 -0
  284. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_ratio.scss +26 -0
  285. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stacks.scss +15 -0
  286. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stretched-link.scss +15 -0
  287. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_text-truncation.scss +7 -0
  288. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_visually-hidden.scss +8 -0
  289. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_vr.scss +8 -0
  290. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alert.scss +11 -0
  291. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_backdrop.scss +14 -0
  292. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +72 -12
  293. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_box-shadow.scss +18 -0
  294. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_breakpoints.scss +127 -0
  295. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +113 -30
  296. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_caret.scss +64 -0
  297. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +5 -18
  298. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_color-scheme.scss +7 -0
  299. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_container.scss +9 -0
  300. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_deprecate.scss +10 -0
  301. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +130 -70
  302. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +27 -38
  303. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +127 -98
  304. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +6 -24
  305. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +13 -20
  306. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_lists.scss +7 -0
  307. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +24 -16
  308. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-text.scss +17 -0
  309. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +1 -1
  310. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-variants.scss +21 -0
  311. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/{_text-overflow.scss → _text-truncate.scss} +2 -2
  312. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_transition.scss +26 -0
  313. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_utilities.scss +89 -0
  314. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_visually-hidden.scss +29 -0
  315. data/vendor/assets/stylesheets/rails_admin/bootstrap/utilities/_api.scss +47 -0
  316. data/vendor/assets/stylesheets/rails_admin/bootstrap/vendor/_rfs.scss +354 -0
  317. data/vendor/assets/stylesheets/rails_admin/flatpickr.css +791 -0
  318. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +6291 -2282
  319. metadata +182 -330
  320. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  321. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  322. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  323. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  324. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  325. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  326. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  327. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  328. data/app/assets/images/rails_admin/calendar.png +0 -0
  329. data/app/assets/images/rails_admin/clock.png +0 -0
  330. data/app/assets/images/rails_admin/logo.png +0 -0
  331. data/app/assets/images/rails_admin/magnifier.png +0 -0
  332. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  333. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  334. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  335. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  336. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  337. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +0 -8
  338. data/app/assets/javascripts/rails_admin/ra.filter-box.js +0 -226
  339. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +0 -331
  340. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +0 -294
  341. data/app/assets/javascripts/rails_admin/ra.i18n.js +0 -28
  342. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +0 -59
  343. data/app/assets/javascripts/rails_admin/ra.remote-form.js +0 -155
  344. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +0 -31
  345. data/app/assets/javascripts/rails_admin/ra.widgets.js +0 -379
  346. data/app/assets/javascripts/rails_admin/rails_admin.js +0 -20
  347. data/app/assets/javascripts/rails_admin/ui.js +0 -135
  348. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  349. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  350. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  351. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  352. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  353. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  354. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +0 -733
  355. data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +0 -153
  356. data/app/assets/stylesheets/rails_admin/base/theming.scss +0 -341
  357. data/app/assets/stylesheets/rails_admin/base/variables.scss +0 -1
  358. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.scss +0 -88
  359. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +0 -29
  360. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +0 -17
  361. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +0 -110
  362. data/app/assets/stylesheets/rails_admin/themes/cerulean/mixins.scss +0 -0
  363. data/app/assets/stylesheets/rails_admin/themes/cerulean/theming.scss +0 -133
  364. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +0 -857
  365. data/app/assets/stylesheets/rails_admin/themes/default/mixins.scss +0 -8
  366. data/app/assets/stylesheets/rails_admin/themes/default/theming.scss +0 -11
  367. data/app/assets/stylesheets/rails_admin/themes/default/variables.scss +0 -12
  368. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.haml +0 -2
  369. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.haml +0 -4
  370. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.haml +0 -4
  371. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.haml +0 -9
  372. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.haml +0 -4
  373. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +0 -4
  374. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +0 -4
  375. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +0 -4
  376. data/app/views/layouts/rails_admin/_head.html.haml +0 -7
  377. data/app/views/layouts/rails_admin/_navigation.html.haml +0 -12
  378. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +0 -10
  379. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +0 -3
  380. data/app/views/layouts/rails_admin/application.html.haml +0 -16
  381. data/app/views/layouts/rails_admin/pjax.html.haml +0 -12
  382. data/app/views/rails_admin/main/_dashboard_history.html.haml +0 -21
  383. data/app/views/rails_admin/main/_delete_notice.html.haml +0 -24
  384. data/app/views/rails_admin/main/_form_action_text.html.haml +0 -7
  385. data/app/views/rails_admin/main/_form_boolean.html.haml +0 -3
  386. data/app/views/rails_admin/main/_form_code_mirror.html.haml +0 -9
  387. data/app/views/rails_admin/main/_form_colorpicker.html.haml +0 -1
  388. data/app/views/rails_admin/main/_form_datetime.html.haml +0 -5
  389. data/app/views/rails_admin/main/_form_enumeration.html.haml +0 -18
  390. data/app/views/rails_admin/main/_form_field.html.haml +0 -1
  391. data/app/views/rails_admin/main/_form_file_upload.html.haml +0 -17
  392. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +0 -48
  393. data/app/views/rails_admin/main/_form_filtering_select.html.haml +0 -37
  394. data/app/views/rails_admin/main/_form_froala.html.haml +0 -8
  395. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +0 -16
  396. data/app/views/rails_admin/main/_form_nested_many.html.haml +0 -15
  397. data/app/views/rails_admin/main/_form_nested_one.html.haml +0 -17
  398. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +0 -26
  399. data/app/views/rails_admin/main/_form_simple_mde.haml +0 -8
  400. data/app/views/rails_admin/main/_form_text.html.haml +0 -1
  401. data/app/views/rails_admin/main/_form_wysihtml5.html.haml +0 -8
  402. data/app/views/rails_admin/main/_submit_buttons.html.haml +0 -16
  403. data/app/views/rails_admin/main/bulk_delete.html.haml +0 -11
  404. data/app/views/rails_admin/main/dashboard.html.haml +0 -34
  405. data/app/views/rails_admin/main/delete.html.haml +0 -18
  406. data/app/views/rails_admin/main/edit.html.haml +0 -2
  407. data/app/views/rails_admin/main/export.html.haml +0 -92
  408. data/app/views/rails_admin/main/history.html.haml +0 -51
  409. data/app/views/rails_admin/main/index.html.haml +0 -126
  410. data/app/views/rails_admin/main/new.html.haml +0 -2
  411. data/app/views/rails_admin/main/show.html.haml +0 -15
  412. data/config/initializers/devise_patch.rb +0 -9
  413. data/config/initializers/haml.rb +0 -5
  414. data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -32
  415. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +0 -42
  416. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +0 -28
  417. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +0 -16
  418. data/lib/rails_admin/bootstrap-sass.rb +0 -49
  419. data/lib/rails_admin/extensions/history/auditing_adapter.rb +0 -37
  420. data/lib/rails_admin/extensions/history/history.rb +0 -44
  421. data/lib/rails_admin/extensions/history.rb +0 -3
  422. data/lib/rails_admin/support/i18n.rb +0 -43
  423. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  424. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  425. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +0 -2671
  426. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  427. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  428. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  429. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  430. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  431. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  432. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  433. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  434. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  435. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  436. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  437. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  438. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  439. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  440. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  441. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  442. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  443. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  444. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  445. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  446. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  447. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  448. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  449. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  450. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  451. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  452. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  453. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  454. data/vendor/assets/images/rails_admin/colorpicker/select2.png +0 -0
  455. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  456. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -142
  457. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -92
  458. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -110
  459. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -223
  460. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -170
  461. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -151
  462. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -280
  463. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -113
  464. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -170
  465. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -128
  466. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -457
  467. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -59
  468. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -1782
  469. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -13
  470. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +0 -2444
  471. data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
  472. data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +0 -741
  473. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +0 -16165
  474. data/vendor/assets/stylesheets/rails_admin/_bootstrap-datetimepicker.scss +0 -343
  475. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -68
  476. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -57
  477. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -26
  478. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -240
  479. data/vendor/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -68
  480. data/vendor/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -35
  481. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -215
  482. data/vendor/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -237
  483. data/vendor/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -166
  484. data/vendor/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -48
  485. data/vendor/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -66
  486. data/vendor/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -56
  487. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -150
  488. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -242
  489. data/vendor/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -425
  490. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -55
  491. data/vendor/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -243
  492. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -133
  493. data/vendor/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -101
  494. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -105
  495. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -34
  496. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -174
  497. data/vendor/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -150
  498. data/vendor/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -258
  499. data/vendor/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -38
  500. data/vendor/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -29
  501. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -14
  502. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -11
  503. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -7
  504. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -81
  505. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -21
  506. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -12
  507. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -10
  508. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  509. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -8
  510. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -24
  511. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -10
  512. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -8
  513. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -21
  514. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -10
  515. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -9
  516. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -28
  517. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -11
  518. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -219
  519. data/vendor/assets/stylesheets/rails_admin/bootstrap-datetimepicker-build.scss +0 -16
  520. data/vendor/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -182
  521. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/README.txt +0 -0
  522. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/mixins.scss +0 -0
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/multiple_file_upload'
2
4
 
3
5
  module RailsAdmin
@@ -9,7 +11,11 @@ module RailsAdmin
9
11
 
10
12
  class ActiveStorageAttachment < RailsAdmin::Config::Fields::Types::MultipleFileUpload::AbstractAttachment
11
13
  register_instance_option :thumb_method do
12
- {resize: '100x100>'}
14
+ {resize_to_limit: [100, 100]}
15
+ end
16
+
17
+ register_instance_option :keep_value do
18
+ value.signed_id
13
19
  end
14
20
 
15
21
  register_instance_option :delete_value do
@@ -18,12 +24,14 @@ module RailsAdmin
18
24
 
19
25
  register_instance_option :image? do
20
26
  if value
21
- value.filename.to_s.split('.').last =~ /jpg|jpeg|png|gif|svg/i
27
+ mime_type = Mime::Type.lookup_by_extension(value.filename.extension_without_delimiter)
28
+ mime_type.to_s.match?(/^image/)
22
29
  end
23
30
  end
24
31
 
25
32
  def resource_url(thumb = false)
26
33
  return nil unless value
34
+
27
35
  if thumb && value.variable?
28
36
  variant = value.variant(thumb_method)
29
37
  Rails.application.routes.url_helpers.rails_blob_representation_path(
@@ -39,9 +47,29 @@ module RailsAdmin
39
47
  ActiveStorageAttachment
40
48
  end
41
49
 
50
+ register_instance_option :keep_method do
51
+ method_name if ::ActiveStorage.replace_on_assign_to_many
52
+ end
53
+
42
54
  register_instance_option :delete_method do
43
55
  "remove_#{name}" if bindings[:object].respond_to?("remove_#{name}")
44
56
  end
57
+
58
+ register_instance_option :eager_load do
59
+ {"#{name}_attachments": :blob}
60
+ end
61
+
62
+ register_instance_option :direct? do
63
+ false
64
+ end
65
+
66
+ register_instance_option :html_attributes do
67
+ {
68
+ required: required? && !value.present?,
69
+ }.merge(
70
+ direct? && {data: {direct_upload_url: bindings[:view].main_app.rails_direct_uploads_url}} || {},
71
+ )
72
+ end
45
73
  end
46
74
  end
47
75
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/multiple_file_upload'
2
4
 
3
5
  module RailsAdmin
@@ -22,6 +24,7 @@ module RailsAdmin
22
24
 
23
25
  def resource_url(thumb = false)
24
26
  return nil unless value
27
+
25
28
  thumb.present? ? value.send(thumb).url : value.url
26
29
  end
27
30
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Fields
@@ -36,19 +38,21 @@ module RailsAdmin
36
38
  if image
37
39
  thumb_url = resource_url(thumb_method)
38
40
  image_html = v.image_tag(thumb_url, class: 'img-thumbnail')
39
- url != thumb_url ? v.link_to(image_html, url, target: '_blank', rel: 'noopener noreferrer') : image_html
41
+ url == thumb_url ? image_html : v.link_to(image_html, url, target: '_blank', rel: 'noopener noreferrer')
40
42
  else
41
- v.link_to(value, url, target: '_blank', rel: 'noopener noreferrer')
43
+ display_value = value.respond_to?(:filename) ? value.filename : value
44
+ v.link_to(display_value, url, target: '_blank', rel: 'noopener noreferrer')
42
45
  end
43
46
  end
44
47
  end
45
48
 
46
49
  register_instance_option :image? do
47
- (url = resource_url.to_s) && url.split('.').last =~ /jpg|jpeg|png|gif|svg/i
50
+ mime_type = Mime::Type.lookup_by_extension(resource_url.to_s.split('.').last)
51
+ mime_type.to_s.match?(/^image/)
48
52
  end
49
53
 
50
54
  def resource_url(_thumb = false)
51
- raise('not implemented')
55
+ raise 'not implemented'
52
56
  end
53
57
  end
54
58
 
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_admin/config/fields/base'
4
+
5
+ module RailsAdmin
6
+ module Config
7
+ module Fields
8
+ module Types
9
+ class Numeric < RailsAdmin::Config::Fields::Base
10
+ # Register field type for the type loader
11
+ RailsAdmin::Config::Fields::Types.register(self)
12
+
13
+ register_instance_option :filter_operators do
14
+ %w[default between] + (required? ? [] : %w[_separator _not_null _null])
15
+ end
16
+
17
+ register_instance_option :view_helper do
18
+ :number_field
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/base'
2
4
  require 'rails_admin/config/fields/types/file_upload'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/string'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/belongs_to_association'
2
4
 
3
5
  module RailsAdmin
@@ -45,12 +47,13 @@ module RailsAdmin
45
47
  [children_fields]
46
48
  end
47
49
 
48
- register_instance_option :eager_load? do
50
+ register_instance_option :eager_load do
49
51
  false
50
52
  end
51
53
 
52
54
  def associated_collection(type)
53
55
  return [] if type.blank?
56
+
54
57
  config = RailsAdmin.config(type)
55
58
  config.abstract_model.all.collect do |object|
56
59
  [object.send(config.object_label_method), object.id]
@@ -58,7 +61,7 @@ module RailsAdmin
58
61
  end
59
62
 
60
63
  def associated_model_config
61
- @associated_model_config ||= association.klass.collect { |type| RailsAdmin.config(type) }.select { |config| !config.excluded? }
64
+ @associated_model_config ||= association.klass.collect { |type| RailsAdmin.config(type) }.reject(&:excluded?)
62
65
  end
63
66
 
64
67
  def polymorphic_type_collection
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/text'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/file_upload'
2
4
 
3
5
  module RailsAdmin
@@ -10,14 +12,16 @@ module RailsAdmin
10
12
  register_instance_option :thumb_method do
11
13
  unless defined? @thumb_method
12
14
  @thumb_method = begin
13
- next nil unless value.is_a?(Hash)
15
+ next nil unless bindings[:object].respond_to?("#{name}_derivatives")
16
+
17
+ derivatives = bindings[:object].public_send("#{name}_derivatives")
14
18
 
15
- if value.key?(:thumb)
19
+ if derivatives.key?(:thumb)
16
20
  :thumb
17
- elsif value.key?(:thumbnail)
21
+ elsif derivatives.key?(:thumbnail)
18
22
  :thumbnail
19
23
  else
20
- value.keys.first
24
+ derivatives.keys.first
21
25
  end
22
26
  end
23
27
  end
@@ -29,21 +33,21 @@ module RailsAdmin
29
33
  end
30
34
 
31
35
  register_instance_option :cache_method do
32
- name
36
+ name if bindings[:object].try("cached_#{name}_data")
33
37
  end
34
38
 
35
39
  register_instance_option :cache_value do
36
- bindings[:object].public_send("cached_#{name}_data") if bindings[:object].respond_to?("cached_#{name}_data")
40
+ bindings[:object].try("cached_#{name}_data")
41
+ end
42
+
43
+ register_instance_option :link_name do
44
+ value.original_filename
37
45
  end
38
46
 
39
47
  def resource_url(thumb = nil)
40
48
  return nil unless value
41
49
 
42
- if value.is_a?(Hash)
43
- value[thumb || value.keys.first].url
44
- else
45
- value.url
46
- end
50
+ thumb && bindings[:object].public_send(:"#{name}", thumb).try(:url) || value.url
47
51
  end
48
52
  end
49
53
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/text'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/string_like'
2
4
 
3
5
  module RailsAdmin
@@ -20,7 +22,7 @@ module RailsAdmin
20
22
  end
21
23
 
22
24
  def generic_help
23
- text = (required? ? I18n.translate('admin.form.required') : I18n.translate('admin.form.optional')) + '. '
25
+ text = "#{required? ? I18n.translate('admin.form.required') : I18n.translate('admin.form.optional')}. "
24
26
  if valid_length.present? && valid_length[:is].present?
25
27
  text += "#{I18n.translate('admin.form.char_length_of').capitalize} #{valid_length[:is]}."
26
28
  else
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/base'
2
4
 
3
5
  module RailsAdmin
@@ -5,6 +7,10 @@ module RailsAdmin
5
7
  module Fields
6
8
  module Types
7
9
  class StringLike < RailsAdmin::Config::Fields::Base
10
+ register_instance_option :filter_operators do
11
+ %w[_discard like not_like is starts_with ends_with] + (required? ? [] : %w[_separator _present _blank])
12
+ end
13
+
8
14
  register_instance_option :treat_empty_as_nil? do
9
15
  properties.try(:nullable?)
10
16
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/string_like'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/datetime'
2
4
 
3
5
  module RailsAdmin
@@ -8,10 +10,20 @@ module RailsAdmin
8
10
  RailsAdmin::Config::Fields::Types.register(self)
9
11
 
10
12
  def parse_value(value)
11
- parent_value = super(value)
12
- return unless parent_value
13
- value_with_tz = parent_value.in_time_zone
14
- ::DateTime.parse(value_with_tz.strftime('%Y-%m-%d %H:%M:%S'))
13
+ abstract_model.model.type_for_attribute(name.to_s).serialize(super)&.change(year: 2000, month: 1, day: 1)
14
+ end
15
+
16
+ register_instance_option :filter_operators do
17
+ %w[default between] + (required? ? [] : %w[_separator _not_null _null])
18
+ end
19
+
20
+ register_instance_option :datepicker_options do
21
+ {
22
+ allowInput: true,
23
+ altFormat: flatpickr_format,
24
+ enableTime: true,
25
+ noCalendar: true,
26
+ }
15
27
  end
16
28
 
17
29
  register_instance_option :strftime_format do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/datetime'
2
4
 
3
5
  module RailsAdmin
@@ -7,10 +9,6 @@ module RailsAdmin
7
9
  class Timestamp < RailsAdmin::Config::Fields::Types::Datetime
8
10
  # Register field type for the type loader
9
11
  RailsAdmin::Config::Fields::Types.register(self)
10
-
11
- @format = :long
12
- @i18n_scope = [:time, :formats]
13
- @js_plugin_options = {}
14
12
  end
15
13
  end
16
14
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/string'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/types/text'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/core_ext/string/inflections'
2
4
  require 'rails_admin/config/fields'
3
5
  require 'rails_admin/config/fields/association'
@@ -9,7 +11,7 @@ module RailsAdmin
9
11
  @@registry = {}
10
12
 
11
13
  def self.load(type)
12
- @@registry[type.to_sym] || raise("Unsupported field datatype: #{type}")
14
+ @@registry.fetch(type.to_sym) { raise "Unsupported field datatype: #{type}" }
13
15
  end
14
16
 
15
17
  def self.register(type, klass = nil)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Fields
@@ -20,7 +22,7 @@ module RailsAdmin
20
22
 
21
23
  # Registry of field factories.
22
24
  #
23
- # Field factory is an anonymous function that recieves the parent object,
25
+ # Field factory is an anonymous function that receives the parent object,
24
26
  # an array of field properties and an array of fields already instantiated.
25
27
  #
26
28
  # If the factory returns true then that property will not be run through
@@ -50,13 +52,15 @@ module RailsAdmin
50
52
  parent.abstract_model.properties.each do |properties|
51
53
  # Unless a previous factory has already loaded current field as well
52
54
  next if fields.detect { |f| f.name == properties.name }
55
+
53
56
  # Loop through factories until one returns true
54
57
  @@registry.detect { |factory| factory.call(parent, properties, fields) }
55
58
  end
56
59
  # Load fields for all associations (relations)
57
- parent.abstract_model.associations.select { |a| a.type != :belongs_to }.each do |association| # :belongs_to are created by factory for belongs_to fields
60
+ parent.abstract_model.associations.reject { |a| a.type == :belongs_to }.each do |association| # :belongs_to are created by factory for belongs_to fields
58
61
  # Unless a previous factory has already loaded current field as well
59
62
  next if fields.detect { |f| f.name == association.name }
63
+
60
64
  # Loop through factories until one returns true
61
65
  @@registry.detect { |factory| factory.call(parent, association, fields) }
62
66
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/group'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  # Provides accessor and autoregistering of model's description.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  # Provides accessors and autoregistering of model's fields.
@@ -8,9 +10,7 @@ module RailsAdmin
8
10
 
9
11
  # some fields are hidden by default (belongs_to keys, has_many associations in list views.)
10
12
  # unhide them if config specifically defines them
11
- if field
12
- field.show unless field.instance_variable_get("@#{field.name}_registered").is_a?(Proc)
13
- end
13
+ field.show if field && !field.instance_variable_get("@#{field.name}_registered").is_a?(Proc)
14
14
  # Specify field as virtual if type is not specifically set and field was not
15
15
  # found in default stack
16
16
  if field.nil? && type.nil?
@@ -39,17 +39,18 @@ module RailsAdmin
39
39
  field
40
40
  end
41
41
 
42
- # configure a field without adding it.
42
+ # configure field(s) from the default group in a section without changing the original order.
43
43
  def configure(name, type = nil, &block)
44
- field(name, type, false, &block)
44
+ [*name].each { |field_name| field(field_name, type, false, &block) }
45
45
  end
46
46
 
47
- # include fields by name and apply an optionnal block to each (through a call to fields),
47
+ # include fields by name and apply an optional block to each (through a call to fields),
48
48
  # or include fields by conditions if no field names
49
49
  def include_fields(*field_names, &block)
50
50
  if field_names.empty?
51
51
  _fields.select { |f| f.instance_eval(&block) }.each do |f|
52
52
  next if f.defined
53
+
53
54
  f.defined = true
54
55
  f.order = _fields.count(&:defined)
55
56
  end
@@ -117,6 +118,10 @@ module RailsAdmin
117
118
  all_fields.collect { |f| f.with(bindings) }.select(&:visible?).sort_by { |f| [f.order, i += 1] } # stable sort, damn
118
119
  end
119
120
 
121
+ def possible_fields
122
+ _fields(true)
123
+ end
124
+
120
125
  protected
121
126
 
122
127
  # Raw fields.
@@ -126,7 +131,7 @@ module RailsAdmin
126
131
  return @_fields if @_fields
127
132
  return @_ro_fields if readonly && @_ro_fields
128
133
 
129
- if self.class == RailsAdmin::Config::Sections::Base
134
+ if instance_of?(RailsAdmin::Config::Sections::Base)
130
135
  @_ro_fields = @_fields = RailsAdmin::Config::Fields.factory(self)
131
136
  else
132
137
  # parent is RailsAdmin::Config::Model, recursion is on Section's classes
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/fields/group'
2
4
 
3
5
  module RailsAdmin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  # Defines a visibility configuration
@@ -16,7 +18,7 @@ module RailsAdmin
16
18
 
17
19
  # Writer to hide object.
18
20
  def hide(&block)
19
- visible block ? proc { false == instance_eval(&block) } : false
21
+ visible block ? proc { instance_eval(&block) == false } : false
20
22
  end
21
23
 
22
24
  # Writer to show field.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Inspectable
@@ -30,9 +32,7 @@ module RailsAdmin
30
32
  end
31
33
 
32
34
  def set_named_instance_variables
33
- unless defined?(self.class::NAMED_INSTANCE_VARIABLES)
34
- self.class.const_set('NAMED_INSTANCE_VARIABLES', [])
35
- end
35
+ self.class.const_set('NAMED_INSTANCE_VARIABLES', []) unless defined?(self.class::NAMED_INSTANCE_VARIABLES)
36
36
  end
37
37
  end
38
38
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/model'
2
4
 
3
5
  module RailsAdmin
@@ -6,11 +8,15 @@ module RailsAdmin
6
8
  def initialize(entity, &block)
7
9
  @entity = entity
8
10
  @deferred_blocks = [*block]
9
- @existing_blocks = []
11
+ @initialized = false
10
12
  end
11
13
 
12
14
  def add_deferred_block(&block)
13
- @deferred_blocks << block
15
+ if @initialized
16
+ @model.instance_eval(&block)
17
+ else
18
+ @deferred_blocks << block
19
+ end
14
20
  end
15
21
 
16
22
  def target
@@ -42,17 +48,17 @@ module RailsAdmin
42
48
  # :
43
49
  # end
44
50
  #
45
- # Thus, sort all blocks to excute for a resource by Proc.source_path,
51
+ # Thus, sort all blocks to execute for a resource by Proc.source_path,
46
52
  # to guarantee that blocks from 'config/initializers' evaluate before
47
53
  # blocks defined within a model class.
48
54
  unless @deferred_blocks.empty?
49
- @existing_blocks += @deferred_blocks
50
- @existing_blocks.
51
- partition { |block| block.source_location.first =~ %r{config\/initializers} }.
55
+ @deferred_blocks.
56
+ partition { |block| block.source_location.first =~ %r{config/initializers} }.
52
57
  flatten.
53
58
  each { |block| @model.instance_eval(&block) }
54
59
  @deferred_blocks = []
55
60
  end
61
+ @initialized = true
56
62
  @model
57
63
  end
58
64
 
@@ -60,7 +66,7 @@ module RailsAdmin
60
66
  target.send(method_name, *args, &block)
61
67
  end
62
68
 
63
- def respond_to?(method_name, include_private = false)
69
+ def respond_to_missing?(method_name, include_private = false)
64
70
  super || target.respond_to?(method_name, include_private)
65
71
  end
66
72
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config'
2
4
  require 'rails_admin/config/proxyable'
3
5
  require 'rails_admin/config/configurable'
@@ -21,30 +23,33 @@ module RailsAdmin
21
23
  include RailsAdmin::Config::Sections
22
24
  include RailsAdmin::Config::Inspectable
23
25
 
24
- attr_reader :abstract_model
26
+ attr_reader :abstract_model, :parent, :root
25
27
  attr_accessor :groups
26
- attr_reader :parent, :root
27
28
 
28
- NAMED_INSTANCE_VARIABLES = [:@parent, :@root].freeze
29
+ NAMED_INSTANCE_VARIABLES = %i[@parent @root].freeze
29
30
 
30
31
  def initialize(entity)
31
32
  @parent = nil
32
33
  @root = self
33
34
 
34
- @abstract_model = begin
35
- if entity.is_a?(RailsAdmin::AbstractModel)
35
+ @abstract_model =
36
+ case entity
37
+ when RailsAdmin::AbstractModel
36
38
  entity
37
- elsif entity.is_a?(Class) || entity.is_a?(String) || entity.is_a?(Symbol)
39
+ when Class, String
38
40
  RailsAdmin::AbstractModel.new(entity)
41
+ when Symbol
42
+ RailsAdmin::AbstractModel.new(entity.to_s)
39
43
  else
40
44
  RailsAdmin::AbstractModel.new(entity.class)
41
45
  end
42
- end
46
+
43
47
  @groups = [RailsAdmin::Config::Fields::Group.new(self, :default).tap { |g| g.label { I18n.translate('admin.form.basic_info') } }]
44
48
  end
45
49
 
46
50
  def excluded?
47
51
  return @excluded if defined?(@excluded)
52
+
48
53
  @excluded = !RailsAdmin::AbstractModel.all.collect(&:model_name).include?(abstract_model.try(:model_name))
49
54
  end
50
55
 
@@ -81,23 +86,30 @@ module RailsAdmin
81
86
  register_instance_option :parent do
82
87
  @parent_model ||= begin
83
88
  klass = abstract_model.model.superclass
84
- klass = nil if klass.to_s.in?(%w(Object BasicObject ActiveRecord::Base))
89
+ klass = nil if klass.to_s.in?(%w[Object BasicObject ActiveRecord::Base])
85
90
  klass
86
91
  end
87
92
  end
88
93
 
89
94
  register_instance_option :navigation_label do
90
- @navigation_label ||= begin
95
+ @navigation_label ||=
91
96
  if (parent_module = abstract_model.model.try(:module_parent) || abstract_model.model.try!(:parent)) != Object
92
97
  parent_module.to_s
93
98
  end
94
- end
95
99
  end
96
100
 
97
101
  register_instance_option :navigation_icon do
98
102
  nil
99
103
  end
100
104
 
105
+ register_instance_option :scope do
106
+ abstract_model.scoped
107
+ end
108
+
109
+ register_instance_option :last_created_at do
110
+ abstract_model.model.last.try(:created_at) if abstract_model.properties.detect { |c| c.name == :created_at }
111
+ end
112
+
101
113
  # Act as a proxy for the base section configuration that actually
102
114
  # store the configurations.
103
115
  def method_missing(method_name, *args, &block)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsAdmin
2
4
  module Config
3
5
  module Proxyable
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_admin/config/proxyable/proxy'
2
4
  module RailsAdmin
3
5
  module Config