view_component 2.66.0 → 2.67.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.
Potentially problematic release.
This version of view_component might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/controllers/concerns/view_component/preview_actions.rb +2 -2
- data/app/helpers/preview_helper.rb +1 -1
- data/app/views/view_components/preview.html.erb +2 -2
- data/docs/CHANGELOG.md +18 -0
- data/lib/rails/generators/abstract_generator.rb +2 -2
- data/lib/rails/generators/component/component_generator.rb +4 -4
- data/lib/rails/generators/locale/component_generator.rb +1 -1
- data/lib/rails/generators/preview/component_generator.rb +1 -1
- data/lib/view_component/base.rb +2 -2
- data/lib/view_component/engine.rb +1 -1
- data/lib/view_component/test_helpers.rb +44 -4
- data/lib/view_component/version.rb +1 -1
- metadata +2 -3
- data/lib/view_component/render_preview_helper.rb +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89e52bd1cf26dcf9a118635445255a0b6fe11d6d66947246af1df1df8b0ae867
|
4
|
+
data.tar.gz: eade5ea1be098f111d221bd3028764df7749f71d7639c49ef6ac99c43276119f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00ab6fe377ab39bf01db8942d36b131bd04d084bc0ab594f751728f47c501eb366caff3ff108aa1acdc17380cc581131d204907b1b0f59a33b0558f043a98ab1
|
7
|
+
data.tar.gz: f7d7923bbad729d18d4c53c348beb60afea0375cd95fd99ba82de0be993af2153d29742533e066a2fca49fb39b836992dd437a78de8aa59789b6c751d9a8d226
|
@@ -43,12 +43,12 @@ module ViewComponent
|
|
43
43
|
|
44
44
|
# :doc:
|
45
45
|
def default_preview_layout
|
46
|
-
|
46
|
+
ViewComponent::Base.config.default_preview_layout
|
47
47
|
end
|
48
48
|
|
49
49
|
# :doc:
|
50
50
|
def show_previews?
|
51
|
-
|
51
|
+
ViewComponent::Base.config.show_previews
|
52
52
|
end
|
53
53
|
|
54
54
|
# :doc:
|
@@ -22,7 +22,7 @@ module PreviewHelper
|
|
22
22
|
# Fetch template source via finding it through preview paths
|
23
23
|
# to accomodate source view when exclusively using templates
|
24
24
|
# for previews for Rails < 6.1.
|
25
|
-
all_template_paths =
|
25
|
+
all_template_paths = ViewComponent::Base.config.preview_paths.map do |preview_path|
|
26
26
|
Dir.glob("#{preview_path}/**/*")
|
27
27
|
end.flatten
|
28
28
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% if @render_args[:component] %>
|
2
|
-
<% if
|
2
|
+
<% if ViewComponent::Base.config.render_monkey_patch_enabled || Rails.version.to_f >= 6.1 %>
|
3
3
|
<%= render(@render_args[:component], @render_args[:args], &@render_args[:block]) %>
|
4
4
|
<% else %>
|
5
5
|
<%= render_component(@render_args[:component], &@render_args[:block]) %>
|
@@ -8,6 +8,6 @@
|
|
8
8
|
<%= render template: @render_args[:template], locals: @render_args[:locals] || {} %>
|
9
9
|
<% end %>
|
10
10
|
|
11
|
-
<% if
|
11
|
+
<% if ViewComponent::Base.config.show_previews_source %>
|
12
12
|
<%= preview_source %>
|
13
13
|
<% end %>
|
data/docs/CHANGELOG.md
CHANGED
@@ -9,6 +9,24 @@ title: Changelog
|
|
9
9
|
|
10
10
|
## main
|
11
11
|
|
12
|
+
## 2.67.0
|
13
|
+
|
14
|
+
* Use ViewComponent::Base.config as the internal endpoint for config.
|
15
|
+
|
16
|
+
*Simon Fish*
|
17
|
+
|
18
|
+
* Fix bug where `#with_request_url`, when used with query string, set the incorrect `request.path` and `request.fullpath`.
|
19
|
+
|
20
|
+
*Franz Liedke*
|
21
|
+
|
22
|
+
* Add link to [ViewComponentAttributes](https://github.com/amba-Health/view_component_attributes) in Resources section of docs.
|
23
|
+
|
24
|
+
*Romaric Pascal*
|
25
|
+
|
26
|
+
* `render_preview` test helper is available by default. It is no longer necessary to include `ViewComponent::RenderPreviewHelper`.
|
27
|
+
|
28
|
+
*Joel Hawksley*
|
29
|
+
|
12
30
|
## 2.66.0
|
13
31
|
|
14
32
|
* Add missing `generate.sidecar`, `generate.stimulus_controller`, `generate.locale`, `generate.distinct_locale_files`, `generate.preview` config options to `config.view_component`.
|
@@ -29,7 +29,7 @@ module ViewComponent
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def component_path
|
32
|
-
|
32
|
+
ViewComponent::Base.config.view_component_path
|
33
33
|
end
|
34
34
|
|
35
35
|
def stimulus_controller
|
@@ -42,7 +42,7 @@ module ViewComponent
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def sidecar?
|
45
|
-
options["sidecar"] ||
|
45
|
+
options["sidecar"] || ViewComponent::Base.config.generate.sidecar
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -13,12 +13,12 @@ module Rails
|
|
13
13
|
check_class_collision suffix: "Component"
|
14
14
|
|
15
15
|
class_option :inline, type: :boolean, default: false
|
16
|
-
class_option :locale, type: :boolean, default:
|
16
|
+
class_option :locale, type: :boolean, default: ViewComponent::Base.config.generate.locale
|
17
17
|
class_option :parent, type: :string, desc: "The parent class for the generated component"
|
18
|
-
class_option :preview, type: :boolean, default:
|
18
|
+
class_option :preview, type: :boolean, default: ViewComponent::Base.config.generate.preview
|
19
19
|
class_option :sidecar, type: :boolean, default: false
|
20
20
|
class_option :stimulus, type: :boolean,
|
21
|
-
default:
|
21
|
+
default: ViewComponent::Base.config.generate.stimulus_controller
|
22
22
|
|
23
23
|
def create_component_file
|
24
24
|
template "component.rb", File.join(component_path, class_path, "#{file_name}_component.rb")
|
@@ -41,7 +41,7 @@ module Rails
|
|
41
41
|
def parent_class
|
42
42
|
return options[:parent] if options[:parent]
|
43
43
|
|
44
|
-
|
44
|
+
ViewComponent::Base.config.component_parent_class || default_parent_class
|
45
45
|
end
|
46
46
|
|
47
47
|
def initialize_signature
|
@@ -12,7 +12,7 @@ module Locale
|
|
12
12
|
class_option :sidecar, type: :boolean, default: false
|
13
13
|
|
14
14
|
def create_locale_file
|
15
|
-
if
|
15
|
+
if ViewComponent::Base.config.generate.distinct_locale_files
|
16
16
|
I18n.available_locales.each do |locale|
|
17
17
|
create_file destination(locale), translations_hash([locale]).to_yaml
|
18
18
|
end
|
@@ -9,7 +9,7 @@ module Preview
|
|
9
9
|
check_class_collision suffix: "ComponentPreview"
|
10
10
|
|
11
11
|
def create_preview_file
|
12
|
-
preview_paths =
|
12
|
+
preview_paths = ViewComponent::Base.config.preview_paths
|
13
13
|
return if preview_paths.count > 1
|
14
14
|
|
15
15
|
path_prefix = preview_paths.one? ? preview_paths.first : "test/components/previews"
|
data/lib/view_component/base.rb
CHANGED
@@ -18,7 +18,7 @@ module ViewComponent
|
|
18
18
|
delegate(*ViewComponent::Config.defaults.keys, to: :config)
|
19
19
|
|
20
20
|
def config
|
21
|
-
|
21
|
+
@config ||= ViewComponent::Config.defaults
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -496,7 +496,7 @@ module ViewComponent
|
|
496
496
|
|
497
497
|
# Removes the first part of the path and the extension.
|
498
498
|
child.virtual_path = child.source_location.gsub(
|
499
|
-
/(.*#{Regexp.quote(
|
499
|
+
/(.*#{Regexp.quote(ViewComponent::Base.config.view_component_path)})|(\.rb)/, ""
|
500
500
|
)
|
501
501
|
|
502
502
|
# Set collection parameter to the extended component
|
@@ -5,7 +5,7 @@ require "view_component/base"
|
|
5
5
|
|
6
6
|
module ViewComponent
|
7
7
|
class Engine < Rails::Engine # :nodoc:
|
8
|
-
config.view_component = ViewComponent::
|
8
|
+
config.view_component = ViewComponent::Base.config
|
9
9
|
|
10
10
|
rake_tasks do
|
11
11
|
load "view_component/rails/tasks/view_component.rake"
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "view_component/render_preview_helper"
|
4
|
-
|
5
3
|
module ViewComponent
|
6
4
|
module TestHelpers
|
7
5
|
begin
|
@@ -67,6 +65,47 @@ module ViewComponent
|
|
67
65
|
Nokogiri::HTML.fragment(@rendered_content)
|
68
66
|
end
|
69
67
|
|
68
|
+
# Render a preview inline. Internally sets `page` to be a `Capybara::Node::Simple`,
|
69
|
+
# allowing for Capybara assertions to be used:
|
70
|
+
#
|
71
|
+
# ```ruby
|
72
|
+
# render_preview(:default)
|
73
|
+
# assert_text("Hello, World!")
|
74
|
+
# ```
|
75
|
+
#
|
76
|
+
# Note: `#rendered_preview` expects a preview to be defined with the same class
|
77
|
+
# name as the calling test, but with `Test` replaced with `Preview`:
|
78
|
+
#
|
79
|
+
# MyComponentTest -> MyComponentPreview etc.
|
80
|
+
#
|
81
|
+
# In RSpec, `Preview` is appended to `described_class`.
|
82
|
+
#
|
83
|
+
# @param preview [String] The name of the preview to be rendered.
|
84
|
+
# @return [Nokogiri::HTML]
|
85
|
+
def render_preview(name)
|
86
|
+
begin
|
87
|
+
preview_klass = if respond_to?(:described_class)
|
88
|
+
raise "`render_preview` expected a described_class, but it is nil." if described_class.nil?
|
89
|
+
|
90
|
+
"#{described_class}Preview"
|
91
|
+
else
|
92
|
+
self.class.name.gsub("Test", "Preview")
|
93
|
+
end
|
94
|
+
preview_klass = preview_klass.constantize
|
95
|
+
rescue NameError
|
96
|
+
raise NameError, "`render_preview` expected to find #{preview_klass}, but it does not exist."
|
97
|
+
end
|
98
|
+
|
99
|
+
previews_controller = build_controller(Rails.application.config.view_component.preview_controller.constantize)
|
100
|
+
previews_controller.request.params[:path] = "#{preview_klass.preview_name}/#{name}"
|
101
|
+
previews_controller.response = ActionDispatch::Response.new
|
102
|
+
result = previews_controller.previews
|
103
|
+
|
104
|
+
@rendered_content = result
|
105
|
+
|
106
|
+
Nokogiri::HTML.fragment(@rendered_content)
|
107
|
+
end
|
108
|
+
|
70
109
|
# Execute the given block in the view context. Internally sets `page` to be a
|
71
110
|
# `Capybara::Node::Simple`, allowing for Capybara assertions to be used:
|
72
111
|
#
|
@@ -151,10 +190,11 @@ module ViewComponent
|
|
151
190
|
old_request_query_string = request.query_string
|
152
191
|
old_controller = defined?(@controller) && @controller
|
153
192
|
|
193
|
+
path, query = path.split("?", 2)
|
154
194
|
request.path_info = path
|
155
195
|
request.path_parameters = Rails.application.routes.recognize_path(path)
|
156
|
-
request.set_header("action_dispatch.request.query_parameters", Rack::Utils.parse_nested_query(
|
157
|
-
request.set_header(Rack::QUERY_STRING,
|
196
|
+
request.set_header("action_dispatch.request.query_parameters", Rack::Utils.parse_nested_query(query))
|
197
|
+
request.set_header(Rack::QUERY_STRING, query)
|
158
198
|
yield
|
159
199
|
ensure
|
160
200
|
request.path_info = old_request_path_info
|
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: 2.
|
4
|
+
version: 2.67.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub Open Source
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -371,7 +371,6 @@ files:
|
|
371
371
|
- lib/view_component/render_component_helper.rb
|
372
372
|
- lib/view_component/render_component_to_string_helper.rb
|
373
373
|
- lib/view_component/render_monkey_patch.rb
|
374
|
-
- lib/view_component/render_preview_helper.rb
|
375
374
|
- lib/view_component/render_to_string_monkey_patch.rb
|
376
375
|
- lib/view_component/rendering_component_helper.rb
|
377
376
|
- lib/view_component/rendering_monkey_patch.rb
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ViewComponent
|
4
|
-
module RenderPreviewHelper
|
5
|
-
# Render a preview inline. Internally sets `page` to be a `Capybara::Node::Simple`,
|
6
|
-
# allowing for Capybara assertions to be used:
|
7
|
-
#
|
8
|
-
# ```ruby
|
9
|
-
# render_preview(:default)
|
10
|
-
# assert_text("Hello, World!")
|
11
|
-
# ```
|
12
|
-
#
|
13
|
-
# Note: `#rendered_preview` expects a preview to be defined with the same class
|
14
|
-
# name as the calling test, but with `Test` replaced with `Preview`:
|
15
|
-
#
|
16
|
-
# MyComponentTest -> MyComponentPreview etc.
|
17
|
-
#
|
18
|
-
# In RSpec, `Preview` is appended to `described_class`.
|
19
|
-
#
|
20
|
-
# @param preview [String] The name of the preview to be rendered.
|
21
|
-
# @return [Nokogiri::HTML]
|
22
|
-
def render_preview(name)
|
23
|
-
begin
|
24
|
-
preview_klass = if respond_to?(:described_class)
|
25
|
-
raise "`render_preview` expected a described_class, but it is nil." if described_class.nil?
|
26
|
-
|
27
|
-
"#{described_class}Preview"
|
28
|
-
else
|
29
|
-
self.class.name.gsub("Test", "Preview")
|
30
|
-
end
|
31
|
-
preview_klass = preview_klass.constantize
|
32
|
-
rescue NameError
|
33
|
-
raise NameError, "`render_preview` expected to find #{preview_klass}, but it does not exist."
|
34
|
-
end
|
35
|
-
|
36
|
-
previews_controller = build_controller(Rails.application.config.view_component.preview_controller.constantize)
|
37
|
-
previews_controller.request.params[:path] = "#{preview_klass.preview_name}/#{name}"
|
38
|
-
previews_controller.response = ActionDispatch::Response.new
|
39
|
-
result = previews_controller.previews
|
40
|
-
|
41
|
-
@rendered_content = result
|
42
|
-
|
43
|
-
Nokogiri::HTML.fragment(@rendered_content)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|