avo 2.49.0 → 3.0.0.beta1

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 (377) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +26 -25
  3. data/Gemfile.lock +179 -147
  4. data/README.md +1 -1
  5. data/app/assets/stylesheets/avo.base.css +0 -1
  6. data/app/assets/svgs/font.svg +1 -0
  7. data/app/assets/svgs/triangle-up.svg +1 -0
  8. data/app/components/avo/actions_component.html.erb +19 -5
  9. data/app/components/avo/actions_component.rb +37 -17
  10. data/app/components/avo/asset_manager/javascript_component.html.erb +3 -0
  11. data/app/components/avo/asset_manager/javascript_component.rb +13 -0
  12. data/app/components/avo/asset_manager/stylesheet_component.html.erb +3 -0
  13. data/app/components/avo/asset_manager/stylesheet_component.rb +13 -0
  14. data/app/components/avo/base_component.rb +15 -12
  15. data/app/components/avo/button_component.rb +20 -3
  16. data/app/components/avo/empty_state_component.rb +1 -1
  17. data/app/components/avo/field_wrapper_component.html.erb +1 -1
  18. data/app/components/avo/field_wrapper_component.rb +15 -26
  19. data/app/components/avo/fields/area_field/edit_component.html.erb +2 -2
  20. data/app/components/avo/fields/belongs_to_field/edit_component.html.erb +96 -118
  21. data/app/components/avo/fields/belongs_to_field/edit_component.rb +6 -17
  22. data/app/components/avo/fields/belongs_to_field/index_component.html.erb +1 -1
  23. data/app/components/avo/fields/belongs_to_field/show_component.rb +2 -2
  24. data/app/components/avo/fields/boolean_field/edit_component.html.erb +1 -1
  25. data/app/components/avo/fields/boolean_group_field/edit_component.html.erb +3 -3
  26. data/app/components/avo/fields/common/badge_viewer_component.html.erb +24 -1
  27. data/app/components/avo/fields/common/badge_viewer_component.rb +0 -24
  28. data/app/components/avo/fields/common/boolean_group_component.html.erb +2 -2
  29. data/app/components/avo/fields/common/files/list_viewer_component.rb +3 -3
  30. data/app/components/avo/fields/common/files/view_type/{grid_item_component.html.erb → grid_component.html.erb} +2 -2
  31. data/app/components/avo/fields/common/files/view_type/{grid_item_component.rb → grid_component.rb} +4 -5
  32. data/app/components/avo/fields/common/files/view_type/{list_item_component.rb → list_component.rb} +1 -1
  33. data/app/components/avo/fields/edit_component.rb +1 -1
  34. data/app/components/avo/fields/file_field/edit_component.html.erb +1 -1
  35. data/app/components/avo/fields/file_field/show_component.html.erb +1 -1
  36. data/app/components/avo/fields/has_one_field/index_component.html.erb +1 -1
  37. data/app/components/avo/fields/has_one_field/show_component.html.erb +3 -2
  38. data/app/components/avo/fields/has_one_field/show_component.rb +2 -2
  39. data/app/components/avo/fields/hidden_field/edit_component.html.erb +1 -2
  40. data/app/components/avo/fields/index_component.rb +5 -5
  41. data/app/components/avo/fields/preview_field/index_component.html.erb +10 -0
  42. data/app/components/avo/fields/preview_field/index_component.rb +4 -0
  43. data/app/components/avo/fields/select_field/edit_component.html.erb +1 -1
  44. data/app/components/avo/fields/show_component.rb +4 -1
  45. data/app/components/avo/fields/trix_field/edit_component.rb +1 -1
  46. data/app/components/avo/filters_component.html.erb +9 -3
  47. data/app/components/avo/filters_component.rb +4 -4
  48. data/app/components/avo/index/field_wrapper_component.rb +0 -12
  49. data/app/components/avo/index/grid_item_component.html.erb +13 -36
  50. data/app/components/avo/index/grid_item_component.rb +43 -16
  51. data/app/components/avo/index/resource_controls_component.html.erb +3 -81
  52. data/app/components/avo/index/resource_controls_component.rb +124 -17
  53. data/app/components/avo/index/resource_grid_component.html.erb +5 -3
  54. data/app/components/avo/index/resource_grid_component.rb +5 -2
  55. data/app/components/avo/index/resource_map_component.html.erb +1 -1
  56. data/app/components/avo/index/resource_map_component.rb +3 -3
  57. data/app/components/avo/index/resource_table_component.html.erb +5 -4
  58. data/app/components/avo/index/resource_table_component.rb +14 -20
  59. data/app/components/avo/index/table_row_component.html.erb +8 -4
  60. data/app/components/avo/index/table_row_component.rb +3 -2
  61. data/app/components/avo/item_switcher_component.rb +2 -2
  62. data/app/components/avo/modal_component.html.erb +7 -12
  63. data/app/components/avo/modal_component.rb +0 -21
  64. data/app/components/avo/paginator_component.html.erb +40 -29
  65. data/app/components/avo/paginator_component.rb +5 -23
  66. data/app/components/avo/panel_component.html.erb +8 -6
  67. data/app/components/avo/referrer_params_component.html.erb +1 -2
  68. data/app/components/avo/resource_component.rb +189 -14
  69. data/app/components/avo/resource_sidebar_component.html.erb +6 -2
  70. data/app/components/avo/resource_sidebar_component.rb +1 -1
  71. data/app/components/avo/sidebar/link_component.rb +1 -1
  72. data/app/components/avo/sidebar_component.html.erb +10 -3
  73. data/app/components/avo/sidebar_component.rb +5 -3
  74. data/app/components/avo/sidebar_profile_component.html.erb +15 -8
  75. data/app/components/avo/tab_group_component.html.erb +13 -7
  76. data/app/components/avo/tab_group_component.rb +1 -6
  77. data/app/components/avo/tab_switcher_component.html.erb +17 -40
  78. data/app/components/avo/tab_switcher_component.rb +4 -39
  79. data/app/components/avo/views/resource_edit_component.html.erb +12 -48
  80. data/app/components/avo/views/resource_edit_component.rb +7 -18
  81. data/app/components/avo/views/resource_index_component.html.erb +41 -47
  82. data/app/components/avo/views/resource_index_component.rb +62 -12
  83. data/app/components/avo/views/resource_show_component.html.erb +6 -149
  84. data/app/components/avo/views/resource_show_component.rb +6 -11
  85. data/app/controllers/avo/actions_controller.rb +27 -24
  86. data/app/controllers/avo/application_controller.rb +105 -151
  87. data/app/controllers/avo/associations_controller.rb +34 -43
  88. data/app/controllers/avo/attachments_controller.rb +4 -4
  89. data/app/controllers/avo/base_controller.rb +102 -102
  90. data/app/controllers/avo/debug_controller.rb +17 -5
  91. data/app/controllers/avo/home_controller.rb +1 -1
  92. data/app/controllers/avo/search_controller.rb +30 -51
  93. data/app/controllers/avo/team_users_controller.rb +4 -0
  94. data/app/controllers/concerns/avo/initializes_avo.rb +21 -0
  95. data/app/helpers/avo/application_helper.rb +15 -9
  96. data/app/helpers/avo/resources_helper.rb +1 -1
  97. data/app/helpers/avo/url_helpers.rb +27 -11
  98. data/app/javascript/avo.base.js +1 -0
  99. data/app/javascript/js/application.js +0 -3
  100. data/app/javascript/js/controllers/action_controller.js +5 -3
  101. data/app/javascript/js/controllers/actions_overflow_controller.js +62 -0
  102. data/app/javascript/js/controllers/fields/date_field_controller.js +3 -7
  103. data/app/javascript/js/controllers/fields/key_value_controller.js +1 -2
  104. data/app/javascript/js/controllers/filter_controller.js +1 -1
  105. data/app/javascript/js/controllers/input_autofocus_controller.js +12 -0
  106. data/app/javascript/js/controllers/preview_controller.js +24 -0
  107. data/app/javascript/js/controllers/search_controller.js +2 -2
  108. data/app/javascript/js/controllers/self_destroy_controller.js +7 -0
  109. data/app/javascript/js/controllers/toggle_controller.js +48 -0
  110. data/app/javascript/js/controllers.js +10 -6
  111. data/app/javascript/js/custom-stream-actions.js +15 -0
  112. data/app/views/avo/actions/keep_modal_open.turbo_stream.erb +5 -0
  113. data/app/views/avo/actions/show.html.erb +10 -7
  114. data/app/views/avo/associations/new.html.erb +2 -2
  115. data/app/views/avo/base/index.html.erb +3 -2
  116. data/app/views/avo/base/new.html.erb +2 -1
  117. data/app/views/avo/base/preview.html.erb +19 -0
  118. data/app/views/avo/base/show.html.erb +1 -1
  119. data/app/views/avo/debug/_valid_indicator.html.erb +9 -0
  120. data/app/views/avo/debug/report.html.erb +32 -17
  121. data/app/views/avo/debug/{index.html.erb → status.html.erb} +31 -14
  122. data/app/views/avo/partials/_custom_tools_alert.html.erb +2 -2
  123. data/app/views/avo/partials/_footer.html.erb +1 -1
  124. data/app/views/avo/partials/_javascript.html.erb +5 -0
  125. data/app/views/avo/partials/_logo.html.erb +1 -1
  126. data/app/views/avo/partials/_navbar.html.erb +3 -5
  127. data/app/views/avo/partials/_table_header.html.erb +5 -11
  128. data/app/views/layouts/avo/application.html.erb +4 -2
  129. data/avo.gemspec +11 -12
  130. data/bin/dev +1 -1
  131. data/bin/prod +0 -0
  132. data/config/i18n-tasks.yml +1 -1
  133. data/config/initializers/pagy.rb +0 -2
  134. data/config/master.key +1 -0
  135. data/config/routes.rb +6 -10
  136. data/db/factories.rb +7 -1
  137. data/lib/avo/action_model.rb +20 -0
  138. data/lib/avo/asset_manager.rb +30 -0
  139. data/lib/avo/base_action.rb +57 -42
  140. data/lib/avo/base_resource.rb +264 -227
  141. data/lib/avo/base_resource_tool.rb +9 -16
  142. data/lib/avo/concerns/breadcrumbs.rb +2 -2
  143. data/lib/avo/concerns/{can_replace_fields.rb → can_replace_items.rb} +5 -9
  144. data/lib/avo/concerns/filters_session_handler.rb +5 -3
  145. data/lib/avo/concerns/has_controls.rb +37 -0
  146. data/lib/avo/concerns/has_description.rb +23 -0
  147. data/lib/avo/concerns/has_item_type.rb +42 -0
  148. data/lib/avo/concerns/has_items.rb +325 -0
  149. data/lib/avo/concerns/{has_resource_stimulus_controllers.rb → has_stimulus_controllers.rb} +1 -1
  150. data/lib/avo/concerns/is_resource_item.rb +24 -36
  151. data/lib/avo/concerns/is_visible.rb +15 -0
  152. data/lib/avo/concerns/model_class_constantized.rb +0 -2
  153. data/lib/avo/concerns/visible_in_different_views.rb +126 -0
  154. data/lib/avo/configuration/branding.rb +0 -12
  155. data/lib/avo/configuration.rb +1 -37
  156. data/lib/avo/current.rb +39 -0
  157. data/lib/avo/dsl/field_parser.rb +1 -1
  158. data/lib/avo/dynamic_router.rb +18 -3
  159. data/lib/avo/engine.rb +35 -30
  160. data/lib/avo/error_manager.rb +25 -0
  161. data/lib/avo/execution_context.rb +10 -14
  162. data/lib/avo/fields/badge_field.rb +1 -1
  163. data/lib/avo/fields/base_field.rb +91 -106
  164. data/lib/avo/fields/belongs_to_field.rb +18 -22
  165. data/lib/avo/fields/concerns/file_authorization.rb +2 -2
  166. data/lib/avo/fields/concerns/handles_field_args.rb +49 -0
  167. data/lib/avo/fields/concerns/has_default.rb +1 -5
  168. data/lib/avo/fields/concerns/has_field_name.rb +22 -0
  169. data/lib/avo/fields/concerns/has_html_attributes.rb +110 -0
  170. data/lib/avo/fields/concerns/is_disabled.rb +1 -5
  171. data/lib/avo/fields/concerns/is_readonly.rb +1 -5
  172. data/lib/avo/fields/concerns/is_required.rb +5 -7
  173. data/lib/avo/fields/concerns/is_searchable.rb +13 -0
  174. data/lib/avo/fields/concerns/use_resource.rb +5 -1
  175. data/lib/avo/fields/country_field.rb +4 -0
  176. data/lib/avo/fields/date_time_field.rb +3 -14
  177. data/lib/avo/fields/field_manager.rb +55 -0
  178. data/lib/avo/fields/has_and_belongs_to_many_field.rb +1 -2
  179. data/lib/avo/fields/has_base_field.rb +12 -15
  180. data/lib/avo/fields/has_many_field.rb +5 -2
  181. data/lib/avo/fields/has_one_field.rb +6 -10
  182. data/lib/avo/fields/heading_field.rb +4 -1
  183. data/lib/avo/fields/hidden_field.rb +1 -1
  184. data/lib/avo/fields/id_field.rb +1 -1
  185. data/lib/avo/fields/location_field.rb +8 -8
  186. data/lib/avo/fields/password_field.rb +1 -1
  187. data/lib/avo/fields/preview_field.rb +14 -0
  188. data/lib/avo/fields/select_field.rb +12 -8
  189. data/lib/avo/fields/status_field.rb +4 -0
  190. data/lib/avo/filters/base_filter.rb +8 -4
  191. data/lib/avo/html/builder.rb +7 -8
  192. data/lib/avo/item_grapher.rb +78 -0
  193. data/lib/avo/licensing/h_q.rb +8 -67
  194. data/lib/avo/licensing/license.rb +1 -1
  195. data/lib/avo/licensing/pro_license.rb +1 -7
  196. data/lib/avo/loaders/fields_loader.rb +7 -1
  197. data/lib/avo/plugin.rb +16 -0
  198. data/lib/avo/plugin_manager.rb +56 -0
  199. data/lib/avo/prefixed_test_helpers.rb +20 -0
  200. data/lib/avo/reloader.rb +3 -0
  201. data/lib/avo/resources/controls/actions_list.rb +7 -12
  202. data/lib/avo/resources/controls/attach_button.rb +15 -0
  203. data/lib/avo/resources/controls/back_button.rb +1 -1
  204. data/lib/avo/resources/controls/base_control.rb +15 -49
  205. data/lib/avo/resources/controls/create_button.rb +15 -0
  206. data/lib/avo/resources/controls/delete_button.rb +5 -1
  207. data/lib/avo/resources/controls/detach_button.rb +4 -1
  208. data/lib/avo/resources/controls/edit_button.rb +4 -1
  209. data/lib/avo/resources/controls/order_controls.rb +8 -0
  210. data/lib/avo/resources/controls/save_button.rb +13 -0
  211. data/lib/avo/resources/controls/show_button.rb +15 -0
  212. data/lib/avo/resources/items/holder.rb +84 -0
  213. data/lib/avo/resources/items/item_group.rb +49 -0
  214. data/lib/avo/resources/items/main_panel.rb +2 -0
  215. data/lib/avo/resources/items/panel.rb +2 -0
  216. data/lib/avo/resources/items/row.rb +54 -0
  217. data/lib/avo/resources/items/sidebar.rb +47 -0
  218. data/lib/avo/resources/items/tab.rb +60 -0
  219. data/lib/avo/resources/items/tab_group.rb +68 -0
  220. data/lib/avo/resources/resource_manager.rb +174 -0
  221. data/lib/avo/services/authorization_service.rb +11 -110
  222. data/lib/avo/services/debug_service.rb +93 -0
  223. data/lib/avo/services/encryption_service.rb +5 -1
  224. data/lib/avo/services/telemetry_service.rb +85 -0
  225. data/lib/avo/test_helpers.rb +362 -0
  226. data/lib/avo/tools/tool_manager.rb +30 -0
  227. data/lib/avo/version.rb +1 -1
  228. data/lib/avo.rb +115 -24
  229. data/lib/generators/avo/action_generator.rb +8 -8
  230. data/lib/generators/avo/card_generator.rb +27 -0
  231. data/lib/generators/avo/filter_generator.rb +8 -8
  232. data/lib/generators/avo/resource_generator.rb +4 -4
  233. data/lib/generators/avo/scope_generator.rb +15 -0
  234. data/lib/generators/avo/tailwindcss/install_generator.rb +1 -15
  235. data/lib/generators/avo/templates/action.tt +8 -6
  236. data/lib/generators/avo/templates/cards/chartkick_card.tt +1 -1
  237. data/lib/generators/avo/templates/cards/chartkick_card_sample.tt +1 -1
  238. data/lib/generators/avo/templates/cards/metric_card.tt +1 -1
  239. data/lib/generators/avo/templates/cards/metric_card_sample.tt +1 -1
  240. data/lib/generators/avo/templates/cards/partial_card.tt +1 -1
  241. data/lib/generators/avo/templates/cards/partial_card_sample.tt +1 -1
  242. data/lib/generators/avo/templates/dashboards/dashboard.tt +5 -3
  243. data/lib/generators/avo/templates/field/%singular_name%_field.rb.tt +1 -1
  244. data/lib/generators/avo/templates/filters/boolean_filter.tt +1 -1
  245. data/lib/generators/avo/templates/filters/multiple_select_filter.tt +1 -1
  246. data/lib/generators/avo/templates/filters/select_filter.tt +1 -1
  247. data/lib/generators/avo/templates/filters/text_filter.tt +1 -1
  248. data/lib/generators/avo/templates/initializer/avo.tt +1 -9
  249. data/lib/generators/avo/templates/locales/avo.ar.yml +6 -6
  250. data/lib/generators/avo/templates/locales/avo.en.yml +4 -5
  251. data/lib/generators/avo/templates/locales/avo.fr.yml +1 -2
  252. data/lib/generators/avo/templates/locales/avo.nb.yml +1 -2
  253. data/lib/generators/avo/templates/locales/avo.nn.yml +1 -2
  254. data/lib/generators/avo/templates/locales/avo.pt-BR.yml +1 -2
  255. data/lib/generators/avo/templates/locales/avo.pt.yml +1 -2
  256. data/lib/generators/avo/templates/locales/avo.ro.yml +6 -7
  257. data/lib/generators/avo/templates/locales/avo.tr.yml +1 -2
  258. data/lib/generators/avo/templates/resource/resource.tt +7 -7
  259. data/lib/generators/avo/templates/resource_tools/partial.tt +4 -4
  260. data/lib/generators/avo/templates/resource_tools/resource_tool.tt +1 -1
  261. data/lib/generators/avo/templates/scope.tt +6 -0
  262. data/lib/generators/avo/templates/tool/view.tt +2 -2
  263. data/lib/tasks/avo_tasks.rake +27 -0
  264. data/public/avo-assets/avo.base.css +1810 -1189
  265. data/public/avo-assets/avo.base.js +217 -307
  266. data/public/avo-assets/avo.base.js.map +3 -3
  267. data/public/avo-assets/avo.css +9744 -0
  268. data/public/avo-assets/avo.js +513 -0
  269. data/public/avo-assets/avo.js.map +7 -0
  270. metadata +102 -146
  271. data/app/assets/stylesheets/css/tags.css +0 -32
  272. data/app/components/avo/card_component.html.erb +0 -46
  273. data/app/components/avo/card_component.rb +0 -25
  274. data/app/components/avo/dashboards/divider_component.html.erb +0 -9
  275. data/app/components/avo/dashboards/divider_component.rb +0 -19
  276. data/app/components/avo/fields/belongs_to_field/autocomplete_component.html.erb +0 -47
  277. data/app/components/avo/fields/belongs_to_field/autocomplete_component.rb +0 -95
  278. data/app/components/avo/fields/tags_field/edit_component.html.erb +0 -35
  279. data/app/components/avo/fields/tags_field/edit_component.rb +0 -4
  280. data/app/components/avo/fields/tags_field/index_component.html.erb +0 -10
  281. data/app/components/avo/fields/tags_field/index_component.rb +0 -9
  282. data/app/components/avo/fields/tags_field/show_component.html.erb +0 -7
  283. data/app/components/avo/fields/tags_field/show_component.rb +0 -5
  284. data/app/components/avo/fields/tags_field/tag_component.html.erb +0 -9
  285. data/app/components/avo/fields/tags_field/tag_component.rb +0 -11
  286. data/app/components/avo/index/ordering/base_component.rb +0 -9
  287. data/app/components/avo/index/ordering/button_component.html.erb +0 -11
  288. data/app/components/avo/index/ordering/button_component.rb +0 -23
  289. data/app/components/avo/index/ordering/buttons_component.html.erb +0 -32
  290. data/app/components/avo/index/ordering/buttons_component.rb +0 -47
  291. data/app/components/avo/sidebar/item_switcher_component.html.erb +0 -16
  292. data/app/components/avo/sidebar/item_switcher_component.rb +0 -15
  293. data/app/controllers/avo/dashboards/cards_controller.rb +0 -37
  294. data/app/controllers/avo/dashboards_controller.rb +0 -22
  295. data/app/controllers/avo/reorder_controller.rb +0 -25
  296. data/app/javascript/js/controllers/base_controller.js +0 -22
  297. data/app/javascript/js/controllers/fields/reload_belongs_to_field_controller.js +0 -51
  298. data/app/javascript/js/controllers/fields/tags_field_controller.js +0 -127
  299. data/app/javascript/js/controllers/toggle_panel_controller.js +0 -18
  300. data/app/views/avo/base/_new_via_belongs_to.html.erb +0 -12
  301. data/app/views/avo/base/close_modal_and_reload_field.turbo_stream.erb +0 -8
  302. data/app/views/avo/base/create_fail_action.turbo_stream.erb +0 -13
  303. data/app/views/avo/dashboards/cards/_chartkick_card.html.erb +0 -3
  304. data/app/views/avo/dashboards/cards/_metric_card.html.erb +0 -5
  305. data/app/views/avo/dashboards/cards/chartkick_missing.html.erb +0 -14
  306. data/app/views/avo/dashboards/cards/show.html.erb +0 -3
  307. data/app/views/avo/dashboards/show.html.erb +0 -38
  308. data/app/views/avo/partials/_flash_alerts.turbo_stream.erb +0 -3
  309. data/app/views/avo/partials/_global_search.html.erb +0 -19
  310. data/app/views/avo/sidebar/_license_warnings.html.erb +0 -6
  311. data/lib/avo/app.rb +0 -237
  312. data/lib/avo/base_card.rb +0 -161
  313. data/lib/avo/concerns/fetches_things.rb +0 -150
  314. data/lib/avo/concerns/handles_field_args.rb +0 -47
  315. data/lib/avo/concerns/has_action_stimulus_controllers.rb +0 -15
  316. data/lib/avo/concerns/has_editable_controls.rb +0 -34
  317. data/lib/avo/concerns/has_fields.rb +0 -334
  318. data/lib/avo/concerns/has_html_attributes.rb +0 -123
  319. data/lib/avo/concerns/pagination.rb +0 -53
  320. data/lib/avo/concerns/policy_helpers.rb +0 -31
  321. data/lib/avo/concerns/visible_in_dashboard.rb +0 -31
  322. data/lib/avo/concerns/visible_items.rb +0 -51
  323. data/lib/avo/dashboards/base_dashboard.rb +0 -89
  324. data/lib/avo/dashboards/base_divider.rb +0 -35
  325. data/lib/avo/dashboards/chartkick_card.rb +0 -77
  326. data/lib/avo/dashboards/dashboard_card.rb +0 -6
  327. data/lib/avo/dashboards/metric_card.rb +0 -9
  328. data/lib/avo/dashboards/partial_card.rb +0 -7
  329. data/lib/avo/fields/field_extensions/has_field_name.rb +0 -19
  330. data/lib/avo/fields/field_extensions/visible_in_different_views.rb +0 -111
  331. data/lib/avo/fields/tags_field.rb +0 -102
  332. data/lib/avo/grid_collector.rb +0 -42
  333. data/lib/avo/hosts/association_scope_host.rb +0 -8
  334. data/lib/avo/hosts/base_host.rb +0 -25
  335. data/lib/avo/hosts/card_visibility.rb +0 -20
  336. data/lib/avo/hosts/dashboard_card.rb +0 -22
  337. data/lib/avo/hosts/dashboard_visibility.rb +0 -19
  338. data/lib/avo/hosts/ordering.rb +0 -22
  339. data/lib/avo/hosts/record_host.rb +0 -7
  340. data/lib/avo/hosts/resource_record_host.rb +0 -7
  341. data/lib/avo/hosts/resource_view_record_host.rb +0 -7
  342. data/lib/avo/hosts/search_scope_host.rb +0 -7
  343. data/lib/avo/hosts/view_record_host.rb +0 -7
  344. data/lib/avo/hosts/visibility_host.rb +0 -12
  345. data/lib/avo/items_holder.rb +0 -96
  346. data/lib/avo/main_panel.rb +0 -3
  347. data/lib/avo/menu/base_item.rb +0 -25
  348. data/lib/avo/menu/builder.rb +0 -82
  349. data/lib/avo/menu/dashboard.rb +0 -22
  350. data/lib/avo/menu/group.rb +0 -2
  351. data/lib/avo/menu/link.rb +0 -6
  352. data/lib/avo/menu/menu.rb +0 -2
  353. data/lib/avo/menu/resource.rb +0 -22
  354. data/lib/avo/menu/section.rb +0 -2
  355. data/lib/avo/panel.rb +0 -24
  356. data/lib/avo/panel_builder.rb +0 -25
  357. data/lib/avo/resources/controls/action.rb +0 -38
  358. data/lib/avo/resources/controls/execution_context.rb +0 -58
  359. data/lib/avo/resources/controls/items_holder.rb +0 -19
  360. data/lib/avo/resources/controls/link_to.rb +0 -27
  361. data/lib/avo/row.rb +0 -26
  362. data/lib/avo/row_builder.rb +0 -24
  363. data/lib/avo/services/authorization_clients/nil_client.rb +0 -37
  364. data/lib/avo/services/authorization_clients/pundit_client.rb +0 -51
  365. data/lib/avo/sidebar.rb +0 -30
  366. data/lib/avo/sidebar_builder.rb +0 -24
  367. data/lib/avo/tab.rb +0 -72
  368. data/lib/avo/tab_builder.rb +0 -25
  369. data/lib/avo/tab_group.rb +0 -42
  370. data/lib/avo/tab_group_builder.rb +0 -43
  371. data/lib/avo/tools_manager.rb +0 -11
  372. data/lib/generators/avo/card/chartkick_generator.rb +0 -18
  373. data/lib/generators/avo/card/metric_generator.rb +0 -18
  374. data/lib/generators/avo/card/partial_generator.rb +0 -19
  375. data/lib/generators/avo/templates/locales/avo.es.yml +0 -126
  376. data/lib/generators/avo/templates/standalone_action.tt +0 -8
  377. /data/app/components/avo/fields/common/files/view_type/{list_item_component.html.erb → list_component.html.erb} +0 -0
@@ -1,24 +0,0 @@
1
- class Avo::RowBuilder
2
- class << self
3
- def parse_block(**args, &block)
4
- Docile.dsl_eval(new(**args), &block).build
5
- end
6
- end
7
-
8
- attr_reader :items_holder
9
-
10
- delegate :field, to: :items_holder
11
- delegate :tool, to: :items_holder
12
- delegate :items, to: :items_holder
13
-
14
- def initialize(**args)
15
- @row = Avo::Row.new(**args)
16
- @items_holder = Avo::ItemsHolder.new
17
- end
18
-
19
- # Fetch the tab
20
- def build
21
- @row.items_holder = @items_holder
22
- @row
23
- end
24
- end
@@ -1,37 +0,0 @@
1
- module Avo
2
- module Services
3
- module AuthorizationClients
4
- class NilClient
5
- def authorize(user, record, action, policy_class: nil)
6
- true
7
- end
8
-
9
- def policy(user, record)
10
- NilPolicy.new
11
- end
12
-
13
- def policy!(user, record)
14
- NilPolicy.new
15
- end
16
-
17
- def apply_policy(user, model, policy_class: nil)
18
- model
19
- end
20
-
21
- class NilPolicy
22
- def initialize(user = nil, record = nil)
23
- end
24
- # rubocop:enable Style/RedundantInitialize
25
-
26
- def method_missing(method, *args, &block)
27
- self
28
- end
29
-
30
- def respond_to_missing?
31
- true
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,51 +0,0 @@
1
- module Avo
2
- module Services
3
- module AuthorizationClients
4
- class PunditClient
5
- def authorize(user, record, action, policy_class: nil)
6
- Pundit.authorize(user, record, action, policy_class: policy_class)
7
- rescue Pundit::NotDefinedError => error
8
- raise NoPolicyError.new error.message
9
- rescue Pundit::NotAuthorizedError => error
10
- raise NotAuthorizedError.new error.message
11
- end
12
-
13
- def policy(user, record)
14
- Pundit.policy(user, record)
15
- end
16
-
17
- def policy!(user, record)
18
- Pundit.policy!(user, record)
19
- rescue Pundit::NotDefinedError => error
20
- raise NoPolicyError.new error.message
21
- end
22
-
23
- def apply_policy(user, model, policy_class: nil)
24
- # Try and figure out the scope from a given policy or auto-detected one
25
- scope_from_policy_class = scope_for_policy_class(policy_class)
26
-
27
- # If we discover one use it.
28
- # Else fallback to pundit.
29
- if scope_from_policy_class.present?
30
- scope_from_policy_class.new(user, model).resolve
31
- else
32
- Pundit.policy_scope!(user, model)
33
- end
34
- rescue Pundit::NotDefinedError => error
35
- raise NoPolicyError.new error.message
36
- end
37
-
38
- private
39
-
40
- # Fetches the scope for a given policy
41
- def scope_for_policy_class(policy_class = nil)
42
- return if policy_class.blank?
43
-
44
- if policy_class.present? && defined?(policy_class::Scope)
45
- policy_class::Scope
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
data/lib/avo/sidebar.rb DELETED
@@ -1,30 +0,0 @@
1
- class Avo::Sidebar
2
- include Avo::Concerns::IsResourceItem
3
- include Avo::Concerns::VisibleItems
4
- include Avo::Fields::FieldExtensions::VisibleInDifferentViews
5
-
6
- class_attribute :item_type, default: :sidebar
7
- delegate :items, :add_item, to: :items_holder
8
-
9
- attr_reader :name
10
- attr_reader :view
11
- attr_accessor :items_holder
12
-
13
- def initialize(name: nil, view: nil, **args)
14
- # Initialize the visibility markers
15
- super
16
-
17
- @name = name
18
- @items_holder = Avo::ItemsHolder.new
19
- @view = view
20
-
21
- show_on args[:show_on] if args[:show_on].present?
22
- hide_on args[:hide_on] if args[:hide_on].present?
23
- only_on args[:only_on] if args[:only_on].present?
24
- except_on args[:except_on] if args[:except_on].present?
25
- end
26
-
27
- def empty?
28
- visible_items.blank?
29
- end
30
- end
@@ -1,24 +0,0 @@
1
- class Avo::SidebarBuilder
2
- class << self
3
- def parse_block(**args, &block)
4
- Docile.dsl_eval(new(**args), &block).build
5
- end
6
- end
7
-
8
- attr_reader :items_holder
9
-
10
- delegate :field, to: :items_holder
11
- delegate :items, to: :items_holder
12
- delegate :heading, to: :items_holder
13
-
14
- def initialize(name: nil, **args)
15
- @sidebar = Avo::Sidebar.new(**args)
16
- @items_holder = Avo::ItemsHolder.new
17
- end
18
-
19
- # Fetch the sidebar
20
- def build
21
- @sidebar.items_holder = @items_holder
22
- @sidebar
23
- end
24
- end
data/lib/avo/tab.rb DELETED
@@ -1,72 +0,0 @@
1
- class Avo::Tab
2
- include Avo::Concerns::IsResourceItem
3
- include Avo::Concerns::VisibleItems
4
- include Avo::Fields::FieldExtensions::VisibleInDifferentViews
5
-
6
- class_attribute :item_type, default: :tab
7
- delegate :items, :add_item, to: :items_holder
8
-
9
- attr_reader :view
10
- attr_accessor :description
11
- attr_accessor :items_holder
12
- attr_accessor :holds_one_field
13
-
14
- def initialize(name: nil, description: nil, view: nil, holds_one_field: false, **args)
15
- # Initialize the visibility markers
16
- super
17
-
18
- @name = name
19
- @description = description
20
- @holds_one_field = holds_one_field
21
- @items_holder = Avo::ItemsHolder.new
22
- @view = view
23
-
24
- show_on args[:show_on] if args[:show_on].present?
25
- hide_on args[:hide_on] if args[:hide_on].present?
26
- only_on args[:only_on] if args[:only_on].present?
27
- except_on args[:except_on] if args[:except_on].present?
28
- end
29
-
30
- def name
31
- if @name.respond_to?(:call)
32
- Avo::Hosts::BaseHost.new(block: @name).handle
33
- else
34
- @name
35
- end
36
- end
37
-
38
- def hydrate(view: nil)
39
- @view = view
40
-
41
- items_holder.items.grep(Avo::Panel).each do |panel|
42
- panel.hydrate(view: view)
43
- end
44
-
45
- self
46
- end
47
-
48
- def turbo_frame_id(parent: nil)
49
- id = "#{Avo::Tab.to_s.parameterize} #{name}".parameterize
50
-
51
- return id if parent.nil?
52
-
53
- "#{parent.turbo_frame_id} #{id}".parameterize
54
- end
55
-
56
- def empty?
57
- visible_items.blank?
58
- end
59
-
60
- # Checks for visibility on itself or on theone field it holds
61
- def visible_on?(view)
62
- if holds_one_field
63
- super(view) && items.first.visible_on?(view)
64
- else
65
- super(view)
66
- end
67
- end
68
-
69
- def has_a_single_item?
70
- items.count == 1
71
- end
72
- end
@@ -1,25 +0,0 @@
1
- class Avo::TabBuilder
2
- class << self
3
- def parse_block(**args, &block)
4
- Docile.dsl_eval(new(**args), &block).build
5
- end
6
- end
7
-
8
- attr_reader :items_holder
9
-
10
- delegate :field, to: :items_holder
11
- delegate :tool, to: :items_holder
12
- delegate :panel, to: :items_holder
13
- delegate :items, to: :items_holder
14
-
15
- def initialize(name: nil, **args)
16
- @tab = Avo::Tab.new(name: name, **args)
17
- @items_holder = Avo::ItemsHolder.new
18
- end
19
-
20
- # Fetch the tab
21
- def build
22
- @tab.items_holder = @items_holder
23
- @tab
24
- end
25
- end
data/lib/avo/tab_group.rb DELETED
@@ -1,42 +0,0 @@
1
- class Avo::TabGroup
2
- include Avo::Concerns::HasFields
3
- include Avo::Concerns::IsResourceItem
4
-
5
- class_attribute :item_type, default: :tab_group
6
-
7
- attr_reader :view
8
- attr_accessor :index
9
- attr_accessor :items_holder
10
- attr_accessor :style
11
-
12
- def initialize(index: 0, view: nil, style: nil)
13
- @index = index
14
- @items_holder = Avo::ItemsHolder.new
15
- @view = view
16
- @style = style
17
- end
18
-
19
- def hydrate(view: nil)
20
- @view = view
21
-
22
- self
23
- end
24
-
25
- def visible_items
26
- items.map do |item|
27
- item.hydrate view: view
28
- end
29
- .select do |item|
30
- # Remove items hidden in this view
31
- item.visible_on? view
32
- end
33
- .select do |item|
34
- # Remove empty items
35
- !item.empty?
36
- end
37
- end
38
-
39
- def turbo_frame_id
40
- "#{Avo::TabGroup.to_s.parameterize} #{index}".parameterize
41
- end
42
- end
@@ -1,43 +0,0 @@
1
- class Avo::TabGroupBuilder
2
- class << self
3
- def parse_block(**args, &block)
4
- Docile.dsl_eval(new(**args), &block).build
5
- end
6
- end
7
-
8
- attr_reader :items_holder
9
-
10
- delegate :tab, to: :items_holder
11
-
12
- def initialize(style: nil)
13
- @group = Avo::TabGroup.new(style: style)
14
- @items_holder = Avo::ItemsHolder.new
15
- end
16
-
17
- def field(field_name, **args, &block)
18
- parsed = Avo::Dsl::FieldParser.new(id: field_name, order_index: @items_index, **args, &block).parse
19
- field_instance = parsed.instance
20
-
21
- name = field_instance.name
22
- tab = Avo::Tab.new name: name
23
-
24
- if field_instance.has_own_panel?
25
- tab.items_holder.add_item parsed.instance
26
- tab.holds_one_field = true
27
- else
28
- # If the field is not in a panel, create one and add it
29
- panel = Avo::Panel.new name: name
30
- panel.items_holder.add_item parsed.instance
31
- # Add that panel to the bag
32
- tab.items_holder.add_item panel
33
- end
34
-
35
- @items_holder.tabs tab
36
- end
37
-
38
- # Fetch the tab
39
- def build
40
- @group.items_holder = @items_holder
41
- @group
42
- end
43
- end
@@ -1,11 +0,0 @@
1
- module Avo
2
- class ToolsManager
3
- def self.get_tools
4
- Avo::Tools.constants.map do |c|
5
- if Avo::Tools.const_get(c).is_a? Class
6
- "Avo::Tools::#{c}".safe_constantize
7
- end
8
- end
9
- end
10
- end
11
- end
@@ -1,18 +0,0 @@
1
- require_relative "../named_base_generator"
2
-
3
- module Generators
4
- module Avo
5
- module Card
6
- class ChartkickGenerator < Generators::Avo::NamedBaseGenerator
7
- source_root File.expand_path("../templates", __dir__)
8
-
9
- namespace "avo:card:chartkick"
10
- desc "Add a chartkick card for your Avo dashboard."
11
-
12
- def handle
13
- template "cards/chartkick_card_sample.tt", "app/avo/cards/#{name.underscore}.rb"
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- require_relative "../named_base_generator"
2
-
3
- module Generators
4
- module Avo
5
- module Card
6
- class MetricGenerator < Generators::Avo::NamedBaseGenerator
7
- source_root File.expand_path("../templates", __dir__)
8
-
9
- namespace "avo:card:metric"
10
- desc "Add a metric card for your Avo dashboard."
11
-
12
- def handle
13
- template "cards/metric_card_sample.tt", "app/avo/cards/#{name.underscore}.rb"
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,19 +0,0 @@
1
- require_relative "../named_base_generator"
2
-
3
- module Generators
4
- module Avo
5
- module Card
6
- class PartialGenerator < Generators::Avo::NamedBaseGenerator
7
- source_root File.expand_path("../templates", __dir__)
8
-
9
- namespace "avo:card:partial"
10
- desc "Add a partial card for your Avo dashboard."
11
-
12
- def handle
13
- template "cards/partial_card_sample.tt", "app/avo/cards/#{name.underscore}.rb"
14
- template "cards/partial_card_partial.tt", "app/views/avo/cards/_#{name.underscore}.html.erb"
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,126 +0,0 @@
1
- ---
2
- es:
3
- avo:
4
- action_ran_successfully: "¡Acción ejecutada con éxito!"
5
- actions: Acciones
6
- and_x_other_resources: y %{count} otros recursos
7
- are_you_sure: "¿Estás seguro?"
8
- are_you_sure_detach_item: "¿Estás seguro de que quieres separar este/a %{item}?"
9
- are_you_sure_you_want_to_run_this_option: "¿Estás seguro de que quieres ejectuar esta acción?"
10
- attach: Adjuntar
11
- attach_and_attach_another: Adjuntar y adjuntar otro
12
- attach_item: Adjuntar %{item}
13
- attachment_class_attached: "%{attachment_class} adjuntado/a."
14
- attachment_class_detached: "%{attachment_class} adjuntado/a."
15
- attachment_destroyed: Adjunto eliminado
16
- cancel: Cancelar
17
- choose_a_country: Elige un país
18
- choose_an_option: Elige una opción
19
- choose_item: Elige %{item}
20
- clear_value: Borrar el valor
21
- click_to_reveal_filters: Pulsa para mostrar los filtros
22
- confirm: Confirmar
23
- create_new_item: Crear nuevo/a %{item}
24
- dashboard: Panel
25
- dashboards: Paneles
26
- delete: eliminar
27
- delete_file: Eliminar fichero
28
- delete_item: Eliminar %{item}
29
- detach_item: separar %{item}
30
- details: detalles
31
- download: Descargar
32
- download_file: Descargar fichero
33
- download_item: Descargar %{item}
34
- edit: editar
35
- edit_item: editar %{item}
36
- empty_dashboard_message: Añadir tarjetas a este panel
37
- failed: Fallo
38
- failed_to_find_attachment: No se ha encontrado el archivo adjunto
39
- failed_to_load: No se ha podido cargar
40
- field_translations:
41
- file:
42
- one: fichero
43
- other: ficheros
44
- zero: ficheros
45
- people:
46
- one: persona
47
- other: personas
48
- zero: personas
49
- filter_by: Filtrar por
50
- filters: Filtros
51
- go_back: Volver
52
- grid_view: Vista en cuardrícula
53
- hide_content: Ocultar contenido
54
- home: Inicio
55
- key_value_field:
56
- add_row: Añadir fila
57
- delete_row: Eliminar fila
58
- key: Clave
59
- value: Valor
60
- list_is_empty: La lista está vacía
61
- loading: Cargando
62
- more: Más
63
- new: nuevo/a
64
- next_page: Página siguiente
65
- no_cards_present: No hay tarjetas
66
- no_item_found: No se ha encontrado ningún elemento
67
- no_options_available: No hay opciones disponibles
68
- no_related_item_found: No se ha encontrado ningún elemento relacionado
69
- not_authorized: No estás autorizado/a a realizar esta acción.
70
- number_of_items:
71
- one: un/a %{item}
72
- other: "%{count} %{item}"
73
- zero: ningún/a %{item}
74
- oops_nothing_found: Oops! No se ha encontrado nada...
75
- order:
76
- higher: Mover arriba
77
- lower: Mover abajo
78
- reorder_record: Reordenar registro
79
- to_bottom: Mover abajo del todo
80
- to_top: Mover arriba del todo
81
- per_page: Por página
82
- prev_page: Página anterior
83
- records_selected_from_all_pages_html: Todos los registros seleccionados de todas las páginas.
84
- remove_selection: Quitar la selección
85
- reset_filters: Reiniciar filtros
86
- resource_created: Recurso creado
87
- resource_destroyed: Recurso eliminado
88
- resource_translations:
89
- team_members:
90
- one: miembro del equipo
91
- other: miembros del equipo
92
- zero: miembros del equipo
93
- user:
94
- one: usuario/a
95
- other: usuarios/as
96
- zero: usuarios/as
97
- resource_updated: Recurso actualizado
98
- resources: Recursos
99
- run: Ejecutar
100
- save: Guardar
101
- search:
102
- cancel_button: Cancelar
103
- placeholder: Buscar
104
- select_all: Seleccionar todo
105
- select_all_matching: Seleccionar todas las coincidencias
106
- select_item: Selecionar elemento
107
- show_content: Mostrar contenido
108
- sign_out: Salir
109
- switch_to_view: Cambiar a la vista %{view_type}
110
- table_view: Vista en tabla
111
- tools: Herramientas
112
- type_to_search: Escribe para buscar.
113
- unauthorized: No autorizado
114
- undo: deshacer
115
- view: Vista
116
- view_item: ver %{item}
117
- was_successfully_created: se ha creado con éxito
118
- was_successfully_updated: se ha actualizado con éxito
119
- x_items_more:
120
- one: un elemento más
121
- other: "%{count} elementos más"
122
- zero: ningún elemento más
123
- x_records_selected_from_a_total_of_x_html: <span class="font-bold text-gray-700">%{selected}</span> registros seleccionados en esta página de un total de <span class="font-bold text-gray-700">%{count}</span>
124
- x_records_selected_from_all_pages_html: <span class="font-bold text-gray-700">%{count}</span> registros seleccionados en todas las páginas
125
- x_records_selected_from_page_html: <span class="font-bold text-gray-700">%{selected}</span> registros seleccionados en esta página
126
- you_missed_something_check_form: Es posible que hayas pasado algo por alto. Comprueba el formulario.
@@ -1,8 +0,0 @@
1
- class <%= class_name.camelize %> < Avo::BaseAction
2
- self.name = "<%= name.underscore.humanize %>"
3
- self.standalone = true
4
-
5
- def handle(fields:)
6
- # Do something here
7
- end
8
- end