avo 1.3.3 → 1.4.0

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 (340) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +4 -4
  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/fields/common/key_value_component.html.erb +53 -0
  43. data/app/components/avo/fields/common/key_value_component.rb +11 -0
  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/{common → fields/common}/status_viewer_component.html.erb +0 -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/fields/key_value_field/edit_component.html.erb +3 -0
  111. data/app/components/avo/fields/key_value_field/edit_component.rb +4 -0
  112. data/app/components/avo/fields/key_value_field/show_component.html.erb +3 -0
  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/application_helper.rb +1 -1
  173. data/app/helpers/avo/resources_helper.rb +0 -44
  174. data/app/packs/entrypoints/application.css +1 -0
  175. data/app/packs/entrypoints/application.js +14 -11
  176. data/app/packs/js/controllers/fields/code_field_controller.js +1 -0
  177. data/app/packs/js/controllers/fields/date_field_controller.js +1 -1
  178. data/app/packs/js/controllers/fields/key_value_controller.js +136 -0
  179. data/app/packs/js/controllers/fields/trix_field_controller.js +121 -0
  180. data/app/packs/stylesheets/components/progress.css +13 -0
  181. data/app/views/avo/actions/show.html.erb +1 -1
  182. data/app/views/avo/partials/_javascript.html.erb +3 -1
  183. data/app/views/avo/partials/_profile_dropdown.html.erb +19 -0
  184. data/app/views/layouts/avo/application.html.erb +6 -3
  185. data/config/routes.rb +4 -0
  186. data/config/webpacker.yml +2 -2
  187. data/db/factories.rb +3 -0
  188. data/db/migrate/20210421064037_add_color_to_teams.rb +5 -0
  189. data/db/migrate/20210423075924_add_progress_to_projects.rb +5 -0
  190. data/lib/avo.rb +1 -1
  191. data/lib/avo/app.rb +9 -20
  192. data/lib/avo/base_resource.rb +9 -1
  193. data/lib/avo/engine.rb +1 -0
  194. data/lib/avo/fields/badge_field.rb +4 -6
  195. data/lib/avo/fields/base_field.rb +62 -83
  196. data/lib/avo/fields/belongs_to_field.rb +11 -11
  197. data/lib/avo/fields/boolean_field.rb +2 -7
  198. data/lib/avo/fields/boolean_group_field.rb +2 -7
  199. data/lib/avo/fields/code_field.rb +3 -7
  200. data/lib/avo/fields/country_field.rb +3 -6
  201. data/lib/avo/fields/currency_field.rb +4 -13
  202. data/lib/avo/fields/date_field.rb +2 -8
  203. data/lib/avo/fields/date_time_field.rb +2 -3
  204. data/lib/avo/fields/external_image_field.rb +2 -7
  205. data/lib/avo/fields/file_field.rb +4 -8
  206. data/lib/avo/fields/files_field.rb +6 -8
  207. data/lib/avo/fields/gravatar_field.rb +6 -9
  208. data/lib/avo/fields/has_and_belongs_to_many_field.rb +6 -7
  209. data/lib/avo/fields/has_many_field.rb +3 -9
  210. data/lib/avo/fields/has_one_field.rb +3 -8
  211. data/lib/avo/fields/heading_field.rb +10 -8
  212. data/lib/avo/fields/hidden_field.rb +2 -6
  213. data/lib/avo/fields/id_field.rb +5 -17
  214. data/lib/avo/fields/key_value_field.rb +27 -6
  215. data/lib/avo/fields/markdown_field.rb +3 -5
  216. data/lib/avo/fields/number_field.rb +8 -11
  217. data/lib/avo/fields/password_field.rb +2 -6
  218. data/lib/avo/fields/progress_bar_field.rb +19 -0
  219. data/lib/avo/fields/select_field.rb +13 -12
  220. data/lib/avo/fields/status_field.rb +2 -6
  221. data/lib/avo/fields/text_field.rb +3 -6
  222. data/lib/avo/fields/textarea_field.rb +4 -7
  223. data/lib/avo/fields/trix_field.rb +7 -7
  224. data/lib/avo/fields_collector.rb +47 -11
  225. data/lib/avo/licensing/pro_license.rb +2 -1
  226. data/lib/avo/version.rb +1 -1
  227. data/lib/generators/avo/action_generator.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/action.tt +5 -9
  232. data/lib/generators/avo/templates/field/%singular_name%_field.rb.tt +5 -0
  233. data/lib/generators/avo/templates/field/components/edit_component.html.erb.tt +6 -0
  234. data/lib/generators/avo/templates/field/components/edit_component.rb.tt +4 -0
  235. data/lib/generators/avo/templates/field/components/index_component.html.erb.tt +3 -0
  236. data/lib/generators/avo/templates/field/components/index_component.rb.tt +4 -0
  237. data/lib/generators/avo/templates/field/components/show_component.html.erb.tt +3 -0
  238. data/lib/generators/avo/templates/field/components/show_component.rb.tt +4 -0
  239. data/lib/generators/avo/templates/tool/view.tt +1 -1
  240. data/public/avo-packs/css/{application-af3e670d.css → application-cb627e0b.css} +179 -43
  241. data/public/avo-packs/css/application-cb627e0b.css.br +0 -0
  242. data/public/avo-packs/css/application-cb627e0b.css.gz +0 -0
  243. data/public/avo-packs/css/application-cb627e0b.css.map +1 -0
  244. data/public/avo-packs/css/application-cb627e0b.css.map.br +0 -0
  245. data/public/avo-packs/css/application-cb627e0b.css.map.gz +0 -0
  246. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js +26 -0
  247. data/public/avo-packs/js/{application-801f1297670a4c6df1b6.js.LICENSE.txt → application-6a0b9e58526ae6bef242.js.LICENSE.txt} +0 -0
  248. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.br +0 -0
  249. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.gz +0 -0
  250. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.map +1 -0
  251. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.map.br +0 -0
  252. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.map.gz +0 -0
  253. data/public/avo-packs/manifest.json +15 -15
  254. metadata +185 -159
  255. data/app/components/avo/common/files_list_viewer_component.html.erb +0 -5
  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/markdown_field_component.rb +0 -4
  269. data/app/components/avo/edit/fields/number_field_component.rb +0 -4
  270. data/app/components/avo/edit/fields/password_field_component.rb +0 -4
  271. data/app/components/avo/edit/fields/select_field_component.rb +0 -4
  272. data/app/components/avo/edit/fields/status_field_component.rb +0 -4
  273. data/app/components/avo/edit/fields/text_field_component.rb +0 -4
  274. data/app/components/avo/edit/fields/textarea_field_component.rb +0 -4
  275. data/app/components/avo/edit/fields/trix_field_component.html.erb +0 -11
  276. data/app/components/avo/edit/fields/trix_field_component.rb +0 -4
  277. data/app/components/avo/index/fields/badge_field_component.html.erb +0 -3
  278. data/app/components/avo/index/fields/badge_field_component.rb +0 -4
  279. data/app/components/avo/index/fields/belongs_to_field_component.rb +0 -4
  280. data/app/components/avo/index/fields/boolean_field_component.html.erb +0 -3
  281. data/app/components/avo/index/fields/boolean_field_component.rb +0 -4
  282. data/app/components/avo/index/fields/boolean_group_field_component.html.erb +0 -3
  283. data/app/components/avo/index/fields/boolean_group_field_component.rb +0 -4
  284. data/app/components/avo/index/fields/country_field_component.rb +0 -4
  285. data/app/components/avo/index/fields/date_field_component.rb +0 -4
  286. data/app/components/avo/index/fields/date_time_field_component.rb +0 -4
  287. data/app/components/avo/index/fields/external_image_field_component.rb +0 -4
  288. data/app/components/avo/index/fields/field_component.html.erb +0 -1
  289. data/app/components/avo/index/fields/field_component.rb +0 -11
  290. data/app/components/avo/index/fields/file_field_component.rb +0 -4
  291. data/app/components/avo/index/fields/files_field_component.rb +0 -4
  292. data/app/components/avo/index/fields/gravatar_field_component.rb +0 -4
  293. data/app/components/avo/index/fields/has_one_field_component.rb +0 -4
  294. data/app/components/avo/index/fields/id_field_component.html.erb +0 -10
  295. data/app/components/avo/index/fields/id_field_component.rb +0 -4
  296. data/app/components/avo/index/fields/number_field_component.rb +0 -4
  297. data/app/components/avo/index/fields/select_field_component.rb +0 -4
  298. data/app/components/avo/index/fields/status_field_component.html.erb +0 -3
  299. data/app/components/avo/index/fields/status_field_component.rb +0 -4
  300. data/app/components/avo/index/fields/text_field_component.html.erb +0 -3
  301. data/app/components/avo/index/fields/text_field_component.rb +0 -4
  302. data/app/components/avo/show/fields/badge_field_component.html.erb +0 -3
  303. data/app/components/avo/show/fields/badge_field_component.rb +0 -4
  304. data/app/components/avo/show/fields/belongs_to_field_component.rb +0 -4
  305. data/app/components/avo/show/fields/boolean_field_component.rb +0 -4
  306. data/app/components/avo/show/fields/boolean_group_field_component.html.erb +0 -3
  307. data/app/components/avo/show/fields/boolean_group_field_component.rb +0 -4
  308. data/app/components/avo/show/fields/code_field_component.rb +0 -4
  309. data/app/components/avo/show/fields/country_field_component.rb +0 -4
  310. data/app/components/avo/show/fields/date_field_component.rb +0 -4
  311. data/app/components/avo/show/fields/date_time_field_component.rb +0 -4
  312. data/app/components/avo/show/fields/external_image_field_component.rb +0 -4
  313. data/app/components/avo/show/fields/file_field_component.html.erb +0 -3
  314. data/app/components/avo/show/fields/file_field_component.rb +0 -4
  315. data/app/components/avo/show/fields/files_field_component.html.erb +0 -3
  316. data/app/components/avo/show/fields/files_field_component.rb +0 -4
  317. data/app/components/avo/show/fields/gravatar_field_component.rb +0 -4
  318. data/app/components/avo/show/fields/has_many_field_component.rb +0 -4
  319. data/app/components/avo/show/fields/has_one_field_component.rb +0 -5
  320. data/app/components/avo/show/fields/heading_field_component.rb +0 -4
  321. data/app/components/avo/show/fields/id_field_component.rb +0 -4
  322. data/app/components/avo/show/fields/markdown_field_component.rb +0 -4
  323. data/app/components/avo/show/fields/number_field_component.rb +0 -4
  324. data/app/components/avo/show/fields/select_field_component.rb +0 -4
  325. data/app/components/avo/show/fields/status_field_component.html.erb +0 -3
  326. data/app/components/avo/show/fields/status_field_component.rb +0 -4
  327. data/app/components/avo/show/fields/text_field_component.rb +0 -4
  328. data/app/components/avo/show/fields/textarea_field_component.rb +0 -4
  329. data/app/components/avo/show/fields/trix_field_component.rb +0 -4
  330. data/public/avo-packs/css/application-af3e670d.css.br +0 -0
  331. data/public/avo-packs/css/application-af3e670d.css.gz +0 -0
  332. data/public/avo-packs/css/application-af3e670d.css.map +0 -1
  333. data/public/avo-packs/css/application-af3e670d.css.map.br +0 -0
  334. data/public/avo-packs/css/application-af3e670d.css.map.gz +0 -0
  335. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js +0 -26
  336. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js.br +0 -0
  337. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js.gz +0 -0
  338. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js.map +0 -1
  339. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js.map.br +0 -0
  340. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js.map.gz +0 -0
@@ -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.rb CHANGED
@@ -27,7 +27,7 @@ module Avo
27
27
  root_path: ROOT_PATH,
28
28
  public_output_dir: "avo-packs",
29
29
  cache_manifest: Rails.env.production?,
30
- fallback_to_webpacker: -> { Avo::IN_DEVELOPMENT || Rails.env.test?}
30
+ fallback_to_webpacker: -> { Avo::IN_DEVELOPMENT }
31
31
  )
32
32
  end
33
33
  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)
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)
@@ -1,16 +1,16 @@
1
1
  module Avo
2
2
  module Fields
3
3
  class BelongsToField < BaseField
4
- def initialize(name, **args, &block)
5
- @defaults = {
6
- partial_name: "belongs-to-field",
7
- placeholder: I18n.t("avo.choose_an_option")
8
- }
4
+ attr_reader :searchable
5
+ attr_reader :relation_method
9
6
 
10
- super(name, **args, &block)
7
+ def initialize(id, **args, &block)
8
+ args[:placeholder] ||= I18n.t("avo.choose_an_option")
11
9
 
12
- @meta[:searchable] = args[:searchable] == true
13
- @meta[:relation_method] = name.to_s.parameterize.underscore
10
+ super(id, **args, &block)
11
+
12
+ @searchable = args[:searchable] == true
13
+ @relation_method = name.to_s.parameterize.underscore
14
14
  end
15
15
 
16
16
  def options
@@ -29,12 +29,12 @@ module Avo
29
29
  def foreign_key
30
30
  if @model.present?
31
31
  if @model.instance_of?(Class)
32
- @model.reflections[@meta[:relation_method]].foreign_key
32
+ @model.reflections[@relation_method].foreign_key
33
33
  else
34
- @model.class.reflections[@meta[:relation_method]].foreign_key
34
+ @model.class.reflections[@relation_method].foreign_key
35
35
  end
36
36
  elsif @resource.present?
37
- @resource.model_class.reflections[@meta[:relation_method]].foreign_key
37
+ @resource.model_class.reflections[@relation_method].foreign_key
38
38
  end
39
39
  end
40
40
 
@@ -4,13 +4,8 @@ module Avo
4
4
  attr_reader :true_value
5
5
  attr_reader :false_value
6
6
 
7
- def initialize(name, **args, &block)
8
- @defaults = {
9
- partial_name: "boolean-field",
10
- computable: true
11
- }
12
-
13
- super(name, **args, &block)
7
+ def initialize(id, **args, &block)
8
+ super(id, **args, &block)
14
9
 
15
10
  @true_value = args[:true_value].present? ? args[:true_value] : true
16
11
  @false_value = args[:false_value].present? ? args[:false_value] : false
@@ -3,13 +3,8 @@ module Avo
3
3
  class BooleanGroupField < BaseField
4
4
  attr_reader :options
5
5
 
6
- def initialize(name, **args, &block)
7
- @defaults = {
8
- partial_name: "boolean-group-field",
9
- computable: true
10
- }
11
-
12
- super(name, **args, &block)
6
+ def initialize(id, **args, &block)
7
+ super(id, **args, &block)
13
8
 
14
9
  @options = args[:options].present? ? args[:options] : {}
15
10
  end
@@ -1,21 +1,17 @@
1
1
  module Avo
2
2
  module Fields
3
3
  class CodeField < BaseField
4
- attr_reader :height
5
4
  attr_reader :language
6
5
  attr_reader :theme
6
+ attr_reader :height
7
7
  attr_reader :tab_size
8
8
  attr_reader :indent_with_tabs
9
9
  attr_reader :line_wrapping
10
10
 
11
- def initialize(name, **args, &block)
12
- @defaults = {
13
- partial_name: "code-field"
14
- }
15
-
11
+ def initialize(id, **args, &block)
16
12
  hide_on :index
17
13
 
18
- super(name, **args, &block)
14
+ super(id, **args, &block)
19
15
 
20
16
  @language = args[:language].present? ? args[:language].to_s : "javascript"
21
17
  @theme = args[:theme].present? ? args[:theme].to_s : "material-darker"
@@ -4,13 +4,10 @@ module Avo
4
4
  attr_reader :countries
5
5
  attr_reader :display_code
6
6
 
7
- def initialize(name, **args, &block)
8
- @defaults = {
9
- partial_name: "country-field",
10
- placeholder: I18n.t("avo.choose_a_country")
11
- }
7
+ def initialize(id, **args, &block)
8
+ args[:placeholder] ||= I18n.t("avo.choose_a_country")
12
9
 
13
- super(name, **args, &block)
10
+ super(id, **args, &block)
14
11
 
15
12
  @countries = ISO3166::Country.translations.sort_by { |code, name| name }.to_h
16
13
  @display_code = args[:display_code].present? ? args[:display_code] : false