avo 2.15.3 → 2.16.1.pre.1.nativefields
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 +0 -2
- data/Gemfile.lock +78 -86
- data/app/components/avo/base_component.rb +7 -1
- data/app/components/avo/field_wrapper_component.html.erb +40 -0
- data/app/components/avo/field_wrapper_component.rb +102 -0
- data/app/components/avo/fields/badge_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/belongs_to_field/edit_component.html.erb +3 -3
- data/app/components/avo/fields/belongs_to_field/index_component.html.erb +2 -1
- data/app/components/avo/fields/belongs_to_field/show_component.html.erb +2 -2
- data/app/components/avo/fields/belongs_to_field/show_component.rb +8 -0
- data/app/components/avo/fields/boolean_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/boolean_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/boolean_group_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/boolean_group_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/code_field/edit_component.html.erb +2 -2
- data/app/components/avo/fields/code_field/show_component.html.erb +2 -2
- data/app/components/avo/fields/country_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/country_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/date_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/date_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/date_time_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/date_time_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/edit_component.rb +22 -4
- data/app/components/avo/fields/external_image_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/external_image_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/external_image_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/file_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/file_field/index_component.html.erb +2 -2
- data/app/components/avo/fields/file_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/files_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/files_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/gravatar_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/gravatar_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/has_one_field/show_component.html.erb +14 -1
- data/app/components/avo/fields/has_one_field/show_component.rb +21 -0
- data/app/components/avo/fields/id_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/id_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/id_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/index_component.rb +9 -4
- data/app/components/avo/fields/key_value_field/edit_component.html.erb +2 -2
- data/app/components/avo/fields/key_value_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/markdown_field/edit_component.html.erb +2 -2
- data/app/components/avo/fields/markdown_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/number_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/number_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/password_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/progress_bar_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/progress_bar_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/select_field/edit_component.html.erb +1 -2
- data/app/components/avo/fields/select_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/show_component.rb +36 -1
- data/app/components/avo/fields/status_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/status_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/tags_field/edit_component.html.erb +1 -5
- data/app/components/avo/fields/tags_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/text_field/edit_component.html.erb +2 -2
- data/app/components/avo/fields/text_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/text_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/textarea_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/textarea_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/trix_field/edit_component.html.erb +13 -13
- data/app/components/avo/fields/trix_field/edit_component.rb +19 -1
- data/app/components/avo/fields/trix_field/show_component.html.erb +1 -1
- data/app/components/avo/index/grid_item_component.html.erb +6 -6
- data/app/components/avo/index/grid_item_component.rb +15 -0
- data/app/components/avo/index/resource_controls_component.rb +3 -0
- data/app/components/avo/index/resource_grid_component.rb +1 -1
- data/app/components/avo/resource_component.rb +5 -1
- data/app/components/avo/sidebar/item_switcher_component.html.erb +3 -3
- data/app/components/avo/sidebar/link_component.html.erb +2 -2
- data/app/components/avo/sidebar/link_component.rb +3 -1
- data/app/components/avo/views/resource_edit_component.html.erb +47 -28
- data/app/components/avo/views/resource_edit_component.rb +26 -9
- data/app/components/avo/views/resource_show_component.rb +0 -8
- data/app/controllers/avo/actions_controller.rb +7 -5
- data/app/controllers/avo/application_controller.rb +22 -3
- data/app/controllers/avo/associations_controller.rb +2 -2
- data/app/controllers/avo/base_controller.rb +24 -11
- data/app/helpers/avo/application_helper.rb +31 -3
- data/app/helpers/avo/resources_helper.rb +4 -8
- data/app/helpers/avo/url_helpers.rb +8 -0
- data/app/javascript/js/controllers/action_controller.js +3 -1
- data/app/javascript/js/controllers/fields/date_field_controller.js +21 -1
- data/app/javascript/js/controllers/search_controller.js +122 -118
- data/app/views/avo/actions/show.html.erb +5 -1
- data/avo.gemspec +1 -1
- data/config/master.key +1 -0
- data/lib/avo/base_action.rb +25 -6
- data/lib/avo/base_resource.rb +6 -4
- data/lib/avo/base_resource_tool.rb +1 -1
- data/lib/avo/concerns/fetches_things.rb +2 -0
- data/lib/avo/configuration.rb +2 -0
- data/lib/avo/fields/base_field.rb +5 -1
- data/lib/avo/fields/belongs_to_field.rb +1 -1
- data/lib/avo/fields/has_and_belongs_to_many_field.rb +1 -1
- data/lib/avo/fields/has_base_field.rb +5 -1
- data/lib/avo/fields/has_many_field.rb +1 -1
- data/lib/avo/fields/select_field.rb +1 -0
- data/lib/avo/menu/base_item.rb +1 -0
- data/lib/avo/menu/builder.rb +4 -2
- data/lib/avo/menu/menu.rb +2 -0
- data/lib/avo/services/authorization_service.rb +24 -20
- data/lib/avo/version.rb +1 -1
- data/lib/generators/avo/templates/field/components/edit_component.html.erb.tt +1 -1
- data/lib/generators/avo/templates/field/components/show_component.html.erb.tt +1 -1
- data/public/avo-assets/avo.base.css +26 -8
- data/public/avo-assets/avo.base.js +79 -79
- data/public/avo-assets/avo.base.js.map +3 -3
- metadata +8 -11
- data/app/components/avo/common_field_wrapper_component.html.erb +0 -26
- data/app/components/avo/common_field_wrapper_component.rb +0 -46
- data/app/components/avo/edit/field_wrapper_component.html.erb +0 -11
- data/app/components/avo/edit/field_wrapper_component.rb +0 -21
- data/app/components/avo/show/field_wrapper_component.html.erb +0 -9
- data/app/components/avo/show/field_wrapper_component.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9faaa635bf77fa6bd6267dedf2a72bea08eb21c84714da5614be28df50da9028
|
4
|
+
data.tar.gz: 34418d8586a608efdcaf5b44c4cd98450578c0719e731d3534ac243681d3b994
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 638a6f1809a1e379206d0358b8f8cb5767f53b3a8b5db8d61aa175744dd641c5332349d6108eb8565eae26b8629b9744da3549559243a4ced410a1b01cd41296
|
7
|
+
data.tar.gz: 3565f031cabab8fc386cab48276bfeb54592a45d5fdea58c5541935f4ebfed684223fdaf80baf26f5fb321641cb20644660abb70ca15400386dbaf9d9b5ee895
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
avo (2.
|
4
|
+
avo (2.16.1.pre.1.nativefields)
|
5
5
|
active_link_to
|
6
6
|
addressable
|
7
7
|
breadcrumbs_on_rails
|
@@ -9,7 +9,6 @@ PATH
|
|
9
9
|
countries
|
10
10
|
docile
|
11
11
|
dry-initializer
|
12
|
-
hotwire-rails
|
13
12
|
httparty
|
14
13
|
image_processing
|
15
14
|
inline_svg
|
@@ -17,6 +16,7 @@ PATH
|
|
17
16
|
pagy
|
18
17
|
pundit
|
19
18
|
rails (>= 6.0)
|
19
|
+
turbo-rails
|
20
20
|
view_component (= 2.60)
|
21
21
|
zeitwerk
|
22
22
|
|
@@ -91,8 +91,8 @@ GEM
|
|
91
91
|
activerecord (>= 6.0, < 7.1)
|
92
92
|
acts_as_list (1.0.4)
|
93
93
|
activerecord (>= 4.2)
|
94
|
-
addressable (2.8.
|
95
|
-
public_suffix (>= 2.0.2, <
|
94
|
+
addressable (2.8.1)
|
95
|
+
public_suffix (>= 2.0.2, < 6.0)
|
96
96
|
annotate (3.2.0)
|
97
97
|
activerecord (>= 3.2, < 8.0)
|
98
98
|
rake (>= 10.4, < 14.0)
|
@@ -103,30 +103,30 @@ GEM
|
|
103
103
|
ast (2.4.2)
|
104
104
|
awesome_print (1.9.2)
|
105
105
|
aws-eventstream (1.2.0)
|
106
|
-
aws-partitions (1.
|
107
|
-
aws-sdk-core (3.
|
106
|
+
aws-partitions (1.621.0)
|
107
|
+
aws-sdk-core (3.134.0)
|
108
108
|
aws-eventstream (~> 1, >= 1.0.2)
|
109
109
|
aws-partitions (~> 1, >= 1.525.0)
|
110
110
|
aws-sigv4 (~> 1.1)
|
111
|
-
jmespath (~> 1.
|
112
|
-
aws-sdk-kms (1.
|
113
|
-
aws-sdk-core (~> 3, >= 3.
|
111
|
+
jmespath (~> 1, >= 1.6.1)
|
112
|
+
aws-sdk-kms (1.58.0)
|
113
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
114
114
|
aws-sigv4 (~> 1.1)
|
115
|
-
aws-sdk-s3 (1.
|
116
|
-
aws-sdk-core (~> 3, >= 3.
|
115
|
+
aws-sdk-s3 (1.114.0)
|
116
|
+
aws-sdk-core (~> 3, >= 3.127.0)
|
117
117
|
aws-sdk-kms (~> 1)
|
118
118
|
aws-sigv4 (~> 1.4)
|
119
|
-
aws-sigv4 (1.
|
119
|
+
aws-sigv4 (1.5.1)
|
120
120
|
aws-eventstream (~> 1, >= 1.0.2)
|
121
|
-
bcrypt (3.1.
|
121
|
+
bcrypt (3.1.18)
|
122
122
|
bindex (0.8.1)
|
123
|
-
bootsnap (1.
|
123
|
+
bootsnap (1.13.0)
|
124
124
|
msgpack (~> 1.2)
|
125
125
|
breadcrumbs_on_rails (4.1.0)
|
126
126
|
railties (>= 5.0)
|
127
127
|
builder (3.2.4)
|
128
128
|
bump (0.10.0)
|
129
|
-
bundler-integrity (1.0.
|
129
|
+
bundler-integrity (1.0.9)
|
130
130
|
byebug (11.1.3)
|
131
131
|
capybara (3.36.0)
|
132
132
|
addressable
|
@@ -140,13 +140,12 @@ GEM
|
|
140
140
|
chartkick (4.2.1)
|
141
141
|
childprocess (4.1.0)
|
142
142
|
concurrent-ruby (1.1.10)
|
143
|
-
countries (
|
144
|
-
i18n_data (~> 0.15.0)
|
143
|
+
countries (5.1.2)
|
145
144
|
sixarm_ruby_unaccent (~> 1.1)
|
146
145
|
crack (0.4.5)
|
147
146
|
rexml
|
148
147
|
crass (1.0.6)
|
149
|
-
cssbundling-rails (1.
|
148
|
+
cssbundling-rails (1.1.1)
|
150
149
|
railties (>= 6.0.0)
|
151
150
|
database_cleaner (2.0.1)
|
152
151
|
database_cleaner-active_record (~> 2.0.0)
|
@@ -163,20 +162,20 @@ GEM
|
|
163
162
|
diff-lcs (1.5.0)
|
164
163
|
digest (3.1.0)
|
165
164
|
docile (1.4.0)
|
166
|
-
dotenv (2.
|
167
|
-
dotenv-rails (2.
|
168
|
-
dotenv (= 2.
|
165
|
+
dotenv (2.8.1)
|
166
|
+
dotenv-rails (2.8.1)
|
167
|
+
dotenv (= 2.8.1)
|
169
168
|
railties (>= 3.2)
|
170
169
|
dry-initializer (3.1.1)
|
171
170
|
erb-formatter (0.3.0)
|
172
|
-
erubi (1.
|
173
|
-
factory_bot (6.2.
|
171
|
+
erubi (1.11.0)
|
172
|
+
factory_bot (6.2.1)
|
174
173
|
activesupport (>= 5.0.0)
|
175
174
|
factory_bot_rails (6.2.0)
|
176
175
|
factory_bot (~> 6.2.0)
|
177
176
|
railties (>= 5.0.0)
|
178
|
-
faker (2.
|
179
|
-
i18n (>= 1.
|
177
|
+
faker (2.22.0)
|
178
|
+
i18n (>= 1.8.11, < 2)
|
180
179
|
ffi (1.15.5)
|
181
180
|
friendly_id (5.4.2)
|
182
181
|
activerecord (>= 4.0.0)
|
@@ -186,44 +185,38 @@ GEM
|
|
186
185
|
gem-release (2.2.2)
|
187
186
|
globalid (1.0.0)
|
188
187
|
activesupport (>= 5.0)
|
189
|
-
groupdate (
|
190
|
-
activesupport (>= 5)
|
188
|
+
groupdate (6.1.0)
|
189
|
+
activesupport (>= 5.2)
|
191
190
|
hashdiff (1.0.1)
|
192
191
|
hightop (0.3.0)
|
193
192
|
activesupport (>= 5.2)
|
194
|
-
hotwire-livereload (1.
|
193
|
+
hotwire-livereload (1.2.2)
|
195
194
|
listen (>= 3.0.0)
|
196
195
|
rails (>= 6.0.0)
|
197
|
-
|
198
|
-
rails (>= 6.0.0)
|
199
|
-
stimulus-rails
|
200
|
-
turbo-rails
|
201
|
-
htmlbeautifier (1.4.1)
|
196
|
+
htmlbeautifier (1.4.2)
|
202
197
|
httparty (0.20.0)
|
203
198
|
mime-types (~> 3.0)
|
204
199
|
multi_xml (>= 0.5.2)
|
205
200
|
i18n (1.12.0)
|
206
201
|
concurrent-ruby (~> 1.0)
|
207
|
-
i18n_data (0.15.0)
|
208
|
-
simple_po_parser (~> 1.1)
|
209
202
|
image_processing (1.12.2)
|
210
203
|
mini_magick (>= 4.9.5, < 5)
|
211
204
|
ruby-vips (>= 2.0.17, < 3)
|
212
205
|
inline_svg (1.8.0)
|
213
206
|
activesupport (>= 3.0)
|
214
207
|
nokogiri (>= 1.6)
|
215
|
-
io-wait (0.2.1)
|
216
208
|
iso (0.4.0)
|
217
209
|
i18n
|
218
210
|
jmespath (1.6.1)
|
219
|
-
jsbundling-rails (1.0.
|
211
|
+
jsbundling-rails (1.0.3)
|
220
212
|
railties (>= 6.0.0)
|
213
|
+
json (2.6.2)
|
221
214
|
launchy (2.5.0)
|
222
215
|
addressable (~> 2.7)
|
223
216
|
listen (3.7.1)
|
224
217
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
225
218
|
rb-inotify (~> 0.9, >= 0.9.10)
|
226
|
-
loofah (2.
|
219
|
+
loofah (2.19.0)
|
227
220
|
crass (~> 1.0.2)
|
228
221
|
nokogiri (>= 1.5.9)
|
229
222
|
mail (2.7.1)
|
@@ -233,7 +226,7 @@ GEM
|
|
233
226
|
zeitwerk
|
234
227
|
marcel (1.0.2)
|
235
228
|
matrix (0.4.2)
|
236
|
-
meta-tags (2.
|
229
|
+
meta-tags (2.17.0)
|
237
230
|
actionpack (>= 3.2.0, < 7.1)
|
238
231
|
method_source (1.0.0)
|
239
232
|
mime-types (3.4.1)
|
@@ -242,29 +235,28 @@ GEM
|
|
242
235
|
mini_magick (4.11.0)
|
243
236
|
mini_mime (1.1.2)
|
244
237
|
mini_portile2 (2.8.0)
|
245
|
-
minitest (5.16.
|
246
|
-
msgpack (1.
|
238
|
+
minitest (5.16.3)
|
239
|
+
msgpack (1.5.6)
|
247
240
|
multi_xml (0.6.0)
|
248
|
-
net-protocol (0.1.
|
249
|
-
io-wait
|
241
|
+
net-protocol (0.1.3)
|
250
242
|
timeout
|
251
243
|
net-smtp (0.3.1)
|
252
244
|
digest
|
253
245
|
net-protocol
|
254
246
|
timeout
|
255
247
|
nio4r (2.5.8)
|
256
|
-
nokogiri (1.13.
|
248
|
+
nokogiri (1.13.8)
|
257
249
|
mini_portile2 (~> 2.8.0)
|
258
250
|
racc (~> 1.4)
|
259
251
|
orm_adapter (0.5.0)
|
260
252
|
pagy (5.10.1)
|
261
253
|
activesupport
|
262
|
-
parallel (1.
|
263
|
-
parser (3.1.
|
254
|
+
parallel (1.22.1)
|
255
|
+
parser (3.1.2.1)
|
264
256
|
ast (~> 2.4.1)
|
265
|
-
pg (1.3
|
266
|
-
public_suffix (
|
267
|
-
puma (5.6.
|
257
|
+
pg (1.4.3)
|
258
|
+
public_suffix (5.0.0)
|
259
|
+
puma (5.6.5)
|
268
260
|
nio4r (~> 2.0)
|
269
261
|
pundit (2.2.0)
|
270
262
|
activesupport (>= 3.0.0)
|
@@ -304,27 +296,27 @@ GEM
|
|
304
296
|
thor (~> 1.0)
|
305
297
|
rainbow (3.1.1)
|
306
298
|
rake (13.0.6)
|
307
|
-
ransack (2.
|
308
|
-
activerecord (>=
|
309
|
-
activesupport (>=
|
299
|
+
ransack (3.2.1)
|
300
|
+
activerecord (>= 6.1.5)
|
301
|
+
activesupport (>= 6.1.5)
|
310
302
|
i18n
|
311
|
-
rb-fsevent (0.11.
|
303
|
+
rb-fsevent (0.11.1)
|
312
304
|
rb-inotify (0.10.1)
|
313
305
|
ffi (~> 1.0)
|
314
|
-
redis (4.
|
315
|
-
regexp_parser (2.
|
306
|
+
redis (4.8.0)
|
307
|
+
regexp_parser (2.5.0)
|
316
308
|
responders (3.0.1)
|
317
309
|
actionpack (>= 5.0)
|
318
310
|
railties (>= 5.0)
|
319
311
|
rexml (3.2.5)
|
320
|
-
rspec-core (3.
|
321
|
-
rspec-support (~> 3.
|
322
|
-
rspec-expectations (3.
|
312
|
+
rspec-core (3.11.0)
|
313
|
+
rspec-support (~> 3.11.0)
|
314
|
+
rspec-expectations (3.11.0)
|
323
315
|
diff-lcs (>= 1.2.0, < 2.0)
|
324
|
-
rspec-support (~> 3.
|
325
|
-
rspec-mocks (3.
|
316
|
+
rspec-support (~> 3.11.0)
|
317
|
+
rspec-mocks (3.11.1)
|
326
318
|
diff-lcs (>= 1.2.0, < 2.0)
|
327
|
-
rspec-support (~> 3.
|
319
|
+
rspec-support (~> 3.11.0)
|
328
320
|
rspec-rails (4.0.2)
|
329
321
|
actionpack (>= 4.2)
|
330
322
|
activesupport (>= 4.2)
|
@@ -333,34 +325,35 @@ GEM
|
|
333
325
|
rspec-expectations (~> 3.10)
|
334
326
|
rspec-mocks (~> 3.10)
|
335
327
|
rspec-support (~> 3.10)
|
336
|
-
rspec-support (3.
|
337
|
-
rubocop (1.
|
328
|
+
rspec-support (3.11.0)
|
329
|
+
rubocop (1.35.0)
|
330
|
+
json (~> 2.3)
|
338
331
|
parallel (~> 1.10)
|
339
|
-
parser (>= 3.1.
|
332
|
+
parser (>= 3.1.2.1)
|
340
333
|
rainbow (>= 2.2.2, < 4.0)
|
341
334
|
regexp_parser (>= 1.8, < 3.0)
|
342
|
-
rexml
|
343
|
-
rubocop-ast (>= 1.
|
335
|
+
rexml (>= 3.2.5, < 4.0)
|
336
|
+
rubocop-ast (>= 1.20.1, < 2.0)
|
344
337
|
ruby-progressbar (~> 1.7)
|
345
338
|
unicode-display_width (>= 1.4.0, < 3.0)
|
346
|
-
rubocop-ast (1.
|
347
|
-
parser (>= 3.
|
348
|
-
rubocop-performance (1.
|
339
|
+
rubocop-ast (1.21.0)
|
340
|
+
parser (>= 3.1.1.0)
|
341
|
+
rubocop-performance (1.14.3)
|
349
342
|
rubocop (>= 1.7.0, < 2.0)
|
350
343
|
rubocop-ast (>= 0.4.0)
|
351
|
-
rubocop-shopify (2.
|
352
|
-
rubocop (~> 1.
|
344
|
+
rubocop-shopify (2.9.0)
|
345
|
+
rubocop (~> 1.33)
|
353
346
|
ruby-debug-ide (0.7.3)
|
354
347
|
rake (>= 0.8.1)
|
355
348
|
ruby-progressbar (1.11.0)
|
356
349
|
ruby-vips (2.1.4)
|
357
350
|
ffi (~> 1.12)
|
358
351
|
rubyzip (2.3.2)
|
359
|
-
selenium-webdriver (4.
|
352
|
+
selenium-webdriver (4.4.0)
|
360
353
|
childprocess (>= 0.5, < 5.0)
|
361
354
|
rexml (~> 3.2, >= 3.2.5)
|
362
|
-
rubyzip (>= 1.2.2)
|
363
|
-
|
355
|
+
rubyzip (>= 1.2.2, < 3.0)
|
356
|
+
websocket (~> 1.0)
|
364
357
|
simplecov (0.21.2)
|
365
358
|
docile (~> 1.1)
|
366
359
|
simplecov-html (~> 0.11)
|
@@ -369,7 +362,7 @@ GEM
|
|
369
362
|
rexml
|
370
363
|
simplecov (~> 0.19)
|
371
364
|
simplecov-html (0.12.3)
|
372
|
-
simplecov_json_formatter (0.1.
|
365
|
+
simplecov_json_formatter (0.1.4)
|
373
366
|
sixarm_ruby_unaccent (1.2.0)
|
374
367
|
spring (4.0.0)
|
375
368
|
spring-commands-rspec (1.0.4)
|
@@ -381,20 +374,19 @@ GEM
|
|
381
374
|
actionpack (>= 5.2)
|
382
375
|
activesupport (>= 5.2)
|
383
376
|
sprockets (>= 3.0.0)
|
384
|
-
standard (1.
|
385
|
-
rubocop (= 1.
|
386
|
-
rubocop-performance (= 1.
|
387
|
-
|
388
|
-
railties (>= 6.0.0)
|
389
|
-
test-prof (1.0.7)
|
377
|
+
standard (1.16.0)
|
378
|
+
rubocop (= 1.35.0)
|
379
|
+
rubocop-performance (= 1.14.3)
|
380
|
+
test-prof (1.0.10)
|
390
381
|
thor (1.2.1)
|
391
|
-
timeout (0.
|
392
|
-
turbo-rails (1.0
|
382
|
+
timeout (0.3.0)
|
383
|
+
turbo-rails (1.3.0)
|
393
384
|
actionpack (>= 6.0.0)
|
385
|
+
activejob (>= 6.0.0)
|
394
386
|
railties (>= 6.0.0)
|
395
387
|
tzinfo (2.0.5)
|
396
388
|
concurrent-ruby (~> 1.0)
|
397
|
-
unicode-display_width (2.
|
389
|
+
unicode-display_width (2.2.0)
|
398
390
|
view_component (2.60.0)
|
399
391
|
activesupport (>= 5.0.0, < 8.0)
|
400
392
|
method_source (~> 1.0)
|
@@ -409,10 +401,11 @@ GEM
|
|
409
401
|
nokogiri (~> 1.6)
|
410
402
|
rubyzip (>= 1.3.0)
|
411
403
|
selenium-webdriver (~> 4.0)
|
412
|
-
webmock (3.
|
404
|
+
webmock (3.18.1)
|
413
405
|
addressable (>= 2.8.0)
|
414
406
|
crack (>= 0.3.2)
|
415
407
|
hashdiff (>= 0.4.0, < 2.0.0)
|
408
|
+
websocket (1.2.9)
|
416
409
|
websocket-driver (0.7.5)
|
417
410
|
websocket-extensions (>= 0.1.0)
|
418
411
|
websocket-extensions (0.1.5)
|
@@ -455,7 +448,6 @@ DEPENDENCIES
|
|
455
448
|
groupdate
|
456
449
|
hightop
|
457
450
|
hotwire-livereload (~> 1.1)
|
458
|
-
hotwire-rails
|
459
451
|
htmlbeautifier
|
460
452
|
httparty
|
461
453
|
image_processing (~> 1.12)
|
@@ -16,9 +16,15 @@ class Avo::BaseComponent < ViewComponent::Base
|
|
16
16
|
nil
|
17
17
|
end
|
18
18
|
|
19
|
+
# Fetch the resource and hydrate it with the model
|
19
20
|
def relation_resource
|
20
21
|
model = params[:via_resource_class] || params[:via_relation_class]
|
21
|
-
|
22
|
+
model_klass = model.safe_constantize
|
23
|
+
|
24
|
+
resource = ::Avo::App.get_resource_by_model_name model_klass
|
25
|
+
model = model_klass.find params[:via_resource_id]
|
26
|
+
|
27
|
+
resource.dup.hydrate model: model
|
22
28
|
end
|
23
29
|
|
24
30
|
# Get the resource for the resource using the klass attribute so we get the namespace too
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<%= content_tag :div,
|
2
|
+
class: classes,
|
3
|
+
style: style,
|
4
|
+
data: data do %>
|
5
|
+
<div class="h-full pt-4 md:pt-0 md:h-14 flex self-start items-center text-slate-800">
|
6
|
+
<div class="<% if displayed_in_modal %> md:w-48 <% else %> md:w-64 px-6 md:px-6 <% end %> w-48 flex uppercase font-semibold text-gray-500 text-sm" data-slot="label">
|
7
|
+
<% if form.present? %>
|
8
|
+
<%= form.label field.id, label %>
|
9
|
+
<% else %>
|
10
|
+
<%= field.name %>
|
11
|
+
<% end %>
|
12
|
+
<% if on_edit? && field.is_required? %> <span class="text-red-600 ml-1">*</span> <% end %>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
<div class="flex-1 flex flex-row md:min-h-inherit py-2 <% unless displayed_in_modal %> px-6 <% end %>">
|
16
|
+
<% if on_show? %>
|
17
|
+
<div class="self-center <% if full_width %> w-full <% else %> w-full md:w-8/12 <% end %>" data-slot="value">
|
18
|
+
<% if field.value.blank? and dash_if_blank %>
|
19
|
+
—
|
20
|
+
<% else %>
|
21
|
+
<%= content %>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
24
|
+
<% elsif on_edit? %>
|
25
|
+
<div class="self-center <% if displayed_in_modal or full_width or compact? %> w-full <% else %> w-full md:w-8/12 <% end %>" data-slot="value">
|
26
|
+
<%= content %>
|
27
|
+
<% if record.present? and record.errors.include? field.id %>
|
28
|
+
<div class="text-red-600 mt-2 text-sm"><%= record.errors.full_messages_for(field.id).to_sentence %></div>
|
29
|
+
<% end %>
|
30
|
+
<% if help.present? %>
|
31
|
+
<div class="text-gray-600 mt-2 text-sm"><%== help %></div>
|
32
|
+
<% end %>
|
33
|
+
</div>
|
34
|
+
<% end %>
|
35
|
+
</div>
|
36
|
+
<% if params[:avo_debug].present? %>
|
37
|
+
<!-- Raw value: -->
|
38
|
+
<!-- <%== field.value.inspect %> -->
|
39
|
+
<% end %>
|
40
|
+
<% end %>
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Avo::FieldWrapperComponent < ViewComponent::Base
|
4
|
+
# attr_reader :classes
|
5
|
+
attr_reader :dash_if_blank
|
6
|
+
# attr_reader :data
|
7
|
+
attr_reader :displayed_in_modal
|
8
|
+
# attr_reader :help
|
9
|
+
attr_reader :field
|
10
|
+
attr_reader :form
|
11
|
+
attr_reader :full_width
|
12
|
+
# attr_reader :label
|
13
|
+
attr_reader :resource
|
14
|
+
# attr_reader :record
|
15
|
+
# attr_reader :style
|
16
|
+
attr_reader :view
|
17
|
+
|
18
|
+
def initialize(
|
19
|
+
compact: false,
|
20
|
+
dash_if_blank: true,
|
21
|
+
data: {},
|
22
|
+
displayed_in_modal: false,
|
23
|
+
help: nil, # do we really need it?
|
24
|
+
field: nil,
|
25
|
+
form: nil,
|
26
|
+
full_width: false,
|
27
|
+
label: nil, # do we really need it?
|
28
|
+
resource: nil,
|
29
|
+
style: "",
|
30
|
+
view: :show,
|
31
|
+
**args
|
32
|
+
)
|
33
|
+
@args = args
|
34
|
+
@classes = args[:class].present? ? args[:class] : ""
|
35
|
+
@compact = compact
|
36
|
+
@dash_if_blank = dash_if_blank
|
37
|
+
@data = data
|
38
|
+
@displayed_in_modal = displayed_in_modal
|
39
|
+
@help = help
|
40
|
+
@field = field
|
41
|
+
@form = form
|
42
|
+
@full_width = full_width
|
43
|
+
@label = label
|
44
|
+
@resource = resource
|
45
|
+
@style = style
|
46
|
+
@view = view
|
47
|
+
end
|
48
|
+
|
49
|
+
def classes(extra_classes = "")
|
50
|
+
"relative flex flex-col flex-grow pb-2 md:pb-0 leading-tight min-h-14 #{compact? ? "" : "md:flex-row md:items-center"} #{@classes || ""} #{extra_classes || ""} #{@field.get_html(:classes, view: view, element: :wrapper)}"
|
51
|
+
end
|
52
|
+
|
53
|
+
def style
|
54
|
+
"#{@style} #{@field.get_html(:style, view: view, element: :wrapper)}"
|
55
|
+
end
|
56
|
+
|
57
|
+
def label
|
58
|
+
@label || @field.name
|
59
|
+
end
|
60
|
+
|
61
|
+
def on_show?
|
62
|
+
view == :show
|
63
|
+
end
|
64
|
+
|
65
|
+
def on_edit?
|
66
|
+
view == :edit
|
67
|
+
end
|
68
|
+
|
69
|
+
def help
|
70
|
+
@help || @field.help
|
71
|
+
end
|
72
|
+
|
73
|
+
def record
|
74
|
+
resource.present? ? resource.model : nil
|
75
|
+
end
|
76
|
+
|
77
|
+
def data
|
78
|
+
attributes = {
|
79
|
+
field_id: @field.id,
|
80
|
+
field_type: @field.type
|
81
|
+
}
|
82
|
+
|
83
|
+
# Add the built-in stimulus integration data tags.
|
84
|
+
if @resource.present?
|
85
|
+
@resource.get_stimulus_controllers.split(" ").each do |controller|
|
86
|
+
attributes["#{controller}-target"] = "#{@field.id.to_s.underscore}_#{@field.type.to_s.underscore}_wrapper".camelize(:lower)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# Fetch the data attributes off the html option
|
91
|
+
wrapper_data_attributes = @field.get_html :data, view: view, element: :wrapper
|
92
|
+
if wrapper_data_attributes.present?
|
93
|
+
attributes.merge! wrapper_data_attributes
|
94
|
+
end
|
95
|
+
|
96
|
+
attributes
|
97
|
+
end
|
98
|
+
|
99
|
+
def compact?
|
100
|
+
@compact
|
101
|
+
end
|
102
|
+
end
|
@@ -12,7 +12,7 @@
|
|
12
12
|
data-association="<%= @field.id %>"
|
13
13
|
data-association-class="<%= @field&.target_resource&.model_class || nil %>"
|
14
14
|
>
|
15
|
-
<%=
|
15
|
+
<%= field_wrapper **field_wrapper_args, help: @field.polymorphic_help || '' do %>
|
16
16
|
<%= @form.select @field.type_input_foreign_key, @field.types.map { |type| [::Avo::App.get_resource_by_model_name(type.to_s).name, type.to_s] },
|
17
17
|
{
|
18
18
|
value: @field.value,
|
@@ -40,7 +40,7 @@
|
|
40
40
|
data-belongs-to-field-target="type"
|
41
41
|
data-type="<%= type %>"
|
42
42
|
>
|
43
|
-
<%=
|
43
|
+
<%= field_wrapper **field_wrapper_args, label: ::Avo::App.get_resource_by_model_name(type.to_s).name do %>
|
44
44
|
<% if @field.searchable %>
|
45
45
|
<%= render Avo::Fields::BelongsToField::AutocompleteComponent.new form: @form,
|
46
46
|
disabled: disabled,
|
@@ -79,7 +79,7 @@
|
|
79
79
|
<% end %>
|
80
80
|
</div>
|
81
81
|
<% else %>
|
82
|
-
<%=
|
82
|
+
<%= field_wrapper **field_wrapper_args do %>
|
83
83
|
<% if @field.searchable %>
|
84
84
|
<%= render Avo::Fields::BelongsToField::AutocompleteComponent.new form: @form,
|
85
85
|
field: @field,
|
@@ -1,3 +1,4 @@
|
|
1
1
|
<%= index_field_wrapper field: @field, resource: @resource do %>
|
2
|
-
<%= link_to @field.label, helpers.
|
2
|
+
<%= link_to @field.label, helpers.resource_view_path(model: @field.value, resource: @field.target_resource)
|
3
|
+
%>
|
3
4
|
<% end %>
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<%=
|
2
|
-
<%= link_to @field.label,
|
1
|
+
<%= field_wrapper **field_wrapper_args do %>
|
2
|
+
<%= link_to @field.label, resource_view_path %>
|
3
3
|
<% end %>
|
@@ -1,4 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Avo::Fields::BelongsToField::ShowComponent < Avo::Fields::ShowComponent
|
4
|
+
def resource_view_path
|
5
|
+
helpers.resource_view_path(
|
6
|
+
model: @field.value,
|
7
|
+
resource: @field.target_resource,
|
8
|
+
via_resource_class: @resource.model_class,
|
9
|
+
via_resource_id: @resource.model.id
|
10
|
+
)
|
11
|
+
end
|
4
12
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%=
|
1
|
+
<%= field_wrapper **field_wrapper_args, dash_if_blank: false do %>
|
2
2
|
<div class="h-8 flex items-center">
|
3
3
|
<%= @form.check_box @field.id,
|
4
4
|
checked: @field.value,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%=
|
1
|
+
<%= field_wrapper **field_wrapper_args do %>
|
2
2
|
<div class="flex items-center">
|
3
3
|
<div class="space-y-2">
|
4
4
|
<% model_param_key = model_name_from_record_or_class(@resource.model).param_key %>
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<%=
|
1
|
+
<%= field_wrapper **field_wrapper_args, dash_if_blank: false do %>
|
2
2
|
<%= render Avo::Fields::Common::BooleanGroupComponent.new options: @field.options, value: @field.value %>
|
3
3
|
<% end %>
|
@@ -1,10 +1,10 @@
|
|
1
|
-
<%=
|
1
|
+
<%= field_wrapper **field_wrapper_args, full_width: true do %>
|
2
2
|
<div data-controller="code-field">
|
3
3
|
<%= @form.text_area @field.id,
|
4
4
|
class: classes("w-full"),
|
5
5
|
data: {
|
6
6
|
'code-field-target': 'element',
|
7
|
-
view:
|
7
|
+
view: view,
|
8
8
|
language: @field.language,
|
9
9
|
theme: @field.theme,
|
10
10
|
'tab-size': @field.tab_size,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%=
|
1
|
+
<%= field_wrapper **field_wrapper_args, full_width: true do %>
|
2
2
|
<div data-controller="code-field" style="--height: <%= @field.height %>">
|
3
3
|
<%= text_area_tag @field.id, @field.value,
|
4
4
|
class: helpers.input_classes('w-full'),
|
@@ -6,7 +6,7 @@
|
|
6
6
|
disabled: true,
|
7
7
|
data: {
|
8
8
|
'code-field-target': 'element',
|
9
|
-
view:
|
9
|
+
view: view,
|
10
10
|
language: @field.language,
|
11
11
|
theme: @field.theme,
|
12
12
|
'tab-size': @field.tab_size,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%=
|
1
|
+
<%= field_wrapper **field_wrapper_args do %>
|
2
2
|
<%= @form.select @field.id, @field.select_options, {
|
3
3
|
selected: @field.value,
|
4
4
|
include_blank: @field.include_blank
|