rails_admin 2.2.1 → 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 +12 -11
  3. data/README.md +42 -43
  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 +17 -6
  13. data/app/helpers/rails_admin/main_helper.rb +18 -42
  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 -3
  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 +60 -28
  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 -36
  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 -7
  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 +6 -3
  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 -6
  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 +6 -3
  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 +2 -0
  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 +81 -44
  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 +61 -34
  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 +42 -3
  194. data/lib/rails_admin.rb +7 -5
  195. data/lib/tasks/rails_admin.rake +5 -3
  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 +180 -328
  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/jquery.migrate.js +0 -3
  339. data/app/assets/javascripts/rails_admin/ra.filter-box.js +0 -246
  340. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +0 -331
  341. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +0 -294
  342. data/app/assets/javascripts/rails_admin/ra.i18n.js +0 -28
  343. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +0 -59
  344. data/app/assets/javascripts/rails_admin/ra.remote-form.js +0 -155
  345. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +0 -31
  346. data/app/assets/javascripts/rails_admin/ra.widgets.js +0 -379
  347. data/app/assets/javascripts/rails_admin/rails_admin.js +0 -21
  348. data/app/assets/javascripts/rails_admin/ui.js +0 -135
  349. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  350. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  351. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  352. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  353. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  354. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  355. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +0 -733
  356. data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +0 -153
  357. data/app/assets/stylesheets/rails_admin/base/theming.scss +0 -341
  358. data/app/assets/stylesheets/rails_admin/base/variables.scss +0 -1
  359. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.scss +0 -88
  360. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +0 -29
  361. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +0 -17
  362. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +0 -110
  363. data/app/assets/stylesheets/rails_admin/themes/cerulean/mixins.scss +0 -0
  364. data/app/assets/stylesheets/rails_admin/themes/cerulean/theming.scss +0 -133
  365. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +0 -857
  366. data/app/assets/stylesheets/rails_admin/themes/default/mixins.scss +0 -8
  367. data/app/assets/stylesheets/rails_admin/themes/default/theming.scss +0 -11
  368. data/app/assets/stylesheets/rails_admin/themes/default/variables.scss +0 -12
  369. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.haml +0 -2
  370. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.haml +0 -4
  371. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.haml +0 -4
  372. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.haml +0 -9
  373. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.haml +0 -4
  374. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +0 -4
  375. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +0 -4
  376. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +0 -4
  377. data/app/views/layouts/rails_admin/_head.html.haml +0 -7
  378. data/app/views/layouts/rails_admin/_navigation.html.haml +0 -12
  379. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +0 -10
  380. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +0 -3
  381. data/app/views/layouts/rails_admin/application.html.haml +0 -16
  382. data/app/views/layouts/rails_admin/pjax.html.haml +0 -12
  383. data/app/views/rails_admin/main/_dashboard_history.html.haml +0 -21
  384. data/app/views/rails_admin/main/_delete_notice.html.haml +0 -24
  385. data/app/views/rails_admin/main/_form_action_text.html.haml +0 -7
  386. data/app/views/rails_admin/main/_form_boolean.html.haml +0 -3
  387. data/app/views/rails_admin/main/_form_code_mirror.html.haml +0 -9
  388. data/app/views/rails_admin/main/_form_colorpicker.html.haml +0 -1
  389. data/app/views/rails_admin/main/_form_datetime.html.haml +0 -5
  390. data/app/views/rails_admin/main/_form_enumeration.html.haml +0 -19
  391. data/app/views/rails_admin/main/_form_field.html.haml +0 -1
  392. data/app/views/rails_admin/main/_form_file_upload.html.haml +0 -17
  393. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +0 -49
  394. data/app/views/rails_admin/main/_form_filtering_select.html.haml +0 -37
  395. data/app/views/rails_admin/main/_form_froala.html.haml +0 -8
  396. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +0 -16
  397. data/app/views/rails_admin/main/_form_nested_many.html.haml +0 -15
  398. data/app/views/rails_admin/main/_form_nested_one.html.haml +0 -17
  399. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +0 -26
  400. data/app/views/rails_admin/main/_form_simple_mde.haml +0 -8
  401. data/app/views/rails_admin/main/_form_text.html.haml +0 -1
  402. data/app/views/rails_admin/main/_form_wysihtml5.html.haml +0 -8
  403. data/app/views/rails_admin/main/_submit_buttons.html.haml +0 -16
  404. data/app/views/rails_admin/main/bulk_delete.html.haml +0 -11
  405. data/app/views/rails_admin/main/dashboard.html.haml +0 -34
  406. data/app/views/rails_admin/main/delete.html.haml +0 -18
  407. data/app/views/rails_admin/main/edit.html.haml +0 -2
  408. data/app/views/rails_admin/main/export.html.haml +0 -92
  409. data/app/views/rails_admin/main/history.html.haml +0 -51
  410. data/app/views/rails_admin/main/index.html.haml +0 -126
  411. data/app/views/rails_admin/main/new.html.haml +0 -2
  412. data/app/views/rails_admin/main/show.html.haml +0 -15
  413. data/config/initializers/haml.rb +0 -5
  414. data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -38
  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 -164
  457. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -95
  458. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -125
  459. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -246
  460. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -212
  461. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -165
  462. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -358
  463. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -123
  464. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -172
  465. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -155
  466. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -677
  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 -2611
  471. data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
  472. data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +0 -898
  473. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +0 -18085
  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,17 +1,7 @@
1
- require 'rails_admin/support/i18n'
1
+ # frozen_string_literal: true
2
2
 
3
3
  module RailsAdmin
4
4
  module ApplicationHelper
5
- include RailsAdmin::Support::I18n
6
-
7
- def capitalize_first_letter(wording)
8
- return nil unless wording.present? && wording.is_a?(String)
9
-
10
- wording = wording.dup
11
- wording[0] = wording[0].mb_chars.capitalize.to_s
12
- wording
13
- end
14
-
15
5
  def authorized?(action_name, abstract_model = nil, object = nil)
16
6
  object = nil if object.try :new_record?
17
7
  action(action_name, abstract_model, object).try(:authorized?)
@@ -32,21 +22,35 @@ module RailsAdmin
32
22
  end
33
23
 
34
24
  def edit_user_link
35
- return nil unless _current_user.respond_to?(:email)
36
- return nil unless abstract_model = RailsAdmin.config(_current_user.class).abstract_model
37
- return nil unless (edit_action = RailsAdmin::Config::Actions.find(:edit, controller: controller, abstract_model: abstract_model, object: _current_user)).try(:authorized?)
38
- link_to rails_admin.url_for(action: edit_action.action_name, model_name: abstract_model.to_param, id: _current_user.id, controller: 'rails_admin/main') do
39
- html = []
40
- html << image_tag("#{(request.ssl? ? 'https://secure' : 'http://www')}.gravatar.com/avatar/#{Digest::MD5.hexdigest _current_user.email}?s=30", alt: '') if RailsAdmin::Config.show_gravatar && _current_user.email.present?
41
- html << content_tag(:span, _current_user.email)
42
- html.join.html_safe
25
+ return nil unless _current_user.try(:email).present?
26
+ return nil unless (abstract_model = RailsAdmin.config(_current_user.class).abstract_model)
27
+
28
+ edit_action = action(:edit, abstract_model, _current_user)
29
+ authorized = edit_action.try(:authorized?)
30
+ content = edit_user_link_label
31
+
32
+ if authorized
33
+ edit_url = rails_admin.url_for(
34
+ action: edit_action.action_name,
35
+ model_name: abstract_model.to_param,
36
+ controller: 'rails_admin/main',
37
+ id: _current_user.id,
38
+ )
39
+
40
+ link_to content, edit_url, class: 'nav-link'
41
+ else
42
+ content_tag :span, content, class: 'nav-link'
43
43
  end
44
44
  end
45
45
 
46
46
  def logout_path
47
47
  if defined?(Devise)
48
48
  scope = Devise::Mapping.find_scope!(_current_user)
49
- main_app.send("destroy_#{scope}_session_path") rescue false
49
+ begin
50
+ main_app.send("destroy_#{scope}_session_path")
51
+ rescue StandardError
52
+ false
53
+ end
50
54
  elsif main_app.respond_to?(:logout_path)
51
55
  main_app.logout_path
52
56
  end
@@ -54,18 +58,19 @@ module RailsAdmin
54
58
 
55
59
  def logout_method
56
60
  return [Devise.sign_out_via].flatten.first if defined?(Devise)
61
+
57
62
  :delete
58
63
  end
59
64
 
60
65
  def wording_for(label, action = @action, abstract_model = @abstract_model, object = @object)
61
66
  model_config = abstract_model.try(:config)
62
- object = abstract_model && object.is_a?(abstract_model.model) ? object : nil
67
+ object = nil unless abstract_model && object.is_a?(abstract_model.model)
63
68
  action = RailsAdmin::Config::Actions.find(action.to_sym) if action.is_a?(Symbol) || action.is_a?(String)
64
69
 
65
- capitalize_first_letter I18n.t(
70
+ I18n.t(
66
71
  "admin.actions.#{action.i18n_key}.#{label}",
67
- model_label: model_config && model_config.label,
68
- model_label_plural: model_config && model_config.label_plural,
72
+ model_label: model_config&.label,
73
+ model_label_plural: model_config&.label_plural,
69
74
  object_label: model_config && object.try(model_config.object_label_method),
70
75
  )
71
76
  end
@@ -73,52 +78,56 @@ module RailsAdmin
73
78
  def main_navigation
74
79
  nodes_stack = RailsAdmin::Config.visible_models(controller: controller)
75
80
  node_model_names = nodes_stack.collect { |c| c.abstract_model.model_name }
81
+ parent_groups = nodes_stack.group_by { |n| n.parent&.to_s }
76
82
 
77
83
  nodes_stack.group_by(&:navigation_label).collect do |navigation_label, nodes|
78
84
  nodes = nodes.select { |n| n.parent.nil? || !n.parent.to_s.in?(node_model_names) }
79
- li_stack = navigation nodes_stack, nodes
85
+ li_stack = navigation parent_groups, nodes
80
86
 
81
87
  label = navigation_label || t('admin.misc.navigation')
82
88
 
83
- %(<li class='dropdown-header'>#{capitalize_first_letter label}</li>#{li_stack}) if li_stack.present?
89
+ collapsible_stack(label, 'main', li_stack)
84
90
  end.join.html_safe
85
91
  end
86
92
 
87
93
  def root_navigation
88
94
  actions(:root).select(&:show_in_sidebar).group_by(&:sidebar_label).collect do |label, nodes|
89
95
  li_stack = nodes.map do |node|
90
- url = rails_admin.url_for(action: node.action_name, controller: "rails_admin/main")
96
+ url = rails_admin.url_for(action: node.action_name, controller: 'rails_admin/main')
91
97
  nav_icon = node.link_icon ? %(<i class="#{node.link_icon}"></i>).html_safe : ''
92
98
  content_tag :li do
93
- link_to nav_icon + " " + wording_for(:menu, node), url, class: "pjax"
99
+ link_to nav_icon + " " + wording_for(:menu, node), url, class: "nav-link"
94
100
  end
95
101
  end.join.html_safe
96
102
  label ||= t('admin.misc.root_navigation')
97
103
 
98
- %(<li class='dropdown-header'>#{capitalize_first_letter label}</li>#{li_stack}) if li_stack.present?
104
+ collapsible_stack(label, 'action', li_stack)
99
105
  end.join.html_safe
100
106
  end
101
107
 
102
108
  def static_navigation
103
109
  li_stack = RailsAdmin::Config.navigation_static_links.collect do |title, url|
104
- content_tag(:li, link_to(title.to_s, url, target: '_blank', rel: 'noopener noreferrer'))
105
- end.join
110
+ content_tag(:li, link_to(title.to_s, url, target: '_blank', rel: 'noopener noreferrer', class: 'nav-link'))
111
+ end.join.html_safe
106
112
 
107
113
  label = RailsAdmin::Config.navigation_static_label || t('admin.misc.navigation_static_label')
108
- li_stack = %(<li class='dropdown-header'>#{label}</li>#{li_stack}).html_safe if li_stack.present?
109
- li_stack
114
+ collapsible_stack(label, 'static', li_stack) || ''
110
115
  end
111
116
 
112
- def navigation(nodes_stack, nodes, level = 0)
117
+ def navigation(parent_groups, nodes, level = 0)
113
118
  nodes.collect do |node|
114
- model_param = node.abstract_model.to_param
119
+ abstract_model = node.abstract_model
120
+ model_param = abstract_model.to_param
115
121
  url = rails_admin.url_for(action: :index, controller: 'rails_admin/main', model_name: model_param)
116
- level_class = " nav-level-#{level}" if level > 0
117
122
  nav_icon = node.navigation_icon ? %(<i class="#{node.navigation_icon}"></i>).html_safe : ''
123
+ css_classes = ['nav-link']
124
+ css_classes.push("nav-level-#{level}") if level > 0
125
+ css_classes.push('active') if @action && current_action?(@action, model_param)
118
126
  li = content_tag :li, data: {model: model_param} do
119
- link_to nav_icon + capitalize_first_letter(node.label_plural), url, class: "pjax#{level_class}"
127
+ link_to nav_icon + " " + node.label_plural, url, class: css_classes.join(' ')
120
128
  end
121
- li + navigation(nodes_stack, nodes_stack.select { |n| n.parent.to_s == node.abstract_model.model_name }, level + 1)
129
+ child_nodes = parent_groups[abstract_model.model_name]
130
+ child_nodes ? li + navigation(parent_groups, child_nodes, level + 1) : li
122
131
  end.join.html_safe
123
132
  end
124
133
 
@@ -131,51 +140,56 @@ module RailsAdmin
131
140
  parent_actions.collect do |a|
132
141
  am = a.send(:eval, 'bindings[:abstract_model]')
133
142
  o = a.send(:eval, 'bindings[:object]')
134
- content_tag(:li, class: current_action?(a, am, o) && 'active') do
135
- crumb = begin
136
- if !current_action?(a, am, o)
137
- if a.http_methods.include?(:get)
138
- link_to rails_admin.url_for(action: a.action_name, controller: 'rails_admin/main', model_name: am.try(:to_param), id: (o.try(:persisted?) && o.try(:id) || nil)), class: 'pjax' do
139
- wording_for(:breadcrumb, a, am, o)
140
- end
141
- else
142
- content_tag(:span, wording_for(:breadcrumb, a, am, o))
143
- end
144
- else
143
+ content_tag(:li, class: ['breadcrumb-item', current_action?(a, am, o) && 'active']) do
144
+ if current_action?(a, am, o)
145
+ wording_for(:breadcrumb, a, am, o)
146
+ elsif a.http_methods.include?(:get)
147
+ link_to rails_admin.url_for(action: a.action_name, controller: 'rails_admin/main', model_name: am.try(:to_param), id: (o.try(:persisted?) && o.try(:id) || nil)) do
145
148
  wording_for(:breadcrumb, a, am, o)
146
149
  end
150
+ else
151
+ content_tag(:span, wording_for(:breadcrumb, a, am, o))
147
152
  end
148
- crumb
149
153
  end
150
154
  end.reverse.join.html_safe
151
155
  end
152
156
  end
153
157
 
154
158
  # parent => :root, :collection, :member
155
- def menu_for(parent, abstract_model = nil, object = nil, only_icon = false) # perf matters here (no action view trickery)
159
+ # perf matters here (no action view trickery)
160
+ def menu_for(parent, abstract_model = nil, object = nil, only_icon = false)
156
161
  actions = actions(parent, abstract_model, object).select { |a| a.http_methods.include?(:get) && a.show_in_menu }
157
162
  actions.collect do |action|
158
163
  wording = wording_for(:menu, action)
159
- %(
160
- <li title="#{wording if only_icon}" rel="#{'tooltip' if only_icon}" class="icon #{action.key}_#{parent}_link #{'active' if current_action?(action)}">
161
- <a class="#{action.pjax? ? 'pjax' : ''}" href="#{rails_admin.url_for(action: action.action_name, controller: 'rails_admin/main', model_name: abstract_model.try(:to_param), id: (object.try(:persisted?) && object.try(:id) || nil))}">
162
- <i class="#{action.link_icon}"></i>
163
- <span#{only_icon ? " style='display:none'" : ''}>#{wording}</span>
164
- </a>
165
- </li>
166
- )
167
- end.join.html_safe
164
+ li_class = ['nav-item', 'icon', "#{action.key}_#{parent}_link"].
165
+ concat(action.enabled? ? [] : ['disabled'])
166
+ content_tag(:li, {class: li_class}.merge(only_icon ? {title: wording, rel: 'tooltip'} : {})) do
167
+ label = content_tag(:i, '', {class: action.link_icon}) + ' ' + content_tag(:span, wording, (only_icon ? {style: 'display:none'} : {}))
168
+ if action.enabled? || !only_icon
169
+ href =
170
+ if action.enabled?
171
+ rails_admin.url_for(action: action.action_name, controller: 'rails_admin/main', model_name: abstract_model.try(:to_param), id: (object.try(:persisted?) && object.try(:id) || nil))
172
+ else
173
+ 'javascript:void(0)'
174
+ end
175
+ content_tag(:a, label, {href: href, target: action.link_target, class: ['nav-link', current_action?(action) && 'active', !action.enabled? && 'disabled'].compact}.merge(action.turbo? ? {} : {data: {turbo: 'false'}}))
176
+ else
177
+ content_tag(:span, label)
178
+ end
179
+ end
180
+ end.join(' ').html_safe
168
181
  end
169
182
 
170
183
  def bulk_menu(abstract_model = @abstract_model)
171
184
  actions = actions(:bulkable, abstract_model)
172
185
  return '' if actions.empty?
173
- content_tag :li, class: 'dropdown', style: 'float:right' do
174
- content_tag(:a, class: 'dropdown-toggle', data: {toggle: 'dropdown'}, href: '#') { t('admin.misc.bulk_menu_title').html_safe + ' ' + '<b class="caret"></b>'.html_safe } +
186
+
187
+ content_tag :li, class: 'nav-item dropdown dropdown-menu-end' do
188
+ content_tag(:a, class: 'nav-link dropdown-toggle', data: {'bs-toggle': 'dropdown'}, href: '#') { t('admin.misc.bulk_menu_title').html_safe + ' ' + '<b class="caret"></b>'.html_safe } +
175
189
  content_tag(:ul, class: 'dropdown-menu', style: 'left:auto; right:0;') do
176
190
  actions.collect do |action|
177
191
  content_tag :li do
178
- link_to wording_for(:bulk_link, action, abstract_model), '#', class: 'bulk-link', data: {action: action.action_name}
192
+ link_to wording_for(:bulk_link, action, abstract_model), '#', class: 'dropdown-item bulk-link', data: {action: action.action_name}
179
193
  end
180
194
  end.join.html_safe
181
195
  end
@@ -190,5 +204,57 @@ module RailsAdmin
190
204
  else "alert-#{flash_key}"
191
205
  end
192
206
  end
207
+
208
+ def handle_asset_dependency_error
209
+ yield
210
+ rescue LoadError => e
211
+ if /sassc/.match?(e.message)
212
+ e = e.exception <<~MSG
213
+ #{e.message}
214
+ RailsAdmin requires the gem sassc-rails, make sure to put `gem 'sassc-rails'` to Gemfile.
215
+ MSG
216
+ end
217
+ raise e
218
+ end
219
+
220
+ # Workaround for https://github.com/rails/rails/issues/31325
221
+ def image_tag(source, options = {})
222
+ if %w[ActiveStorage::Variant ActiveStorage::VariantWithRecord ActiveStorage::Preview].include? source.class.to_s
223
+ super main_app.route_for(ActiveStorage.resolve_model_to_route, source), options
224
+ else
225
+ super
226
+ end
227
+ end
228
+
229
+ private
230
+
231
+ def edit_user_link_label
232
+ [
233
+ RailsAdmin::Config.show_gravatar &&
234
+ image_tag(gravatar_url(_current_user.email), alt: ''),
235
+
236
+ content_tag(:span, _current_user.email),
237
+ ].filter(&:present?).join.html_safe
238
+ end
239
+
240
+ def gravatar_url(email)
241
+ "https://secure.gravatar.com/avatar/#{Digest::MD5.hexdigest email}?s=30"
242
+ end
243
+
244
+ def collapsible_stack(label, class_prefix, li_stack)
245
+ return nil unless li_stack.present?
246
+
247
+ collapse_classname = "#{class_prefix}-#{Digest::MD5.hexdigest(label)[0..7]}"
248
+ content_tag(:li, class: 'mb-1') do
249
+ content_tag(:button, 'aria-expanded': true, class: 'btn btn-toggle align-items-center rounded', data: {bs_toggle: "collapse", bs_target: ".sidebar .#{collapse_classname}"}) do
250
+ content_tag(:i, '', class: 'fas fa-chevron-down') + html_escape(' ' + label)
251
+ end +
252
+ content_tag(:div, class: "collapse show #{collapse_classname}") do
253
+ content_tag(:ul, class: 'btn-toggle-nav list-unstyled fw-normal pb-1') do
254
+ li_stack
255
+ end
256
+ end
257
+ end
258
+ end
193
259
  end
194
260
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'nested_form/builder_mixin'
2
4
 
3
5
  module RailsAdmin
@@ -32,7 +34,7 @@ module RailsAdmin
32
34
 
33
35
  @template.content_tag :fieldset do
34
36
  contents = []
35
- contents << @template.content_tag(:legend, %(<i class="icon-chevron-#{(fieldset.active? ? 'down' : 'right')}"></i> #{fieldset.label}).html_safe, style: fieldset.name == :default ? 'display:none' : '')
37
+ contents << @template.content_tag(:legend, %(<i class="fas fa-chevron-#{fieldset.active? ? 'down' : 'right'}"></i> #{fieldset.label}).html_safe, style: fieldset.name == :default ? 'display:none' : '')
36
38
  contents << @template.content_tag(:p, fieldset.help) if fieldset.help.present?
37
39
  contents << fields.collect { |field| field_wrapper_for(field, nested_in) }.join
38
40
  contents.join.html_safe
@@ -42,9 +44,10 @@ module RailsAdmin
42
44
  def field_wrapper_for(field, nested_in)
43
45
  # do not show nested field if the target is the origin
44
46
  return if nested_field_association?(field, nested_in)
45
- @template.content_tag(:div, class: "form-group control-group #{field.type_css_class} #{field.css_class} #{'error' if field.errors.present?}", id: "#{dom_id(field)}_field") do
47
+
48
+ @template.content_tag(:div, class: "control-group row mb-3 #{field.type_css_class} #{field.css_class} #{'error' if field.errors.present?}", id: "#{dom_id(field)}_field") do
46
49
  if field.label
47
- label(field.method_name, capitalize_first_letter(field.label), class: 'col-sm-2 control-label') +
50
+ label(field.method_name, field.label, class: 'col-sm-2 col-form-label text-md-end') +
48
51
  (field.nested_form ? field_for(field) : input_for(field))
49
52
  else
50
53
  field.nested_form ? field_for(field) : input_for(field)
@@ -67,7 +70,7 @@ module RailsAdmin
67
70
  end
68
71
 
69
72
  def help_for(field)
70
- field.help.present? ? @template.content_tag(:span, field.help, class: 'help-block') : ''.html_safe
73
+ field.help.present? ? @template.content_tag(:div, field.help, class: 'form-text') : ''.html_safe
71
74
  end
72
75
 
73
76
  def field_for(field)
@@ -77,13 +80,13 @@ module RailsAdmin
77
80
  def object_infos
78
81
  model_config = RailsAdmin.config(object)
79
82
  model_label = model_config.label
80
- object_label = begin
83
+ object_label =
81
84
  if object.new_record?
82
85
  I18n.t('admin.form.new_model', name: model_label)
83
86
  else
84
87
  object.send(model_config.object_label_method).presence || "#{model_config.label} ##{object.id}"
85
88
  end
86
- end
89
+
87
90
  %(<span style="display:none" class="object-infos" data-model-label="#{model_label}" data-object-label="#{CGI.escapeHTML(object_label.to_s)}"></span>).html_safe
88
91
  end
89
92
 
@@ -104,6 +107,14 @@ module RailsAdmin
104
107
  (@dom_name ||= {})[field.name] ||= %(#{@object_name}#{options[:index] && "[#{options[:index]}]"}[#{field.method_name}]#{field.is_a?(Config::Fields::Association) && field.multiple? ? '[]' : ''})
105
108
  end
106
109
 
110
+ def hidden_field(method, options = {})
111
+ if method == :id
112
+ super method, {value: object.id.to_s}
113
+ else
114
+ super
115
+ end
116
+ end
117
+
107
118
  protected
108
119
 
109
120
  def generator_action(action, nested)
@@ -1,4 +1,4 @@
1
- require 'builder'
1
+ # frozen_string_literal: true
2
2
 
3
3
  module RailsAdmin
4
4
  module MainHelper
@@ -14,26 +14,8 @@ module RailsAdmin
14
14
  return 'info' if percent < 34 # < 1/100 of max
15
15
  return 'success' if percent < 67 # < 1/10 of max
16
16
  return 'warning' if percent < 84 # < 1/3 of max
17
- 'danger' # > 1/3 of max
18
- end
19
-
20
- def get_column_sets(properties)
21
- sets = []
22
- property_index = 0
23
- set_index = 0
24
17
 
25
- while property_index < properties.length
26
- current_set_width = 0
27
- loop do
28
- sets[set_index] ||= []
29
- sets[set_index] << properties[property_index]
30
- current_set_width += (properties[property_index].column_width || 120)
31
- property_index += 1
32
- break if current_set_width >= RailsAdmin::Config.total_columns_width || property_index >= properties.length
33
- end
34
- set_index += 1
35
- end
36
- sets
18
+ 'danger' # > 1/3 of max
37
19
  end
38
20
 
39
21
  def filterable_fields
@@ -42,6 +24,7 @@ module RailsAdmin
42
24
 
43
25
  def ordered_filters
44
26
  return @ordered_filters if @ordered_filters.present?
27
+
45
28
  @index = 0
46
29
  @ordered_filters = (params[:f].try(:permit!).try(:to_h) || @model_config.list.filters).inject({}) do |memo, filter|
47
30
  field_name = filter.is_a?(Array) ? filter.first : filter
@@ -57,29 +40,22 @@ module RailsAdmin
57
40
  end
58
41
 
59
42
  def ordered_filter_options
60
- @ordered_filter_options ||= ordered_filters.map do |duplet|
61
- options = {index: duplet[0]}
62
- filter_for_field = duplet[1]
63
- filter_name = filter_for_field.keys.first
64
- filter_hash = filter_for_field.values.first
65
- unless (field = filterable_fields.find { |f| f.name == filter_name.to_sym })
66
- raise "#{filter_name} is not currently filterable; filterable fields are #{filterable_fields.map(&:name).join(', ')}"
67
- end
68
- case field.type
69
- when :enum
70
- options[:select_options] = options_for_select(field.with(object: @abstract_model.model.new).enum, filter_hash['v'])
71
- when :date, :datetime, :time
72
- options[:datetimepicker_format] = field.parser.to_momentjs
43
+ if ordered_filters
44
+ @ordered_filter_options ||= ordered_filters.map do |duplet|
45
+ filter_for_field = duplet[1]
46
+ filter_name = filter_for_field.keys.first
47
+ filter_hash = filter_for_field.values.first
48
+ unless (field = filterable_fields.find { |f| f.name == filter_name.to_sym })
49
+ raise "#{filter_name} is not currently filterable; filterable fields are #{filterable_fields.map(&:name).join(', ')}"
50
+ end
51
+
52
+ field.filter_options.merge(
53
+ index: duplet[0],
54
+ operator: filter_hash['o'] || field.default_filter_operator,
55
+ value: filter_hash['v'],
56
+ )
73
57
  end
74
- options[:label] = field.label
75
- options[:name] = field.name
76
- options[:type] = field.type
77
- options[:value] = filter_hash['v']
78
- options[:label] = field.label
79
- options[:operator] = filter_hash['o'] || field.default_filter_operator
80
- options[:required] = field.required
81
- options
82
- end if ordered_filters
58
+ end
83
59
  end
84
60
  end
85
61
  end
@@ -0,0 +1,5 @@
1
+ <li class="page-item disabled">
2
+ <a href="#" class="page-link">
3
+ <%= raw(t 'admin.pagination.truncate') %>
4
+ </a>
5
+ </li>
@@ -0,0 +1,9 @@
1
+ <% if current_page.last? %>
2
+ <li class="page-item next disabled">
3
+ <%= link_to raw(t 'admin.pagination.next'), '#', class: 'page-link' %>
4
+ </li>
5
+ <% else %>
6
+ <li class="page-item next">
7
+ <%= link_to raw(t 'admin.pagination.next'), url, class: 'page-link' %>
8
+ </li>
9
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <% if page.current? %>
2
+ <li class="page-item active">
3
+ <%= link_to page, url, class: 'page-link' %>
4
+ </li>
5
+ <% else %>
6
+ <li class="page-item">
7
+ <%= link_to page, url, class: 'page-link' %>
8
+ </li>
9
+ <% end %>
@@ -0,0 +1,15 @@
1
+ <%= paginator.render do %>
2
+ <nav aria-label="Page navigation">
3
+ <ul class="pagination">
4
+ <%= prev_page_tag %>
5
+ <% each_page do |page| %>
6
+ <% if page.left_outer? or page.right_outer? or page.inside_window? %>
7
+ <%= page_tag page %>
8
+ <% elsif !page.was_truncated? %>
9
+ <%= gap_tag %>
10
+ <% end %>
11
+ <% end %>
12
+ <%= next_page_tag %>
13
+ </ul>
14
+ </nav>
15
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <% if current_page.first? %>
2
+ <li class="page-item prev disabled">
3
+ <%= link_to raw(t 'admin.pagination.previous'), '#', class: 'page-link' %>
4
+ </li>
5
+ <% else %>
6
+ <li class="page-item prev">
7
+ <%= link_to raw(t 'admin.pagination.previous'), url, class: 'page-link' %>
8
+ </li>
9
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <% if current_page.last? %>
2
+ <li class="page-item next disabled">
3
+ <%= link_to raw(t 'admin.pagination.next'), '#', class: 'page-link' %>
4
+ </li>
5
+ <% else %>
6
+ <li class="page-item next">
7
+ <%= link_to raw(t 'admin.pagination.next'), url, class: 'page-link' %>
8
+ </li>
9
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <%= paginator.render do %>
2
+ <nav aria-label="Page navigation">
3
+ <ul class="pagination">
4
+ <%= prev_page_tag if !current_page.first? %>
5
+ <%= next_page_tag %>
6
+ </ul>
7
+ </nav>
8
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <% if current_page.first? %>
2
+ <li class="page-item prev disabled">
3
+ <%= link_to raw(t 'admin.pagination.previous'), '#', class: 'page-link' %>
4
+ </li>
5
+ <% else %>
6
+ <li class="page-item prev">
7
+ <%= link_to raw(t 'admin.pagination.previous'), url, class: 'page-link' %>
8
+ </li>
9
+ <% end %>
@@ -0,0 +1,29 @@
1
+ <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
2
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
3
+ <meta content="width=device-width, initial-scale=1" name="viewport; charset=utf-8"/>
4
+ <meta content="NONE,NOARCHIVE" name="robots"/>
5
+ <%= csrf_meta_tag %>
6
+ <% case RailsAdmin::config.asset_source
7
+ when :webpacker %>
8
+ <%= stylesheet_pack_tag "rails_admin", data: {'turbo-track': 'reload'} %>
9
+ <%= javascript_pack_tag "rails_admin", defer: true, data: {'turbo-track': 'reload'} %>
10
+ <% when :sprockets %>
11
+ <% handle_asset_dependency_error do %>
12
+ <%= stylesheet_link_tag "rails_admin/application.css", media: :all, data: {'turbo-track': 'reload'} %>
13
+ <%= javascript_include_tag "rails_admin/application.js", defer: true, data: {'turbo-track': 'reload'} %>
14
+ <% end %>
15
+ <% when :webpack %>
16
+ <%= stylesheet_link_tag "rails_admin.css", media: :all, data: {'turbo-track': 'reload'} %>
17
+ <%= javascript_include_tag "rails_admin.js", defer: true, data: {'turbo-track': 'reload'} %>
18
+ <% when :importmap %>
19
+ <%= stylesheet_link_tag "rails_admin.css", media: :all, data: {'turbo-track': 'reload'} %>
20
+ <%= javascript_inline_importmap_tag(RailsAdmin::Engine.importmap.to_json(resolver: self)) %>
21
+ <%= javascript_importmap_module_preload_tags(RailsAdmin::Engine.importmap) %>
22
+ <%= javascript_importmap_shim_nonce_configuration_tag %>
23
+ <%= javascript_importmap_shim_tag %>
24
+ <%= # Preload jQuery and make it global, unless jQuery UI fails to initialize
25
+ tag.script "import jQuery from 'jquery'; window.jQuery = jQuery;".html_safe, type: "module" %>
26
+ <%= javascript_import_module_tag 'rails_admin' %>
27
+ <% else
28
+ raise "Unknown asset_source: #{RailsAdmin::config.asset_source}"
29
+ end %>
@@ -0,0 +1,17 @@
1
+ <div class="container-fluid">
2
+ <a class="navbar-brand" href="<%= dashboard_path %>">
3
+ <%= _get_plugin_name[0] || 'Rails' %>
4
+ <small>
5
+ <%= _get_plugin_name[1] || 'Admin' %>
6
+ </small>
7
+ </a>
8
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#secondary-navigation">
9
+ <span class="sr-only">
10
+ <%= t('admin.toggle_navigation') %>
11
+ </span>
12
+ <span class="navbar-toggler-icon"></span>
13
+ </button>
14
+ <div class="collapse navbar-collapse" id="secondary-navigation">
15
+ <%= render partial: 'layouts/rails_admin/secondary_navigation' %>
16
+ </div>
17
+ </div>
@@ -0,0 +1,26 @@
1
+ <ul class="navbar-nav ms-auto root_links">
2
+ <% actions(:root).select(&:show_in_navigation).each do |action| %>
3
+ <li class="nav-item <%= action.action_name %>_root_link">
4
+ <%= link_to wording_for(:menu, action), { action: action.action_name, controller: 'rails_admin/main' }, {class: ['nav-link']}.merge(action.turbo? ? {} : {data: {turbo: 'false'}}) %>
5
+ </li>
6
+ <% end %>
7
+ <% if main_app_root_path = (main_app.root_path rescue false) %>
8
+ <li class="nav-item">
9
+ <%= link_to t('admin.home.name'), main_app_root_path, class: 'nav-link' %>
10
+ </li>
11
+ <% end %>
12
+ <% if _current_user %>
13
+ <% if user_link = edit_user_link %>
14
+ <li class="nav-item edit_user_root_link">
15
+ <%= user_link %>
16
+ </li>
17
+ <% end %>
18
+ <% if logout_path.present? %>
19
+ <li class="nav-item">
20
+ <%= link_to logout_path, method: logout_method, class: 'nav-link', data: {turbo: 'false'} do %>
21
+ <span class="badge bg-danger"><%= t('admin.misc.log_out') %></span>
22
+ <% end %>
23
+ </li>
24
+ <% end %>
25
+ <% end %>
26
+ </ul>
@@ -0,0 +1,5 @@
1
+ <ul class="sidebar col-sm-3 col-md-2 nav btn-toggle-nav flex-column flex-nowrap bg-light">
2
+ <%= main_navigation %>
3
+ <%= root_navigation %>
4
+ <%= static_navigation %>
5
+ </ul>
@@ -0,0 +1,27 @@
1
+ <!DOCTYPE html>
2
+ <html lang="<%= I18n.locale %>">
3
+ <head>
4
+ <%= render "layouts/rails_admin/head" %>
5
+ </head>
6
+ <body class="rails_admin">
7
+ <div data-i18n-options="<%= I18n.t("admin.js").to_json %>" id="admin-js"></div>
8
+ <div class="badge bg-warning" id="loading" style="display:none; position:fixed; right:20px; bottom:20px; z-index:100000">
9
+ <%= t('admin.loading') %>
10
+ </div>
11
+ <nav class="navbar navbar-expand-md fixed-top <%= RailsAdmin::Config.navbar_css_classes.join(' ') %>">
12
+ <%= render "layouts/rails_admin/navigation" %>
13
+ </nav>
14
+ <div class="container-fluid">
15
+ <div class="row">
16
+ <div class="col-sm-3 col-md-2 flex-wrap p-0">
17
+ <%= render "layouts/rails_admin/sidebar_navigation" %>
18
+ </div>
19
+ <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2">
20
+ <div class="container-fluid">
21
+ <%= render template: 'layouts/rails_admin/content' %>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </body>
27
+ </html>