avo 3.5.7 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 69bdf3209c63771bace6e51362f1d569640f62f06e997dd0b5d8c2a605619846
4
- data.tar.gz: d78d3c50bab5be7bac39e2f1ec5ba99db8f6aaf8c563cf9210445f92afa18678
3
+ metadata.gz: b24b80baf28fe7848e431079b17b9384ad5f4369e65a4c81bce9f1af68776d1f
4
+ data.tar.gz: '08b79a4f7fe3c462937099421fc4d90c5b02ce54a6903eaa5cf5b525e56d9f8e'
5
5
  SHA512:
6
- metadata.gz: 8c740f0a1453120877a435fa43d137a877d2e023d9514cda7f4a09080cec7eb7ec2e1d47067246bf2a8a0820a05c4c87be3af22e64711b00bfc1c4e4cd104d24
7
- data.tar.gz: 3a4c45b65648541f82cd350bf5fae3275041c82383967b99824f4952428f7b2946698057a7d99c77071ba8c57f0609f534c55fb4137643be1b020bd8f8c904bb
6
+ metadata.gz: 71eaebcef5037f4ad99a49c8da1231c40e9aee6279cffc7083ba9f4f16ef344ccfeac970bbbe5358dc576703cb1196180338c18b0b788c1c50ab5c22f09ddc8a
7
+ data.tar.gz: c5b562841cc86aa1063e393b59a5145018808dbdb524e8e5e5c0e38b99a32893f9349b2cd286c2cded8c237379b6f065bc1b42d669bc01799d58d7aeaeeeb4b3
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- avo (3.5.7)
4
+ avo (3.6.0)
5
5
  actionview (>= 6.1)
6
6
  active_link_to
7
7
  activerecord (>= 6.1)
@@ -8222,10 +8222,6 @@ tag.tagify__tag{
8222
8222
  border-top-width:0px
8223
8223
  }
8224
8224
 
8225
- .border-solid{
8226
- border-style:solid
8227
- }
8228
-
8229
8225
  .border-dashed{
8230
8226
  border-style:dashed
8231
8227
  }
@@ -1,5 +1,5 @@
1
1
  <% if @field.value %>
2
- <turbo-frame id="<%= @field.turbo_frame %>" src="<%= @field.frame_url %>" loading=<%= turbo_frame_loading %> target="_top" class="block">
2
+ <turbo-frame id="<%= @field.turbo_frame %>" src="<%= @field.frame_url %>" loading=<%= turbo_frame_loading %> target="_top" class="block">
3
3
  <%= render(Avo::LoadingComponent.new(title: @field.name)) %>
4
4
  </turbo-frame>
5
5
  <% else %>
@@ -10,7 +10,7 @@ class Avo::Fields::HasOneField::ShowComponent < Avo::Fields::ShowComponent
10
10
  if @field.present?
11
11
  reflection_resource = @field.target_resource
12
12
  if reflection_resource.present? && @resource.present?
13
- method_name = "attach_#{@field.id}?".to_sym
13
+ method_name = :"attach_#{@field.id}?"
14
14
 
15
15
  if @resource.authorization.has_method?(method_name, raise_exception: false)
16
16
  policy_result = @resource.authorization.authorize_action(method_name, raise_exception: false)
@@ -1,3 +1,3 @@
1
- <%= field_wrapper **field_wrapper_args do %>
2
- <%= @field.label %>
1
+ <%= field_wrapper **field_wrapper_args.merge(dash_if_blank: false) do %>
2
+ <%= @field.value.nil? ? "—" : @field.label %>
3
3
  <% end %>
@@ -135,9 +135,6 @@ class Avo::Views::ResourceIndexComponent < Avo::ResourceComponent
135
135
 
136
136
  def authorized_to_search?
137
137
  # Hide the search if the authorization prevents it
138
- return true unless resource.authorization.respond_to?(:has_action_method?)
139
- return false unless resource.authorization.has_action_method?("search")
140
-
141
138
  resource.authorization.authorize_action("search", raise_exception: false)
142
139
  end
143
140
 
@@ -12,6 +12,8 @@ module Avo
12
12
  before_action :set_action, only: [:show, :handle]
13
13
  before_action :verify_authorization, only: [:show, :handle]
14
14
 
15
+ layout "avo/blank"
16
+
15
17
  def show
16
18
  # Se the view to :new so the default value gets prefilled
17
19
  @view = Avo::ViewInquirer.new("new")
@@ -51,6 +51,10 @@ module Avo
51
51
  super
52
52
  end
53
53
 
54
+ def hello
55
+ puts "Nobody tested me :("
56
+ end
57
+
54
58
  private
55
59
 
56
60
  # Get the pluralized resource name for this request
@@ -142,7 +146,13 @@ module Avo
142
146
  end
143
147
 
144
148
  def set_record
145
- @record = @resource.find_record(params[:id], query: model_scope, params: params)
149
+ id = if @resource.model_class.primary_key.is_a?(Array) && params.respond_to?(:extract_value)
150
+ params.extract_value(:id)
151
+ else
152
+ params[:id]
153
+ end
154
+
155
+ @record = @resource.find_record(id, query: model_scope, params:)
146
156
  @resource.hydrate(record: @record)
147
157
  end
148
158
 
@@ -16,6 +16,8 @@ module Avo
16
16
  before_action :authorize_attach_action, only: :new
17
17
  before_action :authorize_detach_action, only: :destroy
18
18
 
19
+ layout "avo/blank"
20
+
19
21
  def index
20
22
  @parent_resource = @resource.dup
21
23
  @resource = @related_resource
@@ -63,7 +65,7 @@ module Avo
63
65
  if reflection_class == "HasManyReflection"
64
66
  @record.send(association_name) << @attachment_record
65
67
  else
66
- @record.send("#{association_name}=", @attachment_record)
68
+ @record.send(:"#{association_name}=", @attachment_record)
67
69
  end
68
70
 
69
71
  respond_to do |format|
@@ -516,7 +516,7 @@ module Avo
516
516
  redirect_path_from_resource_option(:after_update_path) || resource_view_response_path
517
517
  end
518
518
 
519
- # Needs a different name, otwherwise, in some places, this can be called instead helpers.resource_view_path
519
+ # Requires a different/special name, otherwise, in some places, this can be called instead helpers.resource_view_path
520
520
  def resource_view_response_path
521
521
  helpers.resource_view_path(record: @record, resource: @resource)
522
522
  end
@@ -81,7 +81,7 @@ module Avo
81
81
  rescue
82
82
  end
83
83
 
84
- avo.resources_associations_index_path(parent_record.model_name.route_key, record.id, **existing_params, **args)
84
+ avo.resources_associations_index_path(parent_record.model_name.route_key, record.to_param, **existing_params, **args)
85
85
  end
86
86
 
87
87
  def resource_view_path(**args)
@@ -41,7 +41,7 @@
41
41
  </div>
42
42
 
43
43
  <% c.with_controls do %>
44
- <%= a_button 'data-action': 'click->modal#close', size: :sm, style: :outline, color: :gray do %>
44
+ <%= a_button 'data-action': 'click->modal#close', type: :button, size: :sm, style: :outline, color: :gray do %>
45
45
  <%= t('avo.cancel') %>
46
46
  <% end %>
47
47
  <%= a_button type: :submit, style: :primary, color: :green, size: :sm do %>
@@ -0,0 +1,9 @@
1
+ <%= turbo_frame_tag :alerts, class: "fixed inset-0 bottom-0 flex flex-col space-y-4 items-end justify-right px-4 py-6 sm:p-6 justify-end z-[100] pointer-events-none" do %>
2
+ <%= render Avo::FlashAlertsComponent.new flashes: flash %>
3
+ <% # In case we have other general error messages %>
4
+ <% if @errors.present? %>
5
+ <% @errors.each do |message| %>
6
+ <%= render Avo::AlertComponent.new :error, message %>
7
+ <% end %>
8
+ <% end %>
9
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= turbo_frame_tag 'attach_modal' %>
@@ -51,17 +51,9 @@
51
51
  </div>
52
52
  </div>
53
53
  <%= turbo_frame_tag Avo::ACTIONS_TURBO_FRAME_ID, data: {turbo_temporary: 1} %>
54
- <%= turbo_frame_tag 'attach_modal' %>
55
- <%= turbo_frame_tag 'alerts', class: "fixed inset-0 bottom-0 flex flex-col space-y-4 items-end justify-right px-4 py-6 sm:p-6 justify-end z-[100] pointer-events-none" do %>
56
- <%= render Avo::FlashAlertsComponent.new flashes: flash %>
57
- <% # In case we have other general error messages %>
58
- <% if @errors.present? %>
59
- <% @errors.each do |message| %>
60
- <%= render Avo::AlertComponent.new :error, message %>
61
- <% end %>
62
- <% end %>
63
- <% end %>
64
- <%= render partial: "avo/partials/scripts" %>
54
+ <%= render partial: 'avo/partials/attach_modal' %>
55
+ <%= render partial: 'avo/partials/alerts' %>
56
+ <%= render partial: 'avo/partials/scripts' %>
65
57
  <!-- Avo version: <%= Avo::VERSION %> -->
66
58
  <!-- Environment: <%= Rails.env %> -->
67
59
  <!-- License ID: <%= Avo.license.id %> -->
@@ -3,5 +3,6 @@
3
3
  <html>
4
4
  <body>
5
5
  <%= yield.force_encoding('UTF-8') %>
6
+ <%= render partial: 'avo/partials/alerts' %>
6
7
  </body>
7
8
  </html>
@@ -33,7 +33,7 @@ module Avo
33
33
  related_record = related_resource.find_record value
34
34
  end
35
35
 
36
- model.public_send("#{key}=", related_record)
36
+ model.public_send(:"#{key}=", related_record)
37
37
 
38
38
  model
39
39
  end
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "3.5.7" unless const_defined?(:VERSION)
2
+ VERSION = "3.6.0" unless const_defined?(:VERSION)
3
3
  end
@@ -0,0 +1,20 @@
1
+ module Generators
2
+ module Avo
3
+ module Concerns
4
+ module OverrideController
5
+ extend ActiveSupport::Concern
6
+
7
+ def override_controller?
8
+ return false unless controller_name.in? controllers_list
9
+
10
+ say("Avo uses #{controller_class} internally, overriding it would cause malfunctions.", :red)
11
+ true
12
+ end
13
+
14
+ def controllers_list
15
+ Dir["app/controllers/avo/*.rb"].map { |file_path| File.basename(file_path, ".rb") }
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,16 +1,20 @@
1
1
  require_relative "named_base_generator"
2
2
  require_relative "concerns/parent_controller"
3
+ require_relative "concerns/override_controller"
3
4
 
4
5
  module Generators
5
6
  module Avo
6
7
  class ControllerGenerator < NamedBaseGenerator
7
- include Generators::Avo::Concerns::ParentController
8
+ include Concerns::ParentController
9
+ include Concerns::OverrideController
8
10
 
9
11
  source_root File.expand_path("templates", __dir__)
10
12
 
11
13
  namespace "avo:controller"
12
14
 
13
15
  def create
16
+ return if override_controller?
17
+
14
18
  template "resource/controller.tt", "app/controllers/avo/#{controller_name}.rb"
15
19
  end
16
20
 
@@ -1,10 +1,12 @@
1
1
  require_relative "named_base_generator"
2
2
  require_relative "concerns/parent_controller"
3
+ require_relative "concerns/override_controller"
3
4
 
4
5
  module Generators
5
6
  module Avo
6
7
  class ResourceGenerator < NamedBaseGenerator
7
- include Generators::Avo::Concerns::ParentController
8
+ include Concerns::ParentController
9
+ include Concerns::OverrideController
8
10
 
9
11
  source_root File.expand_path("templates", __dir__)
10
12
 
@@ -16,8 +18,10 @@ module Generators
16
18
  required: false
17
19
 
18
20
  def create
21
+ return if override_controller?
22
+
19
23
  template "resource/resource.tt", "app/avo/resources/#{resource_name}.rb"
20
- template "resource/controller.tt", "app/controllers/avo/#{controller_name}.rb"
24
+ invoke "avo:controller", [resource_name], options
21
25
  end
22
26
 
23
27
  def resource_class
@@ -4,7 +4,7 @@ module Rails
4
4
  module Generators
5
5
  class AvoResourceGenerator < ::Rails::Generators::Base
6
6
  def invoke_avo_command
7
- invoke "avo:resource", @args, {from_model_generator: true}
7
+ invoke "avo:resource", @args, {from_model_generator: true}.merge(options)
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avo
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.7
4
+ version: 3.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Marin
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-04-04 00:00:00.000000000 Z
13
+ date: 2024-04-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -2126,6 +2126,8 @@ files:
2126
2126
  - app/views/avo/home/_resources.html.erb
2127
2127
  - app/views/avo/home/failed_to_load.html.erb
2128
2128
  - app/views/avo/home/index.html.erb
2129
+ - app/views/avo/partials/_alerts.html.erb
2130
+ - app/views/avo/partials/_attach_modal.html.erb
2129
2131
  - app/views/avo/partials/_branding.html.erb
2130
2132
  - app/views/avo/partials/_custom_tools_alert.html.erb
2131
2133
  - app/views/avo/partials/_footer.html.erb
@@ -2309,6 +2311,7 @@ files:
2309
2311
  - lib/generators/avo/action_generator.rb
2310
2312
  - lib/generators/avo/base_generator.rb
2311
2313
  - lib/generators/avo/card_generator.rb
2314
+ - lib/generators/avo/concerns/override_controller.rb
2312
2315
  - lib/generators/avo/concerns/parent_controller.rb
2313
2316
  - lib/generators/avo/controller_generator.rb
2314
2317
  - lib/generators/avo/dashboard_generator.rb