avo 1.3.5 → 1.4.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of avo might be problematic. Click here for more details.

Files changed (342) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +3 -3
  3. data/README.md +1 -0
  4. data/app/components/avo/fields/badge_field/index_component.html.erb +3 -0
  5. data/app/components/avo/fields/badge_field/index_component.rb +4 -0
  6. data/app/components/avo/fields/badge_field/show_component.html.erb +3 -0
  7. data/app/components/avo/fields/badge_field/show_component.rb +4 -0
  8. data/app/components/avo/{edit/fields/belongs_to_field_component.html.erb → fields/belongs_to_field/edit_component.html.erb} +0 -0
  9. data/app/components/avo/{edit/fields/belongs_to_field_component.rb → fields/belongs_to_field/edit_component.rb} +1 -1
  10. data/app/components/avo/{index/fields/belongs_to_field_component.html.erb → fields/belongs_to_field/index_component.html.erb} +0 -0
  11. data/app/components/avo/fields/belongs_to_field/index_component.rb +4 -0
  12. data/app/components/avo/{show/fields/belongs_to_field_component.html.erb → fields/belongs_to_field/show_component.html.erb} +0 -0
  13. data/app/components/avo/fields/belongs_to_field/show_component.rb +4 -0
  14. data/app/components/avo/{edit/fields/boolean_field_component.html.erb → fields/boolean_field/edit_component.html.erb} +0 -0
  15. data/app/components/avo/fields/boolean_field/edit_component.rb +4 -0
  16. data/app/components/avo/fields/boolean_field/index_component.html.erb +3 -0
  17. data/app/components/avo/fields/boolean_field/index_component.rb +4 -0
  18. data/app/components/avo/{show/fields/boolean_field_component.html.erb → fields/boolean_field/show_component.html.erb} +1 -1
  19. data/app/components/avo/fields/boolean_field/show_component.rb +4 -0
  20. data/app/components/avo/{edit/fields/boolean_group_field_component.html.erb → fields/boolean_group_field/edit_component.html.erb} +0 -0
  21. data/app/components/avo/fields/boolean_group_field/edit_component.rb +4 -0
  22. data/app/components/avo/fields/boolean_group_field/index_component.html.erb +3 -0
  23. data/app/components/avo/fields/boolean_group_field/index_component.rb +4 -0
  24. data/app/components/avo/fields/boolean_group_field/show_component.html.erb +3 -0
  25. data/app/components/avo/fields/boolean_group_field/show_component.rb +4 -0
  26. data/app/components/avo/{edit/fields/code_field_component.html.erb → fields/code_field/edit_component.html.erb} +0 -0
  27. data/app/components/avo/fields/code_field/edit_component.rb +4 -0
  28. data/app/components/avo/{show/fields/code_field_component.html.erb → fields/code_field/show_component.html.erb} +0 -0
  29. data/app/components/avo/fields/code_field/show_component.rb +4 -0
  30. data/app/components/avo/{common → fields/common}/badge_viewer_component.html.erb +0 -0
  31. data/app/components/avo/{common → fields/common}/badge_viewer_component.rb +1 -1
  32. data/app/components/avo/{common → fields/common}/boolean_check_component.html.erb +0 -0
  33. data/app/components/avo/{common → fields/common}/boolean_check_component.rb +1 -1
  34. data/app/components/avo/{common → fields/common}/boolean_group_component.html.erb +1 -1
  35. data/app/components/avo/{common → fields/common}/boolean_group_component.rb +1 -1
  36. data/app/components/avo/fields/common/files_list_viewer_component.html.erb +5 -0
  37. data/app/components/avo/{common → fields/common}/files_list_viewer_component.rb +1 -1
  38. data/app/components/avo/{common → fields/common}/gravatar_viewer_component.html.erb +0 -0
  39. data/app/components/avo/{common → fields/common}/gravatar_viewer_component.rb +1 -1
  40. data/app/components/avo/{common → fields/common}/heading_component.html.erb +0 -0
  41. data/app/components/avo/{common → fields/common}/heading_component.rb +1 -1
  42. data/app/components/avo/{common → fields/common}/key_value_component.html.erb +0 -0
  43. data/app/components/avo/{common → fields/common}/key_value_component.rb +1 -1
  44. data/app/components/avo/{common → fields/common}/multiple_file_viewer_component.html.erb +0 -0
  45. data/app/components/avo/{common → fields/common}/multiple_file_viewer_component.rb +1 -1
  46. data/app/components/avo/{common → fields/common}/single_file_viewer_component.html.erb +0 -0
  47. data/app/components/avo/{common → fields/common}/single_file_viewer_component.rb +1 -1
  48. data/app/components/avo/fields/common/status_viewer_component.html.erb +18 -0
  49. data/app/components/avo/{common → fields/common}/status_viewer_component.rb +1 -1
  50. data/app/components/avo/{edit/fields/country_field_component.html.erb → fields/country_field/edit_component.html.erb} +0 -0
  51. data/app/components/avo/fields/country_field/edit_component.rb +4 -0
  52. data/app/components/avo/{index/fields/country_field_component.html.erb → fields/country_field/index_component.html.erb} +0 -0
  53. data/app/components/avo/fields/country_field/index_component.rb +4 -0
  54. data/app/components/avo/{show/fields/country_field_component.html.erb → fields/country_field/show_component.html.erb} +0 -0
  55. data/app/components/avo/fields/country_field/show_component.rb +4 -0
  56. data/app/components/avo/{edit/fields/date_field_component.html.erb → fields/date_field/edit_component.html.erb} +0 -0
  57. data/app/components/avo/fields/date_field/edit_component.rb +4 -0
  58. data/app/components/avo/{index/fields/date_field_component.html.erb → fields/date_field/index_component.html.erb} +0 -0
  59. data/app/components/avo/fields/date_field/index_component.rb +4 -0
  60. data/app/components/avo/{show/fields/date_field_component.html.erb → fields/date_field/show_component.html.erb} +0 -0
  61. data/app/components/avo/fields/date_field/show_component.rb +4 -0
  62. data/app/components/avo/{edit/fields/date_time_field_component.html.erb → fields/date_time_field/edit_component.html.erb} +0 -0
  63. data/app/components/avo/fields/date_time_field/edit_component.rb +4 -0
  64. data/app/components/avo/{index/fields/date_time_field_component.html.erb → fields/date_time_field/index_component.html.erb} +0 -0
  65. data/app/components/avo/fields/date_time_field/index_component.rb +4 -0
  66. data/app/components/avo/{show/fields/date_time_field_component.html.erb → fields/date_time_field/show_component.html.erb} +0 -0
  67. data/app/components/avo/fields/date_time_field/show_component.rb +4 -0
  68. data/app/components/avo/{edit/fields/field_component.rb → fields/edit_component.rb} +1 -1
  69. data/app/components/avo/{edit/fields/external_image_field_component.html.erb → fields/external_image_field/edit_component.html.erb} +0 -0
  70. data/app/components/avo/fields/external_image_field/edit_component.rb +4 -0
  71. data/app/components/avo/{index/fields/external_image_field_component.html.erb → fields/external_image_field/index_component.html.erb} +0 -0
  72. data/app/components/avo/fields/external_image_field/index_component.rb +4 -0
  73. data/app/components/avo/{show/fields/external_image_field_component.html.erb → fields/external_image_field/show_component.html.erb} +0 -0
  74. data/app/components/avo/fields/external_image_field/show_component.rb +4 -0
  75. data/app/components/avo/{edit/fields/file_field_component.html.erb → fields/file_field/edit_component.html.erb} +1 -1
  76. data/app/components/avo/fields/file_field/edit_component.rb +4 -0
  77. data/app/components/avo/{index/fields/file_field_component.html.erb → fields/file_field/index_component.html.erb} +1 -1
  78. data/app/components/avo/fields/file_field/index_component.rb +4 -0
  79. data/app/components/avo/fields/file_field/show_component.html.erb +3 -0
  80. data/app/components/avo/fields/file_field/show_component.rb +4 -0
  81. data/app/components/avo/{edit/fields/files_field_component.html.erb → fields/files_field/edit_component.html.erb} +1 -1
  82. data/app/components/avo/fields/files_field/edit_component.rb +4 -0
  83. data/app/components/avo/{index/fields/files_field_component.html.erb → fields/files_field/index_component.html.erb} +0 -0
  84. data/app/components/avo/fields/files_field/index_component.rb +4 -0
  85. data/app/components/avo/fields/files_field/show_component.html.erb +3 -0
  86. data/app/components/avo/fields/files_field/show_component.rb +4 -0
  87. data/app/components/avo/{index/fields/gravatar_field_component.html.erb → fields/gravatar_field/index_component.html.erb} +2 -2
  88. data/app/components/avo/fields/gravatar_field/index_component.rb +4 -0
  89. data/app/components/avo/{show/fields/gravatar_field_component.html.erb → fields/gravatar_field/show_component.html.erb} +1 -1
  90. data/app/components/avo/fields/gravatar_field/show_component.rb +4 -0
  91. data/app/components/avo/{show/fields/has_many_field_component.html.erb → fields/has_many_field/show_component.html.erb} +0 -0
  92. data/app/components/avo/fields/has_many_field/show_component.rb +4 -0
  93. data/app/components/avo/{index/fields/has_one_field_component.html.erb → fields/has_one_field/index_component.html.erb} +0 -0
  94. data/app/components/avo/fields/has_one_field/index_component.rb +4 -0
  95. data/app/components/avo/{show/fields/has_one_field_component.html.erb → fields/has_one_field/show_component.html.erb} +0 -0
  96. data/app/components/avo/fields/has_one_field/show_component.rb +5 -0
  97. data/app/components/avo/{show/fields/heading_field_component.html.erb → fields/heading_field/edit_component.html.erb} +1 -1
  98. data/app/components/avo/fields/heading_field/edit_component.rb +4 -0
  99. data/app/components/avo/{edit/fields/heading_field_component.html.erb → fields/heading_field/show_component.html.erb} +1 -1
  100. data/app/components/avo/fields/heading_field/show_component.rb +4 -0
  101. data/app/components/avo/{edit/fields/hidden_field_component.html.erb → fields/hidden_field/edit_component.html.erb} +0 -0
  102. data/app/components/avo/fields/hidden_field/edit_component.rb +4 -0
  103. data/app/components/avo/{edit/fields/id_field_component.html.erb → fields/id_field/edit_component.html.erb} +0 -0
  104. data/app/components/avo/fields/id_field/edit_component.rb +4 -0
  105. data/app/components/avo/fields/id_field/index_component.html.erb +3 -0
  106. data/app/components/avo/fields/id_field/index_component.rb +4 -0
  107. data/app/components/avo/{show/fields/id_field_component.html.erb → fields/id_field/show_component.html.erb} +0 -0
  108. data/app/components/avo/fields/id_field/show_component.rb +4 -0
  109. data/app/components/avo/fields/index_component.rb +20 -0
  110. data/app/components/avo/{edit/fields/key_value_field_component.html.erb → fields/key_value_field/edit_component.html.erb} +1 -1
  111. data/app/components/avo/fields/key_value_field/edit_component.rb +4 -0
  112. data/app/components/avo/{show/fields/key_value_field_component.html.erb → fields/key_value_field/show_component.html.erb} +1 -1
  113. data/app/components/avo/fields/key_value_field/show_component.rb +4 -0
  114. data/app/components/avo/{edit/fields/markdown_field_component.html.erb → fields/markdown_field/edit_component.html.erb} +0 -0
  115. data/app/components/avo/fields/markdown_field/edit_component.rb +4 -0
  116. data/app/components/avo/{show/fields/markdown_field_component.html.erb → fields/markdown_field/show_component.html.erb} +1 -1
  117. data/app/components/avo/fields/markdown_field/show_component.rb +4 -0
  118. data/app/components/avo/{edit/fields/number_field_component.html.erb → fields/number_field/edit_component.html.erb} +3 -3
  119. data/app/components/avo/fields/number_field/edit_component.rb +4 -0
  120. data/app/components/avo/{index/fields/number_field_component.html.erb → fields/number_field/index_component.html.erb} +0 -0
  121. data/app/components/avo/fields/number_field/index_component.rb +4 -0
  122. data/app/components/avo/{show/fields/number_field_component.html.erb → fields/number_field/show_component.html.erb} +0 -0
  123. data/app/components/avo/fields/number_field/show_component.rb +4 -0
  124. data/app/components/avo/{edit/fields/password_field_component.html.erb → fields/password_field/edit_component.html.erb} +0 -0
  125. data/app/components/avo/fields/password_field/edit_component.rb +4 -0
  126. data/app/components/avo/fields/progress_bar_field/edit_component.html.erb +26 -0
  127. data/app/components/avo/fields/progress_bar_field/edit_component.rb +4 -0
  128. data/app/components/avo/fields/progress_bar_field/index_component.html.erb +8 -0
  129. data/app/components/avo/fields/progress_bar_field/index_component.rb +4 -0
  130. data/app/components/avo/fields/progress_bar_field/show_component.html.erb +8 -0
  131. data/app/components/avo/fields/progress_bar_field/show_component.rb +4 -0
  132. data/app/components/avo/{edit/fields/select_field_component.html.erb → fields/select_field/edit_component.html.erb} +0 -0
  133. data/app/components/avo/fields/select_field/edit_component.rb +4 -0
  134. data/app/components/avo/{index/fields/select_field_component.html.erb → fields/select_field/index_component.html.erb} +0 -0
  135. data/app/components/avo/fields/select_field/index_component.rb +4 -0
  136. data/app/components/avo/{show/fields/select_field_component.html.erb → fields/select_field/show_component.html.erb} +0 -0
  137. data/app/components/avo/fields/select_field/show_component.rb +4 -0
  138. data/app/components/avo/{show/fields/field_component.rb → fields/show_component.rb} +1 -1
  139. data/app/components/avo/{edit/fields/status_field_component.html.erb → fields/status_field/edit_component.html.erb} +0 -0
  140. data/app/components/avo/fields/status_field/edit_component.rb +4 -0
  141. data/app/components/avo/fields/status_field/index_component.html.erb +3 -0
  142. data/app/components/avo/fields/status_field/index_component.rb +4 -0
  143. data/app/components/avo/fields/status_field/show_component.html.erb +3 -0
  144. data/app/components/avo/fields/status_field/show_component.rb +4 -0
  145. data/app/components/avo/{edit/fields/text_field_component.html.erb → fields/text_field/edit_component.html.erb} +0 -0
  146. data/app/components/avo/fields/text_field/edit_component.rb +4 -0
  147. data/app/components/avo/fields/text_field/index_component.html.erb +3 -0
  148. data/app/components/avo/fields/text_field/index_component.rb +4 -0
  149. data/app/components/avo/{show/fields/text_field_component.html.erb → fields/text_field/show_component.html.erb} +0 -0
  150. data/app/components/avo/fields/text_field/show_component.rb +4 -0
  151. data/app/components/avo/{edit/fields/textarea_field_component.html.erb → fields/textarea_field/edit_component.html.erb} +1 -1
  152. data/app/components/avo/fields/textarea_field/edit_component.rb +4 -0
  153. data/app/components/avo/{show/fields/textarea_field_component.html.erb → fields/textarea_field/show_component.html.erb} +0 -0
  154. data/app/components/avo/fields/textarea_field/show_component.rb +4 -0
  155. data/app/components/avo/fields/trix_field/edit_component.html.erb +19 -0
  156. data/app/components/avo/fields/trix_field/edit_component.rb +4 -0
  157. data/app/components/avo/{show/fields/trix_field_component.html.erb → fields/trix_field/show_component.html.erb} +0 -0
  158. data/app/components/avo/fields/trix_field/show_component.rb +4 -0
  159. data/app/components/avo/index/resource_controls_component.html.erb +2 -3
  160. data/app/components/avo/index/table_row_component.html.erb +1 -1
  161. data/app/components/avo/panel_component.html.erb +1 -1
  162. data/app/components/avo/panel_component.rb +4 -4
  163. data/app/components/avo/views/resource_edit_component.html.erb +2 -2
  164. data/app/components/avo/views/resource_index_component.html.erb +3 -3
  165. data/app/components/avo/views/resource_new_component.html.erb +2 -2
  166. data/app/components/avo/views/resource_show_component.html.erb +5 -5
  167. data/app/controllers/avo/application_controller.rb +5 -1
  168. data/app/controllers/avo/attachments_controller.rb +14 -3
  169. data/app/controllers/avo/base_controller.rb +26 -2
  170. data/app/controllers/avo/home_controller.rb +1 -1
  171. data/app/controllers/avo/search_controller.rb +1 -1
  172. data/app/helpers/avo/resources_helper.rb +0 -44
  173. data/app/packs/entrypoints/application.css +1 -0
  174. data/app/packs/entrypoints/application.js +0 -1
  175. data/app/packs/js/controllers/fields/date_field_controller.js +1 -1
  176. data/app/packs/js/controllers/fields/key_value_controller.js +0 -1
  177. data/app/packs/js/controllers/fields/trix_field_controller.js +121 -0
  178. data/app/packs/stylesheets/components/progress.css +13 -0
  179. data/app/packs/stylesheets/components/status.css +31 -20
  180. data/app/packs/svgs/check-circle-sm.svg +3 -0
  181. data/app/packs/svgs/x-circle-sm.svg +3 -0
  182. data/app/views/avo/actions/show.html.erb +1 -1
  183. data/app/views/avo/partials/_javascript.html.erb +3 -1
  184. data/app/views/avo/partials/_profile_dropdown.html.erb +19 -0
  185. data/app/views/layouts/avo/application.html.erb +6 -3
  186. data/config/routes.rb +4 -0
  187. data/config/webpacker.yml +2 -2
  188. data/db/factories.rb +3 -0
  189. data/db/migrate/20210421064037_add_color_to_teams.rb +5 -0
  190. data/db/migrate/20210423075924_add_progress_to_projects.rb +5 -0
  191. data/lib/avo/app.rb +9 -20
  192. data/lib/avo/base_resource.rb +9 -1
  193. data/lib/avo/configuration.rb +1 -1
  194. data/lib/avo/engine.rb +1 -0
  195. data/lib/avo/fields/badge_field.rb +4 -6
  196. data/lib/avo/fields/base_field.rb +62 -83
  197. data/lib/avo/fields/belongs_to_field.rb +11 -11
  198. data/lib/avo/fields/boolean_field.rb +2 -7
  199. data/lib/avo/fields/boolean_group_field.rb +2 -7
  200. data/lib/avo/fields/code_field.rb +3 -7
  201. data/lib/avo/fields/country_field.rb +3 -6
  202. data/lib/avo/fields/currency_field.rb +4 -13
  203. data/lib/avo/fields/date_field.rb +2 -8
  204. data/lib/avo/fields/date_time_field.rb +2 -3
  205. data/lib/avo/fields/external_image_field.rb +3 -7
  206. data/lib/avo/fields/file_field.rb +4 -8
  207. data/lib/avo/fields/files_field.rb +6 -8
  208. data/lib/avo/fields/gravatar_field.rb +6 -9
  209. data/lib/avo/fields/has_and_belongs_to_many_field.rb +6 -7
  210. data/lib/avo/fields/has_many_field.rb +3 -9
  211. data/lib/avo/fields/has_one_field.rb +3 -8
  212. data/lib/avo/fields/heading_field.rb +10 -8
  213. data/lib/avo/fields/hidden_field.rb +2 -6
  214. data/lib/avo/fields/id_field.rb +5 -17
  215. data/lib/avo/fields/key_value_field.rb +4 -6
  216. data/lib/avo/fields/markdown_field.rb +3 -5
  217. data/lib/avo/fields/number_field.rb +8 -11
  218. data/lib/avo/fields/password_field.rb +2 -6
  219. data/lib/avo/fields/progress_bar_field.rb +19 -0
  220. data/lib/avo/fields/select_field.rb +13 -12
  221. data/lib/avo/fields/status_field.rb +2 -6
  222. data/lib/avo/fields/text_field.rb +3 -6
  223. data/lib/avo/fields/textarea_field.rb +4 -7
  224. data/lib/avo/fields/trix_field.rb +7 -7
  225. data/lib/avo/fields_collector.rb +47 -11
  226. data/lib/avo/licensing/pro_license.rb +2 -1
  227. data/lib/avo/version.rb +1 -1
  228. data/lib/generators/avo/eject_generator.rb +1 -0
  229. data/lib/generators/avo/field_generator.rb +17 -0
  230. data/lib/generators/avo/filter_generator.rb +1 -1
  231. data/lib/generators/avo/templates/field/%singular_name%_field.rb.tt +5 -0
  232. data/lib/generators/avo/templates/field/components/edit_component.html.erb.tt +6 -0
  233. data/lib/generators/avo/templates/field/components/edit_component.rb.tt +4 -0
  234. data/lib/generators/avo/templates/field/components/index_component.html.erb.tt +3 -0
  235. data/lib/generators/avo/templates/field/components/index_component.rb.tt +4 -0
  236. data/lib/generators/avo/templates/field/components/show_component.html.erb.tt +3 -0
  237. data/lib/generators/avo/templates/field/components/show_component.rb.tt +4 -0
  238. data/lib/generators/avo/templates/tool/view.tt +1 -1
  239. data/public/avo-packs/css/{application-0b91a712.css → application-68691c73.css} +132 -49
  240. data/public/avo-packs/css/application-68691c73.css.br +0 -0
  241. data/public/avo-packs/css/application-68691c73.css.gz +0 -0
  242. data/public/avo-packs/css/application-68691c73.css.map +1 -0
  243. data/public/avo-packs/css/application-68691c73.css.map.br +0 -0
  244. data/public/avo-packs/css/application-68691c73.css.map.gz +0 -0
  245. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js +26 -0
  246. data/public/avo-packs/js/{application-c2a8a64ca8f5d2805d79.js.LICENSE.txt → application-6a0b9e58526ae6bef242.js.LICENSE.txt} +0 -0
  247. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.br +0 -0
  248. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.gz +0 -0
  249. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.map +1 -0
  250. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.map.br +0 -0
  251. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.map.gz +0 -0
  252. data/public/avo-packs/manifest.json +15 -15
  253. metadata +186 -165
  254. data/app/components/avo/common/files_list_viewer_component.html.erb +0 -5
  255. data/app/components/avo/common/status_viewer_component.html.erb +0 -10
  256. data/app/components/avo/edit/fields/boolean_field_component.rb +0 -4
  257. data/app/components/avo/edit/fields/boolean_group_field_component.rb +0 -4
  258. data/app/components/avo/edit/fields/code_field_component.rb +0 -4
  259. data/app/components/avo/edit/fields/country_field_component.rb +0 -4
  260. data/app/components/avo/edit/fields/date_field_component.rb +0 -4
  261. data/app/components/avo/edit/fields/date_time_field_component.rb +0 -4
  262. data/app/components/avo/edit/fields/external_image_field_component.rb +0 -4
  263. data/app/components/avo/edit/fields/file_field_component.rb +0 -4
  264. data/app/components/avo/edit/fields/files_field_component.rb +0 -4
  265. data/app/components/avo/edit/fields/heading_field_component.rb +0 -4
  266. data/app/components/avo/edit/fields/hidden_field_component.rb +0 -4
  267. data/app/components/avo/edit/fields/id_field_component.rb +0 -4
  268. data/app/components/avo/edit/fields/key_value_field_component.rb +0 -4
  269. data/app/components/avo/edit/fields/markdown_field_component.rb +0 -4
  270. data/app/components/avo/edit/fields/number_field_component.rb +0 -4
  271. data/app/components/avo/edit/fields/password_field_component.rb +0 -4
  272. data/app/components/avo/edit/fields/select_field_component.rb +0 -4
  273. data/app/components/avo/edit/fields/status_field_component.rb +0 -4
  274. data/app/components/avo/edit/fields/text_field_component.rb +0 -4
  275. data/app/components/avo/edit/fields/textarea_field_component.rb +0 -4
  276. data/app/components/avo/edit/fields/trix_field_component.html.erb +0 -11
  277. data/app/components/avo/edit/fields/trix_field_component.rb +0 -4
  278. data/app/components/avo/index/fields/badge_field_component.html.erb +0 -3
  279. data/app/components/avo/index/fields/badge_field_component.rb +0 -4
  280. data/app/components/avo/index/fields/belongs_to_field_component.rb +0 -4
  281. data/app/components/avo/index/fields/boolean_field_component.html.erb +0 -3
  282. data/app/components/avo/index/fields/boolean_field_component.rb +0 -4
  283. data/app/components/avo/index/fields/boolean_group_field_component.html.erb +0 -3
  284. data/app/components/avo/index/fields/boolean_group_field_component.rb +0 -4
  285. data/app/components/avo/index/fields/country_field_component.rb +0 -4
  286. data/app/components/avo/index/fields/date_field_component.rb +0 -4
  287. data/app/components/avo/index/fields/date_time_field_component.rb +0 -4
  288. data/app/components/avo/index/fields/external_image_field_component.rb +0 -4
  289. data/app/components/avo/index/fields/field_component.html.erb +0 -1
  290. data/app/components/avo/index/fields/field_component.rb +0 -11
  291. data/app/components/avo/index/fields/file_field_component.rb +0 -4
  292. data/app/components/avo/index/fields/files_field_component.rb +0 -4
  293. data/app/components/avo/index/fields/gravatar_field_component.rb +0 -4
  294. data/app/components/avo/index/fields/has_one_field_component.rb +0 -4
  295. data/app/components/avo/index/fields/id_field_component.html.erb +0 -10
  296. data/app/components/avo/index/fields/id_field_component.rb +0 -4
  297. data/app/components/avo/index/fields/number_field_component.rb +0 -4
  298. data/app/components/avo/index/fields/select_field_component.rb +0 -4
  299. data/app/components/avo/index/fields/status_field_component.html.erb +0 -3
  300. data/app/components/avo/index/fields/status_field_component.rb +0 -4
  301. data/app/components/avo/index/fields/text_field_component.html.erb +0 -3
  302. data/app/components/avo/index/fields/text_field_component.rb +0 -4
  303. data/app/components/avo/show/fields/badge_field_component.html.erb +0 -3
  304. data/app/components/avo/show/fields/badge_field_component.rb +0 -4
  305. data/app/components/avo/show/fields/belongs_to_field_component.rb +0 -4
  306. data/app/components/avo/show/fields/boolean_field_component.rb +0 -4
  307. data/app/components/avo/show/fields/boolean_group_field_component.html.erb +0 -3
  308. data/app/components/avo/show/fields/boolean_group_field_component.rb +0 -4
  309. data/app/components/avo/show/fields/code_field_component.rb +0 -4
  310. data/app/components/avo/show/fields/country_field_component.rb +0 -4
  311. data/app/components/avo/show/fields/date_field_component.rb +0 -4
  312. data/app/components/avo/show/fields/date_time_field_component.rb +0 -4
  313. data/app/components/avo/show/fields/external_image_field_component.rb +0 -4
  314. data/app/components/avo/show/fields/file_field_component.html.erb +0 -3
  315. data/app/components/avo/show/fields/file_field_component.rb +0 -4
  316. data/app/components/avo/show/fields/files_field_component.html.erb +0 -3
  317. data/app/components/avo/show/fields/files_field_component.rb +0 -4
  318. data/app/components/avo/show/fields/gravatar_field_component.rb +0 -4
  319. data/app/components/avo/show/fields/has_many_field_component.rb +0 -4
  320. data/app/components/avo/show/fields/has_one_field_component.rb +0 -5
  321. data/app/components/avo/show/fields/heading_field_component.rb +0 -4
  322. data/app/components/avo/show/fields/id_field_component.rb +0 -4
  323. data/app/components/avo/show/fields/key_value_field_component.rb +0 -4
  324. data/app/components/avo/show/fields/markdown_field_component.rb +0 -4
  325. data/app/components/avo/show/fields/number_field_component.rb +0 -4
  326. data/app/components/avo/show/fields/select_field_component.rb +0 -4
  327. data/app/components/avo/show/fields/status_field_component.html.erb +0 -3
  328. data/app/components/avo/show/fields/status_field_component.rb +0 -4
  329. data/app/components/avo/show/fields/text_field_component.rb +0 -4
  330. data/app/components/avo/show/fields/textarea_field_component.rb +0 -4
  331. data/app/components/avo/show/fields/trix_field_component.rb +0 -4
  332. data/public/avo-packs/css/application-0b91a712.css.br +0 -0
  333. data/public/avo-packs/css/application-0b91a712.css.gz +0 -0
  334. data/public/avo-packs/css/application-0b91a712.css.map +0 -1
  335. data/public/avo-packs/css/application-0b91a712.css.map.br +0 -0
  336. data/public/avo-packs/css/application-0b91a712.css.map.gz +0 -0
  337. data/public/avo-packs/js/application-c2a8a64ca8f5d2805d79.js +0 -26
  338. data/public/avo-packs/js/application-c2a8a64ca8f5d2805d79.js.br +0 -0
  339. data/public/avo-packs/js/application-c2a8a64ca8f5d2805d79.js.gz +0 -0
  340. data/public/avo-packs/js/application-c2a8a64ca8f5d2805d79.js.map +0 -1
  341. data/public/avo-packs/js/application-c2a8a64ca8f5d2805d79.js.map.br +0 -0
  342. data/public/avo-packs/js/application-c2a8a64ca8f5d2805d79.js.map.gz +0 -0
@@ -0,0 +1,13 @@
1
+ progress {
2
+ @apply h-2 bg-white border border-gray-400 rounded shadow-inner;
3
+ }
4
+ progress[value]::-webkit-progress-bar {
5
+ @apply bg-white border border-gray-500 rounded shadow-inner;
6
+ }
7
+ progress[value]::-webkit-progress-value{
8
+ @apply bg-green-600 rounded;
9
+
10
+ }
11
+ progress[value]::-moz-progress-bar {
12
+ @apply bg-green-600 rounded appearance-none;
13
+ }
@@ -1,30 +1,41 @@
1
1
  .spinner {
2
+ width: 16px;
3
+ height: 16px;
4
+
2
5
  position: relative;
3
- display: inline-block;
4
- width: 18px;
5
- height: 18px;
6
- top: 3px;
6
+ }
7
+
8
+
9
+ .double-bounce1, .double-bounce2 {
10
+ width: 100%;
11
+ height: 100%;
12
+ border-radius: 50%;
7
13
  background-color: #333;
8
- border-radius: 100%;
9
- -webkit-animation: sk-scaleout 1.0s infinite ease-in-out;
10
- animation: sk-scaleout 1.0s infinite ease-in-out;
14
+ opacity: 0.6;
15
+ position: absolute;
16
+ top: 0;
17
+ left: 0;
18
+
19
+ -webkit-animation: sk-bounce 2.0s infinite ease-in-out;
20
+ animation: sk-bounce 2.0s infinite ease-in-out;
11
21
  }
12
22
 
13
- @-webkit-keyframes sk-scaleout {
14
- 0% { -webkit-transform: scale(0) }
15
- 100% {
16
- -webkit-transform: scale(1.0);
17
- opacity: 0;
18
- }
23
+ .double-bounce2 {
24
+ -webkit-animation-delay: -1.0s;
25
+ animation-delay: -1.0s;
19
26
  }
20
27
 
21
- @keyframes sk-scaleout {
22
- 0% {
23
- -webkit-transform: scale(0);
24
- transform: scale(0);
25
- } 100% {
26
- -webkit-transform: scale(1.0);
28
+ @-webkit-keyframes sk-bounce {
29
+ 0%, 100% { -webkit-transform: scale(0.0) }
30
+ 50% { -webkit-transform: scale(1.0) }
31
+ }
32
+
33
+ @keyframes sk-bounce {
34
+ 0%, 100% {
35
+ transform: scale(0.0);
36
+ -webkit-transform: scale(0.0);
37
+ } 50% {
27
38
  transform: scale(1.0);
28
- opacity: 0;
39
+ -webkit-transform: scale(1.0);
29
40
  }
30
41
  }
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
2
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" />
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
2
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd" />
3
+ </svg>
@@ -21,7 +21,7 @@
21
21
 
22
22
  <% if @action.get_fields.present? %>
23
23
  <% @action.get_fields.each_with_index do |field, index| %>
24
- <%= edit_field field, index, nil, form, displayed_in_modal: true %>
24
+ <%= render field.component_for_view(:edit).new field: field, resource: @resource, index: index, form: form, displayed_in_modal: true %>
25
25
  <% end %>
26
26
  <% end %>
27
27
 
@@ -1,3 +1,5 @@
1
1
  <%= javascript_tag nonce: true do %>
2
- var timezone = '<%= Avo.configuration.timezone %>';
2
+ window.Avo = window.Avo || { configuration: {} }
3
+ Avo.configuration.timezone = '<%= Avo.configuration.timezone %>'
4
+ Avo.configuration.root_path = '<%= Avo.configuration.root_path %>'
3
5
  <% end %>
@@ -0,0 +1,19 @@
1
+ <div data-controller="toggle-panel">
2
+ <a href="javascript:void(0);" class="flex items-center cursor-pointer font-semibold text-gray-700" data-action="click->toggle-panel#togglePanel">
3
+ <% if _current_user.respond_to? 'avatar' %>
4
+ <%= image_tag _current_user.avatar, class: "h-12 rounded-full border-4 border-white mr-1" if _current_user.avatar.present? %>
5
+ <% end %>
6
+ <% if _current_user.name.present? %>
7
+ <%= _current_user.name %>
8
+ <% elsif _current_user.email.present? %>
9
+ <%= _current_user.email %>
10
+ <% else %>
11
+ Avo user
12
+ <% end %>
13
+ <%= svg 'chevron-down', class: "ml-1 h-4" %>
14
+ </a>
15
+
16
+ <div class="hidden absolute inset-auto inset-auto right-0 mr-6 mt-0 py-4 bg-white rounded-xl min-w-[200px] shadow-context" data-toggle-panel-target="panel">
17
+ <%= button_to "Sign out", main_app.destroy_user_session_path, method: :delete, form: { "data-turbo" => "false" }, class: "appearance-none bg-white text-left cursor-pointer text-green-600 font-semibold hover:text-white hover:bg-green-500 block px-4 py-1 w-full" %>
18
+ </div>
19
+ </div>
@@ -19,15 +19,18 @@
19
19
  <%= render partial: 'avo/sidebar/sidebar' %>
20
20
 
21
21
  <div class="flex-1 flex flex-col h-full overflow-auto">
22
- <div class="relative bg-white p-2 shadow-md h-16 w-full flex flex-shrink-0 items-center z-50" v-if="layout !== 'blank'">
23
- <div class="ml-6">
22
+ <div class="relative bg-white p-2 shadow-md h-16 w-full flex flex-shrink-0 items-center z-50 px-6" v-if="layout !== 'blank'">
23
+ <div>
24
24
  <%= render partial: "avo/partials/header" %>
25
25
  </div>
26
26
  <div class="flex-1 flex justify-center">
27
- <div class="w-64">
27
+ <div class="w-64 flex">
28
28
  <%# <resources-search :global="true"> %>
29
29
  </div>
30
30
  </div>
31
+ <div class="align-end">
32
+ <%= render partial: "avo/partials/profile_dropdown" %>
33
+ </div>
31
34
  </div>
32
35
 
33
36
  <div class="content p-8 flex-1 flex flex-col justify-between items-stretch <%= @container_classes %>">
data/config/routes.rb CHANGED
@@ -3,6 +3,10 @@ Avo::Engine.routes.draw do
3
3
 
4
4
  get "resources", to: redirect("/avo")
5
5
 
6
+ scope "avo_api", as: "avo_api" do
7
+ post "/resources/:resource_name/:id/attachments/", to: "attachments#create"
8
+ end
9
+
6
10
  scope "resources", as: "resources" do
7
11
  # Attachments
8
12
  get "/:resource_name/:id/active_storage_attachments/:attachment_name/:signed_attachment_id", to: "attachments#show"
data/config/webpacker.yml CHANGED
@@ -35,8 +35,8 @@ development:
35
35
  dev_server:
36
36
  https: false
37
37
  host: localhost
38
- port: 3039
39
- public: localhost:3039
38
+ port: 7299
39
+ public: localhost:7299
40
40
  # Inject browserside javascript that required by both HMR and Live(full) reload
41
41
  inject_client: true
42
42
  # Hot Module Replacement updates modules while the application is running without a full reload
data/db/factories.rb CHANGED
@@ -13,6 +13,7 @@ FactoryBot.define do
13
13
  name { Faker::Company.name }
14
14
  description { Faker::Lorem.paragraph(sentence_count: 4) }
15
15
  url { Faker::Internet.url }
16
+ color { Faker::Color.hex_color }
16
17
  end
17
18
 
18
19
  factory :post do
@@ -24,6 +25,7 @@ FactoryBot.define do
24
25
  Time.now - rand(10...365).days
25
26
  end
26
27
  end
28
+ status { 0 }
27
29
  end
28
30
 
29
31
  factory :project do
@@ -36,5 +38,6 @@ FactoryBot.define do
36
38
  users_required { Faker::Number.between(from: 10, to: 100) }
37
39
  started_at { Time.now - rand(10...365).days }
38
40
  meta { [{foo: "bar", hey: "hi"}, {bar: "baz"}, {hoho: "hohoho"}].sample }
41
+ progress { Faker::Number.between(from: 0, to: 100) }
39
42
  end
40
43
  end
@@ -0,0 +1,5 @@
1
+ class AddColorToTeams < ActiveRecord::Migration[6.0]
2
+ def change
3
+ add_column :teams, :color, :string
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddProgressToProjects < ActiveRecord::Migration[6.0]
2
+ def change
3
+ add_column :projects, :progress, :integer
4
+ end
5
+ end
data/lib/avo/app.rb CHANGED
@@ -1,9 +1,7 @@
1
1
  module Avo
2
2
  class App
3
- class_attribute :app, default: {
4
- resources: [],
5
- cache_store: nil
6
- }
3
+ class_attribute :resources, default: []
4
+ class_attribute :cache_store, default: nil
7
5
  class_attribute :fields, default: []
8
6
  class_attribute :request, default: nil
9
7
  class_attribute :context, default: nil
@@ -16,9 +14,9 @@ module Avo
16
14
  I18n.locale = Avo.configuration.language_code
17
15
 
18
16
  if Rails.cache.instance_of?(ActiveSupport::Cache::NullStore)
19
- app[:cache_store] ||= ActiveSupport::Cache::MemoryStore.new
17
+ self.cache_store ||= ActiveSupport::Cache::MemoryStore.new
20
18
  else
21
- app[:cache_store] = Rails.cache
19
+ self.cache_store = Rails.cache
22
20
  end
23
21
  end
24
22
 
@@ -38,10 +36,6 @@ module Avo
38
36
  init_resources
39
37
  end
40
38
 
41
- def cache_store
42
- app[:cache_store]
43
- end
44
-
45
39
  # This method will find all fields available in the Avo::Fields namespace and add them to the fields class_variable array
46
40
  # so later we can instantiate them on our resources.
47
41
  #
@@ -67,7 +61,7 @@ module Avo
67
61
  end
68
62
 
69
63
  def init_resources
70
- app[:resources] = BaseResource.descendants
64
+ self.resources = BaseResource.descendants
71
65
  .select do |resource|
72
66
  resource != BaseResource
73
67
  end
@@ -78,15 +72,11 @@ module Avo
78
72
  end
79
73
  end
80
74
 
81
- def get_resources
82
- app[:resources]
83
- end
84
-
85
75
  # Returns the Avo resource by camelized name
86
76
  #
87
77
  # get_resource_by_name('User') => UserResource
88
78
  def get_resource(resource)
89
- app[:resources].find do |available_resource|
79
+ resources.find do |available_resource|
90
80
  "#{resource}Resource".safe_constantize == available_resource.class
91
81
  end
92
82
  end
@@ -103,7 +93,7 @@ module Avo
103
93
  # get_resource_by_name('User') => UserResource
104
94
  # get_resource_by_name(User) => UserResource
105
95
  def get_resource_by_model_name(name)
106
- get_resources.find do |resource|
96
+ resources.find do |resource|
107
97
  resource.model_class.model_name.name == name.to_s
108
98
  end
109
99
  end
@@ -113,7 +103,7 @@ module Avo
113
103
  # get_resource_by_controller_name('delayed_backend_active_record_jobs') => DelayedJobResource
114
104
  # get_resource_by_controller_name('users') => UserResource
115
105
  def get_resource_by_controller_name(name)
116
- get_resources.find do |resource|
106
+ resources.find do |resource|
117
107
  resource.model_class.to_s.pluralize.underscore.tr("/", "_") == name.to_s
118
108
  end
119
109
  end
@@ -126,8 +116,7 @@ module Avo
126
116
  end
127
117
 
128
118
  def get_available_resources(user = nil)
129
- App.get_resources
130
- .select do |resource|
119
+ resources.select do |resource|
131
120
  Services::AuthorizationService.authorize user, resource.model, Avo.configuration.authorization_methods.stringify_keys["index"], raise_exception: false
132
121
  end
133
122
  .sort_by { |r| r.name }
@@ -61,9 +61,17 @@ module Avo
61
61
  def get_field_definitions
62
62
  return [] if self.class.fields.blank?
63
63
 
64
- self.class.fields.map do |field|
64
+ fields = self.class.fields.map do |field|
65
65
  field.hydrate(resource: self, panel_name: default_panel_name, user: user)
66
66
  end
67
+
68
+ if Avo::App.license.invalid? || Avo::App.license.lacks(:custom_fields)
69
+ fields = fields.reject do |field|
70
+ field.custom?
71
+ end
72
+ end
73
+
74
+ fields
67
75
  end
68
76
 
69
77
  def get_fields(panel: nil, reflection: nil)
@@ -35,7 +35,7 @@ module Avo
35
35
  @default_view_type = :table
36
36
  @license = "community"
37
37
  @license_key = nil
38
- @current_user = proc {}
38
+ @current_user = proc { current_user }
39
39
  @authenticate = proc {}
40
40
  @authorization_methods = {
41
41
  index: "index?",
data/lib/avo/engine.rb CHANGED
@@ -15,6 +15,7 @@ module Avo
15
15
 
16
16
  initializer "avo.autoload", before: :set_autoload_paths do |app|
17
17
  [
18
+ ["app", "avo", "fields"],
18
19
  ["app", "avo", "filters"],
19
20
  ["app", "avo", "actions"],
20
21
  ["app", "avo", "resources"]
@@ -1,17 +1,15 @@
1
1
  module Avo
2
2
  module Fields
3
3
  class BadgeField < BaseField
4
- def initialize(name, **args, &block)
5
- @defaults = {
6
- partial_name: "badge-field"
7
- }
4
+ attr_reader :options
8
5
 
9
- super(name, **args, &block)
6
+ def initialize(id, **args, &block)
7
+ super(id, **args, &block)
10
8
 
11
9
  hide_on [:edit, :new]
12
10
 
13
11
  default_options = {info: :info, success: :success, danger: :danger, warning: :warning}
14
- @meta[:options] = args[:options].present? ? default_options.merge(args[:options]) : default_options
12
+ @options = args[:options].present? ? default_options.merge(args[:options]) : default_options
15
13
  end
16
14
  end
17
15
  end
@@ -5,91 +5,65 @@ module Avo
5
5
  extend Avo::Fields::FieldExtensions::HasFieldName
6
6
  include Avo::Fields::FieldExtensions::VisibleInDifferentViews
7
7
 
8
- attr_accessor :id
9
- attr_accessor :name
10
- attr_accessor :translation_key
11
- attr_accessor :partial_name
12
- attr_accessor :partial_path
13
- attr_accessor :updatable
14
- attr_accessor :sortable
15
- attr_accessor :required
16
- attr_accessor :readonly
17
- attr_accessor :nullable
18
- attr_accessor :null_values
19
- attr_accessor :format_using
20
- attr_accessor :computed # if block is present
21
- attr_accessor :computable # if allowed to be computable
22
- attr_accessor :computed_value # the value after computation
23
- attr_accessor :block
24
- attr_accessor :placeholder
25
- attr_accessor :help
26
- attr_accessor :default
27
- attr_accessor :visible
28
- attr_accessor :model
29
- attr_accessor :resource
30
- attr_accessor :view
31
- attr_accessor :user
32
- attr_accessor :action
33
- attr_accessor :meta
34
- attr_accessor :panel_name
35
- attr_accessor :link_to_resource
36
- attr_accessor :options
8
+ attr_reader :id
9
+ attr_reader :name
10
+ attr_reader :translation_key
11
+ attr_reader :block
12
+ attr_reader :required
13
+ attr_reader :readonly
14
+ attr_reader :sortable
15
+ attr_reader :nullable
16
+ attr_reader :null_values
17
+ attr_reader :format_using
18
+ attr_reader :placeholder
19
+ attr_reader :help
20
+ attr_reader :default
21
+ attr_reader :visible
22
+
23
+ # Private options
24
+ attr_reader :updatable
25
+ attr_reader :computable # if allowed to be computable
26
+ attr_reader :computed # if block is present
27
+ attr_reader :computed_value # the value after computation
28
+
29
+ # Hydrated payload
30
+ attr_reader :model
31
+ attr_reader :view
32
+ attr_reader :resource
33
+ attr_reader :action
34
+ attr_reader :user
35
+ attr_reader :panel_name
37
36
 
38
37
  class_attribute :field_name_attribute
39
38
 
40
- @meta = {}
41
-
42
- def initialize(id, **args, &block)
39
+ def initialize(id, _options: {}, **args, &block)
43
40
  super(id, **args, &block)
44
- @defaults ||= {}
45
-
46
- args = @defaults.merge(args).symbolize_keys
47
-
48
- null_values = [nil, "", *args[:null_values]]
49
- # The field properties as a hash {property: default_value}
50
- @field_properties = {
51
- id: id,
52
- name: id.to_s.humanize(keep_id_suffix: true),
53
- translation_key: nil,
54
- block: block,
55
- partial_name: "field",
56
- required: false,
57
- readonly: false,
58
- updatable: true,
59
- sortable: false,
60
- nullable: false,
61
- null_values: null_values,
62
- computable: true,
63
- computed: block.present?,
64
- computed_value: false,
65
- format_using: false,
66
- placeholder: id.to_s.humanize,
67
- help: nil,
68
- default: nil,
69
- visible: true,
70
- meta: {},
71
- panel_name: nil,
72
- options: {}
73
- }
74
-
75
- # Set the values in the following order
76
- # - app defaults
77
- # - field defaults
78
- # - field option
79
- @field_properties.each do |name, default_value|
80
- final_value = args[name.to_sym]
81
- send("#{name}=", name != "null_values" && (final_value.nil? || !defined?(final_value)) ? default_value : final_value)
82
- end
41
+
42
+ @id = id
43
+ @name = args[:name] || id.to_s.humanize(keep_id_suffix: true)
44
+ @translation_key = args[:translation_key]
45
+ @block = block
46
+ @required = args[:required] || false
47
+ @readonly = args[:readonly] || false
48
+ @sortable = args[:sortable] || false
49
+ @nullable = args[:nullable] || false
50
+ @null_values = args[:null_values] || [nil, ""]
51
+ @format_using = args[:format_using] || nil
52
+ @placeholder = args[:placeholder] || id.to_s.humanize(keep_id_suffix: true)
53
+ @help = args[:help] || nil
54
+ @default = args[:default] || nil
55
+ @visible = args[:visible] || true
56
+
57
+ @updatable = true
58
+ @computable = true
59
+ @computed = block.present?
60
+ @computed_value = nil
83
61
 
84
62
  # Set the visibility
85
63
  show_on args[:show_on] if args[:show_on].present?
86
64
  hide_on args[:hide_on] if args[:hide_on].present?
87
65
  only_on args[:only_on] if args[:only_on].present?
88
66
  except_on args[:except_on] if args[:except_on].present?
89
-
90
- if args[:use_partials].present?
91
- @custom_partials = args[:use_partials]
92
- end
93
67
  end
94
68
 
95
69
  def hydrate(model: nil, resource: nil, action: nil, view: nil, panel_name: nil, user: nil)
@@ -142,12 +116,6 @@ module Avo
142
116
  model
143
117
  end
144
118
 
145
- def partial_path_for(view)
146
- return @custom_partials[view] if @custom_partials.present? && @custom_partials[view].present?
147
-
148
- "avo/fields/#{view}/#{partial_name}"
149
- end
150
-
151
119
  # Try to see if the field has a different database ID than it's name
152
120
  def database_id(model)
153
121
  foreign_key
@@ -167,8 +135,13 @@ module Avo
167
135
  id.to_sym
168
136
  end
169
137
 
170
- def component_name(view = :index)
171
- "Avo::#{view.to_s.classify}::Fields::#{partial_name.gsub("-field", "").underscore.camelize}FieldComponent"
138
+ def view_component_name
139
+ "#{type.classify}Field"
140
+ end
141
+
142
+ def component_for_view(view = :index)
143
+ # puts ['component_for_view->', "Avo::Fields::#{type.classify}Field::#{view.to_s.classify}Component"].inspect
144
+ "Avo::Fields::#{view_component_name}::#{view.to_s.classify}Component".safe_constantize
172
145
  end
173
146
 
174
147
  def model_errors
@@ -181,6 +154,12 @@ module Avo
181
154
  self.class.name.demodulize.to_s.underscore.gsub("_field", "")
182
155
  end
183
156
 
157
+ def custom?
158
+ !method(:initialize).source_location.first.include?("lib/avo/field")
159
+ rescue
160
+ true
161
+ end
162
+
184
163
  private
185
164
 
186
165
  def model_or_class(model)