avo 3.11.8 → 3.11.9
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 +4 -4
- data/Gemfile +0 -2
- data/Gemfile.lock +1 -1
- data/app/assets/builds/avo.base.css +11683 -0
- data/app/assets/builds/avo.base.js +158260 -0
- data/app/assets/builds/avo.base.js.map +7 -0
- data/app/assets/config/avo_manifest.js +0 -1
- data/app/components/avo/index/resource_grid_component.html.erb +1 -1
- data/app/components/avo/index/resource_map_component.html.erb +1 -1
- data/app/components/avo/index/resource_table_component.rb +1 -1
- data/app/components/avo/index/table_row_component.rb +1 -1
- data/app/components/avo/views/resource_index_component.html.erb +2 -2
- data/app/controllers/avo/base_controller.rb +6 -10
- data/app/helpers/avo/application_helper.rb +3 -8
- data/lib/avo/resources/base.rb +13 -0
- data/lib/avo/svg_finder.rb +1 -1
- data/lib/avo/version.rb +1 -1
- data/public/avo-assets/avo.base.css +18 -38
- metadata +4 -1
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
} do %>
|
|
11
11
|
<% @resources.each_with_index do |resource, index| %>
|
|
12
12
|
<% cache_if Avo.configuration.cache_resources_on_index_view, resource.cache_hash(@parent_record) do %>
|
|
13
|
-
<%= render(Avo::Index::GridItemComponent.new(resource: resource, reflection: @reflection, parent_record: @parent_record, parent_resource: @parent_resource, actions: actions)) %>
|
|
13
|
+
<%= render(resource.resolve_component(Avo::Index::GridItemComponent).new(resource: resource, reflection: @reflection, parent_record: @parent_record, parent_resource: @parent_resource, actions: actions)) %>
|
|
14
14
|
<% end %>
|
|
15
15
|
<% end %>
|
|
16
16
|
<% end %>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
</div>
|
|
6
6
|
<% if render_table? %>
|
|
7
7
|
<div class="overflow-auto <%= table_component_order_class %>">
|
|
8
|
-
<%= render(Avo::Index::ResourceTableComponent.new(resources: @resources, resource: @resource, reflection: @reflection, parent_record: @parent_record, parent_resource: @parent_resource, pagy: @pagy, query: @query)) %>
|
|
8
|
+
<%= render(@resource.resolve_component(Avo::Index::ResourceTableComponent).new(resources: @resources, resource: @resource, reflection: @reflection, parent_record: @parent_record, parent_resource: @parent_resource, pagy: @pagy, query: @query)) %>
|
|
9
9
|
</div>
|
|
10
10
|
<% end %>
|
|
11
11
|
</div>
|
|
@@ -71,7 +71,7 @@ class Avo::Index::ResourceTableComponent < Avo::BaseComponent
|
|
|
71
71
|
header_fields.concat row_fields
|
|
72
72
|
|
|
73
73
|
# Create a TableRowComponent instance for the resource and add it to @table_row_components
|
|
74
|
-
table_row_components << Avo::Index::TableRowComponent.new(
|
|
74
|
+
table_row_components << resource.resolve_component(Avo::Index::TableRowComponent).new(
|
|
75
75
|
resource: resource,
|
|
76
76
|
fields: row_fields,
|
|
77
77
|
reflection: @reflection,
|
|
@@ -11,7 +11,7 @@ class Avo::Index::TableRowComponent < Avo::BaseComponent
|
|
|
11
11
|
prop :parent_resource, _Nilable(Avo::BaseResource)
|
|
12
12
|
prop :actions, _Nilable(_Array(Avo::BaseAction))
|
|
13
13
|
prop :fields, _Nilable(_Array(Avo::Fields::BaseField))
|
|
14
|
-
prop :header_fields, _Nilable(_Array(
|
|
14
|
+
prop :header_fields, _Nilable(_Array(String))
|
|
15
15
|
|
|
16
16
|
def resource_controls_component
|
|
17
17
|
Avo::Index::ResourceControlsComponent.new(
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
<% if view_type.to_sym == :table %>
|
|
60
60
|
<% if @resources.present? %>
|
|
61
61
|
<div class="w-full relative flex-1 flex mt-0">
|
|
62
|
-
<%= render(Avo::Index::ResourceTableComponent.new(resources: @resources, resource: @resource, reflection: @reflection, parent_record: @parent_record, parent_resource: @parent_resource, pagy: @pagy, query: @query, actions: @actions)) %>
|
|
62
|
+
<%= render(@resource.resolve_component(Avo::Index::ResourceTableComponent).new(resources: @resources, resource: @resource, reflection: @reflection, parent_record: @parent_record, parent_resource: @parent_resource, pagy: @pagy, query: @query, actions: @actions)) %>
|
|
63
63
|
</div>
|
|
64
64
|
<% else %>
|
|
65
65
|
<%= helpers.empty_state by_association: params[:related_name].present?, view_type: view_type, add_background: true %>
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
<% if view_type.to_sym == :map %>
|
|
71
71
|
<% if @resources.present? %>
|
|
72
72
|
<div>
|
|
73
|
-
<%= render(Avo::Index::ResourceMapComponent.new(resources: @resources, resource: @resource, reflection: @reflection, parent_record: @parent_record, parent_resource: @parent_resource, pagy: @pagy, query: @query)) %>
|
|
73
|
+
<%= render(@resource.resolve_component(Avo::Index::ResourceMapComponent).new(resources: @resources, resource: @resource, reflection: @reflection, parent_record: @parent_record, parent_resource: @parent_resource, pagy: @pagy, query: @query)) %>
|
|
74
74
|
</div>
|
|
75
75
|
<% else %>
|
|
76
76
|
<%= helpers.empty_state by_association: params[:related_name].present?, view_type: view_type, add_background: true %>
|
|
@@ -581,18 +581,14 @@ module Avo
|
|
|
581
581
|
# Set the view component for the current view
|
|
582
582
|
# It will try to use the custom component if it's set, otherwise it will use the default one
|
|
583
583
|
def set_component_for(view, fallback_view: nil)
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
view: @view
|
|
590
|
-
).handle
|
|
584
|
+
default_component = "Avo::Views::Resource#{(fallback_view || view).to_s.classify}Component"
|
|
585
|
+
|
|
586
|
+
# Search for the custom component by key and by class name:
|
|
587
|
+
custom_component = @resource.custom_components.dig(:"resource_#{view}_component") ||
|
|
588
|
+
@resource.custom_components.dig(default_component)
|
|
591
589
|
|
|
592
590
|
# If the component is not set, use the default one
|
|
593
|
-
|
|
594
|
-
return @component = "Avo::Views::Resource#{(fallback_view || view).to_s.classify}Component".constantize
|
|
595
|
-
end
|
|
591
|
+
return @component = default_component.constantize if custom_component.nil?
|
|
596
592
|
|
|
597
593
|
# If the component is set, try to use it
|
|
598
594
|
@component = custom_component.to_s.safe_constantize
|
|
@@ -3,8 +3,6 @@ module Avo
|
|
|
3
3
|
include ::Pagy::Frontend
|
|
4
4
|
include Avo::ResourcesHelper
|
|
5
5
|
|
|
6
|
-
AVO_CACHED_SVGS = {}
|
|
7
|
-
|
|
8
6
|
def render_license_warning(title: "", message: "", icon: "exclamation")
|
|
9
7
|
render partial: "avo/sidebar/license_warning", locals: {
|
|
10
8
|
title: title,
|
|
@@ -67,12 +65,9 @@ module Avo
|
|
|
67
65
|
|
|
68
66
|
file_name = "#{file_name}.svg" unless file_name.end_with? ".svg"
|
|
69
67
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
# The path shouldn't change between reboots so we can memoize the paths based on the filename.
|
|
74
|
-
def svg_path(file_name)
|
|
75
|
-
AVO_CACHED_SVGS[file_name] ||= Avo::SvgFinder.find_asset(file_name).pathname.to_s
|
|
68
|
+
with_asset_finder(::Avo::SvgFinder) do
|
|
69
|
+
inline_svg file_name, **args
|
|
70
|
+
end
|
|
76
71
|
end
|
|
77
72
|
|
|
78
73
|
def input_classes(extra_classes = "", has_error: false)
|
data/lib/avo/resources/base.rb
CHANGED
|
@@ -619,6 +619,19 @@ module Avo
|
|
|
619
619
|
@record_param ||= @record.persisted? ? @record.to_param : nil
|
|
620
620
|
end
|
|
621
621
|
|
|
622
|
+
def custom_components
|
|
623
|
+
@custom_components ||= Avo::ExecutionContext.new(
|
|
624
|
+
target: components,
|
|
625
|
+
resource: self,
|
|
626
|
+
record: @record,
|
|
627
|
+
view: @view
|
|
628
|
+
).handle.with_indifferent_access
|
|
629
|
+
end
|
|
630
|
+
|
|
631
|
+
def resolve_component(original_component)
|
|
632
|
+
custom_components.dig(original_component.to_s)&.to_s&.safe_constantize || original_component
|
|
633
|
+
end
|
|
634
|
+
|
|
622
635
|
private
|
|
623
636
|
|
|
624
637
|
def flatten_keys(array)
|
data/lib/avo/svg_finder.rb
CHANGED
|
@@ -28,7 +28,7 @@ class Avo::SvgFinder
|
|
|
28
28
|
Avo::Engine.root.join("app", "assets", "svgs", "heroicons", "outline", @filename),
|
|
29
29
|
Avo::Engine.root.join(@filename).to_s,
|
|
30
30
|
# Add all paths from Rails including engines
|
|
31
|
-
*Rails.application.assets
|
|
31
|
+
*Rails.application.config.assets&.paths&.map { |path| File.join(path, @filename) }
|
|
32
32
|
].map(&:to_s).uniq
|
|
33
33
|
end
|
|
34
34
|
|
data/lib/avo/version.rb
CHANGED
|
@@ -7346,10 +7346,6 @@ tag.tagify__tag{
|
|
|
7346
7346
|
bottom:0.25rem
|
|
7347
7347
|
}
|
|
7348
7348
|
|
|
7349
|
-
.bottom-4{
|
|
7350
|
-
bottom:1rem
|
|
7351
|
-
}
|
|
7352
|
-
|
|
7353
7349
|
.bottom-full{
|
|
7354
7350
|
bottom:100%
|
|
7355
7351
|
}
|
|
@@ -7394,10 +7390,6 @@ tag.tagify__tag{
|
|
|
7394
7390
|
right:0.75rem
|
|
7395
7391
|
}
|
|
7396
7392
|
|
|
7397
|
-
.right-4{
|
|
7398
|
-
right:1rem
|
|
7399
|
-
}
|
|
7400
|
-
|
|
7401
7393
|
.start-1{
|
|
7402
7394
|
inset-inline-start:0.25rem
|
|
7403
7395
|
}
|
|
@@ -7654,6 +7646,10 @@ tag.tagify__tag{
|
|
|
7654
7646
|
margin-top:-1rem
|
|
7655
7647
|
}
|
|
7656
7648
|
|
|
7649
|
+
.-mt-6{
|
|
7650
|
+
margin-top:-1.5rem
|
|
7651
|
+
}
|
|
7652
|
+
|
|
7657
7653
|
.-mt-9{
|
|
7658
7654
|
margin-top:-2.25rem
|
|
7659
7655
|
}
|
|
@@ -7702,10 +7698,6 @@ tag.tagify__tag{
|
|
|
7702
7698
|
margin-left:2.5rem
|
|
7703
7699
|
}
|
|
7704
7700
|
|
|
7705
|
-
.ml-12{
|
|
7706
|
-
margin-left:3rem
|
|
7707
|
-
}
|
|
7708
|
-
|
|
7709
7701
|
.ml-2{
|
|
7710
7702
|
margin-left:0.5rem
|
|
7711
7703
|
}
|
|
@@ -7722,6 +7714,10 @@ tag.tagify__tag{
|
|
|
7722
7714
|
margin-left:1.5rem
|
|
7723
7715
|
}
|
|
7724
7716
|
|
|
7717
|
+
.ml-8{
|
|
7718
|
+
margin-left:2rem
|
|
7719
|
+
}
|
|
7720
|
+
|
|
7725
7721
|
.ml-auto{
|
|
7726
7722
|
margin-left:auto
|
|
7727
7723
|
}
|
|
@@ -7913,6 +7909,16 @@ tag.tagify__tag{
|
|
|
7913
7909
|
height:6rem
|
|
7914
7910
|
}
|
|
7915
7911
|
|
|
7912
|
+
.size-36{
|
|
7913
|
+
width:9rem;
|
|
7914
|
+
height:9rem
|
|
7915
|
+
}
|
|
7916
|
+
|
|
7917
|
+
.size-48{
|
|
7918
|
+
width:12rem;
|
|
7919
|
+
height:12rem
|
|
7920
|
+
}
|
|
7921
|
+
|
|
7916
7922
|
.size-6{
|
|
7917
7923
|
width:1.5rem;
|
|
7918
7924
|
height:1.5rem
|
|
@@ -7966,10 +7972,6 @@ tag.tagify__tag{
|
|
|
7966
7972
|
height:1.5rem
|
|
7967
7973
|
}
|
|
7968
7974
|
|
|
7969
|
-
.h-60{
|
|
7970
|
-
height:15rem
|
|
7971
|
-
}
|
|
7972
|
-
|
|
7973
7975
|
.h-64{
|
|
7974
7976
|
height:16rem
|
|
7975
7977
|
}
|
|
@@ -8066,10 +8068,6 @@ tag.tagify__tag{
|
|
|
8066
8068
|
min-height:8rem
|
|
8067
8069
|
}
|
|
8068
8070
|
|
|
8069
|
-
.min-h-dvh{
|
|
8070
|
-
min-height:100dvh
|
|
8071
|
-
}
|
|
8072
|
-
|
|
8073
8071
|
.min-h-full{
|
|
8074
8072
|
min-height:100%
|
|
8075
8073
|
}
|
|
@@ -8432,10 +8430,6 @@ tag.tagify__tag{
|
|
|
8432
8430
|
flex-direction:column
|
|
8433
8431
|
}
|
|
8434
8432
|
|
|
8435
|
-
.flex-col-reverse{
|
|
8436
|
-
flex-direction:column-reverse
|
|
8437
|
-
}
|
|
8438
|
-
|
|
8439
8433
|
.flex-wrap{
|
|
8440
8434
|
flex-wrap:wrap
|
|
8441
8435
|
}
|
|
@@ -9418,10 +9412,6 @@ tag.tagify__tag{
|
|
|
9418
9412
|
padding-bottom:2rem
|
|
9419
9413
|
}
|
|
9420
9414
|
|
|
9421
|
-
.pe-1{
|
|
9422
|
-
padding-inline-end:0.25rem
|
|
9423
|
-
}
|
|
9424
|
-
|
|
9425
9415
|
.pl-1{
|
|
9426
9416
|
padding-left:0.25rem
|
|
9427
9417
|
}
|
|
@@ -9446,10 +9436,6 @@ tag.tagify__tag{
|
|
|
9446
9436
|
padding-top:0.125rem
|
|
9447
9437
|
}
|
|
9448
9438
|
|
|
9449
|
-
.pt-1{
|
|
9450
|
-
padding-top:0.25rem
|
|
9451
|
-
}
|
|
9452
|
-
|
|
9453
9439
|
.pt-16{
|
|
9454
9440
|
padding-top:4rem
|
|
9455
9441
|
}
|
|
@@ -9928,12 +9914,6 @@ tag.tagify__tag{
|
|
|
9928
9914
|
transition-duration:150ms
|
|
9929
9915
|
}
|
|
9930
9916
|
|
|
9931
|
-
.transition-colors{
|
|
9932
|
-
transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;
|
|
9933
|
-
transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);
|
|
9934
|
-
transition-duration:150ms
|
|
9935
|
-
}
|
|
9936
|
-
|
|
9937
9917
|
.transition-opacity{
|
|
9938
9918
|
transition-property:opacity;
|
|
9939
9919
|
transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);
|
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.11.
|
|
4
|
+
version: 3.11.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adrian Marin
|
|
@@ -222,6 +222,9 @@ files:
|
|
|
222
222
|
- Gemfile.lock
|
|
223
223
|
- README.md
|
|
224
224
|
- Rakefile
|
|
225
|
+
- app/assets/builds/avo.base.css
|
|
226
|
+
- app/assets/builds/avo.base.js
|
|
227
|
+
- app/assets/builds/avo.base.js.map
|
|
225
228
|
- app/assets/config/avo_manifest.js
|
|
226
229
|
- app/assets/stylesheets/avo.base.css
|
|
227
230
|
- app/assets/stylesheets/css/active-storage.css
|