view_component 3.13.0 → 3.14.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 +34 -0
- data/lib/view_component/base.rb +1 -0
- data/lib/view_component/compiler.rb +6 -0
- data/lib/view_component/preview.rb +1 -1
- data/lib/view_component/slotable.rb +1 -4
- data/lib/view_component/slotable_default.rb +20 -0
- data/lib/view_component/test_helpers.rb +4 -0
- data/lib/view_component/use_helpers.rb +17 -5
- data/lib/view_component/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ef8c603bedd61511ed3eb2da02cd7aaccc5b890ad20badac0cfc9a3e7d4af1e
|
4
|
+
data.tar.gz: f756c5bd11f44e7e8984d6cb6b29ec409dc082d83864ee4bd82c50adc784310c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8815314944335c3b69196bf5ba8779e10ec78a3146e8cc51d4d278d5e444035c8bc50858315c45e5556337e925ab94f4afee6b3283839079db6892292bec3581
|
7
|
+
data.tar.gz: 42c9159369779c50a9904525239d5bf3daa62ed5373104cb11f80251b9481a8225290421d0d9a5663e9f7c7e0bd4d73c63a53bc44845dc4b5bc23a0419869301
|
data/docs/CHANGELOG.md
CHANGED
@@ -10,6 +10,40 @@ nav_order: 5
|
|
10
10
|
|
11
11
|
## main
|
12
12
|
|
13
|
+
## 3.14.0
|
14
|
+
|
15
|
+
* Defer to built-in caching for language environment setup, rather than manually using `actions/cache` in CI.
|
16
|
+
|
17
|
+
*Simon Fish*
|
18
|
+
|
19
|
+
* Add test coverage for use of `turbo_stream` helpers in components when `capture_compatibility_patch_enabled` is `true`.
|
20
|
+
|
21
|
+
*Simon Fish*
|
22
|
+
|
23
|
+
* Add experimental `SlotableDefault` module, allowing components to define a `default_SLOTNAME` method to provide a default value for slots.
|
24
|
+
|
25
|
+
*Joel Hawksley*
|
26
|
+
|
27
|
+
* Add documentation on rendering ViewComponents outside of the view context.
|
28
|
+
|
29
|
+
*Joel Hawksley*
|
30
|
+
|
31
|
+
* Look for preview files that end in `preview.rb` rather than `_preview.rb` to allow previews to exist in sidecar directory with test files.
|
32
|
+
|
33
|
+
*Seth Herr*
|
34
|
+
|
35
|
+
* Add `assert_component_rendered` test helper.
|
36
|
+
|
37
|
+
*Reegan Viljoen*
|
38
|
+
|
39
|
+
* Add `prefix:` option to `use_helpers`.
|
40
|
+
|
41
|
+
*Reegan Viljoen*
|
42
|
+
|
43
|
+
* Add support for Rails 7.2.
|
44
|
+
|
45
|
+
*Reegan Viljoen*
|
46
|
+
|
13
47
|
## 3.13.0
|
14
48
|
|
15
49
|
* Add ruby head and YJIT to CI.
|
data/lib/view_component/base.rb
CHANGED
@@ -10,6 +10,7 @@ require "view_component/errors"
|
|
10
10
|
require "view_component/inline_template"
|
11
11
|
require "view_component/preview"
|
12
12
|
require "view_component/slotable"
|
13
|
+
require "view_component/slotable_default"
|
13
14
|
require "view_component/translatable"
|
14
15
|
require "view_component/with_content_helper"
|
15
16
|
require "view_component/use_helpers"
|
@@ -86,6 +86,12 @@ module ViewComponent
|
|
86
86
|
define_render_template_for
|
87
87
|
end
|
88
88
|
|
89
|
+
component_class.registered_slots.each do |slot_name, config|
|
90
|
+
config[:default_method] = component_class.instance_methods.find { |method_name| method_name == :"default_#{slot_name}" }
|
91
|
+
|
92
|
+
component_class.registered_slots[slot_name] = config
|
93
|
+
end
|
94
|
+
|
89
95
|
component_class.build_i18n_backend
|
90
96
|
|
91
97
|
CompileCache.register(component_class)
|
@@ -102,7 +102,7 @@ module ViewComponent # :nodoc:
|
|
102
102
|
|
103
103
|
def load_previews
|
104
104
|
Array(preview_paths).each do |preview_path|
|
105
|
-
Dir["#{preview_path}/**/*
|
105
|
+
Dir["#{preview_path}/**/*preview.rb"].sort.each { |file| require_dependency file }
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
@@ -266,10 +266,7 @@ module ViewComponent
|
|
266
266
|
end
|
267
267
|
|
268
268
|
def define_slot(slot_name, collection:, callable:)
|
269
|
-
|
270
|
-
slot = {
|
271
|
-
collection: collection
|
272
|
-
}
|
269
|
+
slot = {collection: collection}
|
273
270
|
return slot unless callable
|
274
271
|
|
275
272
|
# If callable responds to `render_in`, we set it on the slot as a renderable
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module ViewComponent
|
2
|
+
module SlotableDefault
|
3
|
+
def get_slot(slot_name)
|
4
|
+
@__vc_set_slots ||= {}
|
5
|
+
|
6
|
+
return super unless !@__vc_set_slots[slot_name] && (default_method = registered_slots[slot_name][:default_method])
|
7
|
+
|
8
|
+
renderable_value = send(default_method)
|
9
|
+
slot = Slot.new(self)
|
10
|
+
|
11
|
+
if renderable_value.respond_to?(:render_in)
|
12
|
+
slot.__vc_component_instance = renderable_value
|
13
|
+
else
|
14
|
+
slot.__vc_content = renderable_value
|
15
|
+
end
|
16
|
+
|
17
|
+
slot
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -14,6 +14,10 @@ module ViewComponent
|
|
14
14
|
def refute_component_rendered
|
15
15
|
assert_no_selector("body")
|
16
16
|
end
|
17
|
+
|
18
|
+
def assert_component_rendered
|
19
|
+
assert_selector("body")
|
20
|
+
end
|
17
21
|
rescue LoadError
|
18
22
|
# We don't have a test case for running an application without capybara installed.
|
19
23
|
# It's probably fine to leave this without coverage.
|
@@ -4,23 +4,35 @@ module ViewComponent::UseHelpers
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
class_methods do
|
7
|
-
def use_helpers(*args, from: nil)
|
8
|
-
args.each { |helper_method| use_helper(helper_method, from: from) }
|
7
|
+
def use_helpers(*args, from: nil, prefix: false)
|
8
|
+
args.each { |helper_method| use_helper(helper_method, from: from, prefix: prefix) }
|
9
9
|
end
|
10
10
|
|
11
|
-
def use_helper(helper_method, from: nil)
|
11
|
+
def use_helper(helper_method, from: nil, prefix: false)
|
12
|
+
helper_method_name = full_helper_method_name(helper_method, prefix: prefix, source: from)
|
13
|
+
|
12
14
|
class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
|
13
|
-
def #{
|
15
|
+
def #{helper_method_name}(*args, &block)
|
14
16
|
raise HelpersCalledBeforeRenderError if view_context.nil?
|
15
17
|
|
16
18
|
#{define_helper(helper_method: helper_method, source: from)}
|
17
19
|
end
|
18
20
|
RUBY
|
19
|
-
ruby2_keywords(
|
21
|
+
ruby2_keywords(helper_method_name) if respond_to?(:ruby2_keywords, true)
|
20
22
|
end
|
21
23
|
|
22
24
|
private
|
23
25
|
|
26
|
+
def full_helper_method_name(helper_method, prefix: false, source: nil)
|
27
|
+
return helper_method unless prefix.present?
|
28
|
+
|
29
|
+
if !!prefix == prefix
|
30
|
+
"#{source.to_s.underscore}_#{helper_method}"
|
31
|
+
else
|
32
|
+
"#{prefix}_#{helper_method}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
24
36
|
def define_helper(helper_method:, source:)
|
25
37
|
return "__vc_original_view_context.#{helper_method}(*args, &block)" unless source.present?
|
26
38
|
|
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.14.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-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -380,6 +380,20 @@ dependencies:
|
|
380
380
|
- - "~>"
|
381
381
|
- !ruby/object:Gem::Version
|
382
382
|
version: 3.4.2
|
383
|
+
- !ruby/object:Gem::Dependency
|
384
|
+
name: turbo-rails
|
385
|
+
requirement: !ruby/object:Gem::Requirement
|
386
|
+
requirements:
|
387
|
+
- - "~>"
|
388
|
+
- !ruby/object:Gem::Version
|
389
|
+
version: '1'
|
390
|
+
type: :development
|
391
|
+
prerelease: false
|
392
|
+
version_requirements: !ruby/object:Gem::Requirement
|
393
|
+
requirements:
|
394
|
+
- - "~>"
|
395
|
+
- !ruby/object:Gem::Version
|
396
|
+
version: '1'
|
383
397
|
- !ruby/object:Gem::Dependency
|
384
398
|
name: warning
|
385
399
|
requirement: !ruby/object:Gem::Requirement
|
@@ -530,6 +544,7 @@ files:
|
|
530
544
|
- lib/view_component/rendering_monkey_patch.rb
|
531
545
|
- lib/view_component/slot.rb
|
532
546
|
- lib/view_component/slotable.rb
|
547
|
+
- lib/view_component/slotable_default.rb
|
533
548
|
- lib/view_component/system_test_case.rb
|
534
549
|
- lib/view_component/system_test_helpers.rb
|
535
550
|
- lib/view_component/test_case.rb
|