avo 2.46.0 → 3.0.2

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 (409) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +28 -26
  3. data/Gemfile.lock +231 -161
  4. data/README.md +19 -27
  5. data/Rakefile +2 -0
  6. data/app/assets/stylesheets/avo.base.css +1 -1
  7. data/app/assets/svgs/font.svg +1 -0
  8. data/app/assets/svgs/triangle-up.svg +1 -0
  9. data/app/components/avo/actions_component.html.erb +19 -5
  10. data/app/components/avo/actions_component.rb +39 -19
  11. data/app/components/avo/asset_manager/javascript_component.html.erb +3 -0
  12. data/app/components/avo/asset_manager/javascript_component.rb +13 -0
  13. data/app/components/avo/asset_manager/stylesheet_component.html.erb +3 -0
  14. data/app/components/avo/asset_manager/stylesheet_component.rb +13 -0
  15. data/app/components/avo/base_component.rb +15 -12
  16. data/app/components/avo/button_component.rb +20 -3
  17. data/app/components/avo/empty_state_component.rb +1 -1
  18. data/app/components/avo/field_wrapper_component.html.erb +1 -1
  19. data/app/components/avo/field_wrapper_component.rb +12 -29
  20. data/app/components/avo/fields/area_field/edit_component.html.erb +2 -2
  21. data/app/components/avo/fields/belongs_to_field/edit_component.html.erb +75 -79
  22. data/app/components/avo/fields/belongs_to_field/edit_component.rb +7 -7
  23. data/app/components/avo/fields/belongs_to_field/index_component.html.erb +1 -1
  24. data/app/components/avo/fields/belongs_to_field/show_component.rb +2 -2
  25. data/app/components/avo/fields/boolean_field/edit_component.html.erb +1 -1
  26. data/app/components/avo/fields/boolean_field/index_component.html.erb +1 -1
  27. data/app/components/avo/fields/boolean_group_field/edit_component.html.erb +3 -3
  28. data/app/components/avo/fields/common/badge_viewer_component.rb +1 -1
  29. data/app/components/avo/fields/common/boolean_check_component.html.erb +1 -12
  30. data/app/components/avo/fields/common/boolean_check_component.rb +2 -1
  31. data/app/components/avo/fields/common/boolean_group_component.html.erb +2 -2
  32. data/app/components/avo/fields/common/files/view_type/grid_item_component.rb +2 -2
  33. data/app/components/avo/fields/common/gravatar_viewer_component.html.erb +1 -1
  34. data/app/components/avo/fields/common/gravatar_viewer_component.rb +2 -2
  35. data/app/components/avo/fields/common/heading_component.html.erb +3 -8
  36. data/app/components/avo/fields/common/heading_component.rb +1 -3
  37. data/app/components/avo/fields/common/key_value_component.html.erb +2 -2
  38. data/app/components/avo/fields/common/key_value_component.rb +2 -2
  39. data/app/components/avo/fields/common/progress_bar_component.rb +3 -9
  40. data/app/components/avo/fields/common/status_viewer_component.html.erb +3 -0
  41. data/app/components/avo/fields/edit_component.rb +2 -2
  42. data/app/components/avo/fields/external_image_field/index_component.html.erb +1 -1
  43. data/app/components/avo/fields/file_field/index_component.html.erb +2 -2
  44. data/app/components/avo/fields/gravatar_field/index_component.html.erb +1 -1
  45. data/app/components/avo/fields/has_one_field/index_component.html.erb +1 -1
  46. data/app/components/avo/fields/has_one_field/show_component.html.erb +3 -2
  47. data/app/components/avo/fields/has_one_field/show_component.rb +2 -2
  48. data/app/components/avo/fields/heading_field/edit_component.html.erb +1 -1
  49. data/app/components/avo/fields/heading_field/show_component.html.erb +1 -1
  50. data/app/components/avo/fields/id_field/index_component.html.erb +1 -1
  51. data/app/components/avo/fields/index_component.rb +6 -6
  52. data/app/components/avo/fields/location_field/edit_component.html.erb +12 -10
  53. data/app/components/avo/fields/preview_field/index_component.html.erb +10 -0
  54. data/app/components/avo/fields/preview_field/index_component.rb +4 -0
  55. data/app/components/avo/fields/select_field/edit_component.html.erb +1 -1
  56. data/app/components/avo/fields/show_component.rb +5 -2
  57. data/app/components/avo/fields/text_field/index_component.html.erb +1 -1
  58. data/app/components/avo/fields/trix_field/edit_component.html.erb +2 -2
  59. data/app/components/avo/fields/trix_field/edit_component.rb +1 -1
  60. data/app/components/avo/fields/trix_field/show_component.html.erb +1 -1
  61. data/app/components/avo/filters_component.html.erb +9 -3
  62. data/app/components/avo/filters_component.rb +4 -4
  63. data/app/components/avo/index/field_wrapper_component.rb +1 -13
  64. data/app/components/avo/index/grid_item_component.html.erb +13 -36
  65. data/app/components/avo/index/grid_item_component.rb +43 -16
  66. data/app/components/avo/index/resource_controls_component.html.erb +3 -81
  67. data/app/components/avo/index/resource_controls_component.rb +125 -18
  68. data/app/components/avo/index/resource_grid_component.html.erb +5 -3
  69. data/app/components/avo/index/resource_grid_component.rb +5 -2
  70. data/app/components/avo/index/resource_map_component.html.erb +1 -1
  71. data/app/components/avo/index/resource_map_component.rb +3 -3
  72. data/app/components/avo/index/resource_table_component.html.erb +3 -2
  73. data/app/components/avo/index/resource_table_component.rb +8 -7
  74. data/app/components/avo/index/table_row_component.html.erb +9 -5
  75. data/app/components/avo/index/table_row_component.rb +3 -2
  76. data/app/components/avo/items/panel_component.html.erb +25 -0
  77. data/app/components/avo/items/panel_component.rb +43 -0
  78. data/app/components/avo/items/switcher_component.html.erb +17 -0
  79. data/app/components/avo/items/switcher_component.rb +79 -0
  80. data/app/components/avo/items/visible_items_component.html.erb +10 -0
  81. data/app/components/avo/items/visible_items_component.rb +11 -0
  82. data/app/components/avo/modal_component.html.erb +3 -4
  83. data/app/components/avo/paginator_component.html.erb +1 -1
  84. data/app/components/avo/paginator_component.rb +6 -6
  85. data/app/components/avo/panel_component.html.erb +7 -5
  86. data/app/components/avo/referrer_params_component.html.erb +1 -1
  87. data/app/components/avo/resource_component.rb +205 -26
  88. data/app/components/avo/resource_sidebar_component.html.erb +15 -18
  89. data/app/components/avo/resource_sidebar_component.rb +5 -3
  90. data/app/components/avo/sidebar/link_component.rb +1 -1
  91. data/app/components/avo/sidebar_component.html.erb +10 -3
  92. data/app/components/avo/sidebar_component.rb +5 -3
  93. data/app/components/avo/sidebar_profile_component.html.erb +18 -12
  94. data/app/components/avo/tab_group_component.html.erb +14 -8
  95. data/app/components/avo/tab_group_component.rb +1 -6
  96. data/app/components/avo/tab_switcher_component.html.erb +17 -40
  97. data/app/components/avo/tab_switcher_component.rb +6 -41
  98. data/app/components/avo/views/resource_edit_component.html.erb +23 -86
  99. data/app/components/avo/views/resource_edit_component.rb +20 -19
  100. data/app/components/avo/views/resource_index_component.html.erb +42 -47
  101. data/app/components/avo/views/resource_index_component.rb +76 -13
  102. data/app/components/avo/views/resource_show_component.html.erb +16 -177
  103. data/app/components/avo/views/resource_show_component.rb +16 -10
  104. data/app/controllers/avo/actions_controller.rb +29 -31
  105. data/app/controllers/avo/application_controller.rb +119 -180
  106. data/app/controllers/avo/associations_controller.rb +34 -43
  107. data/app/controllers/avo/attachments_controller.rb +4 -4
  108. data/app/controllers/avo/base_controller.rb +139 -91
  109. data/app/controllers/avo/debug_controller.rb +17 -5
  110. data/app/controllers/avo/home_controller.rb +1 -1
  111. data/app/controllers/avo/search_controller.rb +56 -50
  112. data/app/controllers/concerns/avo/initializes_avo.rb +22 -0
  113. data/app/helpers/avo/application_helper.rb +18 -8
  114. data/app/helpers/avo/resources_helper.rb +1 -1
  115. data/app/helpers/avo/url_helpers.rb +28 -12
  116. data/app/javascript/avo.base.js +1 -0
  117. data/app/javascript/js/controllers/action_controller.js +5 -3
  118. data/app/javascript/js/controllers/actions_overflow_controller.js +62 -0
  119. data/app/javascript/js/controllers/fields/reload_belongs_to_field_controller.js +7 -7
  120. data/app/javascript/js/controllers/filter_controller.js +1 -1
  121. data/app/javascript/js/controllers/input_autofocus_controller.js +12 -0
  122. data/app/javascript/js/controllers/preview_controller.js +24 -0
  123. data/app/javascript/js/controllers/search_controller.js +4 -2
  124. data/app/javascript/js/controllers/self_destroy_controller.js +7 -0
  125. data/app/javascript/js/controllers/toggle_controller.js +48 -0
  126. data/app/javascript/js/controllers.js +11 -5
  127. data/app/javascript/js/custom-stream-actions.js +15 -0
  128. data/app/views/avo/actions/show.html.erb +10 -6
  129. data/app/views/avo/associations/new.html.erb +2 -2
  130. data/app/views/avo/base/_new_via_belongs_to.html.erb +1 -1
  131. data/app/views/avo/base/close_modal_and_reload_field.turbo_stream.erb +3 -3
  132. data/app/views/avo/base/create_fail_action.turbo_stream.erb +2 -2
  133. data/app/views/avo/base/edit.html.erb +1 -1
  134. data/app/views/avo/base/index.html.erb +4 -3
  135. data/app/views/avo/base/new.html.erb +2 -1
  136. data/app/views/avo/base/preview.html.erb +19 -0
  137. data/app/views/avo/base/show.html.erb +2 -2
  138. data/app/views/avo/debug/_valid_indicator.html.erb +9 -0
  139. data/app/views/avo/debug/report.html.erb +32 -17
  140. data/app/views/avo/debug/{index.html.erb → status.html.erb} +31 -14
  141. data/app/views/avo/partials/_custom_tools_alert.html.erb +2 -2
  142. data/app/views/avo/partials/_footer.html.erb +1 -1
  143. data/app/views/avo/partials/_javascript.html.erb +5 -0
  144. data/app/views/avo/partials/_logo.html.erb +1 -1
  145. data/app/views/avo/partials/_navbar.html.erb +3 -5
  146. data/app/views/avo/partials/_resource_search.html.erb +1 -0
  147. data/app/views/avo/partials/_table_header.html.erb +5 -11
  148. data/app/views/layouts/avo/application.html.erb +5 -4
  149. data/avo.gemspec +10 -8
  150. data/bin/dev +3 -1
  151. data/bin/prod +0 -0
  152. data/config/master.key +1 -0
  153. data/config/routes.rb +7 -10
  154. data/db/factories.rb +6 -0
  155. data/lib/avo/asset_manager.rb +30 -0
  156. data/lib/avo/base_action.rb +82 -67
  157. data/lib/avo/base_resource.rb +286 -226
  158. data/lib/avo/base_resource_tool.rb +9 -16
  159. data/lib/avo/concerns/borrow_items_holder.rb +35 -0
  160. data/lib/avo/concerns/breadcrumbs.rb +2 -2
  161. data/lib/avo/concerns/{can_replace_fields.rb → can_replace_items.rb} +5 -9
  162. data/lib/avo/concerns/filters_session_handler.rb +7 -5
  163. data/lib/avo/concerns/has_controls.rb +37 -0
  164. data/lib/avo/concerns/has_description.rb +23 -0
  165. data/lib/avo/concerns/has_helpers.rb +18 -0
  166. data/lib/avo/concerns/has_item_type.rb +42 -0
  167. data/lib/avo/concerns/has_items.rb +339 -0
  168. data/lib/avo/concerns/{has_resource_stimulus_controllers.rb → has_stimulus_controllers.rb} +1 -1
  169. data/lib/avo/concerns/hydration.rb +17 -0
  170. data/lib/avo/concerns/is_resource_item.rb +16 -36
  171. data/lib/avo/concerns/is_visible.rb +15 -0
  172. data/lib/avo/concerns/model_class_constantized.rb +0 -2
  173. data/lib/avo/concerns/visible_in_different_views.rb +132 -0
  174. data/lib/avo/concerns/visible_items.rb +7 -38
  175. data/lib/avo/configuration/branding.rb +0 -12
  176. data/lib/avo/configuration.rb +28 -11
  177. data/lib/avo/current.rb +39 -0
  178. data/lib/avo/dsl/field_parser.rb +3 -3
  179. data/lib/avo/dynamic_router.rb +18 -3
  180. data/lib/avo/engine.rb +35 -30
  181. data/lib/avo/error_manager.rb +25 -0
  182. data/lib/avo/execution_context.rb +14 -15
  183. data/lib/avo/fields/base_field.rb +84 -122
  184. data/lib/avo/fields/belongs_to_field.rb +19 -23
  185. data/lib/avo/fields/concerns/file_authorization.rb +2 -2
  186. data/lib/avo/fields/concerns/handles_field_args.rb +49 -0
  187. data/lib/avo/fields/concerns/has_default.rb +1 -5
  188. data/lib/avo/fields/concerns/has_field_name.rb +22 -0
  189. data/lib/avo/fields/concerns/has_html_attributes.rb +112 -0
  190. data/lib/avo/fields/concerns/is_disabled.rb +1 -5
  191. data/lib/avo/fields/concerns/is_readonly.rb +1 -5
  192. data/lib/avo/fields/concerns/is_required.rb +5 -7
  193. data/lib/avo/fields/concerns/is_searchable.rb +15 -0
  194. data/lib/avo/fields/concerns/use_resource.rb +5 -1
  195. data/lib/avo/fields/concerns/use_view_components.rb +45 -0
  196. data/lib/avo/fields/country_field.rb +4 -0
  197. data/lib/avo/fields/date_time_field.rb +1 -5
  198. data/lib/avo/fields/external_image_field.rb +2 -2
  199. data/lib/avo/fields/field_manager.rb +55 -0
  200. data/lib/avo/fields/file_field.rb +2 -2
  201. data/lib/avo/fields/gravatar_field.rb +2 -2
  202. data/lib/avo/fields/has_and_belongs_to_many_field.rb +1 -2
  203. data/lib/avo/fields/has_base_field.rb +21 -17
  204. data/lib/avo/fields/has_many_field.rb +5 -2
  205. data/lib/avo/fields/has_one_field.rb +8 -12
  206. data/lib/avo/fields/heading_field.rb +9 -14
  207. data/lib/avo/fields/hidden_field.rb +1 -1
  208. data/lib/avo/fields/id_field.rb +3 -3
  209. data/lib/avo/fields/location_field.rb +10 -10
  210. data/lib/avo/fields/password_field.rb +1 -1
  211. data/lib/avo/fields/preview_field.rb +14 -0
  212. data/lib/avo/fields/select_field.rb +12 -8
  213. data/lib/avo/fields/status_field.rb +7 -1
  214. data/lib/avo/fields/text_field.rb +2 -2
  215. data/lib/avo/filters/base_filter.rb +9 -4
  216. data/lib/avo/html/builder.rb +8 -8
  217. data/lib/avo/item_grapher.rb +78 -0
  218. data/lib/avo/licensing/h_q.rb +11 -73
  219. data/lib/avo/licensing/license.rb +5 -1
  220. data/lib/avo/licensing/license_manager.rb +1 -1
  221. data/lib/avo/licensing/pro_license.rb +1 -7
  222. data/lib/avo/loaders/fields_loader.rb +7 -1
  223. data/lib/avo/plugin.rb +36 -0
  224. data/lib/avo/plugin_manager.rb +56 -0
  225. data/lib/avo/prefixed_test_helpers.rb +20 -0
  226. data/lib/avo/reloader.rb +3 -0
  227. data/lib/avo/resources/controls/actions_list.rb +7 -12
  228. data/lib/avo/resources/controls/attach_button.rb +15 -0
  229. data/lib/avo/resources/controls/back_button.rb +1 -1
  230. data/lib/avo/resources/controls/base_control.rb +15 -49
  231. data/lib/avo/resources/controls/create_button.rb +15 -0
  232. data/lib/avo/resources/controls/delete_button.rb +5 -1
  233. data/lib/avo/resources/controls/detach_button.rb +4 -1
  234. data/lib/avo/resources/controls/edit_button.rb +4 -1
  235. data/lib/avo/resources/controls/order_controls.rb +8 -0
  236. data/lib/avo/resources/controls/save_button.rb +13 -0
  237. data/lib/avo/resources/controls/show_button.rb +15 -0
  238. data/lib/avo/resources/items/holder.rb +96 -0
  239. data/lib/avo/resources/items/item_group.rb +44 -0
  240. data/lib/avo/resources/items/main_panel.rb +12 -0
  241. data/lib/avo/resources/items/panel.rb +2 -0
  242. data/lib/avo/resources/items/row.rb +42 -0
  243. data/lib/avo/resources/items/sidebar.rb +46 -0
  244. data/lib/avo/resources/items/tab.rb +54 -0
  245. data/lib/avo/resources/items/tab_group.rb +62 -0
  246. data/lib/avo/resources/resource_manager.rb +179 -0
  247. data/lib/avo/services/authorization_service.rb +11 -110
  248. data/lib/avo/services/debug_service.rb +93 -0
  249. data/lib/avo/services/encryption_service.rb +8 -12
  250. data/lib/avo/services/telemetry_service.rb +85 -0
  251. data/lib/avo/test_helpers.rb +362 -0
  252. data/lib/avo/tools/tool_manager.rb +30 -0
  253. data/lib/avo/version.rb +1 -1
  254. data/lib/avo/view_inquirer.rb +36 -0
  255. data/lib/avo.rb +109 -24
  256. data/lib/generators/avo/action_generator.rb +8 -8
  257. data/lib/generators/avo/card_generator.rb +27 -0
  258. data/lib/generators/avo/concerns/parent_controller.rb +20 -0
  259. data/lib/generators/avo/controller_generator.rb +3 -0
  260. data/lib/generators/avo/eject_generator.rb +180 -15
  261. data/lib/generators/avo/field_generator.rb +49 -2
  262. data/lib/generators/avo/filter_generator.rb +8 -8
  263. data/lib/generators/avo/js/install_generator.rb +2 -2
  264. data/lib/generators/avo/resource_generator.rb +12 -9
  265. data/lib/generators/avo/scope_generator.rb +15 -0
  266. data/lib/generators/avo/tailwindcss/install_generator.rb +70 -26
  267. data/lib/generators/avo/templates/action.tt +8 -6
  268. data/lib/generators/avo/templates/cards/chartkick_card.tt +1 -1
  269. data/lib/generators/avo/templates/cards/chartkick_card_sample.tt +1 -1
  270. data/lib/generators/avo/templates/cards/metric_card.tt +1 -1
  271. data/lib/generators/avo/templates/cards/metric_card_sample.tt +1 -1
  272. data/lib/generators/avo/templates/cards/partial_card.tt +1 -1
  273. data/lib/generators/avo/templates/cards/partial_card_sample.tt +1 -1
  274. data/lib/generators/avo/templates/dashboards/dashboard.tt +5 -3
  275. data/lib/generators/avo/templates/field/%singular_name%_field.rb.tt +1 -1
  276. data/lib/generators/avo/templates/filters/boolean_filter.tt +1 -1
  277. data/lib/generators/avo/templates/filters/multiple_select_filter.tt +1 -1
  278. data/lib/generators/avo/templates/filters/select_filter.tt +1 -1
  279. data/lib/generators/avo/templates/filters/text_filter.tt +1 -1
  280. data/lib/generators/avo/templates/initializer/avo.tt +7 -3
  281. data/lib/generators/avo/templates/locales/avo.ar.yml +1 -0
  282. data/lib/generators/avo/templates/locales/avo.en.yml +4 -3
  283. data/lib/generators/avo/templates/locales/avo.es.yml +1 -0
  284. data/lib/generators/avo/templates/locales/avo.fr.yml +1 -0
  285. data/lib/generators/avo/templates/locales/avo.nb.yml +1 -0
  286. data/lib/generators/avo/templates/locales/avo.nn.yml +1 -0
  287. data/lib/generators/avo/templates/locales/avo.pt-BR.yml +1 -0
  288. data/lib/generators/avo/templates/locales/avo.pt.yml +1 -0
  289. data/lib/generators/avo/templates/locales/avo.ro.yml +6 -5
  290. data/lib/generators/avo/templates/locales/avo.tr.yml +1 -0
  291. data/lib/generators/avo/templates/resource/controller.tt +1 -1
  292. data/lib/generators/avo/templates/resource/resource.tt +7 -7
  293. data/lib/generators/avo/templates/resource_tools/partial.tt +2 -2
  294. data/lib/generators/avo/templates/resource_tools/resource_tool.tt +1 -1
  295. data/lib/generators/avo/templates/scope.tt +6 -0
  296. data/lib/generators/avo/templates/tailwindcss/Procfile.dev +1 -1
  297. data/lib/generators/avo/templates/tailwindcss/avo.tailwind.css +5 -3
  298. data/lib/generators/avo/templates/tailwindcss/tailwind.config.js +11 -0
  299. data/lib/tasks/avo_tasks.rake +72 -4
  300. data/public/avo-assets/avo.base.css +1893 -1187
  301. data/public/avo-assets/avo.base.js +217 -305
  302. data/public/avo-assets/avo.base.js.map +3 -3
  303. data/public/avo-assets/avo.css +9744 -0
  304. data/public/avo-assets/avo.js +513 -0
  305. data/public/avo-assets/avo.js.map +7 -0
  306. data/tailwind.custom.js +47 -0
  307. data/tailwind.preset.js +152 -0
  308. metadata +106 -116
  309. data/app/components/avo/card_component.html.erb +0 -46
  310. data/app/components/avo/card_component.rb +0 -25
  311. data/app/components/avo/dashboards/divider_component.html.erb +0 -9
  312. data/app/components/avo/dashboards/divider_component.rb +0 -19
  313. data/app/components/avo/fields/belongs_to_field/autocomplete_component.html.erb +0 -47
  314. data/app/components/avo/fields/belongs_to_field/autocomplete_component.rb +0 -95
  315. data/app/components/avo/fields/tags_field/edit_component.html.erb +0 -35
  316. data/app/components/avo/fields/tags_field/edit_component.rb +0 -4
  317. data/app/components/avo/fields/tags_field/index_component.html.erb +0 -10
  318. data/app/components/avo/fields/tags_field/index_component.rb +0 -9
  319. data/app/components/avo/fields/tags_field/show_component.html.erb +0 -7
  320. data/app/components/avo/fields/tags_field/show_component.rb +0 -5
  321. data/app/components/avo/fields/tags_field/tag_component.html.erb +0 -9
  322. data/app/components/avo/fields/tags_field/tag_component.rb +0 -11
  323. data/app/components/avo/index/ordering/base_component.rb +0 -9
  324. data/app/components/avo/index/ordering/button_component.html.erb +0 -11
  325. data/app/components/avo/index/ordering/button_component.rb +0 -23
  326. data/app/components/avo/index/ordering/buttons_component.html.erb +0 -32
  327. data/app/components/avo/index/ordering/buttons_component.rb +0 -47
  328. data/app/components/avo/item_switcher_component.html.erb +0 -27
  329. data/app/components/avo/item_switcher_component.rb +0 -48
  330. data/app/components/avo/sidebar/item_switcher_component.html.erb +0 -16
  331. data/app/components/avo/sidebar/item_switcher_component.rb +0 -15
  332. data/app/controllers/avo/dashboards/cards_controller.rb +0 -37
  333. data/app/controllers/avo/dashboards_controller.rb +0 -22
  334. data/app/controllers/avo/reorder_controller.rb +0 -25
  335. data/app/javascript/js/controllers/base_controller.js +0 -22
  336. data/app/javascript/js/controllers/fields/tags_field_controller.js +0 -127
  337. data/app/javascript/js/controllers/toggle_panel_controller.js +0 -18
  338. data/app/views/avo/dashboards/cards/_chartkick_card.html.erb +0 -3
  339. data/app/views/avo/dashboards/cards/_metric_card.html.erb +0 -5
  340. data/app/views/avo/dashboards/cards/chartkick_missing.html.erb +0 -14
  341. data/app/views/avo/dashboards/cards/show.html.erb +0 -3
  342. data/app/views/avo/dashboards/show.html.erb +0 -38
  343. data/app/views/avo/partials/_global_search.html.erb +0 -19
  344. data/app/views/avo/sidebar/_license_warnings.html.erb +0 -6
  345. data/lib/avo/app.rb +0 -237
  346. data/lib/avo/base_card.rb +0 -161
  347. data/lib/avo/concerns/fetches_things.rb +0 -150
  348. data/lib/avo/concerns/handles_field_args.rb +0 -47
  349. data/lib/avo/concerns/has_action_stimulus_controllers.rb +0 -15
  350. data/lib/avo/concerns/has_editable_controls.rb +0 -34
  351. data/lib/avo/concerns/has_fields.rb +0 -334
  352. data/lib/avo/concerns/has_html_attributes.rb +0 -123
  353. data/lib/avo/concerns/policy_helpers.rb +0 -31
  354. data/lib/avo/concerns/visible_in_dashboard.rb +0 -31
  355. data/lib/avo/dashboards/base_dashboard.rb +0 -89
  356. data/lib/avo/dashboards/base_divider.rb +0 -35
  357. data/lib/avo/dashboards/chartkick_card.rb +0 -77
  358. data/lib/avo/dashboards/dashboard_card.rb +0 -6
  359. data/lib/avo/dashboards/metric_card.rb +0 -9
  360. data/lib/avo/dashboards/partial_card.rb +0 -7
  361. data/lib/avo/fields/field_extensions/has_field_name.rb +0 -19
  362. data/lib/avo/fields/field_extensions/visible_in_different_views.rb +0 -111
  363. data/lib/avo/fields/tags_field.rb +0 -102
  364. data/lib/avo/grid_collector.rb +0 -42
  365. data/lib/avo/hosts/association_scope_host.rb +0 -8
  366. data/lib/avo/hosts/base_host.rb +0 -25
  367. data/lib/avo/hosts/card_visibility.rb +0 -20
  368. data/lib/avo/hosts/dashboard_card.rb +0 -22
  369. data/lib/avo/hosts/dashboard_visibility.rb +0 -19
  370. data/lib/avo/hosts/ordering.rb +0 -22
  371. data/lib/avo/hosts/record_host.rb +0 -7
  372. data/lib/avo/hosts/resource_record_host.rb +0 -7
  373. data/lib/avo/hosts/resource_view_record_host.rb +0 -7
  374. data/lib/avo/hosts/search_scope_host.rb +0 -7
  375. data/lib/avo/hosts/view_record_host.rb +0 -7
  376. data/lib/avo/hosts/visibility_host.rb +0 -12
  377. data/lib/avo/items_holder.rb +0 -96
  378. data/lib/avo/main_panel.rb +0 -3
  379. data/lib/avo/menu/base_item.rb +0 -25
  380. data/lib/avo/menu/builder.rb +0 -82
  381. data/lib/avo/menu/dashboard.rb +0 -22
  382. data/lib/avo/menu/group.rb +0 -2
  383. data/lib/avo/menu/link.rb +0 -6
  384. data/lib/avo/menu/menu.rb +0 -2
  385. data/lib/avo/menu/resource.rb +0 -22
  386. data/lib/avo/menu/section.rb +0 -2
  387. data/lib/avo/panel.rb +0 -24
  388. data/lib/avo/panel_builder.rb +0 -25
  389. data/lib/avo/resources/controls/action.rb +0 -38
  390. data/lib/avo/resources/controls/execution_context.rb +0 -58
  391. data/lib/avo/resources/controls/items_holder.rb +0 -19
  392. data/lib/avo/resources/controls/link_to.rb +0 -27
  393. data/lib/avo/row.rb +0 -26
  394. data/lib/avo/row_builder.rb +0 -24
  395. data/lib/avo/services/authorization_clients/nil_client.rb +0 -37
  396. data/lib/avo/services/authorization_clients/pundit_client.rb +0 -51
  397. data/lib/avo/sidebar.rb +0 -30
  398. data/lib/avo/sidebar_builder.rb +0 -24
  399. data/lib/avo/tab.rb +0 -72
  400. data/lib/avo/tab_builder.rb +0 -25
  401. data/lib/avo/tab_group.rb +0 -42
  402. data/lib/avo/tab_group_builder.rb +0 -43
  403. data/lib/avo/tools_manager.rb +0 -11
  404. data/lib/generators/avo/card/chartkick_generator.rb +0 -18
  405. data/lib/generators/avo/card/metric_generator.rb +0 -18
  406. data/lib/generators/avo/card/partial_generator.rb +0 -19
  407. data/lib/generators/avo/templates/js/avo.custom.js +0 -2
  408. data/lib/generators/avo/templates/standalone_action.tt +0 -8
  409. /data/app/assets/stylesheets/css/{tags.css → fields/tags.css} +0 -0
@@ -1,4 +1,4 @@
1
- class <%= class_name.camelize %> < Avo::Filters::TextFilter
1
+ class Avo::Filters::<%= class_name.camelize %> < Avo::Filters::TextFilter
2
2
  self.name = "<%= name.underscore.humanize %>"
3
3
  self.button_label = 'Filter by <%= class_name.underscore.humanize.downcase.gsub(' filter', '') %>'
4
4
  # self.visible = -> do
@@ -1,15 +1,19 @@
1
1
  # For more information regarding these settings check out our docs https://docs.avohq.io
2
+ # The values disaplayed here are the default ones. Uncomment and change them to fit your needs.
2
3
  Avo.configure do |config|
3
4
  ## == Routing ==
4
5
  config.root_path = '/<%= options[:path] %>'
5
6
  # used only when you have custom `map` configuration in your config.ru
6
7
  # config.prefix_path = "/internal"
7
8
 
9
+ # Sometimes you migth want to mount Avo's engines yourself.
10
+ # https://docs.avohq.io/3.0/routing.html
11
+ # config.mount_avo_engines = true
12
+
8
13
  # Where should the user be redirected when visting the `/<%= options[:path] %>` url
9
14
  # config.home_path = nil
10
15
 
11
16
  ## == Licensing ==
12
- config.license = 'community' # change this to 'pro' when you add the license key
13
17
  # config.license_key = ENV['AVO_LICENSE_KEY']
14
18
 
15
19
  ## == Set the context ==
@@ -58,7 +62,7 @@ Avo.configure do |config|
58
62
  ## permanent enable or disable cache_resource_filters, default value is false
59
63
  # config.cache_resource_filters = false
60
64
  ## provide a lambda to enable or disable cache_resource_filters per user/resource.
61
- # config.cache_resource_filters = ->(current_user:, resource:) { current_user.cache_resource_filters?}
65
+ # config.cache_resource_filters = -> { current_user.cache_resource_filters? }
62
66
 
63
67
  ## == Customization ==
64
68
  # config.app_name = 'Avocadelicious'
@@ -71,9 +75,9 @@ Avo.configure do |config|
71
75
  # config.view_component_path = "app/components"
72
76
  # config.display_license_request_timeout_error = true
73
77
  # config.disabled_features = []
74
- # config.tabs_style = :tabs # can be :tabs or :pills
75
78
  # config.buttons_on_form_footers = true
76
79
  # config.field_wrapper_layout = true
80
+ # config.resource_parent_controller = "Avo::ResourcesController"
77
81
 
78
82
  ## == Branding ==
79
83
  # config.branding = {
@@ -23,6 +23,7 @@ ar:
23
23
  create_new_item: إنشاء %{item} جديد
24
24
  dashboard: لوحة القيادة
25
25
  dashboards: لوحات القيادة
26
+ default_scope: الجميع
26
27
  delete: حذف
27
28
  delete_file: حذف الملف
28
29
  delete_item: حذف %{item}
@@ -23,6 +23,7 @@ en:
23
23
  create_new_item: Create new %{item}
24
24
  dashboard: Dashboard
25
25
  dashboards: Dashboards
26
+ default_scope: All
26
27
  delete: delete
27
28
  delete_file: Delete file
28
29
  delete_item: Delete %{item}
@@ -43,9 +44,9 @@ en:
43
44
  other: files
44
45
  zero: files
45
46
  people:
46
- one: peep
47
- other: peeps
48
- zero: peeps
47
+ one: person
48
+ other: people
49
+ zero: people
49
50
  filter_by: Filter by
50
51
  filters: Filters
51
52
  go_back: Go back
@@ -23,6 +23,7 @@ es:
23
23
  create_new_item: Crear nuevo/a %{item}
24
24
  dashboard: Panel
25
25
  dashboards: Paneles
26
+ default_scope: Todos
26
27
  delete: eliminar
27
28
  delete_file: Eliminar fichero
28
29
  delete_item: Eliminar %{item}
@@ -23,6 +23,7 @@ fr:
23
23
  create_new_item: Créer un nouveau %{item}
24
24
  dashboard: Tableau de bord
25
25
  dashboards: Tableaux de bord
26
+ default_scope: Tout
26
27
  delete: supprimer
27
28
  delete_file: Supprimer le fichier
28
29
  delete_item: Supprimer %{item}
@@ -23,6 +23,7 @@ nb:
23
23
  create_new_item: Lag ny %{item}
24
24
  dashboard: Dashboard
25
25
  dashboards: Dashboards
26
+ default_scope: Alle
26
27
  delete: slett
27
28
  delete_file: Slett fil
28
29
  delete_item: Slett %{item}
@@ -23,6 +23,7 @@ nn:
23
23
  create_new_item: Lag ny %{item}
24
24
  dashboard: Dashboard
25
25
  dashboards: Dashboards
26
+ default_scope: Alle
26
27
  delete: slett
27
28
  delete_file: Slett fil
28
29
  delete_item: Slett %{item}
@@ -23,6 +23,7 @@ pt-BR:
23
23
  create_new_item: Criar novo %{item}
24
24
  dashboard: Painel
25
25
  dashboards: Painéis
26
+ default_scope: Todos
26
27
  delete: deletar
27
28
  delete_file: Deletar arquivo
28
29
  delete_item: Deletar %{item}
@@ -23,6 +23,7 @@ pt:
23
23
  create_new_item: Criar novo %{item}
24
24
  dashboard: Painel
25
25
  dashboards: Painéis
26
+ default_scope: Todos
26
27
  delete: apagar
27
28
  delete_file: Apagar arquivo
28
29
  delete_item: Apagar %{item}
@@ -23,6 +23,7 @@ ro:
23
23
  create_new_item: Creează %{item}
24
24
  dashboard: Panou de control
25
25
  dashboards: Panouri de control
26
+ default_scope: Tot
26
27
  delete: șterge
27
28
  delete_file: Șterge fișierul
28
29
  delete_item: Șterge %{item}
@@ -43,9 +44,9 @@ ro:
43
44
  other: fișiere
44
45
  zero: fișiere
45
46
  people:
46
- one: peep
47
- other: peeps
48
- zero: peeps
47
+ one: persoana
48
+ other: persoane
49
+ zero: persoane
49
50
  filter_by: Filtează după
50
51
  filters: Filtre
51
52
  go_back: Înapoi
@@ -62,7 +63,7 @@ ro:
62
63
  more: Mai multe
63
64
  new: nou
64
65
  next_page: Pagina următoare
65
- no_cards_present: Niciun card disponibil
66
+ no_cards_present: Nici un card găsit
66
67
  no_item_found: Nici un articol găsit
67
68
  no_options_available: Nicio opțiune disponibilă
68
69
  no_related_item_found: Nici un articol asociat găsit
@@ -90,7 +91,7 @@ ro:
90
91
  one: utilizator
91
92
  other: utilizatori
92
93
  zero: utilizatori
93
- resource_updated: Resursă actualizata
94
+ resource_updated: Resursă actualizată
94
95
  resources: Resurse
95
96
  run: Rulează
96
97
  save: Salvează
@@ -23,6 +23,7 @@ tr:
23
23
  create_new_item: Yeni bir %{item} oluşturun
24
24
  dashboard: Yönetim Paneli
25
25
  dashboards: Yönetim Panelleri
26
+ default_scope: Herşey
26
27
  delete: sil
27
28
  delete_file: Dosyayı sil
28
29
  delete_item: "%{item} öğresini sil"
@@ -1,4 +1,4 @@
1
1
  # This controller has been generated to enable Rails' resource routes.
2
2
  # More information on https://docs.avohq.io/2.0/controllers.html
3
- class <%= controller_class %> < Avo::ResourcesController
3
+ class <%= controller_class %> < <%= parent_controller %>
4
4
  end
@@ -1,10 +1,10 @@
1
- class <%= resource_class %> < Avo::BaseResource
2
- self.title = :id
1
+ class Avo::Resources::<%= resource_class %> < Avo::BaseResource
3
2
  self.includes = []<%= model_class_from_args %>
4
- # self.search_query = -> do
5
- # scope.ransack(id_eq: params[:q], m: "or").result(distinct: false)
6
- # end
3
+ # self.search = {
4
+ # query: -> { query.ransack(id_eq: params[:q], m: "or").result(distinct: false) }
5
+ # }
7
6
 
8
- field :id, as: :id<%= generate_fields %>
9
- # add fields here
7
+ def fields
8
+ field :id, as: :id<%= generate_fields %>
9
+ end
10
10
  end
@@ -23,9 +23,9 @@
23
23
  # In this partial you have access to the following variables:
24
24
  # tool
25
25
  # @resource
26
- # @resource.model
26
+ # @resource.record
27
27
  # params
28
- # Avo::App.context
28
+ # Avo::Current.context
29
29
  # current_user
30
30
  %>
31
31
  </div>
@@ -1,4 +1,4 @@
1
- class <%= class_name %> < Avo::BaseResourceTool
1
+ class Avo::ResourceTools::<%= class_name %> < Avo::BaseResourceTool
2
2
  self.name = "<%= human_name %>"
3
3
  # self.partial = "avo/resource_tools/<%= file_name %>"
4
4
  end
@@ -0,0 +1,6 @@
1
+ class Avo::Scopes::<%= class_name.camelize %> < Avo::Pro::Scopes::BaseScope
2
+ self.name = "<%= name.underscore.humanize %>"
3
+ self.description = "<%= name.underscore.humanize %>"
4
+ self.scope = -> { query.all }
5
+ self.visible = -> { true }
6
+ end
@@ -1,2 +1,2 @@
1
1
  web: bin/rails server -p 3000
2
- avo_css: yarn avo:tailwindcss --watch
2
+ avo_css: yarn avo:tailwind:css --watch
@@ -1,6 +1,8 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
1
+ @import 'tailwindcss/base';
2
+ /* Have all of Avo's custom and plugins styles available. */
3
+ @import '../../../../tmp/avo/base.css';
4
+ @import 'tailwindcss/components';
5
+ @import 'tailwindcss/utilities';
4
6
 
5
7
  /*
6
8
 
@@ -0,0 +1,11 @@
1
+ const avoPreset = require('../../tmp/avo/tailwind.preset.js')
2
+
3
+ module.exports = {
4
+ presets: [avoPreset],
5
+ content: [
6
+ ...avoPreset.content,
7
+ './app/views/**/*.html.erb',
8
+ './app/helpers/**/*.rb',
9
+ './app/javascript/**/*.js',
10
+ ]
11
+ }
@@ -1,7 +1,7 @@
1
- # desc 'Explaining what the task does'
2
- # task :avo do
3
- # # Task goes here
4
- # end
1
+ desc "Runs the update command for all Avo gems."
2
+ task "avo:update" do
3
+ system "bundle update avo avo-pro avo-advanced avo-dashboards avo_filters avo-menu avo_upgrade"
4
+ end
5
5
 
6
6
  desc "Installs Avo assets and bundles them for when you want to use the GitHub repo in your app"
7
7
  task "avo:build-assets" do
@@ -16,6 +16,7 @@ task "avo:build-assets" do
16
16
 
17
17
  Dir.chdir(path) do
18
18
  system "yarn"
19
+ system "bundle exec rails avo:sym_link"
19
20
  system "yarn prod:build"
20
21
  end
21
22
 
@@ -36,3 +37,70 @@ def get_gem_spec(name)
36
37
 
37
38
  spec
38
39
  end
40
+
41
+ desc "Finds all Avo gems and outputs theyr paths"
42
+ task "avo:gem_paths" do
43
+ config = YAML.load_file("../support/gems.yml")
44
+
45
+ existing_gems = config["gems"].keys
46
+ .map do |gem|
47
+ path = `bundle show #{gem} 2> /dev/null`.chomp
48
+
49
+ unless path.empty?
50
+ "#{gem}:#{path}"
51
+ end
52
+ end
53
+ .reject(&:nil?)
54
+ result = existing_gems.join(",")
55
+
56
+ # Outputs a CSV "hash-like" string in this format
57
+ #
58
+ # GEM_NAME:GEM_PATH,SECOND_GEM_NAME:SECOND_GEM_PATH
59
+ # avo:/Users/adrian/work/avocado/avo-3,avo_filters:/Users/adrian/work/avocado/advanced/avo_filters
60
+ puts result
61
+ end
62
+
63
+ desc "Symlinks all Avo gems to tmp/avo/packages"
64
+ task "avo:sym_link" do
65
+ base_path = Rails.root.join("tmp", "avo").to_s.gsub("/spec/dummy", "")
66
+ packages_path = "#{base_path}/packages"
67
+ if Dir.exist?(packages_path)
68
+ `rm -rf #{packages_path}/*`
69
+ else
70
+ `mkdir -p #{packages_path}`
71
+ `touch #{packages_path}/.keep`
72
+ end
73
+
74
+ ["avo-advanced", "avo-pro", "avo-dynamic_filters", "avo-dashboards", "avo-menu"].each do |gem|
75
+ path = `bundle show #{gem} 2> /dev/null`.chomp
76
+
77
+ # If path is emty we check if package is defined outside of root (on release process it is)
78
+ if path.empty?
79
+ next if !Dir.exist?("../#{gem}")
80
+
81
+ path = File.expand_path("../#{gem}")
82
+ end
83
+
84
+ puts "[Avo->] Linking #{gem} to #{path}"
85
+ `ln -s #{path} #{packages_path}/#{gem}`
86
+ end
87
+
88
+ base_css_path = Avo::Engine.root.join("app", "assets", "builds", "avo.base.css")
89
+ dest_css_path = "#{base_path}/base.css"
90
+ `rm #{dest_css_path}` if File.exist?("#{dest_css_path}")
91
+ puts "[Avo->] Linking avo.base.css to #{base_css_path}"
92
+ `ln -s #{base_css_path} #{dest_css_path}`
93
+
94
+ base_preset_path = Avo::Engine.root.join("tailwind.preset.js")
95
+ dest_preset_path = "#{base_path}/tailwind.preset.js"
96
+ `rm #{dest_preset_path}` if File.exist?("#{dest_preset_path}")
97
+ puts "[Avo->] Linking tailwind.preset.js to #{base_preset_path}"
98
+ `ln -s #{base_preset_path} #{dest_preset_path}`
99
+ end
100
+
101
+ desc "Installs yarn dependencies for Avo"
102
+ task "avo:yarn_install" do
103
+ # tailwind.preset.js needs this dependencies in order to be required
104
+ puts "[Avo->] Adding yarn dependencies"
105
+ `yarn add tailwindcss @tailwindcss/forms @tailwindcss/typography --cwd #{Avo::Engine.root}`
106
+ end