view_component 3.9.0 → 3.11.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 +4 -4
- data/docs/CHANGELOG.md +49 -1
- data/lib/view_component/base.rb +21 -5
- data/lib/view_component/test_helpers.rb +5 -0
- data/lib/view_component/translatable.rb +1 -2
- data/lib/view_component/version.rb +1 -1
- metadata +142 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dad3e67f83aa23cac53f816d751a652b229a1cbee327e753dbcdb9814549cf03
|
4
|
+
data.tar.gz: 15e2fdafbb4132567a3b81bfeb7723704ffc5824aa82eb8083f2f79f48505ad3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fc84bada7187832e5cf4dba96b864e177260f6db88d9b9af78bee95b11ce7a3197d59d1f1171a9b4f473c62230e385b5b922b0536084c86ee73b80e6b9d293d
|
7
|
+
data.tar.gz: 100e6e5e8f7d06848790906ee5b6ecc106a53d3c018c7bccfd303097ec2c126ee4511b409ff42513ae3b98ac7441cf6c0ecd1f0d0404b936529c78e8fdebef88
|
data/docs/CHANGELOG.md
CHANGED
@@ -10,6 +10,54 @@ nav_order: 5
|
|
10
10
|
|
11
11
|
## main
|
12
12
|
|
13
|
+
## 3.11.0
|
14
|
+
|
15
|
+
* Fix running non-integration tests under Rails main.
|
16
|
+
|
17
|
+
*Cameron Dutro*
|
18
|
+
|
19
|
+
* Better name and link for Avo.
|
20
|
+
|
21
|
+
*Adrian Marin*
|
22
|
+
|
23
|
+
* Document using rack-mini-profiler with ViewComponent.
|
24
|
+
|
25
|
+
*Thomas Carr*
|
26
|
+
|
27
|
+
* Move dependencies to gemspec.
|
28
|
+
|
29
|
+
*Joel Hawksley*
|
30
|
+
|
31
|
+
* Include ViewComponent::UseHelpers by default.
|
32
|
+
|
33
|
+
*Reegan Viljoen*
|
34
|
+
|
35
|
+
* Bump `puma` in Gemfile.lock.
|
36
|
+
|
37
|
+
*Cameron Dutro*
|
38
|
+
|
39
|
+
* Add Keenly to users list.
|
40
|
+
|
41
|
+
*Vinoth*
|
42
|
+
|
43
|
+
## 3.10.0
|
44
|
+
|
45
|
+
* Fix html escaping in `#call` for non-strings.
|
46
|
+
|
47
|
+
*Reegan Viljoen, Cameron Dutro*
|
48
|
+
|
49
|
+
* Add `output_preamble` to match `output_postamble`, using the same safety checks.
|
50
|
+
|
51
|
+
*Kali Donovan, Michael Daross*
|
52
|
+
|
53
|
+
* Exclude html escaping of I18n reserved keys with `I18n::RESERVED_KEYS` rather than `I18n.reserved_keys_pattern`.
|
54
|
+
|
55
|
+
*Nick Coyne*
|
56
|
+
|
57
|
+
* Update CI configuration to use `Appraisal`.
|
58
|
+
|
59
|
+
*Hans Lemuet, Simon Fish*
|
60
|
+
|
13
61
|
## 3.9.0
|
14
62
|
|
15
63
|
* Don’t break `rails stats` if ViewComponent path is missing.
|
@@ -22,7 +70,7 @@ nav_order: 5
|
|
22
70
|
|
23
71
|
* Add support for Ruby 3.3.
|
24
72
|
|
25
|
-
|
73
|
+
*Reegan Viljoen*
|
26
74
|
|
27
75
|
* Allow translations to be inherited and overridden in subclasses.
|
28
76
|
|
data/lib/view_component/base.rb
CHANGED
@@ -28,6 +28,7 @@ module ViewComponent
|
|
28
28
|
end
|
29
29
|
|
30
30
|
include ViewComponent::InlineTemplate
|
31
|
+
include ViewComponent::UseHelpers
|
31
32
|
include ViewComponent::Slotable
|
32
33
|
include ViewComponent::Translatable
|
33
34
|
include ViewComponent::WithContentHelper
|
@@ -104,11 +105,13 @@ module ViewComponent
|
|
104
105
|
before_render
|
105
106
|
|
106
107
|
if render?
|
107
|
-
# Avoid allocating new string when output_postamble
|
108
|
-
|
109
|
-
|
108
|
+
# Avoid allocating new string when output_preamble and output_postamble are blank
|
109
|
+
rendered_template = safe_render_template_for(@__vc_variant).to_s
|
110
|
+
|
111
|
+
if output_preamble.blank? && output_postamble.blank?
|
112
|
+
rendered_template
|
110
113
|
else
|
111
|
-
|
114
|
+
safe_output_preamble + rendered_template + safe_output_postamble
|
112
115
|
end
|
113
116
|
else
|
114
117
|
""
|
@@ -156,6 +159,13 @@ module ViewComponent
|
|
156
159
|
end
|
157
160
|
end
|
158
161
|
|
162
|
+
# Optional content to be returned before the rendered template.
|
163
|
+
#
|
164
|
+
# @return [String]
|
165
|
+
def output_preamble
|
166
|
+
@@default_output_preamble ||= "".html_safe
|
167
|
+
end
|
168
|
+
|
159
169
|
# Optional content to be returned after the rendered template.
|
160
170
|
#
|
161
171
|
# @return [String]
|
@@ -309,7 +319,7 @@ module ViewComponent
|
|
309
319
|
|
310
320
|
def maybe_escape_html(text)
|
311
321
|
return text if request && !request.format.html?
|
312
|
-
return text if text.
|
322
|
+
return text if text.blank?
|
313
323
|
|
314
324
|
if text.html_safe?
|
315
325
|
text
|
@@ -329,6 +339,12 @@ module ViewComponent
|
|
329
339
|
end
|
330
340
|
end
|
331
341
|
|
342
|
+
def safe_output_preamble
|
343
|
+
maybe_escape_html(output_preamble) do
|
344
|
+
Kernel.warn("WARNING: The #{self.class} component was provided an HTML-unsafe preamble. The preamble will be automatically escaped, but you may want to investigate.")
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
332
348
|
def safe_output_postamble
|
333
349
|
maybe_escape_html(output_postamble) do
|
334
350
|
Kernel.warn("WARNING: The #{self.class} component was provided an HTML-unsafe postamble. The postamble will be automatically escaped, but you may want to investigate.")
|
@@ -238,6 +238,8 @@ module ViewComponent
|
|
238
238
|
#
|
239
239
|
# @return [ActionDispatch::TestRequest]
|
240
240
|
def vc_test_request
|
241
|
+
require "action_controller/test_case"
|
242
|
+
|
241
243
|
@vc_test_request ||=
|
242
244
|
begin
|
243
245
|
out = ActionDispatch::TestRequest.create
|
@@ -255,9 +257,11 @@ module ViewComponent
|
|
255
257
|
|
256
258
|
def __vc_test_helpers_preview_class
|
257
259
|
result = if respond_to?(:described_class)
|
260
|
+
# :nocov:
|
258
261
|
raise "`render_preview` expected a described_class, but it is nil." if described_class.nil?
|
259
262
|
|
260
263
|
"#{described_class}Preview"
|
264
|
+
# :nocov:
|
261
265
|
else
|
262
266
|
self.class.name.gsub("Test", "Preview")
|
263
267
|
end
|
@@ -265,5 +269,6 @@ module ViewComponent
|
|
265
269
|
rescue NameError
|
266
270
|
raise NameError, "`render_preview` expected to find #{result}, but it does not exist."
|
267
271
|
end
|
272
|
+
# :nocov:
|
268
273
|
end
|
269
274
|
end
|
@@ -138,8 +138,7 @@ module ViewComponent
|
|
138
138
|
end
|
139
139
|
|
140
140
|
def html_escape_translation_options!(options)
|
141
|
-
options.each do |name, value|
|
142
|
-
next if ::I18n.reserved_keys_pattern.match?(name)
|
141
|
+
options.except(*::I18n::RESERVED_KEYS).each do |name, value|
|
143
142
|
next if name == :count && value.is_a?(Numeric)
|
144
143
|
|
145
144
|
options[name] = ERB::Util.html_escape(value.to_s)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: view_component
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ViewComponent Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -114,6 +114,48 @@ dependencies:
|
|
114
114
|
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '2'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: capybara
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '3'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '3'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: cuprite
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0.15'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0.15'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: debug
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
117
159
|
- !ruby/object:Gem::Dependency
|
118
160
|
name: erb_lint
|
119
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,6 +240,20 @@ dependencies:
|
|
198
240
|
- - "~>"
|
199
241
|
- !ruby/object:Gem::Version
|
200
242
|
version: '0.13'
|
243
|
+
- !ruby/object:Gem::Dependency
|
244
|
+
name: puma
|
245
|
+
requirement: !ruby/object:Gem::Requirement
|
246
|
+
requirements:
|
247
|
+
- - "~>"
|
248
|
+
- !ruby/object:Gem::Version
|
249
|
+
version: '6'
|
250
|
+
type: :development
|
251
|
+
prerelease: false
|
252
|
+
version_requirements: !ruby/object:Gem::Requirement
|
253
|
+
requirements:
|
254
|
+
- - "~>"
|
255
|
+
- !ruby/object:Gem::Version
|
256
|
+
version: '6'
|
201
257
|
- !ruby/object:Gem::Dependency
|
202
258
|
name: rake
|
203
259
|
requirement: !ruby/object:Gem::Requirement
|
@@ -212,6 +268,20 @@ dependencies:
|
|
212
268
|
- - "~>"
|
213
269
|
- !ruby/object:Gem::Version
|
214
270
|
version: '13.0'
|
271
|
+
- !ruby/object:Gem::Dependency
|
272
|
+
name: rspec-rails
|
273
|
+
requirement: !ruby/object:Gem::Requirement
|
274
|
+
requirements:
|
275
|
+
- - "~>"
|
276
|
+
- !ruby/object:Gem::Version
|
277
|
+
version: '5'
|
278
|
+
type: :development
|
279
|
+
prerelease: false
|
280
|
+
version_requirements: !ruby/object:Gem::Requirement
|
281
|
+
requirements:
|
282
|
+
- - "~>"
|
283
|
+
- !ruby/object:Gem::Version
|
284
|
+
version: '5'
|
215
285
|
- !ruby/object:Gem::Dependency
|
216
286
|
name: rubocop-md
|
217
287
|
requirement: !ruby/object:Gem::Requirement
|
@@ -226,6 +296,20 @@ dependencies:
|
|
226
296
|
- - "~>"
|
227
297
|
- !ruby/object:Gem::Version
|
228
298
|
version: '1'
|
299
|
+
- !ruby/object:Gem::Dependency
|
300
|
+
name: selenium-webdriver
|
301
|
+
requirement: !ruby/object:Gem::Requirement
|
302
|
+
requirements:
|
303
|
+
- - '='
|
304
|
+
- !ruby/object:Gem::Version
|
305
|
+
version: 4.9.0
|
306
|
+
type: :development
|
307
|
+
prerelease: false
|
308
|
+
version_requirements: !ruby/object:Gem::Requirement
|
309
|
+
requirements:
|
310
|
+
- - '='
|
311
|
+
- !ruby/object:Gem::Version
|
312
|
+
version: 4.9.0
|
229
313
|
- !ruby/object:Gem::Dependency
|
230
314
|
name: standard
|
231
315
|
requirement: !ruby/object:Gem::Requirement
|
@@ -296,6 +380,20 @@ dependencies:
|
|
296
380
|
- - "~>"
|
297
381
|
- !ruby/object:Gem::Version
|
298
382
|
version: 3.4.2
|
383
|
+
- !ruby/object:Gem::Dependency
|
384
|
+
name: warning
|
385
|
+
requirement: !ruby/object:Gem::Requirement
|
386
|
+
requirements:
|
387
|
+
- - ">="
|
388
|
+
- !ruby/object:Gem::Version
|
389
|
+
version: '0'
|
390
|
+
type: :development
|
391
|
+
prerelease: false
|
392
|
+
version_requirements: !ruby/object:Gem::Requirement
|
393
|
+
requirements:
|
394
|
+
- - ">="
|
395
|
+
- !ruby/object:Gem::Version
|
396
|
+
version: '0'
|
299
397
|
- !ruby/object:Gem::Dependency
|
300
398
|
name: yard
|
301
399
|
requirement: !ruby/object:Gem::Requirement
|
@@ -324,6 +422,48 @@ dependencies:
|
|
324
422
|
- - "~>"
|
325
423
|
- !ruby/object:Gem::Version
|
326
424
|
version: 0.0.1
|
425
|
+
- !ruby/object:Gem::Dependency
|
426
|
+
name: net-imap
|
427
|
+
requirement: !ruby/object:Gem::Requirement
|
428
|
+
requirements:
|
429
|
+
- - ">="
|
430
|
+
- !ruby/object:Gem::Version
|
431
|
+
version: '0'
|
432
|
+
type: :development
|
433
|
+
prerelease: false
|
434
|
+
version_requirements: !ruby/object:Gem::Requirement
|
435
|
+
requirements:
|
436
|
+
- - ">="
|
437
|
+
- !ruby/object:Gem::Version
|
438
|
+
version: '0'
|
439
|
+
- !ruby/object:Gem::Dependency
|
440
|
+
name: net-pop
|
441
|
+
requirement: !ruby/object:Gem::Requirement
|
442
|
+
requirements:
|
443
|
+
- - ">="
|
444
|
+
- !ruby/object:Gem::Version
|
445
|
+
version: '0'
|
446
|
+
type: :development
|
447
|
+
prerelease: false
|
448
|
+
version_requirements: !ruby/object:Gem::Requirement
|
449
|
+
requirements:
|
450
|
+
- - ">="
|
451
|
+
- !ruby/object:Gem::Version
|
452
|
+
version: '0'
|
453
|
+
- !ruby/object:Gem::Dependency
|
454
|
+
name: net-smtp
|
455
|
+
requirement: !ruby/object:Gem::Requirement
|
456
|
+
requirements:
|
457
|
+
- - ">="
|
458
|
+
- !ruby/object:Gem::Version
|
459
|
+
version: '0'
|
460
|
+
type: :development
|
461
|
+
prerelease: false
|
462
|
+
version_requirements: !ruby/object:Gem::Requirement
|
463
|
+
requirements:
|
464
|
+
- - ">="
|
465
|
+
- !ruby/object:Gem::Version
|
466
|
+
version: '0'
|
327
467
|
description:
|
328
468
|
email:
|
329
469
|
executables: []
|