actionview-component 1.5.3 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE +25 -0
- data/.github/PULL_REQUEST_TEMPLATE +17 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +4 -0
- data/CHANGELOG.md +106 -0
- data/CONTRIBUTING.md +4 -13
- data/Gemfile.lock +13 -2
- data/README.md +282 -9
- data/actionview-component.gemspec +1 -0
- data/lib/action_view/component.rb +20 -2
- data/lib/action_view/component/base.rb +95 -39
- data/lib/action_view/component/conversion.rb +11 -0
- data/lib/action_view/component/preview.rb +8 -35
- data/lib/action_view/component/previewable.rb +27 -0
- data/lib/action_view/component/railtie.rb +15 -1
- data/lib/action_view/component/render_monkey_patch.rb +29 -0
- data/lib/action_view/component/template_error.rb +11 -0
- data/lib/action_view/component/test_case.rb +11 -0
- data/lib/action_view/component/test_helpers.rb +2 -2
- data/lib/action_view/component/version.rb +2 -2
- data/lib/rails/generators/component/component_generator.rb +2 -2
- data/lib/rails/generators/rspec/component_generator.rb +1 -1
- data/lib/rails/generators/test_unit/component_generator.rb +1 -1
- data/lib/rails/generators/test_unit/templates/component_test.rb.tt +2 -4
- data/lib/railties/lib/rails.rb +0 -1
- data/lib/railties/lib/rails/components_controller.rb +5 -1
- data/lib/railties/lib/rails/templates/rails/components/preview.html.erb +1 -1
- metadata +23 -5
- data/lib/action_view/component/monkey_patch.rb +0 -27
- data/lib/railties/lib/rails/component_examples_controller.rb +0 -9
- data/lib/railties/lib/rails/templates/rails/examples/show.html.erb +0 -1
@@ -4,11 +4,11 @@ module ActionView
|
|
4
4
|
module Component
|
5
5
|
module TestHelpers
|
6
6
|
def render_inline(component, **args, &block)
|
7
|
-
Nokogiri::HTML(controller.view_context.render(component, args, &block))
|
7
|
+
Nokogiri::HTML.fragment(controller.view_context.render(component, args, &block))
|
8
8
|
end
|
9
9
|
|
10
10
|
def controller
|
11
|
-
@controller ||=
|
11
|
+
@controller ||= Base.test_controller.constantize.new.tap { |c| c.request = request }.extend(Rails.application.routes.url_helpers)
|
12
12
|
end
|
13
13
|
|
14
14
|
def request
|
@@ -10,11 +10,11 @@ module Rails
|
|
10
10
|
check_class_collision suffix: "Component"
|
11
11
|
|
12
12
|
def create_component_file
|
13
|
-
template "component.rb", File.join("app/components",
|
13
|
+
template "component.rb", File.join("app/components", class_path, "#{file_name}_component.rb")
|
14
14
|
end
|
15
15
|
|
16
16
|
def create_template_file
|
17
|
-
template "component.html.erb", File.join("app/components",
|
17
|
+
template "component.html.erb", File.join("app/components", class_path, "#{file_name}_component.html.erb")
|
18
18
|
end
|
19
19
|
|
20
20
|
private
|
@@ -6,7 +6,7 @@ module Rspec
|
|
6
6
|
source_root File.expand_path("templates", __dir__)
|
7
7
|
|
8
8
|
def create_test_file
|
9
|
-
template "component_spec.rb", File.join("spec/components", "#{file_name}_component_spec.rb")
|
9
|
+
template "component_spec.rb", File.join("spec/components", class_path, "#{file_name}_component_spec.rb")
|
10
10
|
end
|
11
11
|
|
12
12
|
private
|
@@ -7,7 +7,7 @@ module TestUnit
|
|
7
7
|
check_class_collision suffix: "ComponentTest"
|
8
8
|
|
9
9
|
def create_test_file
|
10
|
-
template "component_test.rb", File.join("test/components", "#{file_name}_component_test.rb")
|
10
|
+
template "component_test.rb", File.join("test/components", class_path, "#{file_name}_component_test.rb")
|
11
11
|
end
|
12
12
|
|
13
13
|
private
|
@@ -1,12 +1,10 @@
|
|
1
1
|
require "test_helper"
|
2
2
|
|
3
|
-
class <%= class_name %>ComponentTest <
|
4
|
-
include ActionView::Component::TestHelpers
|
5
|
-
|
3
|
+
class <%= class_name %>ComponentTest < ActionView::Component::TestCase
|
6
4
|
test "component renders something useful" do
|
7
5
|
# assert_equal(
|
8
6
|
# %(<span title="my title">Hello, components!</span>),
|
9
|
-
# render_inline(<%= class_name
|
7
|
+
# render_inline(<%= class_name %>Component, attr: "value") { "Hello, components!" }.css("span").to_html
|
10
8
|
# )
|
11
9
|
end
|
12
10
|
end
|
data/lib/railties/lib/rails.rb
CHANGED
@@ -4,6 +4,7 @@ require "rails/application_controller"
|
|
4
4
|
|
5
5
|
class Rails::ComponentsController < Rails::ApplicationController # :nodoc:
|
6
6
|
prepend_view_path File.expand_path("templates/rails", __dir__)
|
7
|
+
prepend_view_path "#{Rails.root}/app/views/" if defined?(Rails.root)
|
7
8
|
|
8
9
|
around_action :set_locale, only: :previews
|
9
10
|
before_action :find_preview, only: :previews
|
@@ -25,7 +26,10 @@ class Rails::ComponentsController < Rails::ApplicationController # :nodoc:
|
|
25
26
|
render template: "components/previews"
|
26
27
|
else
|
27
28
|
@example_name = File.basename(params[:path])
|
28
|
-
|
29
|
+
@render_args = @preview.render_args(@example_name)
|
30
|
+
layout = @render_args[:layout]
|
31
|
+
opts = layout.nil? ? {} : { layout: layout }
|
32
|
+
render template: "components/preview", **opts
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
@@ -1 +1 @@
|
|
1
|
-
<%=
|
1
|
+
<%= render(@render_args[:component], **@render_args[:args], &@render_args[:block])%>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actionview-component
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub Open Source
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '4.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: better_html
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rubocop
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,6 +129,8 @@ executables: []
|
|
115
129
|
extensions: []
|
116
130
|
extra_rdoc_files: []
|
117
131
|
files:
|
132
|
+
- ".github/ISSUE_TEMPLATE"
|
133
|
+
- ".github/PULL_REQUEST_TEMPLATE"
|
118
134
|
- ".github/workflows/ruby_on_rails.yml"
|
119
135
|
- ".gitignore"
|
120
136
|
- ".rubocop.yml"
|
@@ -129,9 +145,13 @@ files:
|
|
129
145
|
- actionview-component.gemspec
|
130
146
|
- lib/action_view/component.rb
|
131
147
|
- lib/action_view/component/base.rb
|
132
|
-
- lib/action_view/component/
|
148
|
+
- lib/action_view/component/conversion.rb
|
133
149
|
- lib/action_view/component/preview.rb
|
150
|
+
- lib/action_view/component/previewable.rb
|
134
151
|
- lib/action_view/component/railtie.rb
|
152
|
+
- lib/action_view/component/render_monkey_patch.rb
|
153
|
+
- lib/action_view/component/template_error.rb
|
154
|
+
- lib/action_view/component/test_case.rb
|
135
155
|
- lib/action_view/component/test_helpers.rb
|
136
156
|
- lib/action_view/component/version.rb
|
137
157
|
- lib/rails/generators/component/USAGE
|
@@ -143,12 +163,10 @@ files:
|
|
143
163
|
- lib/rails/generators/test_unit/component_generator.rb
|
144
164
|
- lib/rails/generators/test_unit/templates/component_test.rb.tt
|
145
165
|
- lib/railties/lib/rails.rb
|
146
|
-
- lib/railties/lib/rails/component_examples_controller.rb
|
147
166
|
- lib/railties/lib/rails/components_controller.rb
|
148
167
|
- lib/railties/lib/rails/templates/rails/components/index.html.erb
|
149
168
|
- lib/railties/lib/rails/templates/rails/components/preview.html.erb
|
150
169
|
- lib/railties/lib/rails/templates/rails/components/previews.html.erb
|
151
|
-
- lib/railties/lib/rails/templates/rails/examples/show.html.erb
|
152
170
|
- script/bootstrap
|
153
171
|
- script/console
|
154
172
|
- script/install
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Monkey patch ActionView::Base#render to support ActionView::Component
|
4
|
-
#
|
5
|
-
# A version of this monkey patch was upstreamed in https://github.com/rails/rails/pull/36388
|
6
|
-
# We'll need to upstream an updated version of this eventually.
|
7
|
-
class ActionView::Base
|
8
|
-
module RenderMonkeyPatch
|
9
|
-
def render(options = {}, args = {}, &block)
|
10
|
-
if options.respond_to?(:render_in)
|
11
|
-
ActiveSupport::Deprecation.warn(
|
12
|
-
"passing component instances (`render MyComponent.new(foo: :bar)`) has been deprecated and will be removed in v2.0.0. Use `render MyComponent, foo: :bar` instead."
|
13
|
-
)
|
14
|
-
|
15
|
-
options.render_in(self, &block)
|
16
|
-
elsif options.is_a?(Class) && options < ActionView::Component::Base
|
17
|
-
options.new(args).render_in(self, &block)
|
18
|
-
elsif options.is_a?(Hash) && options.has_key?(:component)
|
19
|
-
options[:component].new(options[:locals]).render_in(self, &block)
|
20
|
-
else
|
21
|
-
super
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
prepend RenderMonkeyPatch
|
27
|
-
end
|
@@ -1,9 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "rails/application_controller"
|
4
|
-
load "config/application.rb" unless Rails.root
|
5
|
-
|
6
|
-
class Rails::ComponentExamplesController < ActionController::Base # :nodoc:
|
7
|
-
prepend_view_path File.expand_path("templates/rails", __dir__)
|
8
|
-
append_view_path Rails.root.join("app/views")
|
9
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= raw @example %>
|