avo 2.10.0 → 2.11.0
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.lock +64 -64
- data/app/components/avo/fields/country_field/edit_component.html.erb +9 -3
- data/app/components/avo/fields/date_field/edit_component.html.erb +26 -8
- data/app/components/avo/fields/date_field/index_component.html.erb +7 -1
- data/app/components/avo/fields/date_field/show_component.html.erb +7 -1
- data/app/components/avo/fields/date_time_field/edit_component.html.erb +26 -10
- data/app/components/avo/fields/date_time_field/index_component.html.erb +9 -1
- data/app/components/avo/fields/date_time_field/show_component.html.erb +9 -1
- data/app/components/avo/fields/file_field/edit_component.html.erb +1 -0
- data/app/components/avo/fields/files_field/edit_component.html.erb +1 -0
- data/app/components/avo/fields/select_field/edit_component.html.erb +14 -10
- data/app/components/avo/index/ordering/button_component.rb +1 -5
- data/app/components/avo/views/resource_index_component.html.erb +1 -1
- data/app/controllers/avo/application_controller.rb +20 -14
- data/app/controllers/avo/base_controller.rb +11 -3
- data/app/controllers/avo/reorder_controller.rb +25 -0
- data/app/helpers/avo/application_helper.rb +6 -0
- data/app/helpers/avo/url_helpers.rb +0 -4
- data/app/javascript/js/controllers/fields/date_field_controller.js +98 -24
- data/app/javascript/js/controllers/search_controller.js +3 -0
- data/app/views/avo/partials/_javascript.html.erb +1 -1
- data/config/routes.rb +5 -4
- data/db/factories.rb +1 -0
- data/lib/avo/app.rb +1 -3
- data/lib/avo/base_resource.rb +5 -3
- data/lib/avo/concerns/handles_field_args.rb +1 -1
- data/lib/avo/concerns/has_fields.rb +2 -0
- data/lib/avo/configuration.rb +2 -12
- data/lib/avo/fields/base_field.rb +2 -0
- data/lib/avo/fields/country_field.rb +2 -0
- data/lib/avo/fields/date_field.rb +12 -10
- data/lib/avo/fields/date_time_field.rb +21 -9
- data/lib/avo/fields/field_extensions/has_include_blank.rb +17 -0
- data/lib/avo/fields/file_field.rb +2 -0
- data/lib/avo/fields/files_field.rb +2 -0
- data/lib/avo/fields/key_value_field.rb +4 -4
- data/lib/avo/fields/select_field.rb +2 -0
- data/lib/avo/licensing/h_q.rb +2 -0
- data/lib/avo/services/uri_service.rb +4 -0
- data/lib/avo/version.rb +1 -1
- data/lib/generators/avo/action_generator.rb +3 -2
- data/lib/generators/avo/base_generator.rb +14 -0
- data/lib/generators/avo/card/chartkick_generator.rb +18 -0
- data/lib/generators/avo/card/metric_generator.rb +18 -0
- data/lib/generators/avo/card/partial_generator.rb +19 -0
- data/lib/generators/avo/controller_generator.rb +9 -3
- data/lib/generators/avo/dashboard_generator.rb +2 -2
- data/lib/generators/avo/eject_generator.rb +2 -3
- data/lib/generators/avo/field_generator.rb +2 -2
- data/lib/generators/avo/filter_generator.rb +3 -2
- data/lib/generators/avo/install_generator.rb +2 -2
- data/lib/generators/avo/locales_generator.rb +2 -2
- data/lib/generators/avo/named_base_generator.rb +14 -0
- data/lib/generators/avo/resource_generator.rb +2 -2
- data/lib/generators/avo/resource_tool_generator.rb +4 -4
- data/lib/generators/avo/tool_generator.rb +4 -4
- data/lib/generators/avo/version_generator.rb +23 -0
- data/public/avo-assets/avo.css +4 -0
- data/public/avo-assets/avo.js +69 -69
- data/public/avo-assets/avo.js.map +2 -2
- metadata +10 -9
- data/db/migrate/20210421064037_add_color_to_teams.rb +0 -5
- data/db/migrate/20210423075924_add_progress_to_projects.rb +0 -5
- data/db/migrate/20210525143134_add_slug_to_users.rb +0 -6
- data/lib/avo/fields/currency_field.rb +0 -15
- data/lib/generators/avo/chartkick_card_generator.rb +0 -16
- data/lib/generators/avo/metric_card_generator.rb +0 -16
- data/lib/generators/avo/partial_card_generator.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ebb9e406c79af9dcca77ccea6f411fa429550de8555f388b79d60af3b2ce7825
|
4
|
+
data.tar.gz: 97aafbd2536588e5065b75674b18720f26ceb59dbdb0860c1fb5d5ea4a7aef24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2d14c10d9e28687eca060949975278e020c63fb19935e5d05f4d4c6813bed779fc609bf0a72f831c784236b8122d545c04ce47d8b43463919f259b010201c6a
|
7
|
+
data.tar.gz: 47d92e0cd4e94c2fffb1e0440f66deded02442f18c1eac9b7bfa22f403f11f9122d4353c1b882b7572b9fada13fd53ce193d66c923d12b034625c9c1a5b67e3f
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
avo (2.
|
4
|
+
avo (2.11.0)
|
5
5
|
active_link_to
|
6
6
|
addressable
|
7
7
|
breadcrumbs_on_rails
|
@@ -22,40 +22,40 @@ PATH
|
|
22
22
|
GEM
|
23
23
|
remote: https://rubygems.org/
|
24
24
|
specs:
|
25
|
-
actioncable (6.1.
|
26
|
-
actionpack (= 6.1.
|
27
|
-
activesupport (= 6.1.
|
25
|
+
actioncable (6.1.6.1)
|
26
|
+
actionpack (= 6.1.6.1)
|
27
|
+
activesupport (= 6.1.6.1)
|
28
28
|
nio4r (~> 2.0)
|
29
29
|
websocket-driver (>= 0.6.1)
|
30
|
-
actionmailbox (6.1.
|
31
|
-
actionpack (= 6.1.
|
32
|
-
activejob (= 6.1.
|
33
|
-
activerecord (= 6.1.
|
34
|
-
activestorage (= 6.1.
|
35
|
-
activesupport (= 6.1.
|
30
|
+
actionmailbox (6.1.6.1)
|
31
|
+
actionpack (= 6.1.6.1)
|
32
|
+
activejob (= 6.1.6.1)
|
33
|
+
activerecord (= 6.1.6.1)
|
34
|
+
activestorage (= 6.1.6.1)
|
35
|
+
activesupport (= 6.1.6.1)
|
36
36
|
mail (>= 2.7.1)
|
37
|
-
actionmailer (6.1.
|
38
|
-
actionpack (= 6.1.
|
39
|
-
actionview (= 6.1.
|
40
|
-
activejob (= 6.1.
|
41
|
-
activesupport (= 6.1.
|
37
|
+
actionmailer (6.1.6.1)
|
38
|
+
actionpack (= 6.1.6.1)
|
39
|
+
actionview (= 6.1.6.1)
|
40
|
+
activejob (= 6.1.6.1)
|
41
|
+
activesupport (= 6.1.6.1)
|
42
42
|
mail (~> 2.5, >= 2.5.4)
|
43
43
|
rails-dom-testing (~> 2.0)
|
44
|
-
actionpack (6.1.
|
45
|
-
actionview (= 6.1.
|
46
|
-
activesupport (= 6.1.
|
44
|
+
actionpack (6.1.6.1)
|
45
|
+
actionview (= 6.1.6.1)
|
46
|
+
activesupport (= 6.1.6.1)
|
47
47
|
rack (~> 2.0, >= 2.0.9)
|
48
48
|
rack-test (>= 0.6.3)
|
49
49
|
rails-dom-testing (~> 2.0)
|
50
50
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
51
|
-
actiontext (6.1.
|
52
|
-
actionpack (= 6.1.
|
53
|
-
activerecord (= 6.1.
|
54
|
-
activestorage (= 6.1.
|
55
|
-
activesupport (= 6.1.
|
51
|
+
actiontext (6.1.6.1)
|
52
|
+
actionpack (= 6.1.6.1)
|
53
|
+
activerecord (= 6.1.6.1)
|
54
|
+
activestorage (= 6.1.6.1)
|
55
|
+
activesupport (= 6.1.6.1)
|
56
56
|
nokogiri (>= 1.8.5)
|
57
|
-
actionview (6.1.
|
58
|
-
activesupport (= 6.1.
|
57
|
+
actionview (6.1.6.1)
|
58
|
+
activesupport (= 6.1.6.1)
|
59
59
|
builder (~> 3.1)
|
60
60
|
erubi (~> 1.4)
|
61
61
|
rails-dom-testing (~> 2.0)
|
@@ -65,22 +65,22 @@ GEM
|
|
65
65
|
addressable
|
66
66
|
active_median (0.3.3)
|
67
67
|
activesupport (>= 5.2)
|
68
|
-
activejob (6.1.
|
69
|
-
activesupport (= 6.1.
|
68
|
+
activejob (6.1.6.1)
|
69
|
+
activesupport (= 6.1.6.1)
|
70
70
|
globalid (>= 0.3.6)
|
71
|
-
activemodel (6.1.
|
72
|
-
activesupport (= 6.1.
|
73
|
-
activerecord (6.1.
|
74
|
-
activemodel (= 6.1.
|
75
|
-
activesupport (= 6.1.
|
76
|
-
activestorage (6.1.
|
77
|
-
actionpack (= 6.1.
|
78
|
-
activejob (= 6.1.
|
79
|
-
activerecord (= 6.1.
|
80
|
-
activesupport (= 6.1.
|
81
|
-
marcel (~> 1.0
|
71
|
+
activemodel (6.1.6.1)
|
72
|
+
activesupport (= 6.1.6.1)
|
73
|
+
activerecord (6.1.6.1)
|
74
|
+
activemodel (= 6.1.6.1)
|
75
|
+
activesupport (= 6.1.6.1)
|
76
|
+
activestorage (6.1.6.1)
|
77
|
+
actionpack (= 6.1.6.1)
|
78
|
+
activejob (= 6.1.6.1)
|
79
|
+
activerecord (= 6.1.6.1)
|
80
|
+
activesupport (= 6.1.6.1)
|
81
|
+
marcel (~> 1.0)
|
82
82
|
mini_mime (>= 1.1.0)
|
83
|
-
activesupport (6.1.
|
83
|
+
activesupport (6.1.6.1)
|
84
84
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
85
85
|
i18n (>= 1.6, < 2)
|
86
86
|
minitest (>= 5.1)
|
@@ -201,7 +201,7 @@ GEM
|
|
201
201
|
httparty (0.20.0)
|
202
202
|
mime-types (~> 3.0)
|
203
203
|
multi_xml (>= 0.5.2)
|
204
|
-
i18n (1.
|
204
|
+
i18n (1.11.0)
|
205
205
|
concurrent-ruby (~> 1.0)
|
206
206
|
i18n_data (0.15.0)
|
207
207
|
simple_po_parser (~> 1.1)
|
@@ -219,7 +219,7 @@ GEM
|
|
219
219
|
listen (3.7.1)
|
220
220
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
221
221
|
rb-inotify (~> 0.9, >= 0.9.10)
|
222
|
-
loofah (2.
|
222
|
+
loofah (2.18.0)
|
223
223
|
crass (~> 1.0.2)
|
224
224
|
nokogiri (>= 1.5.9)
|
225
225
|
mail (2.7.1)
|
@@ -249,7 +249,7 @@ GEM
|
|
249
249
|
net-protocol
|
250
250
|
timeout
|
251
251
|
nio4r (2.5.8)
|
252
|
-
nokogiri (1.13.
|
252
|
+
nokogiri (1.13.7)
|
253
253
|
mini_portile2 (~> 2.8.0)
|
254
254
|
racc (~> 1.4)
|
255
255
|
orm_adapter (0.5.0)
|
@@ -265,23 +265,23 @@ GEM
|
|
265
265
|
pundit (2.2.0)
|
266
266
|
activesupport (>= 3.0.0)
|
267
267
|
racc (1.6.0)
|
268
|
-
rack (2.2.
|
269
|
-
rack-test (
|
270
|
-
rack (>= 1.
|
271
|
-
rails (6.1.
|
272
|
-
actioncable (= 6.1.
|
273
|
-
actionmailbox (= 6.1.
|
274
|
-
actionmailer (= 6.1.
|
275
|
-
actionpack (= 6.1.
|
276
|
-
actiontext (= 6.1.
|
277
|
-
actionview (= 6.1.
|
278
|
-
activejob (= 6.1.
|
279
|
-
activemodel (= 6.1.
|
280
|
-
activerecord (= 6.1.
|
281
|
-
activestorage (= 6.1.
|
282
|
-
activesupport (= 6.1.
|
268
|
+
rack (2.2.4)
|
269
|
+
rack-test (2.0.2)
|
270
|
+
rack (>= 1.3)
|
271
|
+
rails (6.1.6.1)
|
272
|
+
actioncable (= 6.1.6.1)
|
273
|
+
actionmailbox (= 6.1.6.1)
|
274
|
+
actionmailer (= 6.1.6.1)
|
275
|
+
actionpack (= 6.1.6.1)
|
276
|
+
actiontext (= 6.1.6.1)
|
277
|
+
actionview (= 6.1.6.1)
|
278
|
+
activejob (= 6.1.6.1)
|
279
|
+
activemodel (= 6.1.6.1)
|
280
|
+
activerecord (= 6.1.6.1)
|
281
|
+
activestorage (= 6.1.6.1)
|
282
|
+
activesupport (= 6.1.6.1)
|
283
283
|
bundler (>= 1.15.0)
|
284
|
-
railties (= 6.1.
|
284
|
+
railties (= 6.1.6.1)
|
285
285
|
sprockets-rails (>= 2.0.0)
|
286
286
|
rails-controller-testing (1.0.5)
|
287
287
|
actionpack (>= 5.0.1.rc1)
|
@@ -290,13 +290,13 @@ GEM
|
|
290
290
|
rails-dom-testing (2.0.3)
|
291
291
|
activesupport (>= 4.2.0)
|
292
292
|
nokogiri (>= 1.6)
|
293
|
-
rails-html-sanitizer (1.4.
|
293
|
+
rails-html-sanitizer (1.4.3)
|
294
294
|
loofah (~> 2.3)
|
295
|
-
railties (6.1.
|
296
|
-
actionpack (= 6.1.
|
297
|
-
activesupport (= 6.1.
|
295
|
+
railties (6.1.6.1)
|
296
|
+
actionpack (= 6.1.6.1)
|
297
|
+
activesupport (= 6.1.6.1)
|
298
298
|
method_source
|
299
|
-
rake (>=
|
299
|
+
rake (>= 12.2)
|
300
300
|
thor (~> 1.0)
|
301
301
|
rainbow (3.1.1)
|
302
302
|
rake (13.0.6)
|
@@ -370,7 +370,7 @@ GEM
|
|
370
370
|
spring (4.0.0)
|
371
371
|
spring-commands-rspec (1.0.4)
|
372
372
|
spring (>= 0.9.1)
|
373
|
-
sprockets (4.
|
373
|
+
sprockets (4.1.1)
|
374
374
|
concurrent-ruby (~> 1.0)
|
375
375
|
rack (> 1, < 3)
|
376
376
|
sprockets-rails (3.4.2)
|
@@ -1,9 +1,15 @@
|
|
1
1
|
<%= edit_field_wrapper field: @field, index: @index, form: @form, resource: @resource, displayed_in_modal: @displayed_in_modal do %>
|
2
|
-
<%= @form.select @field.id, @field.select_options, {
|
2
|
+
<%= @form.select @field.id, @field.select_options, {
|
3
|
+
selected: @field.value,
|
4
|
+
include_blank: @field.include_blank
|
5
|
+
},
|
6
|
+
aria: {
|
7
|
+
placeholder: @field.placeholder
|
8
|
+
},
|
3
9
|
class: classes("w-full"),
|
4
10
|
data: @field.get_html(:data, view: view, element: :input),
|
5
11
|
disabled: @field.readonly,
|
6
|
-
|
7
|
-
|
12
|
+
style: @field.get_html(:style, view: view, element: :input),
|
13
|
+
placeholder: @field.include_blank.present? ? nil : @field.placeholder
|
8
14
|
%>
|
9
15
|
<% end %>
|
@@ -1,14 +1,32 @@
|
|
1
1
|
<%= edit_field_wrapper field: @field, index: @index, form: @form, resource: @resource, displayed_in_modal: @displayed_in_modal do %>
|
2
|
-
|
3
|
-
|
2
|
+
<%= content_tag :div, data: {
|
3
|
+
controller: "date-field",
|
4
|
+
date_field_view_value: @view,
|
5
|
+
date_field_enable_time_value: false,
|
6
|
+
date_field_format_value: @field.format,
|
7
|
+
date_field_picker_format_value: @field.picker_format,
|
8
|
+
date_field_first_day_of_week_value: @field.first_day_of_week,
|
9
|
+
date_field_disable_mobile_value: @field.disable_mobile,
|
10
|
+
date_field_relative_value: @field.relative,
|
11
|
+
} do %>
|
12
|
+
<%= datetime_field "fake_#{@field.id}", "fake",
|
13
|
+
value: @field.edit_formatted_value,
|
4
14
|
class: classes("w-full"),
|
15
|
+
data: {
|
16
|
+
'date-field-target': 'fakeInput',
|
17
|
+
placeholder: @field.placeholder,
|
18
|
+
relative: @field.relative,
|
19
|
+
**@field.get_html(:data, view: view, element: :input)
|
20
|
+
},
|
21
|
+
disabled: @field.readonly,
|
22
|
+
placeholder: @field.placeholder,
|
23
|
+
style: @field.get_html(:style, view: view, element: :input)
|
24
|
+
%>
|
25
|
+
<%= @form.text_field @field.id,
|
26
|
+
value: @field.edit_formatted_value,
|
27
|
+
class: classes("w-full hidden"),
|
5
28
|
data: {
|
6
29
|
'date-field-target': 'input',
|
7
|
-
'first-day-of-week': @field.first_day_of_week,
|
8
|
-
'picker-format': @field.picker_format,
|
9
|
-
'disable-mobile': @field.disable_mobile,
|
10
|
-
'enable-time': false,
|
11
|
-
format: @field.format,
|
12
30
|
placeholder: @field.placeholder,
|
13
31
|
relative: @field.relative,
|
14
32
|
**@field.get_html(:data, view: view, element: :input)
|
@@ -17,5 +35,5 @@
|
|
17
35
|
placeholder: @field.placeholder,
|
18
36
|
style: @field.get_html(:style, view: view, element: :input)
|
19
37
|
%>
|
20
|
-
|
38
|
+
<% end %>
|
21
39
|
<% end %>
|
@@ -1,3 +1,9 @@
|
|
1
1
|
<%= index_field_wrapper field: @field, resource: @resource do %>
|
2
|
-
|
2
|
+
<%= content_tag :div, data: {
|
3
|
+
controller: "date-field",
|
4
|
+
date_field_view_value: @view,
|
5
|
+
date_field_format_value: @field.format,
|
6
|
+
} do %>
|
7
|
+
<%= @field.formatted_value %>
|
8
|
+
<% end %>
|
3
9
|
<% end %>
|
@@ -1,3 +1,9 @@
|
|
1
1
|
<%= show_field_wrapper field: @field, resource: @resource, index: @index do %>
|
2
|
-
<%=
|
2
|
+
<%= content_tag :div, data: {
|
3
|
+
controller: "date-field",
|
4
|
+
date_field_view_value: @view,
|
5
|
+
date_field_format_value: @field.format,
|
6
|
+
} do %>
|
7
|
+
<%= @field.formatted_value %>
|
8
|
+
<% end %>
|
3
9
|
<% end %>
|
@@ -1,16 +1,32 @@
|
|
1
1
|
<%= edit_field_wrapper field: @field, index: @index, form: @form, resource: @resource, displayed_in_modal: @displayed_in_modal do %>
|
2
|
-
|
3
|
-
|
2
|
+
<%= content_tag :div, data: {
|
3
|
+
controller: "date-field",
|
4
|
+
date_field_view_value: @view,
|
5
|
+
date_field_enable_time_value: true,
|
6
|
+
date_field_picker_format_value: @field.picker_format,
|
7
|
+
date_field_first_day_of_week_value: @field.first_day_of_week,
|
8
|
+
date_field_disable_mobile_value: @field.disable_mobile,
|
9
|
+
date_field_time24_hr_value: @field.time_24hr,
|
10
|
+
date_field_timezone_value: @field.timezone,
|
11
|
+
} do %>
|
12
|
+
<%= datetime_field "fake_#{@field.id}", "fake",
|
13
|
+
value: @field.edit_formatted_value,
|
4
14
|
class: classes("w-full"),
|
15
|
+
data: {
|
16
|
+
'date-field-target': 'fakeInput',
|
17
|
+
placeholder: @field.placeholder,
|
18
|
+
relative: @field.relative,
|
19
|
+
**@field.get_html(:data, view: view, element: :input)
|
20
|
+
},
|
21
|
+
disabled: @field.readonly,
|
22
|
+
placeholder: @field.placeholder,
|
23
|
+
style: @field.get_html(:style, view: view, element: :input)
|
24
|
+
%>
|
25
|
+
<%= @form.text_field @field.id,
|
26
|
+
value: @field.edit_formatted_value,
|
27
|
+
class: classes("w-full hidden"),
|
5
28
|
data: {
|
6
29
|
'date-field-target': 'input',
|
7
|
-
'first-day-of-week': @field.first_day_of_week,
|
8
|
-
'picker-format': @field.picker_format,
|
9
|
-
'disable-mobile': @field.disable_mobile,
|
10
|
-
'enable-time': true,
|
11
|
-
time24hr: @field.time_24hr,
|
12
|
-
timezone: @field.timezone,
|
13
|
-
format: @field.format,
|
14
30
|
placeholder: @field.placeholder,
|
15
31
|
relative: @field.relative,
|
16
32
|
**@field.get_html(:data, view: view, element: :input)
|
@@ -19,5 +35,5 @@
|
|
19
35
|
placeholder: @field.placeholder,
|
20
36
|
style: @field.get_html(:style, view: view, element: :input)
|
21
37
|
%>
|
22
|
-
|
38
|
+
<% end %>
|
23
39
|
<% end %>
|
@@ -1,3 +1,11 @@
|
|
1
1
|
<%= index_field_wrapper field: @field, resource: @resource do %>
|
2
|
-
|
2
|
+
<%= content_tag :div, data: {
|
3
|
+
controller: "date-field",
|
4
|
+
date_field_view_value: @view,
|
5
|
+
date_field_format_value: @field.format,
|
6
|
+
date_field_timezone_value: @field.timezone,
|
7
|
+
date_field_picker_format_value: @field.picker_format,
|
8
|
+
} do %>
|
9
|
+
<%= @field.formatted_value %>
|
10
|
+
<% end %>
|
3
11
|
<% end %>
|
@@ -1,3 +1,11 @@
|
|
1
1
|
<%= show_field_wrapper field: @field, resource: @resource, index: @index do %>
|
2
|
-
<%=
|
2
|
+
<%= content_tag :div, data: {
|
3
|
+
controller: "date-field",
|
4
|
+
date_field_view_value: @view,
|
5
|
+
date_field_format_value: @field.format,
|
6
|
+
date_field_timezone_value: @field.timezone,
|
7
|
+
date_field_picker_format_value: @field.picker_format,
|
8
|
+
} do %>
|
9
|
+
<%= @field.formatted_value %>
|
10
|
+
<% end %>
|
3
11
|
<% end %>
|
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
<% if @resource.authorization.authorize_action(:upload_attachments?, raise_exception: false) %>
|
9
9
|
<%= @form.file_field @field.id,
|
10
|
+
accept: @field.accept,
|
10
11
|
data: @field.get_html(:data, view: view, element: :input),
|
11
12
|
direct_upload: @field.direct_upload,
|
12
13
|
disabled: @field.readonly,
|
@@ -4,6 +4,7 @@
|
|
4
4
|
<% if @resource.authorization.authorize_action(:upload_attachments?, raise_exception: false) %>
|
5
5
|
<div class="mt-2">
|
6
6
|
<%= @form.file_field @field.id,
|
7
|
+
accept: @field.accept,
|
7
8
|
data: @field.get_html(:data, view: view, element: :input),
|
8
9
|
direct_upload: @field.direct_upload,
|
9
10
|
disabled: @field.readonly,
|
@@ -1,12 +1,16 @@
|
|
1
1
|
<%= edit_field_wrapper field: @field, index: @index, form: @form, resource: @resource, displayed_in_modal: @displayed_in_modal do %>
|
2
|
-
<%= @form.select @field.id, @field.options_for_select, {
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
2
|
+
<%= @form.select @field.id, @field.options_for_select, {
|
3
|
+
selected: @field.value,
|
4
|
+
include_blank: @field.include_blank
|
5
|
+
},
|
6
|
+
aria: {
|
7
|
+
placeholder: @field.placeholder
|
8
|
+
},
|
9
|
+
class: classes("w-full"),
|
10
|
+
data: @field.get_html(:data, view: view, element: :input),
|
11
|
+
disabled: @field.readonly,
|
12
|
+
style: @field.get_html(:style, view: view, element: :input),
|
13
|
+
value: @field.model.present? ? @field.model[@field.id] : @field.value,
|
14
|
+
placeholder: @field.include_blank.present? ? nil : @field.placeholder
|
15
|
+
%>
|
12
16
|
<% end %>
|
@@ -18,10 +18,6 @@ class Avo::Index::Ordering::ButtonComponent < Avo::Index::Ordering::BaseComponen
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def order_path(args)
|
21
|
-
|
22
|
-
Avo::App.view_context.avo.associations_order_path(reflection_parent_resource.route_key, params[:id], field.id, resource.model.id, **args)
|
23
|
-
else
|
24
|
-
Avo::App.view_context.avo.resources_order_path(resource.route_key, resource.model.id, **args)
|
25
|
-
end
|
21
|
+
Avo::App.view_context.avo.reorder_order_path(resource.route_key, resource.model.id, **args)
|
26
22
|
end
|
27
23
|
end
|
@@ -34,7 +34,7 @@
|
|
34
34
|
>
|
35
35
|
<% if @resource.search_query.present? %>
|
36
36
|
<div class="flex items-center px-4 w-64">
|
37
|
-
<%= render partial: 'avo/partials/resource_search', locals: {resource: @resource.
|
37
|
+
<%= render partial: 'avo/partials/resource_search', locals: {resource: @resource.route_key} %>
|
38
38
|
</div>
|
39
39
|
<% else %>
|
40
40
|
<%# Offset for the space-y-2 property when the search is missing %>
|
@@ -11,10 +11,11 @@ module Avo
|
|
11
11
|
include Avo::UrlHelpers
|
12
12
|
|
13
13
|
protect_from_forgery with: :exception
|
14
|
+
around_action :set_avo_locale
|
15
|
+
around_action :set_force_locale, if: -> { params[:force_locale].present? }
|
16
|
+
before_action :set_default_locale, if: -> { params[:set_locale].present? }
|
14
17
|
before_action :init_app
|
15
18
|
before_action :check_avo_license
|
16
|
-
before_action :set_default_locale
|
17
|
-
around_action :set_force_locale, if: -> { params[:force_locale].present? }
|
18
19
|
before_action :set_authorization
|
19
20
|
before_action :_authenticate!
|
20
21
|
before_action :set_container_classes
|
@@ -261,23 +262,23 @@ module Avo
|
|
261
262
|
end
|
262
263
|
|
263
264
|
def on_root_path
|
264
|
-
[Avo
|
265
|
+
[Avo.configuration.root_path, "#{Avo.configuration.root_path}/"].include?(request.original_fullpath)
|
265
266
|
end
|
266
267
|
|
267
268
|
def on_resources_path
|
268
|
-
request.original_url.match?(/.*#{Avo
|
269
|
+
request.original_url.match?(/.*#{Avo.configuration.root_path}\/resources\/.*/)
|
269
270
|
end
|
270
271
|
|
271
272
|
def on_api_path
|
272
|
-
request.original_url.match?(/.*#{Avo
|
273
|
+
request.original_url.match?(/.*#{Avo.configuration.root_path}\/avo_api\/.*/)
|
273
274
|
end
|
274
275
|
|
275
276
|
def on_dashboards_path
|
276
|
-
request.original_url.match?(/.*#{Avo
|
277
|
+
request.original_url.match?(/.*#{Avo.configuration.root_path}\/dashboards\/.*/)
|
277
278
|
end
|
278
279
|
|
279
280
|
def on_debug_path
|
280
|
-
request.original_url.match?(/.*#{Avo
|
281
|
+
request.original_url.match?(/.*#{Avo.configuration.root_path}\/avo_private\/debug.*/)
|
281
282
|
end
|
282
283
|
|
283
284
|
def on_custom_tool_page
|
@@ -288,18 +289,23 @@ module Avo
|
|
288
289
|
@resource.form_scope
|
289
290
|
end
|
290
291
|
|
292
|
+
# Sets the locale set in avo.rb initializer
|
293
|
+
def set_avo_locale(&action)
|
294
|
+
locale = Avo.configuration.locale || I18n.default_locale
|
295
|
+
I18n.with_locale(locale, &action)
|
296
|
+
end
|
297
|
+
|
298
|
+
# Enable the user to change the default locale with the `?set_locale=pt-BR` param
|
291
299
|
def set_default_locale
|
292
|
-
|
300
|
+
locale = params[:set_locale] || I18n.default_locale
|
293
301
|
|
294
|
-
I18n.default_locale =
|
302
|
+
I18n.default_locale = locale
|
295
303
|
end
|
296
304
|
|
297
305
|
# Temporary set the locale and reverting at the end of the request.
|
298
|
-
def set_force_locale
|
299
|
-
|
300
|
-
I18n.locale
|
301
|
-
yield
|
302
|
-
I18n.locale = initial_locale
|
306
|
+
def set_force_locale(&action)
|
307
|
+
locale = params[:force_locale] || I18n.default_locale
|
308
|
+
I18n.with_locale(locale, &action)
|
303
309
|
end
|
304
310
|
|
305
311
|
def default_url_options
|
@@ -154,7 +154,7 @@ module Avo
|
|
154
154
|
|
155
155
|
respond_to do |format|
|
156
156
|
if saved
|
157
|
-
format.html { redirect_to after_create_path, notice: "#{@
|
157
|
+
format.html { redirect_to after_create_path, notice: "#{@resource.name} #{t("avo.was_successfully_created")}." }
|
158
158
|
else
|
159
159
|
flash.now[:error] = t "avo.you_missed_something_check_form"
|
160
160
|
format.html { render :new, status: :unprocessable_entity }
|
@@ -173,7 +173,7 @@ module Avo
|
|
173
173
|
|
174
174
|
respond_to do |format|
|
175
175
|
if saved
|
176
|
-
format.html { redirect_to after_update_path, notice: "#{@
|
176
|
+
format.html { redirect_to after_update_path, notice: "#{@resource.name} #{t("avo.was_successfully_updated")}." }
|
177
177
|
else
|
178
178
|
flash.now[:error] = t "avo.you_missed_something_check_form"
|
179
179
|
format.html { render :edit, status: :unprocessable_entity }
|
@@ -370,6 +370,8 @@ module Avo
|
|
370
370
|
def set_edit_title_and_breadcrumbs
|
371
371
|
@resource = @resource.hydrate(model: @model, view: :edit, user: _current_user)
|
372
372
|
@page_title = @resource.default_panel_name.to_s
|
373
|
+
|
374
|
+
last_crumb_args = {}
|
373
375
|
# If we're accessing this resource via another resource add the parent to the breadcrumbs.
|
374
376
|
if params[:via_resource_class].present? && params[:via_resource_id].present?
|
375
377
|
via_resource = Avo::App.get_resource_by_model_name params[:via_resource_class]
|
@@ -378,11 +380,17 @@ module Avo
|
|
378
380
|
|
379
381
|
add_breadcrumb via_resource.plural_name, resources_path(resource: @resource)
|
380
382
|
add_breadcrumb via_resource.model_title, resource_path(model: via_model, resource: via_resource)
|
383
|
+
puts ["via_resource.model_title->", via_resource.model_title].inspect
|
384
|
+
|
385
|
+
last_crumb_args = {
|
386
|
+
via_resource_class: params[:via_resource_class],
|
387
|
+
via_resource_id: params[:via_resource_id]
|
388
|
+
}
|
381
389
|
else
|
382
390
|
add_breadcrumb @resource.plural_name.humanize, resources_path(resource: @resource)
|
383
391
|
end
|
384
392
|
|
385
|
-
add_breadcrumb @resource.model_title, resource_path(model: @resource.model, resource: @resource)
|
393
|
+
add_breadcrumb @resource.model_title, resource_path(model: @resource.model, resource: @resource, **last_crumb_args)
|
386
394
|
add_breadcrumb t("avo.edit").humanize
|
387
395
|
end
|
388
396
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_dependency "avo/application_controller"
|
2
|
+
|
3
|
+
module Avo
|
4
|
+
class ReorderController < ApplicationController
|
5
|
+
before_action :set_resource_name
|
6
|
+
before_action :set_resource
|
7
|
+
before_action :hydrate_resource
|
8
|
+
before_action :set_model
|
9
|
+
|
10
|
+
def order
|
11
|
+
direction = params[:direction].to_sym
|
12
|
+
|
13
|
+
if direction.present?
|
14
|
+
@resource
|
15
|
+
.hydrate(model: @model, params: params)
|
16
|
+
.ordering_host
|
17
|
+
.order direction
|
18
|
+
end
|
19
|
+
|
20
|
+
respond_to do |format|
|
21
|
+
format.html { redirect_to params[:referrer] || resources_path(resource: @resource) }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -76,9 +76,5 @@ module Avo
|
|
76
76
|
|
77
77
|
avo.resources_associations_index_path(parent_model.model_name.route_key, record.id, **existing_params, **args)
|
78
78
|
end
|
79
|
-
|
80
|
-
def order_up_resource_path(model:, resource:, **args)
|
81
|
-
avo.send :"order_up_resources_#{resource.singular_route_key}_path", model, **args
|
82
|
-
end
|
83
79
|
end
|
84
80
|
end
|