komponent 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +15 -2
- data/lib/generators/component/component_generator.rb +20 -2
- data/lib/generators/component/templates/js.erb +4 -7
- data/lib/generators/component/templates/stimulus_controller_js.erb +0 -2
- data/lib/komponent/core/component_helper.rb +5 -0
- data/lib/komponent/komponent_helper.rb +7 -10
- data/lib/komponent/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f58c3da5a2b11f34695dcf60c3d2e4d943f0bb97
|
4
|
+
data.tar.gz: fc3d219e942b0649b983d2b943b254c151bbb43f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12825b03452c3b914efe7ff4b0c9e3ac76fbb21b79da3f83ef03fdd48dbbd4bf737b1bc7e73e8f2af5be002f19330031999a0b407dfa6be3478868d8c063f01b
|
7
|
+
data.tar.gz: 25f321f222d8cd35224060365069d151e8535cf8910b86e942e778440bb15546be7d812539fdb3fb42d6c8106ca863d5bd6eaa9c87e979dfabff9e657dafa186
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
## Upcoming release
|
4
4
|
|
5
|
+
**Enhancements:**
|
6
|
+
- Support for Stimulus 1.0
|
7
|
+
- `import`s are now sorted alphabetically every time you run the component generator
|
8
|
+
- Added the `block_given_to_component?` helper to components
|
9
|
+
|
5
10
|
## v1.1.1 (2018-01-20)
|
6
11
|
|
7
12
|
**Enhancements:**
|
data/README.md
CHANGED
@@ -30,6 +30,7 @@ This gem has been inspired by our Rails development practices at [Ouvrages](http
|
|
30
30
|
- [Configuration](#configuration)
|
31
31
|
- [Change default root path](#change-default-root-path)
|
32
32
|
- [Default options for the generators](#default-options-for-the-generators)
|
33
|
+
- [Force default templating engine](#force-default-templating-engine)
|
33
34
|
- [Additional paths](#additional-paths)
|
34
35
|
- [Contributing](#contributing)
|
35
36
|
- [License](#license)
|
@@ -124,6 +125,8 @@ The component also accepts a `block`. To render the block, just use the standard
|
|
124
125
|
= yield
|
125
126
|
```
|
126
127
|
|
128
|
+
You can check if the component has been called with a block using the `block_given_to_component?` helper from within the component.
|
129
|
+
|
127
130
|
### Properties
|
128
131
|
|
129
132
|
Each component comes with a Ruby `module`. You can use it to set properties:
|
@@ -206,7 +209,9 @@ This will create the component in an `admin` folder, and name its Ruby module `A
|
|
206
209
|
|
207
210
|
### Stimulus integration
|
208
211
|
|
209
|
-
|
212
|
+
Komponent supports [stimulus](https://github.com/stimulusjs/stimulus) 1.0.
|
213
|
+
|
214
|
+
You can pass `--stimulus` to both generators to use Stimulus in your components.
|
210
215
|
|
211
216
|
```sh
|
212
217
|
rails generate komponent:install --stimulus
|
@@ -274,6 +279,14 @@ You can change the default root path (`frontend`) to another path where Komponen
|
|
274
279
|
Rails.application.config.komponent.root = Rails.root.join("app/frontend")
|
275
280
|
```
|
276
281
|
|
282
|
+
#### Force default templating engine
|
283
|
+
|
284
|
+
If for some reason your preferred templating engine is not detected by Komponent, you can force it by manually defining it in your config:
|
285
|
+
|
286
|
+
```rb
|
287
|
+
Rails.application.config.generators.template_engine = :haml
|
288
|
+
```
|
289
|
+
|
277
290
|
#### Additional paths
|
278
291
|
|
279
292
|
You may want to use components in a gem, or a Rails engine, and expose them to the main app. In order to do that, you just have to configure the paths where Komponent will look for components.
|
@@ -297,7 +310,7 @@ module MyGem
|
|
297
310
|
app.config.autoload_paths << MyGem.root.join("frontend")
|
298
311
|
end
|
299
312
|
end
|
300
|
-
|
313
|
+
|
301
314
|
private
|
302
315
|
|
303
316
|
def self.root
|
@@ -52,14 +52,16 @@ class ComponentGenerator < Rails::Generators::NamedBase
|
|
52
52
|
import = imports.shift
|
53
53
|
if import
|
54
54
|
append_to_file(root_path_dup + "index.js") do
|
55
|
-
"
|
55
|
+
"\nimport \"#{import}\";\n"
|
56
56
|
end
|
57
|
+
sort_lines_alphabetically!(root_path_dup + "index.js")
|
57
58
|
end
|
58
59
|
end
|
59
60
|
|
60
61
|
append_to_file(base_path + "index.js") do
|
61
|
-
"
|
62
|
+
"\nimport \"#{base_path.relative_path_from(root_path)}/#{component_name}/#{name_with_namespace.underscore}\";\n"
|
62
63
|
end
|
64
|
+
sort_lines_alphabetically!(base_path + "index.js")
|
63
65
|
end
|
64
66
|
|
65
67
|
protected
|
@@ -136,4 +138,20 @@ class ComponentGenerator < Rails::Generators::NamedBase
|
|
136
138
|
def app_generators
|
137
139
|
rails_configuration.app_generators
|
138
140
|
end
|
141
|
+
|
142
|
+
def sort_lines_alphabetically!(path)
|
143
|
+
lines = File.readlines(path).map do |line|
|
144
|
+
line if line =~ /^import "(.*)";$/
|
145
|
+
end.compact
|
146
|
+
|
147
|
+
return if lines.empty?
|
148
|
+
|
149
|
+
lines = lines.sort
|
150
|
+
|
151
|
+
File.open(path, "w") do |f|
|
152
|
+
lines.each do |line|
|
153
|
+
f.write(line)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
139
157
|
end
|
@@ -1,11 +1,8 @@
|
|
1
|
-
<%- if stimulus? -%>
|
2
|
-
import application from 'stimulus_application';
|
3
|
-
import { autoload } from "stimulus/webpack-helpers";
|
4
|
-
|
5
1
|
import "./<%= name_with_namespace %>.<%= stylesheet_engine %>";
|
2
|
+
<%- if stimulus? -%>
|
3
|
+
import application from "stimulus_application";
|
4
|
+
import { definitionsFromContext } from "stimulus/webpack-helpers";
|
6
5
|
|
7
6
|
const context = require.context('./', true, /_controller\.js$/);
|
8
|
-
|
9
|
-
<%- else -%>
|
10
|
-
import "./<%= name_with_namespace %>.<%= stylesheet_engine %>";
|
7
|
+
application.load(definitionsFromContext(context));
|
11
8
|
<%- end -%>
|
@@ -39,18 +39,15 @@ module KomponentHelper
|
|
39
39
|
locals.each do |name, value|
|
40
40
|
instance_variable_set(:"@#{name}", locals[name] || options[:default])
|
41
41
|
end
|
42
|
+
|
43
|
+
instance_variable_set(:"@block_given_to_component", block)
|
42
44
|
end
|
43
45
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
context.render("components/#{component}/#{parts.join('_')}", &capture_block)
|
50
|
-
rescue ActionView::MissingTemplate
|
51
|
-
warn "[DEPRECATION WARNING] `#{parts.last}` filename in namespace is deprecated in favor of `#{parts.join('_')}`."
|
52
|
-
context.render("components/#{component}/#{parts.last}", &capture_block)
|
53
|
-
end
|
46
|
+
begin
|
47
|
+
context.render("components/#{component}/#{parts.join('_')}", &capture_block)
|
48
|
+
rescue ActionView::MissingTemplate
|
49
|
+
warn "[DEPRECATION WARNING] `#{parts.last}` filename in namespace is deprecated in favor of `#{parts.join('_')}`."
|
50
|
+
context.render("components/#{component}/#{parts.last}", &capture_block)
|
54
51
|
end
|
55
52
|
end
|
56
53
|
alias :c :component
|
data/lib/komponent/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: komponent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ouvrages
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aruba
|