avo 0.5.0.beta2 → 0.5.0.beta7
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.
- checksums.yaml +4 -4
- data/Gemfile +4 -4
- data/Gemfile.lock +1 -5
- data/app/components/avo/index/grid_item_component.html.erb +8 -8
- data/app/components/avo/index/grid_item_component.rb +6 -12
- data/app/components/avo/index/resource_grid_component.html.erb +1 -1
- data/app/components/avo/index/resource_table_component.html.erb +2 -2
- data/app/components/avo/index/table_row_component.html.erb +1 -1
- data/app/controllers/avo/actions_controller.rb +2 -5
- data/app/controllers/avo/application_controller.rb +12 -4
- data/app/controllers/avo/base_controller.rb +1 -9
- data/app/controllers/avo/relations_controller.rb +1 -1
- data/app/controllers/avo/search_controller.rb +1 -1
- data/app/frontend/packs/application.js +1 -1
- data/app/views/avo/base/_actions.html.erb +0 -6
- data/app/views/avo/base/_boolean_filter.html.erb +1 -1
- data/app/views/avo/base/_filters.html.erb +3 -11
- data/app/views/avo/base/_select_filter.html.erb +1 -1
- data/app/views/avo/home/_resources.html.erb +0 -1
- data/app/views/avo/partials/_table_header.html.erb +1 -1
- data/app/views/layouts/avo/_filter_wrapper.html.erb +1 -1
- data/app/views/layouts/avo/application.html.erb +5 -0
- data/avo.gemspec +0 -1
- data/config/webpacker.yml +10 -23
- data/lib/avo.rb +5 -16
- data/lib/avo/app.rb +204 -0
- data/lib/avo/base_action.rb +123 -0
- data/lib/avo/base_resource.rb +326 -0
- data/lib/avo/configuration.rb +8 -0
- data/lib/avo/engine.rb +12 -31
- data/lib/avo/{app/fields → fields}/badge_field.rb +1 -1
- data/lib/avo/{app/fields/field.rb → fields/base_field.rb} +3 -7
- data/lib/avo/{app/fields/belongs_to.rb → fields/belongs_to_field.rb} +3 -3
- data/lib/avo/{app/fields → fields}/boolean_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/boolean_group_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/code_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/country_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/currency_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/date_field.rb +0 -2
- data/lib/avo/{app/fields → fields}/date_time_field.rb +0 -2
- data/lib/avo/{app/fields → fields}/external_image_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/field_extensions/has_field_name.rb +0 -0
- data/lib/avo/{app/fields → fields}/field_extensions/visible_in_different_views.rb +1 -1
- data/lib/avo/{app/fields → fields}/file_field.rb +1 -2
- data/lib/avo/{app/fields → fields}/files_field.rb +1 -2
- data/lib/avo/{app/fields → fields}/gravatar_field.rb +1 -1
- data/lib/avo/{app/fields/has_and_belongs_to_many.rb → fields/has_and_belongs_to_many_field.rb} +1 -1
- data/lib/avo/{app/fields/has_many.rb → fields/has_many_field.rb} +1 -1
- data/lib/avo/{app/fields/has_one.rb → fields/has_one_field.rb} +1 -1
- data/lib/avo/{app/fields → fields}/heading_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/hidden_field.rb +0 -2
- data/lib/avo/{app/fields → fields}/id_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/key_value_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/markdown_field.rb +1 -3
- data/lib/avo/{app/fields → fields}/number_field.rb +0 -2
- data/lib/avo/{app/fields → fields}/password_field.rb +0 -2
- data/lib/avo/{app/fields → fields}/select_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/status_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/text_field.rb +1 -1
- data/lib/avo/{app/fields → fields}/textarea_field.rb +0 -2
- data/lib/avo/{app/fields → fields}/trix_field.rb +1 -3
- data/lib/avo/filters/base_filter.rb +20 -0
- data/lib/avo/filters/boolean_filter.rb +7 -0
- data/lib/avo/filters/select_filter.rb +7 -0
- data/lib/avo/{app/grid_fields → grid_fields}/body_field.rb +0 -2
- data/lib/avo/{app/grid_fields → grid_fields}/grid_field.rb +0 -0
- data/lib/avo/{app/grid_fields → grid_fields}/preview_field.rb +0 -2
- data/lib/avo/{app/grid_fields → grid_fields}/title_field.rb +0 -2
- data/lib/avo/licensing/community_license.rb +6 -0
- data/lib/avo/licensing/h_q.rb +88 -0
- data/lib/avo/licensing/license.rb +50 -0
- data/lib/avo/licensing/license_manager.rb +22 -0
- data/lib/avo/licensing/null_license.rb +14 -0
- data/lib/avo/licensing/pro_license.rb +11 -0
- data/lib/avo/loaders/actions_loader.rb +6 -0
- data/lib/avo/loaders/fields_loader.rb +27 -0
- data/lib/avo/loaders/filters_loader.rb +6 -0
- data/lib/avo/loaders/loader.rb +15 -0
- data/lib/avo/services/authorization_service.rb +93 -0
- data/lib/avo/services/panel_service.rb +27 -0
- data/lib/avo/{app/tools_manager.rb → tools_manager.rb} +0 -0
- data/lib/avo/version.rb +1 -1
- data/lib/generators/avo/action_generator.rb +11 -5
- data/lib/generators/avo/controller_generator.rb +14 -8
- data/lib/generators/avo/filter_generator.rb +14 -8
- data/lib/generators/avo/install_generator.rb +14 -10
- data/lib/generators/avo/locales_generator.rb +11 -7
- data/lib/generators/avo/partials_generator.rb +11 -5
- data/lib/generators/avo/resource_generator.rb +33 -15
- data/lib/generators/avo/templates/{action.rb → action.tt} +2 -4
- data/lib/generators/avo/templates/filters/boolean_filter.tt +11 -0
- data/lib/generators/avo/templates/filters/select_filter.tt +11 -0
- data/lib/generators/avo/templates/initializer/{avo.rb → avo.tt} +6 -0
- data/lib/generators/avo/templates/resource/controller.tt +2 -0
- data/lib/generators/avo/templates/resource/resource.tt +17 -0
- data/public/avo-packs/css/{application-3598cfbb.css → application-c75ac28c.css} +1 -1
- data/public/avo-packs/css/application-c75ac28c.css.br +0 -0
- data/public/avo-packs/css/{application-3598cfbb.css.gz → application-c75ac28c.css.gz} +0 -0
- data/public/avo-packs/js/{application-6ba2bd1bca05d69b96e0.js → application-8849c6e2c8f75d55c666.js} +3 -3
- data/public/avo-packs/js/{application-6ba2bd1bca05d69b96e0.js.LICENSE.txt → application-8849c6e2c8f75d55c666.js.LICENSE.txt} +0 -0
- data/public/avo-packs/js/application-8849c6e2c8f75d55c666.js.br +0 -0
- data/public/avo-packs/js/application-8849c6e2c8f75d55c666.js.gz +0 -0
- data/public/avo-packs/js/{application-6ba2bd1bca05d69b96e0.js.map → application-8849c6e2c8f75d55c666.js.map} +1 -1
- data/public/avo-packs/js/application-8849c6e2c8f75d55c666.js.map.br +0 -0
- data/public/avo-packs/js/{application-6ba2bd1bca05d69b96e0.js.map.gz → application-8849c6e2c8f75d55c666.js.map.gz} +0 -0
- data/public/avo-packs/manifest.json +6 -6
- data/public/avo-packs/manifest.json.br +0 -0
- data/public/avo-packs/manifest.json.gz +0 -0
- metadata +72 -87
- data/config/webpacker_packed.yml +0 -86
- data/lib/avo/app/action.rb +0 -145
- data/lib/avo/app/actions_loader.rb +0 -11
- data/lib/avo/app/app.rb +0 -181
- data/lib/avo/app/fields_loader.rb +0 -29
- data/lib/avo/app/filter.rb +0 -23
- data/lib/avo/app/filters/boolean_filter.rb +0 -13
- data/lib/avo/app/filters/select_filter.rb +0 -13
- data/lib/avo/app/licensing/community_license.rb +0 -4
- data/lib/avo/app/licensing/hq.rb +0 -86
- data/lib/avo/app/licensing/license.rb +0 -48
- data/lib/avo/app/licensing/license_manager.rb +0 -25
- data/lib/avo/app/licensing/null_license.rb +0 -12
- data/lib/avo/app/licensing/pro_license.rb +0 -9
- data/lib/avo/app/resource.rb +0 -291
- data/lib/avo/app/resource_grid_fields.rb +0 -30
- data/lib/avo/app/services/authorization_service.rb +0 -110
- data/lib/avo/app/services/panel_service.rb +0 -25
- data/lib/avo/app/tool.rb +0 -5
- data/lib/generators/avo/templates/filters/boolean_filter.rb +0 -17
- data/lib/generators/avo/templates/filters/select_filter.rb +0 -17
- data/lib/generators/avo/templates/resource/%plural_name%_controller.tt +0 -2
- data/lib/generators/avo/templates/resource/%singular_name%.tt +0 -20
- data/public/avo-packs/css/application-3598cfbb.css.br +0 -0
- data/public/avo-packs/js/application-6ba2bd1bca05d69b96e0.js.br +0 -0
- data/public/avo-packs/js/application-6ba2bd1bca05d69b96e0.js.gz +0 -0
- data/public/avo-packs/js/application-6ba2bd1bca05d69b96e0.js.map.br +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48ae6c7207084645f7a7a14a462ebc7161f94801e100054d53f48722f758f9c2
|
4
|
+
data.tar.gz: dcc5caabc807328ddd1c52c640d446d88d84c58f786b693d59455f1e7d251744
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '038536c5cc11eeae399c9cbb59d366868bb3affe39592075c8852d65df49f1a362917a9e96861c804e807a6ed0e2cb39932e5bb82cb04d54b9830301a44b7056'
|
7
|
+
data.tar.gz: b9d16aa4a175c5a43a0ec24059e4715febc755cea5b28be601b0b9fb22f9414881ec170b6ad9e1dbe2e51a77d6b8d5cae7e620d8d1d7dc95c4c01c988f9f09ca
|
data/Gemfile
CHANGED
@@ -78,7 +78,6 @@ group :development do
|
|
78
78
|
# Release helper
|
79
79
|
gem 'bump', require: false
|
80
80
|
gem 'gem-release', require: false
|
81
|
-
gem 'faker', require: false
|
82
81
|
|
83
82
|
# gem 'rack-mini-profiler'
|
84
83
|
# gem 'memory_profiler'
|
@@ -89,6 +88,10 @@ group :development do
|
|
89
88
|
# gem 'pry-rails'
|
90
89
|
end
|
91
90
|
|
91
|
+
group :development, :test do
|
92
|
+
gem 'faker', require: false
|
93
|
+
end
|
94
|
+
|
92
95
|
group :test do
|
93
96
|
gem 'rspec-rails', '~> 4.0.0'
|
94
97
|
gem 'rails-controller-testing'
|
@@ -97,7 +100,6 @@ group :test do
|
|
97
100
|
gem 'selenium-webdriver'
|
98
101
|
# Easy installation and use of web drivers to run system tests with browsers
|
99
102
|
gem 'webdrivers'
|
100
|
-
gem 'faker'
|
101
103
|
gem 'fuubar'
|
102
104
|
gem 'simplecov', require: false
|
103
105
|
gem 'simplecov-cobertura'
|
@@ -116,8 +118,6 @@ gem 'httparty'
|
|
116
118
|
|
117
119
|
gem 'iso'
|
118
120
|
|
119
|
-
gem 'i18n-js'
|
120
|
-
|
121
121
|
gem 'hotwire-rails'
|
122
122
|
|
123
123
|
gem 'active_link_to'
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
avo (0.5.0.
|
4
|
+
avo (0.5.0.beta7)
|
5
5
|
active_link_to
|
6
6
|
countries
|
7
7
|
hotwire-rails
|
8
8
|
httparty
|
9
|
-
i18n-js
|
10
9
|
image_processing
|
11
10
|
inline_svg
|
12
11
|
pagy
|
@@ -144,8 +143,6 @@ GEM
|
|
144
143
|
multi_xml (>= 0.5.2)
|
145
144
|
i18n (1.8.9)
|
146
145
|
concurrent-ruby (~> 1.0)
|
147
|
-
i18n-js (3.8.0)
|
148
|
-
i18n (>= 0.6.6)
|
149
146
|
i18n_data (0.10.0)
|
150
147
|
image_processing (1.12.1)
|
151
148
|
mini_magick (>= 4.9.5, < 5)
|
@@ -368,7 +365,6 @@ DEPENDENCIES
|
|
368
365
|
gem-release
|
369
366
|
hotwire-rails
|
370
367
|
httparty
|
371
|
-
i18n-js
|
372
368
|
image_processing (~> 1.2)
|
373
369
|
inline_svg
|
374
370
|
iso
|
@@ -4,19 +4,19 @@
|
|
4
4
|
<div class="relative w-full pb-3/4 rounded-t-xl overflow-hidden">
|
5
5
|
<%== item_selector_input floating: true, size: :lg %>
|
6
6
|
|
7
|
-
<% if
|
8
|
-
<%= link_to_if
|
9
|
-
<% elsif
|
10
|
-
<% if
|
11
|
-
<%= link_to_if
|
7
|
+
<% if cover.respond_to? :to_image %>
|
8
|
+
<%= link_to_if cover.link_to_resource, image_tag(cover.to_image, class: 'absolute h-full w-full object-cover'), helpers.resource_path(@resource.model), class: 'absolute h-full w-full object-cover', title: title.value %>
|
9
|
+
<% elsif cover.type == 'file_field' %>
|
10
|
+
<% if cover.value.attached? && cover.value.representable? %>
|
11
|
+
<%= link_to_if cover.link_to_resource, image_tag(cover.variant(resize_to_limit: [480, 480]), class: 'absolute h-full w-full object-cover'), helpers.resource_path(@resource.model), class: 'absolute h-full w-full object-cover', title: title.value %>
|
12
12
|
<% else %>
|
13
13
|
<div class="absolute bg-gray-100 w-full h-full">
|
14
14
|
<%= helpers.svg 'avocado', class: 'relative transform -translate-x-1/2 -translate-y-1/2 h-20 text-gray-400 inset-auto top-1/2 left-1/2' %>
|
15
15
|
</div>
|
16
16
|
<% end %>
|
17
17
|
<% else %>
|
18
|
-
<% if
|
19
|
-
<%= link_to_if
|
18
|
+
<% if cover.value.present? %>
|
19
|
+
<%= link_to_if cover.link_to_resource, image_tag(cover.value, class: 'absolute h-full w-full object-cover'), helpers.resource_path(@resource.model), class: 'absolute h-full w-full object-cover', title: title.value %>
|
20
20
|
<% else %>
|
21
21
|
<div class="absolute bg-gray-100 w-full h-full">
|
22
22
|
<%= helpers.svg 'avocado', class: 'relative transform -translate-x-1/2 -translate-y-1/2 h-20 text-gray-400 inset-auto top-1/2 left-1/2' %>
|
@@ -27,7 +27,7 @@
|
|
27
27
|
<div class="grid grid-cols-1 place-content-between p-4 h-full">
|
28
28
|
<div class="mb-4">
|
29
29
|
<div class="grid font-semibold leading-tight text-lg mb-2">
|
30
|
-
<%= link_to_if
|
30
|
+
<%= link_to_if title.link_to_resource, title.value, helpers.resource_path(@resource.model) if title.present? %>
|
31
31
|
</div>
|
32
32
|
<div class="text-sm break-words">
|
33
33
|
<%= body.value if body.present? %>
|
@@ -3,29 +3,23 @@
|
|
3
3
|
class Avo::Index::GridItemComponent < ViewComponent::Base
|
4
4
|
include Avo::ResourcesHelper
|
5
5
|
|
6
|
-
def initialize(resource:
|
6
|
+
def initialize(resource: nil, reflection: nil, parent_model: nil)
|
7
7
|
@resource = resource
|
8
8
|
@reflection = reflection
|
9
|
-
@grid_fields = resource.
|
9
|
+
@grid_fields = resource.get_grid_fields
|
10
10
|
@parent_model = parent_model
|
11
11
|
end
|
12
12
|
|
13
13
|
private
|
14
|
-
def
|
15
|
-
@grid_fields.
|
16
|
-
field.grid_position == :preview
|
17
|
-
end
|
14
|
+
def cover
|
15
|
+
@grid_fields[:cover].first
|
18
16
|
end
|
19
17
|
|
20
18
|
def title
|
21
|
-
@grid_fields.
|
22
|
-
field.grid_position == :title
|
23
|
-
end
|
19
|
+
@grid_fields[:title].first
|
24
20
|
end
|
25
21
|
|
26
22
|
def body
|
27
|
-
@grid_fields.
|
28
|
-
field.grid_position == :body
|
29
|
-
end
|
23
|
+
@grid_fields[:body].first
|
30
24
|
end
|
31
25
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<% if @resources.present?%>
|
2
2
|
<div class="w-full grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 2xl:grid-cols-6 gap-6">
|
3
3
|
<% @resources.each_with_index do |resource, index| %>
|
4
|
-
<% cache_if Avo
|
4
|
+
<% cache_if Avo.configuration.cache_resources_on_index_view, resource.cache_hash(@parent_model) do %>
|
5
5
|
<%= render(Avo::Index::GridItemComponent.new(resource: resource, reflection: @reflection, parent_model: @parent_model)) %>
|
6
6
|
<% end %>
|
7
7
|
<% end %>
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<div class="w-full">
|
2
2
|
<% if @resources.present?%>
|
3
3
|
<table class="w-full px-4 overflow-hidden">
|
4
|
-
<%= render partial: 'avo/partials/table_header', locals: {fields: @resource.get_fields(
|
4
|
+
<%= render partial: 'avo/partials/table_header', locals: {fields: @resource.get_fields(reflection: @reflection)} %>
|
5
5
|
<tbody>
|
6
6
|
<% @resources.each_with_index do |resource, index| %>
|
7
|
-
<% cache_if Avo
|
7
|
+
<% cache_if Avo.configuration.cache_resources_on_index_view, resource.cache_hash(@parent_model) do %>
|
8
8
|
<%= render Avo::Index::TableRowComponent.new(resource: resource, reflection: @reflection, parent_model: @parent_model) %>
|
9
9
|
<% end %>
|
10
10
|
<% end %>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
<%== item_selector_input floating: false %>
|
8
8
|
</div>
|
9
9
|
</td>
|
10
|
-
<% @resource.get_fields(
|
10
|
+
<% @resource.get_fields(reflection: @reflection).each_with_index do |field, index| %>
|
11
11
|
<%= index_field field, index, @resource %>
|
12
12
|
<% end %>
|
13
13
|
<td class="text-right whitespace-nowrap px-2">
|
@@ -27,17 +27,14 @@ module Avo
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def set_action
|
30
|
-
action_class = params[:action_id].gsub('avo_actions_', '').classify
|
31
|
-
action_name = "Avo::Actions::#{action_class}"
|
30
|
+
action_class = params[:action_id].gsub('avo_actions_', '').classify.safe_constantize
|
32
31
|
|
33
32
|
if params[:id].present?
|
34
33
|
model = @resource.model_class.find params[:id]
|
35
34
|
end
|
36
35
|
|
37
|
-
@action =
|
38
|
-
@action.configure
|
36
|
+
@action = action_class.new
|
39
37
|
@action.hydrate(model: model, resource: resource, user: _current_user)
|
40
|
-
@action.boot_fields request
|
41
38
|
end
|
42
39
|
|
43
40
|
def respond(response)
|
@@ -15,8 +15,7 @@ module Avo
|
|
15
15
|
add_flash_types :info, :warning, :success, :error
|
16
16
|
|
17
17
|
def init_app
|
18
|
-
Avo::App.
|
19
|
-
Avo::App.init request
|
18
|
+
Avo::App.init request: request, context: context
|
20
19
|
|
21
20
|
@license = Avo::App.license
|
22
21
|
end
|
@@ -36,6 +35,10 @@ module Avo
|
|
36
35
|
instance_eval(&Avo.configuration.current_user)
|
37
36
|
end
|
38
37
|
|
38
|
+
def context
|
39
|
+
instance_eval(&Avo.configuration.context)
|
40
|
+
end
|
41
|
+
|
39
42
|
def resources_path(model, keep_query_params: false, **args)
|
40
43
|
return if model.nil?
|
41
44
|
|
@@ -152,7 +155,12 @@ module Avo
|
|
152
155
|
# Gets the Avo resource for this request based on the request from the `resource_name` "param"
|
153
156
|
# Ex: Avo::Resources::Project, Avo::Resources::Team, Avo::Resources::User
|
154
157
|
def resource
|
155
|
-
|
158
|
+
|
159
|
+
resource = App.get_resource @resource_name.to_s.camelize.singularize
|
160
|
+
|
161
|
+
return resource if resource.present?
|
162
|
+
|
163
|
+
App.get_resource_by_controller_name @resource_name
|
156
164
|
end
|
157
165
|
|
158
166
|
def related_resource
|
@@ -221,7 +229,7 @@ module Avo
|
|
221
229
|
end
|
222
230
|
|
223
231
|
def set_authorization
|
224
|
-
@authorization = AuthorizationService.new _current_user
|
232
|
+
@authorization = Services::AuthorizationService.new _current_user
|
225
233
|
end
|
226
234
|
|
227
235
|
def set_container_classes
|
@@ -186,8 +186,6 @@ module Avo
|
|
186
186
|
@filters = @resource.get_filters.map do |filter_class|
|
187
187
|
filter = filter_class.new
|
188
188
|
|
189
|
-
filter.configure
|
190
|
-
|
191
189
|
filter
|
192
190
|
end
|
193
191
|
end
|
@@ -198,12 +196,7 @@ module Avo
|
|
198
196
|
end
|
199
197
|
|
200
198
|
@actions = @resource.get_actions.map do |action|
|
201
|
-
action
|
202
|
-
|
203
|
-
action.hydrate(model: model, resource: @resource)
|
204
|
-
action.boot_fields request
|
205
|
-
|
206
|
-
action
|
199
|
+
action.new.hydrate(model: model, resource: @resource)
|
207
200
|
end
|
208
201
|
end
|
209
202
|
|
@@ -216,7 +209,6 @@ module Avo
|
|
216
209
|
|
217
210
|
@resource.get_filters.each do |filter_class|
|
218
211
|
filter = filter_class.new
|
219
|
-
filter.configure
|
220
212
|
|
221
213
|
if filter.default.present?
|
222
214
|
filter_defaults[filter_class.to_s] = filter.default
|
@@ -11,7 +11,7 @@ import tippy from 'tippy.js'
|
|
11
11
|
// Toastr alerts
|
12
12
|
import '../js/toastr'
|
13
13
|
|
14
|
-
Mousetrap.bind('r r r', () => Turbo.visit(window.location.href))
|
14
|
+
Mousetrap.bind('r r r', () => Turbo.visit(window.location.href, { action: "replace" }))
|
15
15
|
|
16
16
|
const application = Application.start()
|
17
17
|
|
@@ -14,12 +14,6 @@
|
|
14
14
|
>
|
15
15
|
<%
|
16
16
|
@actions.each_with_index do |action, index|
|
17
|
-
case action.class.superclass.to_s
|
18
|
-
when Avo::Filters::SelectFilter.to_s
|
19
|
-
template = 'select_action'
|
20
|
-
when Avo::Filters::BooleanFilter.to_s
|
21
|
-
template = 'boolean_action'
|
22
|
-
end
|
23
17
|
path = action_name == 'show' ?
|
24
18
|
"/avo/resources/#{@resource.model_class.model_name.route_key}/#{@model.id}/actions/#{action.param_id}" :
|
25
19
|
"/avo/resources/#{@resource.model_class.model_name.route_key}/actions/#{action.param_id}"
|
@@ -12,7 +12,7 @@
|
|
12
12
|
set_value = {} if set_value.nil?
|
13
13
|
%>
|
14
14
|
<div data-controller="boolean-filter">
|
15
|
-
<%= filter_wrapper name: filter.name
|
15
|
+
<%= filter_wrapper name: filter.name do %>
|
16
16
|
<div class="flex items-center">
|
17
17
|
<div class="space-y-2">
|
18
18
|
<% filter.options.each do |value, label| %>
|
@@ -10,19 +10,11 @@
|
|
10
10
|
<% end %>
|
11
11
|
|
12
12
|
<div
|
13
|
-
class="absolute block inset-auto right-0 top-full bg-white min-w-300px mt-2 z-20 shadow-context rounded-xl hidden"
|
13
|
+
class="absolute block inset-auto right-0 top-full bg-white min-w-300px mt-2 z-20 shadow-context rounded-xl hidden divide-y divide-gray-300"
|
14
14
|
data-toggle-panel-target="panel"
|
15
15
|
>
|
16
|
-
<%
|
17
|
-
|
18
|
-
case filter.class.superclass.to_s
|
19
|
-
when Avo::Filters::SelectFilter.to_s
|
20
|
-
template = 'avo/base/select_filter'
|
21
|
-
when Avo::Filters::BooleanFilter.to_s
|
22
|
-
template = 'avo/base/boolean_filter'
|
23
|
-
end
|
24
|
-
%>
|
25
|
-
<%= render partial: template, locals: {filter: filter, index: index} %>
|
16
|
+
<% @filters.each do |filter| %>
|
17
|
+
<%= render partial: filter.class.template, locals: {filter: filter} %>
|
26
18
|
<% end %>
|
27
19
|
|
28
20
|
<div class="p-4 border-gray-300 border-t">
|
@@ -7,7 +7,7 @@
|
|
7
7
|
end
|
8
8
|
%>
|
9
9
|
<div data-controller="select-filter">
|
10
|
-
<%= filter_wrapper name: filter.name
|
10
|
+
<%= filter_wrapper name: filter.name do %>
|
11
11
|
<%= select_tag filter.id, options_for_select(filter.options.invert, set_value),
|
12
12
|
class: input_classes('w-full mb-0'),
|
13
13
|
include_blank: '—',
|
@@ -30,7 +30,7 @@
|
|
30
30
|
end
|
31
31
|
classes = "text-blue-gray-600 tracking-tight leading-tight text-xs font-semibold"
|
32
32
|
%>
|
33
|
-
<th class="text-left uppercase px-3 py-2 ">
|
33
|
+
<th class="text-left uppercase px-3 py-2 whitespace-nowrap">
|
34
34
|
<% if field.sortable %>
|
35
35
|
<%= link_to params.permit!.merge(sort_by: sort_by, sort_direction: sort_direction), class: "flex items-center #{classes} #{'cursor-pointer' if field.sortable}", 'data-turbo-frame': params[:turbo_frame] do %>
|
36
36
|
<%= field.name %>
|
@@ -8,6 +8,11 @@
|
|
8
8
|
|
9
9
|
<%= render partial: 'avo/partials/javascript' %>
|
10
10
|
|
11
|
+
<%# if Avo::PACKED %>
|
12
|
+
<%#= stylesheet_link_tag 'application', media: 'all', "data-turbo-track": "reload" %>
|
13
|
+
<%#= javascript_include_tag 'avo-packs/application', "data-turbo-track": "reload" %>
|
14
|
+
<%# else %>
|
15
|
+
<%# end %>
|
11
16
|
<%= javascript_pack_tag 'application' %>
|
12
17
|
<%= stylesheet_pack_tag 'application', media: 'all' %>
|
13
18
|
</head>
|
data/avo.gemspec
CHANGED
@@ -39,7 +39,6 @@ Gem::Specification.new do |spec|
|
|
39
39
|
spec.add_dependency 'countries'
|
40
40
|
spec.add_dependency 'pundit'
|
41
41
|
spec.add_dependency 'httparty'
|
42
|
-
spec.add_dependency 'i18n-js'
|
43
42
|
spec.add_dependency 'active_link_to'
|
44
43
|
spec.add_dependency 'image_processing'
|
45
44
|
spec.add_dependency 'view_component'
|
data/config/webpacker.yml
CHANGED
@@ -51,32 +51,19 @@ default: &default
|
|
51
51
|
- .jpeg
|
52
52
|
- .jpg
|
53
53
|
|
54
|
+
# We override the development env. when packed.
|
55
|
+
# Avo needs to be packed and compiled for when the dev uses it in his development env.
|
54
56
|
development:
|
55
57
|
<<: *default
|
56
|
-
compile: true
|
57
58
|
|
58
|
-
#
|
59
|
-
|
60
|
-
|
61
|
-
#
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
public: localhost:3039
|
67
|
-
hmr: true
|
68
|
-
# Inline should be set to true if using HMR
|
69
|
-
inline: true
|
70
|
-
overlay: true
|
71
|
-
compress: true
|
72
|
-
disable_host_check: true
|
73
|
-
use_local_ip: false
|
74
|
-
quiet: false
|
75
|
-
headers:
|
76
|
-
'Access-Control-Allow-Origin': '*'
|
77
|
-
watch_options:
|
78
|
-
ignored: '**/node_modules/**'
|
79
|
-
env_prefix: "AVO_WEBPACKER_DEV_SERVER"
|
59
|
+
# Production depends on precompilation of packs prior to booting for performance.
|
60
|
+
compile: false
|
61
|
+
|
62
|
+
# Extract and emit a css file
|
63
|
+
extract_css: true
|
64
|
+
|
65
|
+
# Cache manifest.json for performance
|
66
|
+
cache_manifest: true
|
80
67
|
|
81
68
|
test:
|
82
69
|
<<: *default
|