mountain_view 0.10.0 → 0.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/README.md +27 -0
- data/Rakefile +1 -0
- data/app/helpers/mountain_view/component_helper.rb +4 -2
- data/lib/mountain_view/presenter.rb +3 -2
- data/lib/mountain_view/version.rb +1 -1
- data/test/dummy/app/components/yielder/_yielder.html.erb +6 -0
- data/test/dummy/app/components/yielder/yielder.css +0 -0
- data/test/dummy/app/components/yielder/yielder.js +0 -0
- data/test/dummy/app/components/yielder/yielder.yml +0 -0
- data/test/dummy/config/application.rb +1 -1
- data/test/helpers/mountain_view/component_helper_test.rb +35 -0
- metadata +10 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1492e39aab18154eb640fe41234f348137c41523
|
|
4
|
+
data.tar.gz: b02850181a73d4770cdc21b06d2d316acc185792
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e9c2bb5124b7e27314d536d6bed2ee02fb4658928600aa9fe365157594cca662dd7bfb30dbed34c16710e1f19cb45c098acfe8117dbce8e23636bad8f34fdbb1
|
|
7
|
+
data.tar.gz: e91297418a2bef52a765f2ce598e837af274a1856c260202d57d68f98bd9a81395f821ecd0b9ad7ece1b47874810f86c818b892d0ce53dade5cb8cf9ab39f1c1
|
data/README.md
CHANGED
|
@@ -107,6 +107,33 @@ helper:
|
|
|
107
107
|
<%= render_component "header", title: "This is a title", subtitle: "And this is a subtitle" %>
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
+
### Yielding content
|
|
111
|
+
|
|
112
|
+
You can also pass a block to a component, for example the following component:
|
|
113
|
+
|
|
114
|
+
```erb
|
|
115
|
+
<!-- app/components/header/_header.html.erb -->
|
|
116
|
+
<div class="header">
|
|
117
|
+
<%= properties[:yield] %>
|
|
118
|
+
</div>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Used in a view like so:
|
|
122
|
+
```erb
|
|
123
|
+
<%= render_component "header" do %>
|
|
124
|
+
<p>Hello World</p>
|
|
125
|
+
<% end %>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Would output the following in your view:
|
|
129
|
+
|
|
130
|
+
```erb
|
|
131
|
+
<div class="header">
|
|
132
|
+
<p>Hello World</p>
|
|
133
|
+
</div>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
|
|
110
137
|
### Assets
|
|
111
138
|
You can require all the components CSS and JS automatically by requiring `mountain_view` in your main JS and CSS files.
|
|
112
139
|
|
data/Rakefile
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
module MountainView
|
|
2
2
|
module ComponentHelper
|
|
3
|
-
def render_component(slug, properties = {})
|
|
3
|
+
def render_component(slug, properties = {}, &block)
|
|
4
4
|
component = MountainView::Presenter.component_for(slug, properties)
|
|
5
|
-
component.render(controller.view_context)
|
|
5
|
+
component.render(controller.view_context) do
|
|
6
|
+
capture(&block) if block_given?
|
|
7
|
+
end
|
|
6
8
|
end
|
|
7
9
|
end
|
|
8
10
|
end
|
|
@@ -10,10 +10,11 @@ module MountainView
|
|
|
10
10
|
@properties = default_properties.deep_merge(properties)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
def render(context)
|
|
13
|
+
def render(context, &block)
|
|
14
14
|
context.extend ViewContext
|
|
15
15
|
context.inject_component_context self
|
|
16
|
-
|
|
16
|
+
properties[:yield] ||= yield
|
|
17
|
+
context.render partial, partial: partial
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
def partial
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -39,7 +39,7 @@ module Dummy
|
|
|
39
39
|
config.eager_load = false
|
|
40
40
|
|
|
41
41
|
# Configure static asset server for tests with Cache-Control for performance.
|
|
42
|
-
config.
|
|
42
|
+
# config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
|
|
43
43
|
|
|
44
44
|
config.assets.enabled = true
|
|
45
45
|
|
|
@@ -9,4 +9,39 @@ class MountainView::ComponentHelperTest < ActionView::TestCase
|
|
|
9
9
|
assert_match expected, rendered
|
|
10
10
|
assert_match %r(href=\"\/products\/1\"), rendered
|
|
11
11
|
end
|
|
12
|
+
|
|
13
|
+
test "renders when passed a block" do
|
|
14
|
+
rendered = render_component("yielder") do
|
|
15
|
+
"I appear to be in a block"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
expected = /<div class=\"yield-here\">\n I appear to be in a block\n <\/div>/
|
|
19
|
+
assert_match expected, rendered
|
|
20
|
+
assert_match /Tell me about the Proc/, rendered
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
test "Does not override passed yield property with block" do
|
|
24
|
+
rendered = render_component("yielder", yield: "It is me in the block") do
|
|
25
|
+
"I appear to be in a block"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
expected = /<div class=\"yield-here\">\n It is me in the block\n <\/div>/
|
|
29
|
+
assert_match expected, rendered
|
|
30
|
+
assert_match /Tell me about the Proc/, rendered
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
test "renders when has a yield, but no block passed" do
|
|
34
|
+
rendered = render_component("yielder")
|
|
35
|
+
|
|
36
|
+
assert_match /Tell me about the Proc/, rendered
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
test "renders a component within a compontent" do
|
|
40
|
+
rendered = render_component("yielder") do
|
|
41
|
+
render_component("header", id: 1, title: "Pepe")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
assert_match /Pepe/, rendered
|
|
45
|
+
assert_match %r(href=\"\/products\/1\"), rendered
|
|
46
|
+
end
|
|
12
47
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mountain_view
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.11.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ignacio Gutierrez
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2017-
|
|
12
|
+
date: 2017-05-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rails
|
|
@@ -93,6 +93,10 @@ files:
|
|
|
93
93
|
- test/dummy/app/components/header/header.js
|
|
94
94
|
- test/dummy/app/components/header/header.yml
|
|
95
95
|
- test/dummy/app/components/paragraph/_paragraph.html.erb
|
|
96
|
+
- test/dummy/app/components/yielder/_yielder.html.erb
|
|
97
|
+
- test/dummy/app/components/yielder/yielder.css
|
|
98
|
+
- test/dummy/app/components/yielder/yielder.js
|
|
99
|
+
- test/dummy/app/components/yielder/yielder.yml
|
|
96
100
|
- test/dummy/app/controllers/application_controller.rb
|
|
97
101
|
- test/dummy/app/controllers/home_controller.rb
|
|
98
102
|
- test/dummy/app/helpers/application_helper.rb
|
|
@@ -181,6 +185,10 @@ test_files:
|
|
|
181
185
|
- test/dummy/app/components/header/header.js
|
|
182
186
|
- test/dummy/app/components/header/header.yml
|
|
183
187
|
- test/dummy/app/components/paragraph/_paragraph.html.erb
|
|
188
|
+
- test/dummy/app/components/yielder/_yielder.html.erb
|
|
189
|
+
- test/dummy/app/components/yielder/yielder.css
|
|
190
|
+
- test/dummy/app/components/yielder/yielder.js
|
|
191
|
+
- test/dummy/app/components/yielder/yielder.yml
|
|
184
192
|
- test/dummy/app/controllers/application_controller.rb
|
|
185
193
|
- test/dummy/app/controllers/home_controller.rb
|
|
186
194
|
- test/dummy/app/helpers/application_helper.rb
|