rails_admin 2.0.2 → 3.1.0

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 (519) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -16
  3. data/README.md +42 -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 +114 -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 +12 -6
  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 +76 -42
  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 -14
  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 +42 -3
  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 +30 -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/nested-form-hooks.js +110 -0
  203. data/src/rails_admin/remote-form.js +193 -0
  204. data/src/rails_admin/sidescroll.js +20 -0
  205. data/src/rails_admin/styles/base/theming.scss +342 -0
  206. data/src/rails_admin/styles/base/variables.scss +3 -0
  207. data/src/rails_admin/styles/base.scss +27 -0
  208. data/src/rails_admin/styles/filtering-multiselect.scss +53 -0
  209. data/src/rails_admin/styles/filtering-select.scss +70 -0
  210. data/src/rails_admin/styles/widgets.scss +26 -0
  211. data/src/rails_admin/ui.js +170 -0
  212. data/src/rails_admin/vendor/jquery_nested_form.js +122 -0
  213. data/src/rails_admin/widgets.js +507 -0
  214. data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  215. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
  216. data/vendor/assets/javascripts/rails_admin/bootstrap.js +5046 -0
  217. data/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +11246 -0
  218. data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +41 -0
  219. data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +1637 -0
  220. data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +17 -0
  221. data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +47 -0
  222. data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +500 -0
  223. data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +42 -0
  224. data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +47 -0
  225. data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +51 -0
  226. data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +17 -0
  227. data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +735 -0
  228. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +689 -0
  229. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +680 -0
  230. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +230 -0
  231. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +1561 -0
  232. data/vendor/assets/javascripts/rails_admin/jquery3.js +10881 -0
  233. data/vendor/assets/javascripts/rails_admin/popper.js +1974 -0
  234. data/vendor/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +118 -0
  235. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alert.scss +57 -0
  236. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badge.scss +29 -0
  237. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumb.scss +28 -0
  238. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-group.scss +139 -0
  239. data/vendor/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +64 -110
  240. data/vendor/assets/stylesheets/rails_admin/bootstrap/_card.scss +216 -0
  241. data/vendor/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +162 -176
  242. data/vendor/assets/stylesheets/rails_admin/bootstrap/_close.scss +31 -26
  243. data/vendor/assets/stylesheets/rails_admin/bootstrap/_containers.scss +41 -0
  244. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdown.scss +240 -0
  245. data/vendor/assets/stylesheets/rails_admin/bootstrap/_forms.scss +9 -538
  246. data/vendor/assets/stylesheets/rails_admin/bootstrap/_functions.scss +302 -0
  247. data/vendor/assets/stylesheets/rails_admin/bootstrap/_grid.scss +18 -69
  248. data/vendor/assets/stylesheets/rails_admin/bootstrap/_helpers.scss +9 -0
  249. data/vendor/assets/stylesheets/rails_admin/bootstrap/_images.scss +42 -0
  250. data/vendor/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +127 -84
  251. data/vendor/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +26 -22
  252. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modal.scss +209 -0
  253. data/vendor/assets/stylesheets/rails_admin/bootstrap/_nav.scss +139 -0
  254. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +218 -542
  255. data/vendor/assets/stylesheets/rails_admin/bootstrap/_offcanvas.scss +83 -0
  256. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +46 -70
  257. data/vendor/assets/stylesheets/rails_admin/bootstrap/_placeholders.scss +51 -0
  258. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popover.scss +158 -0
  259. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress.scss +48 -0
  260. data/vendor/assets/stylesheets/rails_admin/bootstrap/_reboot.scss +625 -0
  261. data/vendor/assets/stylesheets/rails_admin/bootstrap/_root.scss +54 -0
  262. data/vendor/assets/stylesheets/rails_admin/bootstrap/_spinners.scss +69 -0
  263. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tables.scss +100 -178
  264. data/vendor/assets/stylesheets/rails_admin/bootstrap/_toasts.scss +51 -0
  265. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +97 -77
  266. data/vendor/assets/stylesheets/rails_admin/bootstrap/_transitions.scss +27 -0
  267. data/vendor/assets/stylesheets/rails_admin/bootstrap/_type.scss +54 -254
  268. data/vendor/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +628 -55
  269. data/vendor/assets/stylesheets/rails_admin/bootstrap/_variables.scss +1572 -781
  270. data/vendor/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +38 -35
  271. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_floating-labels.scss +63 -0
  272. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-check.scss +152 -0
  273. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-control.scss +219 -0
  274. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-range.scss +91 -0
  275. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-select.scss +72 -0
  276. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-text.scss +11 -0
  277. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_input-group.scss +121 -0
  278. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_labels.scss +36 -0
  279. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_validation.scss +12 -0
  280. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_clearfix.scss +3 -0
  281. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_colored-links.scss +12 -0
  282. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_position.scss +30 -0
  283. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_ratio.scss +26 -0
  284. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stacks.scss +15 -0
  285. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stretched-link.scss +15 -0
  286. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_text-truncation.scss +7 -0
  287. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_visually-hidden.scss +8 -0
  288. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_vr.scss +8 -0
  289. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alert.scss +11 -0
  290. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_backdrop.scss +14 -0
  291. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +72 -12
  292. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_box-shadow.scss +18 -0
  293. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_breakpoints.scss +127 -0
  294. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +113 -30
  295. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_caret.scss +64 -0
  296. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +5 -18
  297. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_color-scheme.scss +7 -0
  298. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_container.scss +9 -0
  299. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_deprecate.scss +10 -0
  300. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +130 -70
  301. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +27 -38
  302. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +127 -98
  303. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +6 -24
  304. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +13 -20
  305. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_lists.scss +7 -0
  306. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +24 -16
  307. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-text.scss +17 -0
  308. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +1 -1
  309. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-variants.scss +21 -0
  310. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/{_text-overflow.scss → _text-truncate.scss} +2 -2
  311. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_transition.scss +26 -0
  312. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_utilities.scss +89 -0
  313. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_visually-hidden.scss +29 -0
  314. data/vendor/assets/stylesheets/rails_admin/bootstrap/utilities/_api.scss +47 -0
  315. data/vendor/assets/stylesheets/rails_admin/bootstrap/vendor/_rfs.scss +354 -0
  316. data/vendor/assets/stylesheets/rails_admin/flatpickr.css +791 -0
  317. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +6291 -2282
  318. metadata +181 -328
  319. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  320. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  321. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  322. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  323. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  324. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  325. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  326. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  327. data/app/assets/images/rails_admin/calendar.png +0 -0
  328. data/app/assets/images/rails_admin/clock.png +0 -0
  329. data/app/assets/images/rails_admin/logo.png +0 -0
  330. data/app/assets/images/rails_admin/magnifier.png +0 -0
  331. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  332. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  333. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  334. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  335. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  336. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +0 -8
  337. data/app/assets/javascripts/rails_admin/ra.filter-box.js +0 -226
  338. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +0 -331
  339. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +0 -294
  340. data/app/assets/javascripts/rails_admin/ra.i18n.js +0 -28
  341. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +0 -59
  342. data/app/assets/javascripts/rails_admin/ra.remote-form.js +0 -155
  343. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +0 -31
  344. data/app/assets/javascripts/rails_admin/ra.widgets.js +0 -379
  345. data/app/assets/javascripts/rails_admin/rails_admin.js +0 -20
  346. data/app/assets/javascripts/rails_admin/ui.js +0 -135
  347. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  348. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  349. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  350. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  351. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  352. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  353. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +0 -733
  354. data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +0 -153
  355. data/app/assets/stylesheets/rails_admin/base/theming.scss +0 -341
  356. data/app/assets/stylesheets/rails_admin/base/variables.scss +0 -1
  357. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.scss +0 -88
  358. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +0 -29
  359. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +0 -17
  360. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +0 -110
  361. data/app/assets/stylesheets/rails_admin/themes/cerulean/mixins.scss +0 -0
  362. data/app/assets/stylesheets/rails_admin/themes/cerulean/theming.scss +0 -133
  363. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +0 -857
  364. data/app/assets/stylesheets/rails_admin/themes/default/mixins.scss +0 -8
  365. data/app/assets/stylesheets/rails_admin/themes/default/theming.scss +0 -11
  366. data/app/assets/stylesheets/rails_admin/themes/default/variables.scss +0 -12
  367. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.haml +0 -2
  368. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.haml +0 -4
  369. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.haml +0 -4
  370. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.haml +0 -9
  371. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.haml +0 -4
  372. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +0 -4
  373. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +0 -4
  374. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +0 -4
  375. data/app/views/layouts/rails_admin/_head.html.haml +0 -7
  376. data/app/views/layouts/rails_admin/_navigation.html.haml +0 -12
  377. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +0 -10
  378. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +0 -3
  379. data/app/views/layouts/rails_admin/application.html.haml +0 -16
  380. data/app/views/layouts/rails_admin/pjax.html.haml +0 -12
  381. data/app/views/rails_admin/main/_dashboard_history.html.haml +0 -21
  382. data/app/views/rails_admin/main/_delete_notice.html.haml +0 -24
  383. data/app/views/rails_admin/main/_form_action_text.html.haml +0 -7
  384. data/app/views/rails_admin/main/_form_boolean.html.haml +0 -3
  385. data/app/views/rails_admin/main/_form_code_mirror.html.haml +0 -9
  386. data/app/views/rails_admin/main/_form_colorpicker.html.haml +0 -1
  387. data/app/views/rails_admin/main/_form_datetime.html.haml +0 -5
  388. data/app/views/rails_admin/main/_form_enumeration.html.haml +0 -18
  389. data/app/views/rails_admin/main/_form_field.html.haml +0 -1
  390. data/app/views/rails_admin/main/_form_file_upload.html.haml +0 -17
  391. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +0 -48
  392. data/app/views/rails_admin/main/_form_filtering_select.html.haml +0 -37
  393. data/app/views/rails_admin/main/_form_froala.html.haml +0 -8
  394. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +0 -16
  395. data/app/views/rails_admin/main/_form_nested_many.html.haml +0 -15
  396. data/app/views/rails_admin/main/_form_nested_one.html.haml +0 -17
  397. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +0 -26
  398. data/app/views/rails_admin/main/_form_simple_mde.haml +0 -8
  399. data/app/views/rails_admin/main/_form_text.html.haml +0 -1
  400. data/app/views/rails_admin/main/_form_wysihtml5.html.haml +0 -8
  401. data/app/views/rails_admin/main/_submit_buttons.html.haml +0 -16
  402. data/app/views/rails_admin/main/bulk_delete.html.haml +0 -11
  403. data/app/views/rails_admin/main/dashboard.html.haml +0 -34
  404. data/app/views/rails_admin/main/delete.html.haml +0 -18
  405. data/app/views/rails_admin/main/edit.html.haml +0 -2
  406. data/app/views/rails_admin/main/export.html.haml +0 -92
  407. data/app/views/rails_admin/main/history.html.haml +0 -51
  408. data/app/views/rails_admin/main/index.html.haml +0 -126
  409. data/app/views/rails_admin/main/new.html.haml +0 -2
  410. data/app/views/rails_admin/main/show.html.haml +0 -15
  411. data/config/initializers/devise_patch.rb +0 -9
  412. data/config/initializers/haml.rb +0 -5
  413. data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -32
  414. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +0 -42
  415. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +0 -28
  416. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +0 -16
  417. data/lib/rails_admin/bootstrap-sass.rb +0 -49
  418. data/lib/rails_admin/extensions/history/auditing_adapter.rb +0 -37
  419. data/lib/rails_admin/extensions/history/history.rb +0 -44
  420. data/lib/rails_admin/extensions/history.rb +0 -3
  421. data/lib/rails_admin/support/i18n.rb +0 -43
  422. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  423. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  424. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +0 -2671
  425. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  426. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  427. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  428. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  429. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  430. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  431. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  432. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  433. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  434. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  435. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  436. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  437. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  438. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  439. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  440. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  441. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  442. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  443. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  444. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  445. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  446. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  447. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  448. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  449. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  450. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  451. data/vendor/assets/images/rails_admin/colorpicker/select2.png +0 -0
  452. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  453. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -142
  454. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -92
  455. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -110
  456. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -223
  457. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -170
  458. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -151
  459. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -280
  460. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -113
  461. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -170
  462. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -128
  463. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -457
  464. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -59
  465. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -1782
  466. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -13
  467. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +0 -2444
  468. data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
  469. data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +0 -741
  470. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +0 -16165
  471. data/vendor/assets/stylesheets/rails_admin/_bootstrap-datetimepicker.scss +0 -343
  472. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -68
  473. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -57
  474. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -26
  475. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -240
  476. data/vendor/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -68
  477. data/vendor/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -35
  478. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -215
  479. data/vendor/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -237
  480. data/vendor/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -166
  481. data/vendor/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -48
  482. data/vendor/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -66
  483. data/vendor/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -56
  484. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -150
  485. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -242
  486. data/vendor/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -425
  487. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -55
  488. data/vendor/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -243
  489. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -133
  490. data/vendor/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -101
  491. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -105
  492. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -34
  493. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -174
  494. data/vendor/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -150
  495. data/vendor/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -258
  496. data/vendor/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -38
  497. data/vendor/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -29
  498. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -14
  499. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -11
  500. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -7
  501. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -81
  502. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -21
  503. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -12
  504. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -10
  505. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  506. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -8
  507. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -24
  508. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -10
  509. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -8
  510. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -21
  511. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -10
  512. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -9
  513. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -28
  514. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -11
  515. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -219
  516. data/vendor/assets/stylesheets/rails_admin/bootstrap-datetimepicker-build.scss +0 -16
  517. data/vendor/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -182
  518. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/README.txt +0 -0
  519. /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
@@ -46,13 +52,13 @@ module RailsAdmin
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