avo 2.43.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 (414) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +30 -26
  3. data/Gemfile.lock +235 -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 +9 -15
  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 +5 -4
  73. data/app/components/avo/index/resource_table_component.rb +24 -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 +29 -40
  84. data/app/components/avo/paginator_component.rb +23 -5
  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 -84
  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 +37 -41
  105. data/app/controllers/avo/application_controller.rb +119 -181
  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 +145 -98
  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/application.js +3 -0
  118. data/app/javascript/js/controllers/action_controller.js +3 -1
  119. data/app/javascript/js/controllers/actions_overflow_controller.js +62 -0
  120. data/app/javascript/js/controllers/fields/reload_belongs_to_field_controller.js +7 -7
  121. data/app/javascript/js/controllers/filter_controller.js +1 -1
  122. data/app/javascript/js/controllers/input_autofocus_controller.js +12 -0
  123. data/app/javascript/js/controllers/preview_controller.js +24 -0
  124. data/app/javascript/js/controllers/search_controller.js +4 -2
  125. data/app/javascript/js/controllers/self_destroy_controller.js +7 -0
  126. data/app/javascript/js/controllers/toggle_controller.js +48 -0
  127. data/app/javascript/js/controllers.js +11 -5
  128. data/app/javascript/js/custom-stream-actions.js +15 -0
  129. data/app/views/avo/actions/show.html.erb +10 -7
  130. data/app/views/avo/associations/new.html.erb +2 -2
  131. data/app/views/avo/base/_new_via_belongs_to.html.erb +1 -1
  132. data/app/views/avo/base/close_modal_and_reload_field.turbo_stream.erb +3 -3
  133. data/app/views/avo/base/create_fail_action.turbo_stream.erb +2 -2
  134. data/app/views/avo/base/edit.html.erb +1 -1
  135. data/app/views/avo/base/index.html.erb +4 -3
  136. data/app/views/avo/base/new.html.erb +2 -1
  137. data/app/views/avo/base/preview.html.erb +19 -0
  138. data/app/views/avo/base/show.html.erb +2 -2
  139. data/app/views/avo/debug/_valid_indicator.html.erb +9 -0
  140. data/app/views/avo/debug/report.html.erb +32 -17
  141. data/app/views/avo/debug/{index.html.erb → status.html.erb} +31 -14
  142. data/app/views/avo/partials/_custom_tools_alert.html.erb +2 -2
  143. data/app/views/avo/partials/_flash_alerts.turbo_stream.erb +1 -1
  144. data/app/views/avo/partials/_footer.html.erb +1 -1
  145. data/app/views/avo/partials/_javascript.html.erb +5 -0
  146. data/app/views/avo/partials/_logo.html.erb +1 -1
  147. data/app/views/avo/partials/_navbar.html.erb +3 -5
  148. data/app/views/avo/partials/_resource_search.html.erb +1 -0
  149. data/app/views/avo/partials/_table_header.html.erb +5 -11
  150. data/app/views/layouts/avo/application.html.erb +5 -4
  151. data/avo.gemspec +11 -8
  152. data/bin/dev +3 -1
  153. data/bin/prod +0 -0
  154. data/config/i18n-tasks.yml +1 -1
  155. data/config/initializers/pagy.rb +2 -0
  156. data/config/master.key +1 -0
  157. data/config/routes.rb +7 -10
  158. data/db/factories.rb +6 -0
  159. data/lib/avo/asset_manager.rb +30 -0
  160. data/lib/avo/base_action.rb +84 -82
  161. data/lib/avo/base_resource.rb +286 -225
  162. data/lib/avo/base_resource_tool.rb +9 -16
  163. data/lib/avo/concerns/borrow_items_holder.rb +35 -0
  164. data/lib/avo/concerns/breadcrumbs.rb +2 -2
  165. data/lib/avo/concerns/{can_replace_fields.rb → can_replace_items.rb} +5 -9
  166. data/lib/avo/concerns/filters_session_handler.rb +7 -5
  167. data/lib/avo/concerns/has_controls.rb +37 -0
  168. data/lib/avo/concerns/has_description.rb +23 -0
  169. data/lib/avo/concerns/has_helpers.rb +18 -0
  170. data/lib/avo/concerns/has_item_type.rb +42 -0
  171. data/lib/avo/concerns/has_items.rb +339 -0
  172. data/lib/avo/concerns/hydration.rb +17 -0
  173. data/lib/avo/concerns/is_resource_item.rb +16 -36
  174. data/lib/avo/concerns/is_visible.rb +15 -0
  175. data/lib/avo/concerns/model_class_constantized.rb +0 -2
  176. data/lib/avo/concerns/pagination.rb +53 -0
  177. data/lib/avo/concerns/visible_in_different_views.rb +132 -0
  178. data/lib/avo/concerns/visible_items.rb +7 -38
  179. data/lib/avo/configuration/branding.rb +0 -12
  180. data/lib/avo/configuration.rb +28 -11
  181. data/lib/avo/current.rb +39 -0
  182. data/lib/avo/dsl/field_parser.rb +3 -3
  183. data/lib/avo/dynamic_router.rb +18 -3
  184. data/lib/avo/engine.rb +35 -30
  185. data/lib/avo/error_manager.rb +25 -0
  186. data/lib/avo/execution_context.rb +14 -15
  187. data/lib/avo/fields/base_field.rb +84 -115
  188. data/lib/avo/fields/belongs_to_field.rb +19 -23
  189. data/lib/avo/fields/concerns/file_authorization.rb +2 -2
  190. data/lib/avo/fields/concerns/handles_field_args.rb +49 -0
  191. data/lib/avo/fields/concerns/has_default.rb +1 -5
  192. data/lib/avo/fields/concerns/has_field_name.rb +22 -0
  193. data/lib/avo/fields/concerns/has_html_attributes.rb +112 -0
  194. data/lib/avo/fields/concerns/is_disabled.rb +1 -5
  195. data/lib/avo/fields/concerns/is_readonly.rb +1 -5
  196. data/lib/avo/fields/concerns/is_required.rb +5 -7
  197. data/lib/avo/fields/concerns/is_searchable.rb +15 -0
  198. data/lib/avo/fields/concerns/use_resource.rb +5 -1
  199. data/lib/avo/fields/concerns/use_view_components.rb +45 -0
  200. data/lib/avo/fields/country_field.rb +4 -0
  201. data/lib/avo/fields/date_time_field.rb +1 -5
  202. data/lib/avo/fields/external_image_field.rb +2 -2
  203. data/lib/avo/fields/field_manager.rb +55 -0
  204. data/lib/avo/fields/file_field.rb +2 -2
  205. data/lib/avo/fields/gravatar_field.rb +2 -2
  206. data/lib/avo/fields/has_and_belongs_to_many_field.rb +1 -2
  207. data/lib/avo/fields/has_base_field.rb +21 -17
  208. data/lib/avo/fields/has_many_field.rb +5 -2
  209. data/lib/avo/fields/has_one_field.rb +8 -12
  210. data/lib/avo/fields/heading_field.rb +9 -14
  211. data/lib/avo/fields/hidden_field.rb +1 -1
  212. data/lib/avo/fields/id_field.rb +3 -3
  213. data/lib/avo/fields/location_field.rb +10 -10
  214. data/lib/avo/fields/password_field.rb +1 -1
  215. data/lib/avo/fields/preview_field.rb +14 -0
  216. data/lib/avo/fields/select_field.rb +12 -8
  217. data/lib/avo/fields/status_field.rb +7 -1
  218. data/lib/avo/fields/text_field.rb +2 -2
  219. data/lib/avo/filters/base_filter.rb +9 -4
  220. data/lib/avo/html/builder.rb +8 -8
  221. data/lib/avo/item_grapher.rb +78 -0
  222. data/lib/avo/licensing/h_q.rb +11 -73
  223. data/lib/avo/licensing/license.rb +5 -1
  224. data/lib/avo/licensing/license_manager.rb +1 -1
  225. data/lib/avo/licensing/pro_license.rb +1 -7
  226. data/lib/avo/loaders/fields_loader.rb +7 -1
  227. data/lib/avo/plugin.rb +36 -0
  228. data/lib/avo/plugin_manager.rb +56 -0
  229. data/lib/avo/prefixed_test_helpers.rb +20 -0
  230. data/lib/avo/reloader.rb +3 -0
  231. data/lib/avo/resources/controls/actions_list.rb +7 -12
  232. data/lib/avo/resources/controls/attach_button.rb +15 -0
  233. data/lib/avo/resources/controls/back_button.rb +1 -1
  234. data/lib/avo/resources/controls/base_control.rb +15 -49
  235. data/lib/avo/resources/controls/create_button.rb +15 -0
  236. data/lib/avo/resources/controls/delete_button.rb +5 -1
  237. data/lib/avo/resources/controls/detach_button.rb +4 -1
  238. data/lib/avo/resources/controls/edit_button.rb +4 -1
  239. data/lib/avo/resources/controls/order_controls.rb +8 -0
  240. data/lib/avo/resources/controls/save_button.rb +13 -0
  241. data/lib/avo/resources/controls/show_button.rb +15 -0
  242. data/lib/avo/resources/items/holder.rb +96 -0
  243. data/lib/avo/resources/items/item_group.rb +44 -0
  244. data/lib/avo/resources/items/main_panel.rb +12 -0
  245. data/lib/avo/resources/items/panel.rb +2 -0
  246. data/lib/avo/resources/items/row.rb +42 -0
  247. data/lib/avo/resources/items/sidebar.rb +46 -0
  248. data/lib/avo/resources/items/tab.rb +54 -0
  249. data/lib/avo/resources/items/tab_group.rb +62 -0
  250. data/lib/avo/resources/resource_manager.rb +179 -0
  251. data/lib/avo/services/authorization_service.rb +11 -110
  252. data/lib/avo/services/debug_service.rb +93 -0
  253. data/lib/avo/services/encryption_service.rb +8 -12
  254. data/lib/avo/services/telemetry_service.rb +85 -0
  255. data/lib/avo/test_helpers.rb +362 -0
  256. data/lib/avo/tools/tool_manager.rb +30 -0
  257. data/lib/avo/version.rb +1 -1
  258. data/lib/avo/view_inquirer.rb +36 -0
  259. data/lib/avo.rb +109 -24
  260. data/lib/generators/avo/action_generator.rb +8 -8
  261. data/lib/generators/avo/card_generator.rb +27 -0
  262. data/lib/generators/avo/concerns/parent_controller.rb +20 -0
  263. data/lib/generators/avo/controller_generator.rb +3 -0
  264. data/lib/generators/avo/eject_generator.rb +180 -15
  265. data/lib/generators/avo/field_generator.rb +49 -2
  266. data/lib/generators/avo/filter_generator.rb +8 -8
  267. data/lib/generators/avo/js/install_generator.rb +2 -2
  268. data/lib/generators/avo/resource_generator.rb +12 -9
  269. data/lib/generators/avo/scope_generator.rb +15 -0
  270. data/lib/generators/avo/tailwindcss/install_generator.rb +70 -26
  271. data/lib/generators/avo/templates/action.tt +8 -6
  272. data/lib/generators/avo/templates/cards/chartkick_card.tt +1 -1
  273. data/lib/generators/avo/templates/cards/chartkick_card_sample.tt +1 -1
  274. data/lib/generators/avo/templates/cards/metric_card.tt +1 -1
  275. data/lib/generators/avo/templates/cards/metric_card_sample.tt +1 -1
  276. data/lib/generators/avo/templates/cards/partial_card.tt +1 -1
  277. data/lib/generators/avo/templates/cards/partial_card_sample.tt +1 -1
  278. data/lib/generators/avo/templates/dashboards/dashboard.tt +5 -3
  279. data/lib/generators/avo/templates/field/%singular_name%_field.rb.tt +1 -1
  280. data/lib/generators/avo/templates/filters/boolean_filter.tt +1 -1
  281. data/lib/generators/avo/templates/filters/multiple_select_filter.tt +1 -1
  282. data/lib/generators/avo/templates/filters/select_filter.tt +1 -1
  283. data/lib/generators/avo/templates/filters/text_filter.tt +1 -1
  284. data/lib/generators/avo/templates/initializer/avo.tt +7 -3
  285. data/lib/generators/avo/templates/locales/avo.ar.yml +7 -6
  286. data/lib/generators/avo/templates/locales/avo.en.yml +6 -3
  287. data/lib/generators/avo/templates/locales/avo.es.yml +127 -0
  288. data/lib/generators/avo/templates/locales/avo.fr.yml +3 -0
  289. data/lib/generators/avo/templates/locales/avo.nb.yml +3 -0
  290. data/lib/generators/avo/templates/locales/avo.nn.yml +3 -0
  291. data/lib/generators/avo/templates/locales/avo.pt-BR.yml +3 -0
  292. data/lib/generators/avo/templates/locales/avo.pt.yml +3 -0
  293. data/lib/generators/avo/templates/locales/avo.ro.yml +8 -5
  294. data/lib/generators/avo/templates/locales/avo.tr.yml +3 -0
  295. data/lib/generators/avo/templates/resource/controller.tt +1 -1
  296. data/lib/generators/avo/templates/resource/resource.tt +7 -7
  297. data/lib/generators/avo/templates/resource_tools/partial.tt +2 -2
  298. data/lib/generators/avo/templates/resource_tools/resource_tool.tt +1 -1
  299. data/lib/generators/avo/templates/scope.tt +6 -0
  300. data/lib/generators/avo/templates/tailwindcss/Procfile.dev +1 -1
  301. data/lib/generators/avo/templates/tailwindcss/avo.tailwind.css +5 -3
  302. data/lib/generators/avo/templates/tailwindcss/tailwind.config.js +11 -0
  303. data/lib/tasks/avo_tasks.rake +72 -4
  304. data/public/avo-assets/avo.base.css +1893 -1187
  305. data/public/avo-assets/avo.base.js +223 -311
  306. data/public/avo-assets/avo.base.js.map +3 -3
  307. data/public/avo-assets/avo.css +9744 -0
  308. data/public/avo-assets/avo.js +513 -0
  309. data/public/avo-assets/avo.js.map +7 -0
  310. data/tailwind.custom.js +47 -0
  311. data/tailwind.preset.js +152 -0
  312. metadata +121 -116
  313. data/app/components/avo/card_component.html.erb +0 -46
  314. data/app/components/avo/card_component.rb +0 -25
  315. data/app/components/avo/dashboards/divider_component.html.erb +0 -9
  316. data/app/components/avo/dashboards/divider_component.rb +0 -19
  317. data/app/components/avo/fields/belongs_to_field/autocomplete_component.html.erb +0 -47
  318. data/app/components/avo/fields/belongs_to_field/autocomplete_component.rb +0 -95
  319. data/app/components/avo/fields/tags_field/edit_component.html.erb +0 -35
  320. data/app/components/avo/fields/tags_field/edit_component.rb +0 -4
  321. data/app/components/avo/fields/tags_field/index_component.html.erb +0 -10
  322. data/app/components/avo/fields/tags_field/index_component.rb +0 -9
  323. data/app/components/avo/fields/tags_field/show_component.html.erb +0 -7
  324. data/app/components/avo/fields/tags_field/show_component.rb +0 -5
  325. data/app/components/avo/fields/tags_field/tag_component.html.erb +0 -9
  326. data/app/components/avo/fields/tags_field/tag_component.rb +0 -11
  327. data/app/components/avo/index/ordering/base_component.rb +0 -9
  328. data/app/components/avo/index/ordering/button_component.html.erb +0 -11
  329. data/app/components/avo/index/ordering/button_component.rb +0 -23
  330. data/app/components/avo/index/ordering/buttons_component.html.erb +0 -32
  331. data/app/components/avo/index/ordering/buttons_component.rb +0 -47
  332. data/app/components/avo/item_switcher_component.html.erb +0 -27
  333. data/app/components/avo/item_switcher_component.rb +0 -48
  334. data/app/components/avo/sidebar/item_switcher_component.html.erb +0 -16
  335. data/app/components/avo/sidebar/item_switcher_component.rb +0 -15
  336. data/app/controllers/avo/dashboards/cards_controller.rb +0 -37
  337. data/app/controllers/avo/dashboards_controller.rb +0 -22
  338. data/app/controllers/avo/reorder_controller.rb +0 -25
  339. data/app/controllers/avo/team_users_controller.rb +0 -4
  340. data/app/javascript/js/controllers/base_controller.js +0 -22
  341. data/app/javascript/js/controllers/fields/tags_field_controller.js +0 -127
  342. data/app/javascript/js/controllers/toggle_panel_controller.js +0 -18
  343. data/app/views/avo/dashboards/cards/_chartkick_card.html.erb +0 -3
  344. data/app/views/avo/dashboards/cards/_metric_card.html.erb +0 -5
  345. data/app/views/avo/dashboards/cards/chartkick_missing.html.erb +0 -14
  346. data/app/views/avo/dashboards/cards/show.html.erb +0 -3
  347. data/app/views/avo/dashboards/show.html.erb +0 -38
  348. data/app/views/avo/partials/_global_search.html.erb +0 -19
  349. data/app/views/avo/sidebar/_license_warnings.html.erb +0 -6
  350. data/lib/avo/action_model.rb +0 -20
  351. data/lib/avo/app.rb +0 -237
  352. data/lib/avo/base_card.rb +0 -161
  353. data/lib/avo/concerns/fetches_things.rb +0 -150
  354. data/lib/avo/concerns/handles_field_args.rb +0 -47
  355. data/lib/avo/concerns/has_editable_controls.rb +0 -34
  356. data/lib/avo/concerns/has_fields.rb +0 -334
  357. data/lib/avo/concerns/has_html_attributes.rb +0 -108
  358. data/lib/avo/concerns/policy_helpers.rb +0 -31
  359. data/lib/avo/concerns/visible_in_dashboard.rb +0 -31
  360. data/lib/avo/dashboards/base_dashboard.rb +0 -89
  361. data/lib/avo/dashboards/base_divider.rb +0 -35
  362. data/lib/avo/dashboards/chartkick_card.rb +0 -77
  363. data/lib/avo/dashboards/dashboard_card.rb +0 -6
  364. data/lib/avo/dashboards/metric_card.rb +0 -9
  365. data/lib/avo/dashboards/partial_card.rb +0 -7
  366. data/lib/avo/fields/field_extensions/has_field_name.rb +0 -19
  367. data/lib/avo/fields/field_extensions/visible_in_different_views.rb +0 -111
  368. data/lib/avo/fields/tags_field.rb +0 -102
  369. data/lib/avo/grid_collector.rb +0 -42
  370. data/lib/avo/hosts/association_scope_host.rb +0 -8
  371. data/lib/avo/hosts/base_host.rb +0 -25
  372. data/lib/avo/hosts/card_visibility.rb +0 -20
  373. data/lib/avo/hosts/dashboard_card.rb +0 -22
  374. data/lib/avo/hosts/dashboard_visibility.rb +0 -19
  375. data/lib/avo/hosts/ordering.rb +0 -22
  376. data/lib/avo/hosts/record_host.rb +0 -7
  377. data/lib/avo/hosts/resource_record_host.rb +0 -7
  378. data/lib/avo/hosts/resource_view_record_host.rb +0 -7
  379. data/lib/avo/hosts/search_scope_host.rb +0 -7
  380. data/lib/avo/hosts/view_record_host.rb +0 -7
  381. data/lib/avo/hosts/visibility_host.rb +0 -12
  382. data/lib/avo/items_holder.rb +0 -96
  383. data/lib/avo/main_panel.rb +0 -3
  384. data/lib/avo/menu/base_item.rb +0 -25
  385. data/lib/avo/menu/builder.rb +0 -82
  386. data/lib/avo/menu/dashboard.rb +0 -22
  387. data/lib/avo/menu/group.rb +0 -2
  388. data/lib/avo/menu/link.rb +0 -6
  389. data/lib/avo/menu/menu.rb +0 -2
  390. data/lib/avo/menu/resource.rb +0 -22
  391. data/lib/avo/menu/section.rb +0 -2
  392. data/lib/avo/panel.rb +0 -24
  393. data/lib/avo/panel_builder.rb +0 -25
  394. data/lib/avo/resources/controls/action.rb +0 -38
  395. data/lib/avo/resources/controls/execution_context.rb +0 -58
  396. data/lib/avo/resources/controls/items_holder.rb +0 -19
  397. data/lib/avo/resources/controls/link_to.rb +0 -27
  398. data/lib/avo/row.rb +0 -26
  399. data/lib/avo/row_builder.rb +0 -24
  400. data/lib/avo/services/authorization_clients/nil_client.rb +0 -37
  401. data/lib/avo/services/authorization_clients/pundit_client.rb +0 -51
  402. data/lib/avo/sidebar.rb +0 -30
  403. data/lib/avo/sidebar_builder.rb +0 -24
  404. data/lib/avo/tab.rb +0 -72
  405. data/lib/avo/tab_builder.rb +0 -25
  406. data/lib/avo/tab_group.rb +0 -42
  407. data/lib/avo/tab_group_builder.rb +0 -43
  408. data/lib/avo/tools_manager.rb +0 -11
  409. data/lib/generators/avo/card/chartkick_generator.rb +0 -18
  410. data/lib/generators/avo/card/metric_generator.rb +0 -18
  411. data/lib/generators/avo/card/partial_generator.rb +0 -19
  412. data/lib/generators/avo/templates/js/avo.custom.js +0 -2
  413. data/lib/generators/avo/templates/standalone_action.tt +0 -8
  414. /data/app/assets/stylesheets/css/{tags.css → fields/tags.css} +0 -0
@@ -11,17 +11,31 @@ module Generators
11
11
 
12
12
  def create_files
13
13
  unless tailwindcss_installed?
14
+ say "Installing Tailwindcss"
14
15
  system "./bin/bundle add tailwindcss-rails"
15
16
  system "./bin/rails tailwindcss:install"
16
17
  end
17
18
 
18
- unless Rails.root.join("app", "assets", "stylesheets", "avo.tailwind.css").exist?
19
- say "Add default app/assets/stylesheets/avo.tailwind.css"
20
- copy_file template_path("avo.tailwind.css"), "app/assets/stylesheets/avo.tailwind.css"
19
+ unless (path = Rails.root.join("config", "avo", "tailwind.config.js")).exist?
20
+ say "Generating the Avo config file."
21
+ copy_file template_path("tailwind.config.js"), path
21
22
  end
22
23
 
24
+ unless (path = Rails.root.join("app", "assets", "stylesheets", "avo", "tailwindcss")).exist?
25
+ say "Generating the tailwindcss directory."
26
+ directory ::Avo::Engine.root.join("app", "assets", "stylesheets", "css", "tailwindcss"), path
27
+ end
28
+
29
+
30
+ unless (path = Rails.root.join("app", "assets", "stylesheets", "avo" ,"tailwind.css")).exist?
31
+ say "Add default tailwind.css"
32
+ copy_file template_path("avo.tailwind.css"), path
33
+ end
34
+
35
+ script_name = "avo:tailwind:css"
23
36
  if Rails.root.join("Procfile.dev").exist?
24
- append_to_file "Procfile.dev", "avo_css: yarn avo:tailwindcss --watch\n"
37
+ say "Add #{cmd = "avo_css: yarn #{script_name} --watch"} to Procfile.dev"
38
+ append_to_file "Procfile.dev", "#{cmd}\n"
25
39
  else
26
40
  say "Add default Procfile.dev"
27
41
  copy_file template_path("Procfile.dev"), "Procfile.dev"
@@ -30,28 +44,64 @@ module Generators
30
44
  run "gem install foreman"
31
45
  end
32
46
 
33
- # Ensure that the _pre_head.html.erb template is available
34
- unless Rails.root.join("app", "views", "avo", "partials", "_pre_head.html.erb").exist?
35
- say "Ejecting the _pre_head.html.erb partial"
36
- Rails::Generators.invoke("avo:eject", [":pre_head", "--skip-avo-version"], {destination_root: Rails.root})
47
+ script_command = "tailwindcss -i ./app/assets/stylesheets/avo/tailwind.css -o ./app/assets/builds/avo.tailwind.css -c ./config/avo/tailwind.config.js --minify"
48
+ pretty_script_command = "\"#{script_name}\": \"#{script_command}\""
49
+
50
+ if (path = Rails.root.join("package.json")).exist?
51
+ say "Add #{pretty_script_command} to package.json"
52
+ json_data = JSON.parse(File.read(path))
53
+ json_data["scripts"] ||= {}
54
+ json_data["scripts"][script_name] = script_command
55
+
56
+ File.open(path, 'w') do |file|
57
+ file.write(JSON.pretty_generate(json_data) + "\n")
58
+ end
59
+ else
60
+ say "package.json not found.", :yellow
61
+ say "Ensure you have the following script in your package.json file.", :yellow
62
+ say "\"scripts\": {\n" \
63
+ " #{pretty_script_command}\n" \
64
+ "}", :green
37
65
  end
38
66
 
39
- say "Adding the CSS asset to the partial"
40
- prepend_to_file Rails.root.join("app", "views", "avo", "partials", "_pre_head.html.erb"), "<%= stylesheet_link_tag \"avo.tailwind.css\", media: \"all\" %>"
67
+ rake_enhance = <<~RUBY
68
+
69
+ # When running `rake assets:precompile` this is the order of events:
70
+ # 1 - Task `avo:yarn_install`
71
+ # 2 - Task `avo:sym_link`
72
+ # 3 - Cmd `yarn avo:tailwind:css`
73
+ # 4 - Task `assets:precompile`
74
+ Rake::Task["assets:precompile"].enhance(["avo:sym_link"])
75
+ Rake::Task["avo:sym_link"].enhance(["avo:yarn_install"])
76
+ Rake::Task["avo:sym_link"].enhance do
77
+ `yarn avo:tailwind:css`
78
+ end
79
+
80
+ RUBY
41
81
 
42
- tailwind_script = setup_tailwind_script
43
- say "Ensure you have the following script in your package.json file.", :yellow
44
- say %("scripts": { "avo:tailwindcss": "#{tailwind_script}" --minify }), :green
82
+ if (path = Rails.root.join("Rakefile")).exist?
83
+ say "Add #{rake_enhance.strip} to Rakefile"
84
+ append_to_file path, rake_enhance
85
+ else
86
+ say "Rakefile not found.", :yellow
87
+ say "Ensure you have the following code in your Rakefile file.", :yellow
88
+ say rake_enhance, :green
89
+ end
90
+
91
+ say "Make sure you run \"bundle exec rake avo:sym_link\" and \"bundle exec rake avo:yarn_install\" before compiling the assets with the \"#{script_name}\" task.", :green
92
+ if (path = Rails.root.join("bin", "dev")).exist?
93
+ lines = File.read(path).lines
94
+
95
+ # Insert the task after the shebang line (the first line)
96
+ shebang = lines.first
97
+ lines[0] = "#{shebang}\nbundle exec rake avo:sym_link\nbundle exec rake avo:yarn_install\n"
98
+
99
+
100
+ File.write(path, lines.join)
101
+ end
45
102
  end
46
103
 
47
104
  no_tasks do
48
- def setup_tailwind_script
49
- tailwind_config_path = tailwindcss_config_path()
50
- tailwind_script = "tailwindcss -i ./app/assets/stylesheets/avo.tailwind.css -o ./app/assets/builds/avo.tailwind.css"
51
- tailwind_script += " -c #{tailwind_config_path}" if tailwind_config_path
52
- tailwind_script
53
- end
54
-
55
105
  def template_path(filename)
56
106
  Pathname.new(__dir__).join("..", "templates", "tailwindcss", filename).to_s
57
107
  end
@@ -59,12 +109,6 @@ module Generators
59
109
  def tailwindcss_installed?
60
110
  Rails.root.join("config", "tailwind.config.js").exist? || Rails.root.join("tailwind.config.js").exist?
61
111
  end
62
-
63
- def tailwindcss_config_path
64
- if Rails.root.join("config", "tailwind.config.js").exist?
65
- "./config/tailwind.config.js"
66
- end
67
- end
68
112
  end
69
113
  end
70
114
  end
@@ -1,14 +1,16 @@
1
- class <%= class_name.camelize %> < Avo::BaseAction
2
- self.name = "<%= name.underscore.humanize %>"
1
+ class Avo::Actions::<%= class_name.camelize %> < Avo::BaseAction
2
+ <%= configuration_options %>
3
3
  # self.visible = -> do
4
4
  # true
5
5
  # end
6
6
 
7
- def handle(**args)
8
- models, fields, current_user, resource = args.values_at(:models, :fields, :current_user, :resource)
7
+ # def fields
8
+ # # Add Action fields here
9
+ # end
9
10
 
10
- models.each do |model|
11
- # Do something with your models.
11
+ def handle(records:, fields:, current_user:, resource:, **args)
12
+ records.each do |record|
13
+ # Do something with your records.
12
14
  end
13
15
  end
14
16
  end
@@ -1,4 +1,4 @@
1
- class <%= class_name.camelize %> < Avo::Dashboards::ChartkickCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::ChartkickCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
  self.chart_type = :area_chart
@@ -1,4 +1,4 @@
1
- class <%= class_name.camelize %> < Avo::Dashboards::ChartkickCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::ChartkickCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
  self.chart_type = :area_chart
@@ -1,4 +1,4 @@
1
- class <%= class_name.camelize %> < Avo::Dashboards::MetricCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::MetricCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
 
@@ -1,4 +1,4 @@
1
- class <%= class_name.camelize %> < Avo::Dashboards::MetricCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::MetricCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
  # self.description = "Some description"
@@ -1,4 +1,4 @@
1
- class <%= class_name.camelize %> < Avo::Dashboards::PartialCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::PartialCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
  self.partial = "avo/cards/<%= name.underscore %>"
@@ -1,4 +1,4 @@
1
- class <%= class_name.camelize %> < Avo::Dashboards::PartialCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::PartialCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
  self.partial = "avo/cards/<%= name.underscore %>"
@@ -1,4 +1,4 @@
1
- class <%= class_name.camelize %> < Avo::Dashboards::BaseDashboard
1
+ class Avo::Dashboards::<%= class_name.camelize %> < Avo::Dashboards::BaseDashboard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.name = "<%= name.underscore.humanize %>"
4
4
  # self.description = "Tiny dashboard description"
@@ -7,6 +7,8 @@ class <%= class_name.camelize %> < Avo::Dashboards::BaseDashboard
7
7
  # true
8
8
  # end
9
9
 
10
- # cards go here
11
- # card UsersCount
10
+ def cards
11
+ # cards go here
12
+ # card UsersCount
13
+ end
12
14
  end
@@ -1,4 +1,4 @@
1
- class <%= class_name %>Field < Avo::Fields::BaseField
1
+ class Avo::Fields::<%= class_name %>Field < Avo::Fields::BaseField
2
2
  def initialize(name, **args, &block)
3
3
  super(name, **args, &block)
4
4
  end
@@ -1,4 +1,4 @@
1
- class <%= class_name.camelize %> < Avo::Filters::BooleanFilter
1
+ class Avo::Filters::<%= class_name.camelize %> < Avo::Filters::BooleanFilter
2
2
  self.name = "<%= name.underscore.humanize %>"
3
3
  # self.visible = -> do
4
4
  # true
@@ -1,4 +1,4 @@
1
- class <%= class_name.camelize %> < Avo::Filters::MultipleSelectFilter
1
+ class Avo::Filters::<%= class_name.camelize %> < Avo::Filters::MultipleSelectFilter
2
2
  self.name = "<%= name.underscore.humanize %>"
3
3
  # self.visible = -> do
4
4
  # true
@@ -1,4 +1,4 @@
1
- class <%= class_name.camelize %> < Avo::Filters::SelectFilter
1
+ class Avo::Filters::<%= class_name.camelize %> < Avo::Filters::SelectFilter
2
2
  self.name = "<%= name.underscore.humanize %>"
3
3
  # self.visible = -> do
4
4
  # true
@@ -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 = {
@@ -1,17 +1,17 @@
1
1
  ---
2
2
  ar:
3
3
  avo:
4
- action_ran_successfully: 'تم تنفيذ الأمر بنجاح!'
4
+ action_ran_successfully: تم تنفيذ الأمر بنجاح!
5
5
  actions: أوامر
6
6
  and_x_other_resources: و %{count} موارد أخرى
7
7
  are_you_sure: هل أنت متأكد؟
8
- are_you_sure_detach_item: هل أنت متأكد أنك تريد فصل هذا الـ٪{item}؟
8
+ are_you_sure_detach_item: هل أنت متأكد أنك تريد فصل هذا الـ%{item}؟
9
9
  are_you_sure_you_want_to_run_this_option: هل أنت متأكد أنك تريد تشغيل هذا الخيار؟
10
10
  attach: ربط
11
11
  attach_and_attach_another: ربط وربط آخر
12
12
  attach_item: ربط %{item}
13
- attachment_class_attached: '%{attachment_class} تم ربط'
14
- attachment_class_detached: '%{attachment_class} تم فصل'
13
+ attachment_class_attached: "%{attachment_class} تم ربط"
14
+ attachment_class_detached: "%{attachment_class} تم فصل"
15
15
  attachment_destroyed: تم حذف المرفق
16
16
  cancel: إلغاء
17
17
  choose_a_country: اختر دولة
@@ -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}
@@ -80,6 +81,7 @@ ar:
80
81
  to_top: حرك السجل للأعلى بشكل كامل
81
82
  per_page: لكل صفحة
82
83
  prev_page: الصفحة السابقة
84
+ records_selected_from_all_pages_html: جميع السجلات مختارة من جميع الصفحات
83
85
  remove_selection: إزالة التحديد
84
86
  reset_filters: إعادة تعيين الفلاتر
85
87
  resource_created: تم إنشاء السجل
@@ -121,6 +123,5 @@ ar:
121
123
  zero: لا توجد عناصر إضافية
122
124
  x_records_selected_from_a_total_of_x_html: <span class="font-bold text-gray-700">%{selected}</span> السجلات المحددة في هذه الصفحة من إجمالي<span class="font-bold text-gray-700">%{count}</span>
123
125
  x_records_selected_from_all_pages_html: <span class="font-bold text-gray-700">%{count}</span> السجلات المحددة من كل الصفحات
126
+ x_records_selected_from_page_html: <span class="font-bold text-gray-700">%{selected}</span> السجلات المختارة في هذه الصفحة
124
127
  you_missed_something_check_form: ربما نسيت شيئًا، يرجى التحقق من البيانات.
125
-
126
-
@@ -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
@@ -80,6 +81,7 @@ en:
80
81
  to_top: Move record to top
81
82
  per_page: Per page
82
83
  prev_page: Previous page
84
+ records_selected_from_all_pages_html: All records selected from all pages
83
85
  remove_selection: Remove selection
84
86
  reset_filters: Reset filters
85
87
  resource_created: Record created
@@ -121,4 +123,5 @@ en:
121
123
  zero: no more items
122
124
  x_records_selected_from_a_total_of_x_html: <span class="font-bold text-gray-700">%{selected}</span> records selected on this page from a total of <span class="font-bold text-gray-700">%{count}</span>
123
125
  x_records_selected_from_all_pages_html: <span class="font-bold text-gray-700">%{count}</span> records selected from all pages
126
+ x_records_selected_from_page_html: <span class="font-bold text-gray-700">%{selected}</span> records selected on this page
124
127
  you_missed_something_check_form: You might have missed something. Please check the form.
@@ -0,0 +1,127 @@
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
+ default_scope: Todos
27
+ delete: eliminar
28
+ delete_file: Eliminar fichero
29
+ delete_item: Eliminar %{item}
30
+ detach_item: separar %{item}
31
+ details: detalles
32
+ download: Descargar
33
+ download_file: Descargar fichero
34
+ download_item: Descargar %{item}
35
+ edit: editar
36
+ edit_item: editar %{item}
37
+ empty_dashboard_message: Añadir tarjetas a este panel
38
+ failed: Fallo
39
+ failed_to_find_attachment: No se ha encontrado el archivo adjunto
40
+ failed_to_load: No se ha podido cargar
41
+ field_translations:
42
+ file:
43
+ one: fichero
44
+ other: ficheros
45
+ zero: ficheros
46
+ people:
47
+ one: persona
48
+ other: personas
49
+ zero: personas
50
+ filter_by: Filtrar por
51
+ filters: Filtros
52
+ go_back: Volver
53
+ grid_view: Vista en cuardrícula
54
+ hide_content: Ocultar contenido
55
+ home: Inicio
56
+ key_value_field:
57
+ add_row: Añadir fila
58
+ delete_row: Eliminar fila
59
+ key: Clave
60
+ value: Valor
61
+ list_is_empty: La lista está vacía
62
+ loading: Cargando
63
+ more: Más
64
+ new: nuevo/a
65
+ next_page: Página siguiente
66
+ no_cards_present: No hay tarjetas
67
+ no_item_found: No se ha encontrado ningún elemento
68
+ no_options_available: No hay opciones disponibles
69
+ no_related_item_found: No se ha encontrado ningún elemento relacionado
70
+ not_authorized: No estás autorizado/a a realizar esta acción.
71
+ number_of_items:
72
+ one: un/a %{item}
73
+ other: "%{count} %{item}"
74
+ zero: ningún/a %{item}
75
+ oops_nothing_found: Oops! No se ha encontrado nada...
76
+ order:
77
+ higher: Mover arriba
78
+ lower: Mover abajo
79
+ reorder_record: Reordenar registro
80
+ to_bottom: Mover abajo del todo
81
+ to_top: Mover arriba del todo
82
+ per_page: Por página
83
+ prev_page: Página anterior
84
+ records_selected_from_all_pages_html: Todos los registros seleccionados de todas las páginas.
85
+ remove_selection: Quitar la selección
86
+ reset_filters: Reiniciar filtros
87
+ resource_created: Recurso creado
88
+ resource_destroyed: Recurso eliminado
89
+ resource_translations:
90
+ team_members:
91
+ one: miembro del equipo
92
+ other: miembros del equipo
93
+ zero: miembros del equipo
94
+ user:
95
+ one: usuario/a
96
+ other: usuarios/as
97
+ zero: usuarios/as
98
+ resource_updated: Recurso actualizado
99
+ resources: Recursos
100
+ run: Ejecutar
101
+ save: Guardar
102
+ search:
103
+ cancel_button: Cancelar
104
+ placeholder: Buscar
105
+ select_all: Seleccionar todo
106
+ select_all_matching: Seleccionar todas las coincidencias
107
+ select_item: Selecionar elemento
108
+ show_content: Mostrar contenido
109
+ sign_out: Salir
110
+ switch_to_view: Cambiar a la vista %{view_type}
111
+ table_view: Vista en tabla
112
+ tools: Herramientas
113
+ type_to_search: Escribe para buscar.
114
+ unauthorized: No autorizado
115
+ undo: deshacer
116
+ view: Vista
117
+ view_item: ver %{item}
118
+ was_successfully_created: se ha creado con éxito
119
+ was_successfully_updated: se ha actualizado con éxito
120
+ x_items_more:
121
+ one: un elemento más
122
+ other: "%{count} elementos más"
123
+ zero: ningún elemento más
124
+ 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>
125
+ x_records_selected_from_all_pages_html: <span class="font-bold text-gray-700">%{count}</span> registros seleccionados en todas las páginas
126
+ x_records_selected_from_page_html: <span class="font-bold text-gray-700">%{selected}</span> registros seleccionados en esta página
127
+ you_missed_something_check_form: Es posible que hayas pasado algo por alto. Comprueba el formulario.
@@ -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}
@@ -80,6 +81,7 @@ fr:
80
81
  to_top: Déplacer tout en haut
81
82
  per_page: Par page
82
83
  prev_page: Page précédente
84
+ records_selected_from_all_pages_html: tous les éléments sélectionnés de toutes les pages
83
85
  remove_selection: Supprimer la sélection
84
86
  reset_filters: Réinitialiser les filtres
85
87
  resource_created: Ressource créee
@@ -117,4 +119,5 @@ fr:
117
119
  zero: aucun élément supplémentaire
118
120
  x_records_selected_from_a_total_of_x_html: <span class="font-bold text-gray-700">%{selected}</span> enregistrements sélectionnés sur cette page sur un total de <span class="font-bold text-gray-700">%{count}</span>
119
121
  x_records_selected_from_all_pages_html: <span class="font-bold text-gray-700">%{count}</span> enregistrements sélectionnés dans toutes les pages
122
+ x_records_selected_from_page_html: <span class="font-bold text-gray-700">%{selected}</span> éléments sélectionnés de cette page
120
123
  you_missed_something_check_form: Vous avez peut-être oublié quelque chose. Veuillez vérifier le formulaire
@@ -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}
@@ -80,6 +81,7 @@ nb:
80
81
  to_top: Flytt elementet til toppen
81
82
  per_page: Per side
82
83
  prev_page: Forrige side
84
+ records_selected_from_all_pages_html: Alle poster valgt fra alle sider
83
85
  remove_selection: Fjern valg
84
86
  reset_filters: Nullstill filter
85
87
  resource_created: Ressurs generert
@@ -117,4 +119,5 @@ nb:
117
119
  zero: ingen flere elementer
118
120
  x_records_selected_from_a_total_of_x_html: <span class="font-bold text-gray-700">%{selected}</span> poster valgt på denne siden fra totalt <span class="font-bold text-gray-700">%{count}</span>
119
121
  x_records_selected_from_all_pages_html: <span class="font-bold text-gray-700">%{count}</span> poster valgt fra alle sider
122
+ x_records_selected_from_page_html: <span class="font-bold text-gray-700">%{selected}</span> poster valgt på denne siden
120
123
  you_missed_something_check_form: Her mangler du noe. Vennligst sjekk skjemaet.
@@ -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}
@@ -80,6 +81,7 @@ nn:
80
81
  to_top: Flytt elementet til toppen
81
82
  per_page: Per side
82
83
  prev_page: Førre side
84
+ records_selected_from_all_pages_html: Alle poster valgt fra alle sider
83
85
  remove_selection: Fjern val
84
86
  reset_filters: Nullstill filter
85
87
  resource_created: Ressurs generert
@@ -117,4 +119,5 @@ nn:
117
119
  zero: ingen fleire element
118
120
  x_records_selected_from_a_total_of_x_html: <span class="font-bold text-gray-700">%{selected}</span> valde postar på denne sida av totalt <span class="font-bold text-gray-700">%{count}</span>
119
121
  x_records_selected_from_all_pages_html: <span class="font-bold text-gray-700">%{count}</span> valde postar frå alle sider
122
+ x_records_selected_from_page_html: <span class="font-bold text-gray-700">%{selected}</span> poster valgt på denne siden
120
123
  you_missed_something_check_form: Her manglar du noko. Ver venleg og sjekk skjemaet.
@@ -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}
@@ -80,6 +81,7 @@ pt-BR:
80
81
  to_top: Mover registro para cima
81
82
  per_page: Por página
82
83
  prev_page: Página anterior
84
+ records_selected_from_all_pages_html: Todos os registros de todas as páginas selecionados
83
85
  remove_selection: Remover seleção
84
86
  reset_filters: Limpar filtros
85
87
  resource_created: Recurso criado
@@ -117,4 +119,5 @@ pt-BR:
117
119
  zero: mais nenhum item
118
120
  x_records_selected_from_a_total_of_x_html: <span class="font-bold text-gray-700">%{selected}</span> registros selecionados nesta página de um total de <span class="font-bold text-gray-700">%{count}</span>
119
121
  x_records_selected_from_all_pages_html: <span class="font-bold text-gray-700">%{count}</span> registros selecionados de todas as páginas
122
+ x_records_selected_from_page_html: <span class="font-bold text-gray-700">%{selected}</span> registros selecionados nesta página
120
123
  you_missed_something_check_form: Você pode ter esquecido algo. Por favor, cheque o formulário.
@@ -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}
@@ -80,6 +81,7 @@ pt:
80
81
  to_top: Mover recurso para o topo
81
82
  per_page: Por página
82
83
  prev_page: Página anterior
84
+ records_selected_from_all_pages_html: Todos os itens de todas as páginas selecionados
83
85
  remove_selection: Remover seleção
84
86
  reset_filters: Limpar filtros
85
87
  resource_created: Recurso criado
@@ -117,4 +119,5 @@ pt:
117
119
  zero: mais nenhum item
118
120
  x_records_selected_from_a_total_of_x_html: <span class="font-bold text-gray-700">%{selected}</span> itens selecionados nesta página de um total de <span class="font-bold text-gray-700">%{count}</span>
119
121
  x_records_selected_from_all_pages_html: <span class="font-bold text-gray-700">%{count}</span> itens selecionados de todas as páginas
122
+ x_records_selected_from_page_html: <span class="font-bold text-gray-700">%{selected}</span> itens selecionados nesta página
120
123
  you_missed_something_check_form: Pode ter-se esquecido algo. Por favor, verifique o formulário.