vident-view_component 0.4.0 → 0.13.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/CHANGELOG.md +215 -0
- data/LICENSE.txt +21 -0
- data/README.md +706 -11
- data/lib/vident/view_component/core.rb +2 -2
- data/lib/vident/view_component/version.rb +1 -1
- data/lib/vident/view_component.rb +4 -1
- metadata +22 -31
- data/Rakefile +0 -8
- data/lib/tasks/vident/view_component_tasks.rake +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4c928a6b5dc46b0ae8cf6b3f883914f45036466e11accb3df0747a055dd7b62
|
4
|
+
data.tar.gz: 303313f3549513a2a8bbc1236ca5b5066776104e61641c1b2bbf58ec4b443d20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 189f590a70d3cbe5e58adbb8467e5aa9a5ca116320d986ff8a8be4a753353ab34d9edccfe9c5cd586541e37170c15d6d83437d3b6b7721f6f7e83cf649428dae
|
7
|
+
data.tar.gz: 6a8fed37c8eb4ef728a9a21045258717b88533bbac92c04a8ddbfb7912d3f6b916cfcc22726640d82d066404f754d08e0cb84abad6d248d608d2f542bdcd146d
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
|
2
|
+
# Change Log
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
6
|
+
and this project adheres to [Semantic Versioning](http://semver.org/).
|
7
|
+
|
8
|
+
|
9
|
+
## [Unreleased]
|
10
|
+
|
11
|
+
### Added
|
12
|
+
|
13
|
+
- New monorepo structure for the Vident project, retaining the separate gems however.
|
14
|
+
- All gems now have the same version and are released together.
|
15
|
+
|
16
|
+
### Changed
|
17
|
+
|
18
|
+
### Fixed
|
19
|
+
|
20
|
+
## [0.12.1] - 2024-06-12
|
21
|
+
|
22
|
+
### Fixed
|
23
|
+
|
24
|
+
- parsing of targets where the controller is also specified
|
25
|
+
|
26
|
+
## [0.12.0] - 2024-02-25
|
27
|
+
|
28
|
+
### Added
|
29
|
+
|
30
|
+
- `outlet` DSL methods updated so that the selector is scoped to the component's root element by default. This
|
31
|
+
is probably the most common use case, and it's now the default.
|
32
|
+
- `with_outlets` DSL method added to generate the data-* attributes for the outlets and return as a fragment
|
33
|
+
of HTML
|
34
|
+
|
35
|
+
|
36
|
+
## [0.11.0] - 2024-02-21
|
37
|
+
|
38
|
+
### Added
|
39
|
+
|
40
|
+
- `outlet_host` DSL method to support components hooking themselves into a host component's outlets
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
## [0.10.1] - 2024-02-21
|
45
|
+
|
46
|
+
### Added
|
47
|
+
|
48
|
+
- `outlets` option now accepts either a string stimulus controller identifier, a component instance, or a tuple of
|
49
|
+
identifier and CSS selector for the outlet.
|
50
|
+
|
51
|
+
|
52
|
+
## [0.10.0] - 2024-02-21
|
53
|
+
|
54
|
+
### Added
|
55
|
+
|
56
|
+
- `outlets` option for components, used to specify Stimulus outlets
|
57
|
+
|
58
|
+
## [0.9.0] - 2023-08-11
|
59
|
+
|
60
|
+
### Added
|
61
|
+
|
62
|
+
- `#cache_key` support is now part of the core gem, and can be added to components using `Vident::Caching` module
|
63
|
+
|
64
|
+
## [0.8.0] - 2023-03-31
|
65
|
+
|
66
|
+
### Added
|
67
|
+
|
68
|
+
- new gems for Vident related functionality, eg `vident-typed` and `vident-tailwind`
|
69
|
+
- `vident` is now the core gem which can be used with any component system. Gems for Phlex and ViewComponent are available, `vident-phlex` and `vident-view_component`, and `vident-typed-phlex` and `vident-typed-view_component` are available with typed attributes support.
|
70
|
+
|
71
|
+
### Changed
|
72
|
+
|
73
|
+
- removed functionality for `better_html`, `dry-types`, `view_component`, and `phlex` from the core gem
|
74
|
+
- gem is now a Rails Engine and supports eager and autoloading
|
75
|
+
|
76
|
+
### Fixed
|
77
|
+
|
78
|
+
- Fix untyped attributes inheritance
|
79
|
+
|
80
|
+
## [0.7.0] - 2023-03-08
|
81
|
+
|
82
|
+
### Added
|
83
|
+
|
84
|
+
- new `Vident::Tailwind` module which uses [tailwind_merge](https://github.com/gjtorikian/tailwind_merge) to merge TailwindCSS classes
|
85
|
+
|
86
|
+
### Changed
|
87
|
+
|
88
|
+
- Removed a dependency on intenal constants from `phlex`
|
89
|
+
|
90
|
+
## [0.6.3] - 2023-03-03
|
91
|
+
|
92
|
+
### Fixed
|
93
|
+
|
94
|
+
- Fix for changes to HTML tag collection in Phlex
|
95
|
+
|
96
|
+
|
97
|
+
## [0.6.2] - 2023-02-23
|
98
|
+
|
99
|
+
### Fixed
|
100
|
+
|
101
|
+
- Element tag options are not set when no ID is provided
|
102
|
+
|
103
|
+
|
104
|
+
## [0.6.1] - 2023-02-20
|
105
|
+
|
106
|
+
### Fixed
|
107
|
+
|
108
|
+
- `better_html` support fix for aliased dsl methods
|
109
|
+
|
110
|
+
|
111
|
+
## [0.6.0] - 2023-02-20
|
112
|
+
|
113
|
+
### Added
|
114
|
+
|
115
|
+
- Experimental support for `better_html` in the root components (the stimulus attributes are generated with `html_attributes`)
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
## [0.5.1] - 2023-02-17
|
120
|
+
|
121
|
+
### Added
|
122
|
+
|
123
|
+
- N/A
|
124
|
+
|
125
|
+
### Changed
|
126
|
+
|
127
|
+
- N/A
|
128
|
+
|
129
|
+
### Fixed
|
130
|
+
|
131
|
+
- Typed attributes was not always using custom coercion methods if they were defined
|
132
|
+
|
133
|
+
### Removed
|
134
|
+
|
135
|
+
- N/A
|
136
|
+
|
137
|
+
### Deprecated
|
138
|
+
|
139
|
+
- N/A
|
140
|
+
|
141
|
+
### Security
|
142
|
+
|
143
|
+
- N/A
|
144
|
+
|
145
|
+
---
|
146
|
+
|
147
|
+
# Package Changelogs
|
148
|
+
|
149
|
+
## vident-better_html
|
150
|
+
|
151
|
+
### [0.6.0] - 2023-02-20
|
152
|
+
|
153
|
+
#### Added
|
154
|
+
|
155
|
+
- Experimental support for `better_html` in the root components (the stimulus attributes are generated with `html_attributes`)
|
156
|
+
|
157
|
+
### [0.6.1] - 2023-02-20
|
158
|
+
|
159
|
+
#### Fixed
|
160
|
+
|
161
|
+
- `better_html` support fix for aliased dsl methods
|
162
|
+
|
163
|
+
## vident-tailwind
|
164
|
+
|
165
|
+
### [0.1.1] - 2023-04-02
|
166
|
+
|
167
|
+
#### Fixed
|
168
|
+
|
169
|
+
- `tailwind_merge` should only take a non-nil value, and since it uses the class string as a cache key, it should not be blank.
|
170
|
+
|
171
|
+
## vident-typed-view_component
|
172
|
+
|
173
|
+
### [0.3.0] - 2023-08-12
|
174
|
+
|
175
|
+
- Update to depend on `vident-view_component` v0.3.0
|
176
|
+
- Adds support for new `Vident::Caching` module
|
177
|
+
- Update examples to support view_component v3
|
178
|
+
|
179
|
+
### [0.1.0] - 2023-04-01
|
180
|
+
|
181
|
+
- Initial release, extracted from `vident`
|
182
|
+
|
183
|
+
## vident-view_component
|
184
|
+
|
185
|
+
### [0.3.0] - 2023-08-12
|
186
|
+
|
187
|
+
- Update to depend on `vident` v0.9.0
|
188
|
+
- Adds support for new `Vident::Caching` module
|
189
|
+
- Update examples to support view_component v3
|
190
|
+
|
191
|
+
### [0.1.0] - 2023-04-01
|
192
|
+
|
193
|
+
- Initial release, extracted from `vident`
|
194
|
+
|
195
|
+
## vident-phlex
|
196
|
+
|
197
|
+
### [0.3.0] - 2023-08-12
|
198
|
+
|
199
|
+
- Update to depend on `vident` v0.9.0
|
200
|
+
- Adds support for new `Vident::Caching` module
|
201
|
+
|
202
|
+
### [0.1.0] - 2023-04-01
|
203
|
+
|
204
|
+
- Initial release, extracted from `vident`
|
205
|
+
|
206
|
+
## vident-typed-phlex
|
207
|
+
|
208
|
+
### [0.3.0] - 2023-08-12
|
209
|
+
|
210
|
+
- Update to depend on `vident-typed` v0.3.0
|
211
|
+
- Adds support for new `Vident::Caching` module
|
212
|
+
|
213
|
+
### [0.1.0] - 2023-04-01
|
214
|
+
|
215
|
+
- Initial release, extracted from `vident`
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2022-2025 Stephen Ierodiaconou
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,3 +1,704 @@
|
|
1
|
+
# Vident
|
2
|
+
|
3
|
+
Vident is a collection of gems that provide a set of tools for building web applications with Ruby on Rails.
|
4
|
+
|
5
|
+
## Included Gems
|
6
|
+
|
7
|
+
- `vident`: The core Vident library
|
8
|
+
- `vident-better_html`: Better HTML integration for Vident
|
9
|
+
- `vident-phlex`: Phlex integration for Vident
|
10
|
+
- `vident-tailwind`: Tailwind CSS integration for Vident
|
11
|
+
- `vident-typed`: Type system for Vident components
|
12
|
+
- `vident-typed-minitest`: Minitest integration for typed Vident components
|
13
|
+
- `vident-typed-phlex`: Phlex integration for typed Vident components
|
14
|
+
- `vident-typed-view_component`: ViewComponent integration for typed Vident
|
15
|
+
- `vident-view_component`: ViewComponent integration for Vident
|
16
|
+
- `vident-view_component-caching`: Caching support for Vident ViewComponents
|
17
|
+
|
18
|
+
## Directory Structure
|
19
|
+
|
20
|
+
The repository is structured like this:
|
21
|
+
|
22
|
+
```
|
23
|
+
vident/
|
24
|
+
├── lib/ # All gem code
|
25
|
+
│ ├── vident.rb # Core entry point
|
26
|
+
│ ├── vident-phlex.rb # Gem entry points
|
27
|
+
│ ├── vident-better_html.rb
|
28
|
+
│ ├── vident/ # Shared code
|
29
|
+
│ ├── base.rb
|
30
|
+
│ ├── phlex/ # Phlex integration
|
31
|
+
│ ├── better_html/ # Better HTML integration
|
32
|
+
│ └── ...
|
33
|
+
├── test/ # All tests
|
34
|
+
│ ├── vident/ # Core tests
|
35
|
+
│ ├── vident-phlex/ # Tests for each gem
|
36
|
+
│ └── ...
|
37
|
+
├── docs/ # Documentation
|
38
|
+
├── examples/ # Examples
|
39
|
+
├── vident.gemspec # Gemspec for core gem
|
40
|
+
├── vident-phlex.gemspec # Gemspecs for each gem
|
41
|
+
└── ...
|
42
|
+
```
|
43
|
+
|
44
|
+
## Development
|
45
|
+
|
46
|
+
### Setting Up Development Environment
|
47
|
+
|
48
|
+
```bash
|
49
|
+
# Clone the repository
|
50
|
+
git clone https://github.com/stevegeek/vident.git
|
51
|
+
cd vident
|
52
|
+
|
53
|
+
# Install dependencies
|
54
|
+
bundle install
|
55
|
+
```
|
56
|
+
|
57
|
+
### Running Tests
|
58
|
+
|
59
|
+
To run tests for all gems:
|
60
|
+
|
61
|
+
```bash
|
62
|
+
rake test
|
63
|
+
```
|
64
|
+
|
65
|
+
To run tests for a specific gem:
|
66
|
+
|
67
|
+
```bash
|
68
|
+
rake test:vident-phlex
|
69
|
+
```
|
70
|
+
|
71
|
+
### Building and Installing Gems
|
72
|
+
|
73
|
+
To build all gems:
|
74
|
+
|
75
|
+
```bash
|
76
|
+
rake build
|
77
|
+
```
|
78
|
+
|
79
|
+
To install all gems locally:
|
80
|
+
|
81
|
+
```bash
|
82
|
+
rake install
|
83
|
+
```
|
84
|
+
|
85
|
+
## Contributing
|
86
|
+
|
87
|
+
1. Fork the repository
|
88
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
89
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
90
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
91
|
+
5. Create a new Pull Request
|
92
|
+
|
93
|
+
## License
|
94
|
+
|
95
|
+
The gems are available as open source under the terms of the [MIT License](LICENSE.txt).
|
96
|
+
|
97
|
+
---
|
98
|
+
|
99
|
+
# Component Documentation
|
100
|
+
|
101
|
+
## gem: vident-better_html
|
102
|
+
|
103
|
+
# Vident::BetterHtml
|
104
|
+
Short description and motivation.
|
105
|
+
|
106
|
+
### Usage
|
107
|
+
How to use my plugin.
|
108
|
+
|
109
|
+
```ruby
|
110
|
+
BetterHtml.config = BetterHtml::Config.new(YAML.load(File.read(".better-html.yml")))
|
111
|
+
|
112
|
+
BetterHtml.configure do |config|
|
113
|
+
config.template_exclusion_filter = proc { |filename| !filename.start_with?(Rails.root.to_s) }
|
114
|
+
end
|
115
|
+
# ViewComponent needs to do this hack to work in certain cases
|
116
|
+
# see https://github.com/Shopify/better-html/pull/98
|
117
|
+
class BetterHtml::HtmlAttributes
|
118
|
+
alias_method :to_s_without_html_safe, :to_s
|
119
|
+
|
120
|
+
def to_s
|
121
|
+
to_s_without_html_safe.html_safe
|
122
|
+
end
|
123
|
+
end
|
124
|
+
```
|
125
|
+
|
126
|
+
### Installation
|
127
|
+
Add this line to your application's Gemfile:
|
128
|
+
|
129
|
+
```ruby
|
130
|
+
gem "vident-better_html"
|
131
|
+
```
|
132
|
+
|
133
|
+
And then execute:
|
134
|
+
```bash
|
135
|
+
$ bundle
|
136
|
+
```
|
137
|
+
|
138
|
+
Or install it yourself as:
|
139
|
+
```bash
|
140
|
+
$ gem install vident-better_html
|
141
|
+
```
|
142
|
+
|
143
|
+
---
|
144
|
+
|
145
|
+
## gem: vident-phlex
|
146
|
+
|
147
|
+
# Vident::Phlex
|
148
|
+
|
149
|
+
[Phlex](https://phlex.fun/) powered [Vident](https://github.com/stevegeek/vident) components.
|
150
|
+
|
151
|
+
```ruby
|
152
|
+
class ApplicationComponent < ::Vident::Phlex::HTML
|
153
|
+
end
|
154
|
+
```
|
155
|
+
|
156
|
+
For more details see [vident](https://github.com/stevegeek/vident).
|
157
|
+
|
158
|
+
### Usage
|
159
|
+
How to use my plugin.
|
160
|
+
|
161
|
+
### Installation
|
162
|
+
Add this line to your application's Gemfile:
|
163
|
+
|
164
|
+
```ruby
|
165
|
+
gem "vident-phlex"
|
166
|
+
```
|
167
|
+
|
168
|
+
And then execute:
|
169
|
+
```bash
|
170
|
+
$ bundle
|
171
|
+
```
|
172
|
+
|
173
|
+
Or install it yourself as:
|
174
|
+
```bash
|
175
|
+
$ gem install vident-phlex
|
176
|
+
```
|
177
|
+
|
178
|
+
---
|
179
|
+
|
180
|
+
## gem: vident-tailwind
|
181
|
+
|
182
|
+
# Vident::Tailwind
|
183
|
+
Short description and motivation.
|
184
|
+
|
185
|
+
### Usage
|
186
|
+
How to use my plugin.
|
187
|
+
|
188
|
+
### Installation
|
189
|
+
Add this line to your application's Gemfile:
|
190
|
+
|
191
|
+
```ruby
|
192
|
+
gem "vident-tailwind"
|
193
|
+
```
|
194
|
+
|
195
|
+
And then execute:
|
196
|
+
```bash
|
197
|
+
$ bundle
|
198
|
+
```
|
199
|
+
|
200
|
+
Or install it yourself as:
|
201
|
+
```bash
|
202
|
+
$ gem install vident-tailwind
|
203
|
+
```
|
204
|
+
|
205
|
+
---
|
206
|
+
|
207
|
+
## gem: vident-typed-minitest
|
208
|
+
|
209
|
+
# Vident::Typed::Minitest
|
210
|
+
Short description and motivation.
|
211
|
+
|
212
|
+
### Usage
|
213
|
+
How to use my plugin.
|
214
|
+
|
215
|
+
### Installation
|
216
|
+
Add this line to your application's Gemfile:
|
217
|
+
|
218
|
+
```ruby
|
219
|
+
gem "vident-typed-minitest"
|
220
|
+
```
|
221
|
+
|
222
|
+
And then execute:
|
223
|
+
```bash
|
224
|
+
$ bundle
|
225
|
+
```
|
226
|
+
|
227
|
+
Or install it yourself as:
|
228
|
+
```bash
|
229
|
+
$ gem install vident-typed-minitest
|
230
|
+
```
|
231
|
+
|
232
|
+
---
|
233
|
+
|
234
|
+
## gem: vident-typed-phlex
|
235
|
+
|
236
|
+
# Vident::Typed::Phlex
|
237
|
+
|
238
|
+
Adds typed attributes to Vident Phlex based components.
|
239
|
+
|
240
|
+
```ruby
|
241
|
+
class ApplicationComponent < ::Vident::Typed::Phlex::HTML
|
242
|
+
end
|
243
|
+
```
|
244
|
+
|
245
|
+
For more details see [vident](https://github.com/stevegeek/vident).
|
246
|
+
|
247
|
+
### Usage
|
248
|
+
How to use my plugin.
|
249
|
+
|
250
|
+
### Installation
|
251
|
+
Add this line to your application's Gemfile:
|
252
|
+
|
253
|
+
```ruby
|
254
|
+
gem "vident-typed-phlex"
|
255
|
+
```
|
256
|
+
|
257
|
+
And then execute:
|
258
|
+
```bash
|
259
|
+
$ bundle
|
260
|
+
```
|
261
|
+
|
262
|
+
Or install it yourself as:
|
263
|
+
```bash
|
264
|
+
$ gem install vident-typed-phlex
|
265
|
+
```
|
266
|
+
|
267
|
+
---
|
268
|
+
|
269
|
+
## gem: vident-typed-view_component
|
270
|
+
|
271
|
+
# Vident::Typed::ViewComponent
|
272
|
+
|
273
|
+
Adds typed attributes to Vident ViewComponent components.
|
274
|
+
|
275
|
+
```ruby
|
276
|
+
class ApplicationComponent < ::Vident::Typed::ViewComponent::Base
|
277
|
+
end
|
278
|
+
```
|
279
|
+
|
280
|
+
For more details see [vident](https://github.com/stevegeek/vident).
|
281
|
+
|
282
|
+
### Examples
|
283
|
+
|
284
|
+
Before we dive into a specific example note that there are some components implemented in `test/dummy/app/components`.
|
285
|
+
|
286
|
+
Try them out by starting Rails:
|
287
|
+
|
288
|
+
```bash
|
289
|
+
cd test/dummy
|
290
|
+
bundle install
|
291
|
+
rails assets:precompile
|
292
|
+
rails s
|
293
|
+
```
|
294
|
+
|
295
|
+
and visiting http://localhost:3000
|
296
|
+
|
297
|
+
|
298
|
+
### A Vident component example (without Stimulus)
|
299
|
+
|
300
|
+
First is an example component that uses `Vident::Typed::ViewComponent::Base` but no Stimulus features.
|
301
|
+
|
302
|
+
It is an avatar component that can either be displayed as an image or as initials.
|
303
|
+
|
304
|
+
It supports numerous sizes and shapes and can optionally have a border. It also generates a cache key for use in fragment caching or etag generation.
|
305
|
+
|
306
|
+
```ruby
|
307
|
+
class AvatarComponent < ::Vident::Typed::ViewComponent::Base
|
308
|
+
include ::Vident::Tailwind
|
309
|
+
include ::Vident::Caching
|
310
|
+
|
311
|
+
no_stimulus_controller
|
312
|
+
with_cache_key :attributes
|
313
|
+
|
314
|
+
attribute :url, String, allow_nil: true, allow_blank: false
|
315
|
+
attribute :initials, String, allow_blank: false
|
316
|
+
|
317
|
+
attribute :shape, Symbol, in: %i[circle square], default: :circle
|
318
|
+
|
319
|
+
attribute :border, :boolean, default: false
|
320
|
+
|
321
|
+
attribute :size, Symbol, in: %i[tiny small normal medium large x_large xx_large], default: :normal
|
322
|
+
|
323
|
+
private
|
324
|
+
|
325
|
+
def default_html_options
|
326
|
+
if image_avatar?
|
327
|
+
{ class: "inline-block object-contain", src: url, alt: t(".image") }
|
328
|
+
else
|
329
|
+
{ class: "inline-flex items-center justify-center bg-gray-500" }
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
def element_classes
|
334
|
+
[size_classes, shape_class, border? ? "border" : ""]
|
335
|
+
end
|
336
|
+
|
337
|
+
alias_method :image_avatar?, :url?
|
338
|
+
|
339
|
+
def shape_class
|
340
|
+
(shape == :circle) ? "rounded-full" : "rounded-md"
|
341
|
+
end
|
342
|
+
|
343
|
+
def size_classes
|
344
|
+
case size
|
345
|
+
when :tiny
|
346
|
+
"w-6 h-6"
|
347
|
+
when :small
|
348
|
+
"w-8 h-8"
|
349
|
+
when :medium
|
350
|
+
"w-12 h-12"
|
351
|
+
when :large
|
352
|
+
"w-14 h-14"
|
353
|
+
when :x_large
|
354
|
+
"sm:w-24 sm:h-24 w-16 h-16"
|
355
|
+
when :xx_large
|
356
|
+
"sm:w-32 sm:h-32 w-24 h-24"
|
357
|
+
else
|
358
|
+
"w-10 h-10"
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
def text_size_class
|
363
|
+
case size
|
364
|
+
when :tiny
|
365
|
+
"text-xs"
|
366
|
+
when :small
|
367
|
+
"text-xs"
|
368
|
+
when :medium
|
369
|
+
"text-lg"
|
370
|
+
when :large
|
371
|
+
"sm:text-xl text-lg"
|
372
|
+
when :extra_large
|
373
|
+
"sm:text-2xl text-xl"
|
374
|
+
else
|
375
|
+
"text-medium"
|
376
|
+
end
|
377
|
+
end
|
378
|
+
end
|
379
|
+
```
|
380
|
+
|
381
|
+
```erb
|
382
|
+
<%= render root(
|
383
|
+
element_tag: image_avatar? ? :img : :div,
|
384
|
+
html_options: default_html_options
|
385
|
+
) do %>
|
386
|
+
<% unless image_avatar? %>
|
387
|
+
<span class="<%= text_size_class %> font-medium leading-none text-white"><%= initials %></span>
|
388
|
+
<% end %>
|
389
|
+
<% end %>
|
390
|
+
|
391
|
+
```
|
392
|
+
|
393
|
+
Example usages:
|
394
|
+
|
395
|
+
```erb
|
396
|
+
<!-- These will render -->
|
397
|
+
<%= render AvatarComponent.new(url: "https://someurl.com/avatar.jpg", initials: "AB" size: :large) %>
|
398
|
+
<%= render AvatarComponent.new(url: "https://someurl.com/avatar.jpg", html_options: {alt: "My alt text", class: "object-scale-down"}) %>
|
399
|
+
<%= render AvatarComponent.new(initials: "SG", size: :small) %>
|
400
|
+
<%= render AvatarComponent.new(initials: "SG", size: :large, html_options: {class: "border-2 border-red-600"}) %>
|
401
|
+
|
402
|
+
<!-- These will raise an error -->
|
403
|
+
<!-- missing initals -->
|
404
|
+
<%= render AvatarComponent.new(url: "https://someurl.com/avatar.jpg", size: :large) %>
|
405
|
+
<!-- initials blank -->
|
406
|
+
<%= render AvatarComponent.new(initials: "", size: :large) %>
|
407
|
+
<!-- invalid size -->
|
408
|
+
<%= render AvatarComponent.new(initials: "SG", size: :foo_bar) %>
|
409
|
+
```
|
410
|
+
|
411
|
+
|
412
|
+
The following is rendered when used `render AvatarComponent.new(initials: "SG", size: :small, border: true)`:
|
413
|
+
|
414
|
+
```html
|
415
|
+
<div class="avatar-component w-8 h-8 rounded-full border inline-flex items-center justify-center bg-gray-500" id="avatar-component-9790427-12">
|
416
|
+
<span class="text-xs font-medium leading-none text-white">SG</span>
|
417
|
+
</div>
|
418
|
+
```
|
419
|
+
|
420
|
+
The following is rendered when used `render AvatarComponent.new(url: "https://i.pravatar.cc/300", initials: "AB", html_options: {alt: "My alt text", class: "block"})`:
|
421
|
+
|
422
|
+
```html
|
423
|
+
<img src="https://i.pravatar.cc/300" alt="My alt text" class="avatar-component w-10 h-10 rounded-full object-contain block" id="avatar-component-7083941-11">
|
424
|
+
```
|
425
|
+
|
426
|
+
----
|
427
|
+
|
428
|
+

|
429
|
+
|
430
|
+
|
431
|
+
### Another ViewComponent + Vident example with Stimulus
|
432
|
+
|
433
|
+
Consider the following ERB that might be part of an application's views. The app uses `ViewComponent`, `Stimulus` and `Vident`.
|
434
|
+
|
435
|
+
The Greeter is a component that displays a text input and a button. When the button is clicked, the text input's value is
|
436
|
+
used to greet the user. At the same time the button changes to be a 'reset' button, which resets the greeting when clicked again.
|
437
|
+
|
438
|
+

|
439
|
+
|
440
|
+
```erb
|
441
|
+
<%# app/views/home/index.html.erb %>
|
442
|
+
|
443
|
+
<!-- ... -->
|
444
|
+
|
445
|
+
<!-- render the Greeter ViewComponent (that uses Vident) -->
|
446
|
+
<%= render ::GreeterComponent.new(cta: "Hey!", html_options: {class: "my-4"}) do |greeter| %>
|
447
|
+
<%# this component has a slot called `trigger` that renders a `ButtonComponent` (which also uses Vident) %>
|
448
|
+
<% greeter.with_trigger(
|
449
|
+
|
450
|
+
# The button component has attributes that are typed
|
451
|
+
before_clicked: "Greet",
|
452
|
+
after_clicked: "Greeted! Reset?",
|
453
|
+
|
454
|
+
# A stimulus action is added to the button that triggers the `greet` action on the greeter stimulus controller.
|
455
|
+
# This action will be added to any defined on the button component itself
|
456
|
+
actions: [
|
457
|
+
greeter.action(:click, :greet),
|
458
|
+
],
|
459
|
+
|
460
|
+
# We can also override the default button classes of our component, or set other HTML attributes
|
461
|
+
html_options: {
|
462
|
+
class: "bg-red-500 hover:bg-red-700"
|
463
|
+
}
|
464
|
+
) %>
|
465
|
+
<% end %>
|
466
|
+
|
467
|
+
<!-- ... -->
|
468
|
+
```
|
469
|
+
|
470
|
+
The output HTML of the above, using Vident, is:
|
471
|
+
|
472
|
+
```html
|
473
|
+
<div class="greeter-component py-2 my-4"
|
474
|
+
data-controller="greeter-component"
|
475
|
+
data-greeter-component-pre-click-class="text-md text-gray-500"
|
476
|
+
data-greeter-component-post-click-class="text-xl text-blue-700"
|
477
|
+
id="greeter-component-1599855-6">
|
478
|
+
<input type="text"
|
479
|
+
data-greeter-component-target="name"
|
480
|
+
class="shadow appearance-none border rounded py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
|
481
|
+
<button class="button-component ml-4 whitespace-no-wrap bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded bg-red-500 hover:bg-red-700"
|
482
|
+
data-controller="button-component"
|
483
|
+
data-action="click->greeter-component#greet button-component#changeMessage"
|
484
|
+
data-button-component-after-clicked-message="Greeted! Reset?"
|
485
|
+
data-button-component-before-clicked-message="Greet"
|
486
|
+
id="button-component-7799479-7">Hey!</button>
|
487
|
+
<!-- you can also use the `target_tag` helper to render targets -->
|
488
|
+
<span class="ml-4 text-md text-gray-500"
|
489
|
+
data-greeter-component-target="output">
|
490
|
+
...
|
491
|
+
</span>
|
492
|
+
</div>
|
493
|
+
```
|
494
|
+
|
495
|
+
Let's look at the components in more detail.
|
496
|
+
|
497
|
+
The main component is the `GreeterComponent`:
|
498
|
+
|
499
|
+
```ruby
|
500
|
+
# app/components/greeter_component.rb
|
501
|
+
|
502
|
+
class GreeterComponent < ::Vident::ViewComponent::Base
|
503
|
+
renders_one :trigger, ButtonComponent
|
504
|
+
end
|
505
|
+
```
|
506
|
+
|
507
|
+
```erb
|
508
|
+
<%# app/components/greeter_component.html.erb %>
|
509
|
+
|
510
|
+
<%# Rendering the `root` element creates a tag which has stimulus `data-*`s, a unique id & other attributes set. %>
|
511
|
+
<%# The stimulus controller name (identifier) is derived from the component name, and then used to generate the relavent data attribute names. %>
|
512
|
+
|
513
|
+
<%= render root named_classes: {
|
514
|
+
pre_click: "text-md text-gray-500", # named classes are exposed to Stimulus as `data-<controller>-<n>-class` attributes
|
515
|
+
post_click: "text-xl text-blue-700",
|
516
|
+
html_options: {class: "py-2"}
|
517
|
+
} do |greeter| %>
|
518
|
+
|
519
|
+
<%# `greeter` is the root element and exposes methods to generate stimulus targets and actions %>
|
520
|
+
<input type="text"
|
521
|
+
<%= greeter.as_target(:name) %>
|
522
|
+
class="shadow appearance-none border rounded py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
|
523
|
+
|
524
|
+
<%# Render the slot %>
|
525
|
+
<%= trigger %>
|
526
|
+
|
527
|
+
<%# you can also use the `target_tag` helper to render targets %>
|
528
|
+
<%= greeter.target_tag(
|
529
|
+
:span,
|
530
|
+
:output,
|
531
|
+
# Stimulus named classes can be referenced to set class attributes at render time
|
532
|
+
class: "ml-4 #{greeter.named_classes(:pre_click)}"
|
533
|
+
) do %>
|
534
|
+
...
|
535
|
+
<% end %>
|
536
|
+
<% end %>
|
537
|
+
|
538
|
+
```
|
539
|
+
|
540
|
+
```js
|
541
|
+
// app/components/greeter_component_controller.js
|
542
|
+
|
543
|
+
import { Controller } from "@hotwired/stimulus"
|
544
|
+
|
545
|
+
// This is a Stimulus controller that is automatically registered for the `GreeterComponent`
|
546
|
+
// and is 'sidecar' to the component. You can see that while in the ERB we use Ruby naming conventions
|
547
|
+
// with snake_case Symbols, here they are converted to camelCase names. We can also just use camelCase
|
548
|
+
// in the ERB if we want.
|
549
|
+
export default class extends Controller {
|
550
|
+
static targets = [ "name", "output" ]
|
551
|
+
static classes = [ "preClick", "postClick" ]
|
552
|
+
|
553
|
+
greet() {
|
554
|
+
this.clicked = !this.clicked;
|
555
|
+
this.outputTarget.classList.toggle(this.preClickClasses, !this.clicked);
|
556
|
+
this.outputTarget.classList.toggle(this.postClickClasses, this.clicked);
|
557
|
+
|
558
|
+
if (this.clicked)
|
559
|
+
this.outputTarget.textContent = `Hello, ${this.nameTarget.value}!`
|
560
|
+
else
|
561
|
+
this.clear();
|
562
|
+
}
|
563
|
+
|
564
|
+
clear() {
|
565
|
+
this.outputTarget.textContent = '...';
|
566
|
+
this.nameTarget.value = '';
|
567
|
+
}
|
568
|
+
}
|
569
|
+
```
|
570
|
+
|
571
|
+
The slot renders a `ButtonComponent` component:
|
572
|
+
|
573
|
+
```ruby
|
574
|
+
# app/components/button_component.rb
|
575
|
+
|
576
|
+
class ButtonComponent < ::Vident::Typed::ViewComponent::Base
|
577
|
+
# The attributes can specify an expected type, a default value and if nil is allowed.
|
578
|
+
attribute :after_clicked, String, default: "Greeted!"
|
579
|
+
attribute :before_clicked, String, allow_nil: false
|
580
|
+
|
581
|
+
# This example is a templateless ViewComponent.
|
582
|
+
def call
|
583
|
+
# The button is rendered as a <button> tag with an click action on its own controller.
|
584
|
+
render root(
|
585
|
+
element_tag: :button,
|
586
|
+
|
587
|
+
# We can define actions as arrays of Symbols, or pass manually manually crafted strings.
|
588
|
+
# Here we specify the action name only, implying an action on the current components controller
|
589
|
+
# and the default event type of `click`.
|
590
|
+
actions: [:change_message],
|
591
|
+
# Alternatively: [:click, :change_message] or ["click", "changeMessage"] or even "click->button-component#changeMessage"
|
592
|
+
|
593
|
+
# A couple of data values are also set which will be available to the controller
|
594
|
+
data_maps: [{after_clicked_message: after_clicked, before_clicked_message: before_clicked}],
|
595
|
+
|
596
|
+
# The <button> tag has a default styling set directly on it. Note that
|
597
|
+
# if not using utility classes, you can style the component using its
|
598
|
+
# canonical class name (which is equal to the component's stimulus identifier),
|
599
|
+
# in this case `button-component`.
|
600
|
+
html_options: {class: "ml-4 whitespace-no-wrap bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"}
|
601
|
+
) do
|
602
|
+
@before_clicked
|
603
|
+
end
|
604
|
+
end
|
605
|
+
end
|
606
|
+
```
|
607
|
+
|
608
|
+
```js
|
609
|
+
// app/components/button_component_controller.js
|
610
|
+
|
611
|
+
import { Controller } from "@hotwired/stimulus"
|
612
|
+
|
613
|
+
export default class extends Controller {
|
614
|
+
// The action is in camelCase.
|
615
|
+
changeMessage() {
|
616
|
+
this.clicked = !this.clicked;
|
617
|
+
// The data attributes have their naming convention converted to camelCase.
|
618
|
+
this.element.textContent = this.clicked ? this.data.get("afterClickedMessage") : this.data.get("beforeClickedMessage");
|
619
|
+
}
|
620
|
+
}
|
621
|
+
|
622
|
+
```
|
623
|
+
|
624
|
+
### Usage
|
625
|
+
How to use my plugin.
|
626
|
+
|
627
|
+
### Installation
|
628
|
+
Add this line to your application's Gemfile:
|
629
|
+
|
630
|
+
```ruby
|
631
|
+
gem "vident-typed-view_component"
|
632
|
+
```
|
633
|
+
|
634
|
+
And then execute:
|
635
|
+
```bash
|
636
|
+
$ bundle
|
637
|
+
```
|
638
|
+
|
639
|
+
Or install it yourself as:
|
640
|
+
```bash
|
641
|
+
$ gem install vident-typed-view_component
|
642
|
+
```
|
643
|
+
|
644
|
+
---
|
645
|
+
|
646
|
+
## gem: vident-typed
|
647
|
+
|
648
|
+
# Vident::Typed
|
649
|
+
Short description and motivation.
|
650
|
+
|
651
|
+
### Usage
|
652
|
+
How to use my plugin.
|
653
|
+
|
654
|
+
### Installation
|
655
|
+
Add this line to your application's Gemfile:
|
656
|
+
|
657
|
+
```ruby
|
658
|
+
gem "vident-typed"
|
659
|
+
```
|
660
|
+
|
661
|
+
And then execute:
|
662
|
+
```bash
|
663
|
+
$ bundle
|
664
|
+
```
|
665
|
+
|
666
|
+
Or install it yourself as:
|
667
|
+
```bash
|
668
|
+
$ gem install vident-typed
|
669
|
+
```
|
670
|
+
|
671
|
+
---
|
672
|
+
|
673
|
+
## gem: vident-view_component-caching
|
674
|
+
|
675
|
+
# Vident::ViewComponent::Caching
|
676
|
+
Short description and motivation.
|
677
|
+
|
678
|
+
### Usage
|
679
|
+
How to use my plugin.
|
680
|
+
|
681
|
+
### Installation
|
682
|
+
Add this line to your application's Gemfile:
|
683
|
+
|
684
|
+
```ruby
|
685
|
+
gem "vident-view_component-caching"
|
686
|
+
```
|
687
|
+
|
688
|
+
And then execute:
|
689
|
+
```bash
|
690
|
+
$ bundle
|
691
|
+
```
|
692
|
+
|
693
|
+
Or install it yourself as:
|
694
|
+
```bash
|
695
|
+
$ gem install vident-view_component-caching
|
696
|
+
```
|
697
|
+
|
698
|
+
---
|
699
|
+
|
700
|
+
## gem: vident-view_component
|
701
|
+
|
1
702
|
# Vident::ViewComponent
|
2
703
|
|
3
704
|
[ViewComponent](https://viewcomponent.org/) powered [Vident](https://github.com/stevegeek/vident) components.
|
@@ -9,7 +710,7 @@ end
|
|
9
710
|
|
10
711
|
For more details see [vident](https://github.com/stevegeek/vident).
|
11
712
|
|
12
|
-
|
713
|
+
### Examples
|
13
714
|
|
14
715
|
Before we dive into a specific example note that there are some components implemented in the `test/dummy/app/components`.
|
15
716
|
|
@@ -25,7 +726,7 @@ rails s
|
|
25
726
|
and visiting http://localhost:3000
|
26
727
|
|
27
728
|
|
28
|
-
|
729
|
+
### A Vident component example (without Stimulus)
|
29
730
|
|
30
731
|
First is an example component that uses `Vident::ViewComponent::Base` but no Stimulus features.
|
31
732
|
|
@@ -144,10 +845,10 @@ The following is rendered when used `render AvatarComponent.new(url: "https://i.
|
|
144
845
|
|
145
846
|

|
146
847
|
|
147
|
-
|
848
|
+
### Usage
|
148
849
|
How to use my plugin.
|
149
850
|
|
150
|
-
|
851
|
+
### Installation
|
151
852
|
Add this line to your application's Gemfile:
|
152
853
|
|
153
854
|
```ruby
|
@@ -162,10 +863,4 @@ $ bundle
|
|
162
863
|
Or install it yourself as:
|
163
864
|
```bash
|
164
865
|
$ gem install vident-view_component
|
165
|
-
```
|
166
|
-
|
167
|
-
## Contributing
|
168
|
-
Contribution directions go here.
|
169
|
-
|
170
|
-
## License
|
171
|
-
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
866
|
+
```
|
@@ -28,8 +28,8 @@ module Vident
|
|
28
28
|
end
|
29
29
|
|
30
30
|
# Helper to create the main element
|
31
|
-
def parent_element
|
32
|
-
@parent_element ||= ::Vident::ViewComponent::RootComponent.new(**
|
31
|
+
def parent_element
|
32
|
+
@parent_element ||= ::Vident::ViewComponent::RootComponent.new(**stimulus_options_for_root_component)
|
33
33
|
end
|
34
34
|
alias_method :root, :parent_element
|
35
35
|
end
|
@@ -1,5 +1,8 @@
|
|
1
1
|
require "vident/view_component/version"
|
2
|
-
require "vident/view_component/
|
2
|
+
require "vident/view_component/core"
|
3
|
+
require "vident/view_component/base"
|
4
|
+
require "vident/view_component/root_component"
|
5
|
+
require "vident/view_component/engine" if defined?(Rails)
|
3
6
|
|
4
7
|
module Vident
|
5
8
|
module ViewComponent
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vident-view_component
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Ierodiaconou
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-04-07 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: railties
|
@@ -16,60 +15,54 @@ dependencies:
|
|
16
15
|
requirements:
|
17
16
|
- - ">="
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version: '7'
|
18
|
+
version: '7.2'
|
20
19
|
- - "<"
|
21
20
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
21
|
+
version: '9'
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
version: '7'
|
28
|
+
version: '7.2'
|
30
29
|
- - "<"
|
31
30
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
31
|
+
version: '9'
|
33
32
|
- !ruby/object:Gem::Dependency
|
34
33
|
name: activesupport
|
35
34
|
requirement: !ruby/object:Gem::Requirement
|
36
35
|
requirements:
|
37
36
|
- - ">="
|
38
37
|
- !ruby/object:Gem::Version
|
39
|
-
version: '7'
|
38
|
+
version: '7.2'
|
40
39
|
- - "<"
|
41
40
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
41
|
+
version: '9'
|
43
42
|
type: :runtime
|
44
43
|
prerelease: false
|
45
44
|
version_requirements: !ruby/object:Gem::Requirement
|
46
45
|
requirements:
|
47
46
|
- - ">="
|
48
47
|
- !ruby/object:Gem::Version
|
49
|
-
version: '7'
|
48
|
+
version: '7.2'
|
50
49
|
- - "<"
|
51
50
|
- !ruby/object:Gem::Version
|
52
|
-
version: '
|
51
|
+
version: '9'
|
53
52
|
- !ruby/object:Gem::Dependency
|
54
53
|
name: vident
|
55
54
|
requirement: !ruby/object:Gem::Requirement
|
56
55
|
requirements:
|
57
|
-
- - "
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: 0.9.0
|
60
|
-
- - "<"
|
56
|
+
- - "~>"
|
61
57
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
58
|
+
version: 0.13.0
|
63
59
|
type: :runtime
|
64
60
|
prerelease: false
|
65
61
|
version_requirements: !ruby/object:Gem::Requirement
|
66
62
|
requirements:
|
67
|
-
- - "
|
63
|
+
- - "~>"
|
68
64
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.
|
70
|
-
- - "<"
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: '1'
|
65
|
+
version: 0.13.0
|
73
66
|
- !ruby/object:Gem::Dependency
|
74
67
|
name: view_component
|
75
68
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,23 +90,22 @@ executables: []
|
|
97
90
|
extensions: []
|
98
91
|
extra_rdoc_files: []
|
99
92
|
files:
|
93
|
+
- CHANGELOG.md
|
94
|
+
- LICENSE.txt
|
100
95
|
- README.md
|
101
|
-
- Rakefile
|
102
|
-
- lib/tasks/vident/view_component_tasks.rake
|
103
96
|
- lib/vident/view_component.rb
|
104
97
|
- lib/vident/view_component/base.rb
|
105
98
|
- lib/vident/view_component/core.rb
|
106
99
|
- lib/vident/view_component/engine.rb
|
107
100
|
- lib/vident/view_component/root_component.rb
|
108
101
|
- lib/vident/view_component/version.rb
|
109
|
-
homepage: https://github.com/stevegeek/vident
|
102
|
+
homepage: https://github.com/stevegeek/vident
|
110
103
|
licenses:
|
111
104
|
- MIT
|
112
105
|
metadata:
|
113
|
-
homepage_uri: https://github.com/stevegeek/vident
|
114
|
-
source_code_uri: https://github.com/stevegeek/vident
|
115
|
-
changelog_uri: https://github.com/stevegeek/vident
|
116
|
-
post_install_message:
|
106
|
+
homepage_uri: https://github.com/stevegeek/vident
|
107
|
+
source_code_uri: https://github.com/stevegeek/vident
|
108
|
+
changelog_uri: https://github.com/stevegeek/vident/blob/main/CHANGELOG.md
|
117
109
|
rdoc_options: []
|
118
110
|
require_paths:
|
119
111
|
- lib
|
@@ -121,15 +113,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
113
|
requirements:
|
122
114
|
- - ">="
|
123
115
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
116
|
+
version: 3.1.0
|
125
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
118
|
requirements:
|
127
119
|
- - ">="
|
128
120
|
- !ruby/object:Gem::Version
|
129
121
|
version: '0'
|
130
122
|
requirements: []
|
131
|
-
rubygems_version: 3.
|
132
|
-
signing_key:
|
123
|
+
rubygems_version: 3.6.2
|
133
124
|
specification_version: 4
|
134
125
|
summary: Vident with ViewComponent
|
135
126
|
test_files: []
|
data/Rakefile
DELETED