view_component 2.66.0 → 2.68.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 426a776552c0355ba0fb4ccc066c05a218b9998acb39489485375624b347c170
4
- data.tar.gz: d17d69cb6e1c08fe31545eb5cf878579dd4aaf11e803790130c83ec7b4c178d2
3
+ metadata.gz: dc70b125c7bf45480588c0161df7993d19ce3f3c67f9303c2e7c09d836bc3b5e
4
+ data.tar.gz: 7cbaec3b7b25d762cfc8068f932520135c4e989a549754cdb9733d6c356853f0
5
5
  SHA512:
6
- metadata.gz: 4b001cf58f8586b3e83cf8129c23d0bb5a499182189db4a99dfd747d6767f529a631eb2bf439a32f8a91dbb5861eb16ef637b514bffccacd476d577e2c5c27aa
7
- data.tar.gz: 24d147cfbb226ff11114631721507bfed5a73fe25e1963186fe106a9c0f485596b65349457685967e7df0edea4d78841646f36683764244673e4281ff56741fd
6
+ metadata.gz: 5afca6dd4a94bf0ee395fa72d577a7ce0031f590b6d6cd4c1fd7625422d71c5ebe6cce52111f9350b66803d3421cf504c694f8b35229fc726e2bd1d32dd414db
7
+ data.tar.gz: 185329894deb2a89735087da12093040e08a2009ba8b9fe934b83731539f93c479d130e2cd3a7d112895ad489b268167f0c8c71712ef42582921975e729eb59d
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2019 GitHub
3
+ Copyright (c) 2018-present ViewComponent contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -43,12 +43,12 @@ module ViewComponent
43
43
 
44
44
  # :doc:
45
45
  def default_preview_layout
46
- Rails.application.config.view_component.default_preview_layout
46
+ ViewComponent::Base.config.default_preview_layout
47
47
  end
48
48
 
49
49
  # :doc:
50
50
  def show_previews?
51
- Rails.application.config.view_component.show_previews
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 = Rails.application.config.view_component.preview_paths.map do |preview_path|
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 Rails.application.config.view_component.render_monkey_patch_enabled || Rails.version.to_f >= 6.1 %>
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 Rails.application.config.view_component.show_previews_source %>
11
+ <% if ViewComponent::Base.config.show_previews_source %>
12
12
  <%= preview_source %>
13
13
  <% end %>
data/docs/CHANGELOG.md CHANGED
@@ -9,6 +9,34 @@ title: Changelog
9
9
 
10
10
  ## main
11
11
 
12
+ ## 2.68.0
13
+
14
+ * Update `gemspec` author to be ViewComponent team.
15
+
16
+ *Joel Hawksley*
17
+
18
+ * Fix bug where `ViewComponent::Compiler` wasn't required.
19
+
20
+ *Joel Hawksley*
21
+
22
+ ## 2.67.0
23
+
24
+ * Use ViewComponent::Base.config as the internal endpoint for config.
25
+
26
+ *Simon Fish*
27
+
28
+ * Fix bug where `#with_request_url`, when used with query string, set the incorrect `request.path` and `request.fullpath`.
29
+
30
+ *Franz Liedke*
31
+
32
+ * Add link to [ViewComponentAttributes](https://github.com/amba-Health/view_component_attributes) in Resources section of docs.
33
+
34
+ *Romaric Pascal*
35
+
36
+ * `render_preview` test helper is available by default. It is no longer necessary to include `ViewComponent::RenderPreviewHelper`.
37
+
38
+ *Joel Hawksley*
39
+
12
40
  ## 2.66.0
13
41
 
14
42
  * 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
- Rails.application.config.view_component.view_component_path
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"] || Rails.application.config.view_component.generate.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: Rails.application.config.view_component.generate.locale
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: Rails.application.config.view_component.generate.preview
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: Rails.application.config.view_component.generate.stimulus_controller
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
- Rails.application.config.view_component.component_parent_class || default_parent_class
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 Rails.application.config.view_component.generate.distinct_locale_files
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 = Rails.application.config.view_component.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"
@@ -4,6 +4,7 @@ require "action_view"
4
4
  require "active_support/configurable"
5
5
  require "view_component/collection"
6
6
  require "view_component/compile_cache"
7
+ require "view_component/compiler"
7
8
  require "view_component/config"
8
9
  require "view_component/content_areas"
9
10
  require "view_component/polymorphic_slots"
@@ -18,7 +19,7 @@ module ViewComponent
18
19
  delegate(*ViewComponent::Config.defaults.keys, to: :config)
19
20
 
20
21
  def config
21
- Rails.application.config.view_component
22
+ @config ||= ViewComponent::Config.defaults
22
23
  end
23
24
  end
24
25
 
@@ -496,7 +497,7 @@ module ViewComponent
496
497
 
497
498
  # Removes the first part of the path and the extension.
498
499
  child.virtual_path = child.source_location.gsub(
499
- /(.*#{Regexp.quote(Rails.application.config.view_component.view_component_path)})|(\.rb)/, ""
500
+ /(.*#{Regexp.quote(ViewComponent::Base.config.view_component_path)})|(\.rb)/, ""
500
501
  )
501
502
 
502
503
  # 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::Config.default
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(path.split("?")[1]))
157
- request.set_header(Rack::QUERY_STRING, path.split("?")[1])
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
@@ -3,7 +3,7 @@
3
3
  module ViewComponent
4
4
  module VERSION
5
5
  MAJOR = 2
6
- MINOR = 66
6
+ MINOR = 68
7
7
  PATCH = 0
8
8
 
9
9
  STRING = [MAJOR, MINOR, PATCH].join(".")
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.66.0
4
+ version: 2.68.0
5
5
  platform: ruby
6
6
  authors:
7
- - GitHub Open Source
7
+ - ViewComponent Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-09 00:00:00.000000000 Z
11
+ date: 2022-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -104,16 +104,16 @@ dependencies:
104
104
  name: bundler
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ">="
107
+ - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: 1.15.0
109
+ version: '2'
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - ">="
114
+ - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: 1.15.0
116
+ version: '2'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: erb_lint
119
119
  requirement: !ruby/object:Gem::Requirement
@@ -300,19 +300,18 @@ dependencies:
300
300
  name: yard-activesupport-concern
301
301
  requirement: !ruby/object:Gem::Requirement
302
302
  requirements:
303
- - - ">="
303
+ - - "~>"
304
304
  - !ruby/object:Gem::Version
305
- version: '0'
305
+ version: 0.0.1
306
306
  type: :development
307
307
  prerelease: false
308
308
  version_requirements: !ruby/object:Gem::Requirement
309
309
  requirements:
310
- - - ">="
310
+ - - "~>"
311
311
  - !ruby/object:Gem::Version
312
- version: '0'
312
+ version: 0.0.1
313
313
  description:
314
314
  email:
315
- - opensource+view_component@github.com
316
315
  executables: []
317
316
  extensions: []
318
317
  extra_rdoc_files: []
@@ -371,7 +370,6 @@ files:
371
370
  - lib/view_component/render_component_helper.rb
372
371
  - lib/view_component/render_component_to_string_helper.rb
373
372
  - lib/view_component/render_monkey_patch.rb
374
- - lib/view_component/render_preview_helper.rb
375
373
  - lib/view_component/render_to_string_monkey_patch.rb
376
374
  - lib/view_component/rendering_component_helper.rb
377
375
  - lib/view_component/rendering_monkey_patch.rb
@@ -386,7 +384,7 @@ files:
386
384
  - lib/view_component/version.rb
387
385
  - lib/view_component/with_content_helper.rb
388
386
  - lib/yard/mattr_accessor_handler.rb
389
- homepage: https://github.com/github/view_component
387
+ homepage: https://viewcomponent.org
390
388
  licenses:
391
389
  - MIT
392
390
  metadata:
@@ -409,5 +407,6 @@ requirements: []
409
407
  rubygems_version: 3.2.32
410
408
  signing_key:
411
409
  specification_version: 4
412
- summary: View components for Rails
410
+ summary: A framework for building reusable, testable & encapsulated view components
411
+ in Ruby on Rails.
413
412
  test_files: []
@@ -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