foundation_rails_helper 2.0.0 → 3.0.0.beta3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -6
- data/.rubocop_todo.yml +6 -48
- data/CHANGELOG.md +5 -0
- data/Gemfile +1 -0
- data/README.md +23 -26
- data/Rakefile +1 -0
- data/foundation_rails_helper.gemspec +36 -32
- data/lib/foundation_rails_helper.rb +2 -0
- data/lib/foundation_rails_helper/action_view_extension.rb +1 -0
- data/lib/foundation_rails_helper/configuration.rb +4 -1
- data/lib/foundation_rails_helper/flash_helper.rb +43 -16
- data/lib/foundation_rails_helper/form_builder.rb +61 -83
- data/lib/foundation_rails_helper/size_class_calculator.rb +32 -0
- data/lib/foundation_rails_helper/version.rb +2 -1
- data/lib/railtie.rb +1 -0
- data/spec/.rubocop.yml +3 -0
- data/spec/foundation_rails_helper/configuration_spec.rb +30 -3
- data/spec/foundation_rails_helper/flash_helper_spec.rb +37 -23
- data/spec/foundation_rails_helper/form_builder_spec.rb +448 -176
- data/spec/spec_helper.rb +1 -0
- data/spec/support/classes/author.rb +13 -0
- data/spec/support/classes/book.rb +13 -0
- data/spec/support/classes/genre.rb +13 -0
- data/spec/support/mock_rails.rb +56 -100
- metadata +50 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f82cdd3a1e082e60417f16ac49f49bac77b92aa9
|
4
|
+
data.tar.gz: 12c3e4a9a151295dab07c4d66e6cc7aaf603aa87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10148a13208ea0dfb88669e319e7b0e98c6f53cc013bfc96c152a245d21b69dc9c2853ce55dad19fadf6f00aee3e66ba9273c185f051999097d9379d9b4193dc
|
7
|
+
data.tar.gz: 6f6ae496a923551dc81d375689f056accc381e59c4990ffefeb664df9e4112fb1965693e65129664b5628ec81a8fd0c7155cd76f4cc879a42b3c09569939adc8
|
data/.rubocop.yml
CHANGED
@@ -9,11 +9,8 @@ AllCops:
|
|
9
9
|
Exclude:
|
10
10
|
- 'vendor/**/*'
|
11
11
|
|
12
|
-
# A quick fix for not having magic comments at the top of each file
|
13
|
-
# # frozen_string_literal: true
|
14
|
-
# https://github.com/bbatsov/rubocop/issues/3284
|
15
|
-
FrozenStringLiteralComment:
|
16
|
-
Enabled: false
|
17
|
-
|
18
12
|
Documentation:
|
19
13
|
Enabled: false
|
14
|
+
|
15
|
+
Style/VariableNumber:
|
16
|
+
EnforcedStyle: 'snake_case'
|
data/.rubocop_todo.yml
CHANGED
@@ -1,67 +1,25 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
3
|
+
# on 2017-01-13 13:27:28 -0800 using RuboCop version 0.44.1.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
-
# Offense count:
|
10
|
-
Lint/NestedMethodDefinition:
|
11
|
-
Exclude:
|
12
|
-
- 'spec/support/mock_rails.rb'
|
13
|
-
|
14
|
-
# Offense count: 3
|
9
|
+
# Offense count: 1
|
15
10
|
Metrics/AbcSize:
|
16
|
-
Max:
|
11
|
+
Max: 17
|
17
12
|
|
18
13
|
# Offense count: 1
|
19
14
|
# Configuration parameters: CountComments.
|
20
15
|
Metrics/ClassLength:
|
21
|
-
Max:
|
16
|
+
Max: 183
|
22
17
|
|
23
18
|
# Offense count: 1
|
24
19
|
Metrics/CyclomaticComplexity:
|
25
20
|
Max: 7
|
26
21
|
|
27
|
-
# Offense count: 157
|
28
|
-
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
|
29
|
-
# URISchemes: http, https
|
30
|
-
Metrics/LineLength:
|
31
|
-
Max: 163
|
32
|
-
|
33
|
-
# Offense count: 5
|
34
|
-
# Configuration parameters: CountComments.
|
35
|
-
Metrics/MethodLength:
|
36
|
-
Max: 55
|
37
|
-
|
38
22
|
# Offense count: 1
|
39
23
|
# Configuration parameters: CountComments.
|
40
|
-
Metrics/
|
41
|
-
Max:
|
42
|
-
|
43
|
-
# Offense count: 2
|
44
|
-
# Configuration parameters: CountKeywordArgs.
|
45
|
-
Metrics/ParameterLists:
|
46
|
-
Max: 8
|
47
|
-
|
48
|
-
# Offense count: 1
|
49
|
-
Metrics/PerceivedComplexity:
|
50
|
-
Max: 8
|
51
|
-
|
52
|
-
# Offense count: 3
|
53
|
-
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
54
|
-
# SupportedStyles: nested, compact
|
55
|
-
Style/ClassAndModuleChildren:
|
56
|
-
Exclude:
|
57
|
-
- 'spec/support/mock_rails.rb'
|
58
|
-
|
59
|
-
# Offense count: 1
|
60
|
-
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist.
|
61
|
-
# NamePrefix: is_, has_, have_
|
62
|
-
# NamePrefixBlacklist: is_, has_, have_
|
63
|
-
# NameWhitelist: is_a?
|
64
|
-
Style/PredicateName:
|
65
|
-
Exclude:
|
66
|
-
- 'spec/**/*'
|
67
|
-
- 'lib/foundation_rails_helper/form_builder.rb'
|
24
|
+
Metrics/MethodLength:
|
25
|
+
Max: 13
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,13 @@
|
|
1
|
+
## Version 3.0.0
|
2
|
+
* Added Foundation 6 support
|
3
|
+
* Added auto_labels config
|
4
|
+
|
1
5
|
## Version 2.0
|
2
6
|
This will be used for Foundation 5 support
|
3
7
|
|
4
8
|
### Breaking changes:
|
5
9
|
* Dropped support for Ruby 1.9.3
|
10
|
+
* display_flash_messages now requires the key_matching hash to be prefixed with the keyword argument :key_matching
|
6
11
|
|
7
12
|
### Features:
|
8
13
|
* Add Rubocop code style linting
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -9,15 +9,14 @@ So far it includes:
|
|
9
9
|
|
10
10
|
* A custom FormBuilder that generates a form using the Foundation framework classes. It replaces the current `form_for`, so there is no need to change your Rails code. Error messages are properly displayed.
|
11
11
|
|
12
|
-
* A `display_flash_messages` helper method that uses Zurb Foundation
|
12
|
+
* A `display_flash_messages` helper method that uses Zurb Foundation Callout UI.
|
13
13
|
|
14
14
|
#### Compatibility
|
15
15
|
|
16
|
-
* Only Rails 4.1/4.2/5 and Foundation
|
17
|
-
* Some features may work with Foundation
|
18
|
-
* Legacy branches exist for Rails 3
|
19
|
-
* We test against ruby versions 2.1 and up. This gem may still work fine on
|
20
|
-
1.9.3, but your mileage may vary
|
16
|
+
* Only Rails 4.1/4.2/5, and Foundation 6 are fully supported
|
17
|
+
* Some features may work with Foundation 5 and older, but results may vary, and markup which exists only for those versions will be gradually removed
|
18
|
+
* Legacy branches exist for Rails 3, 4.0, and Foundation 5 (see the rails3, rails4.0, and foundation-5 branches). These are not actively supported, and fixes are not retroactively applied, but pull requests are welcome.
|
19
|
+
* We test against ruby versions 2.1 and up. This gem may still work fine on 1.9.3, but your mileage may vary
|
21
20
|
|
22
21
|
|
23
22
|
## Screenshots
|
@@ -27,7 +26,7 @@ A classic devise sign up view will look like this:
|
|
27
26
|
|
28
27
|
```erb
|
29
28
|
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
|
30
|
-
<%= f.email_field :email
|
29
|
+
<%= f.email_field :email %>
|
31
30
|
<%= f.password_field :password %>
|
32
31
|
<%= f.password_field :password_confirmation %>
|
33
32
|
|
@@ -45,10 +44,10 @@ A classic devise sign up view will look like this:
|
|
45
44
|
<tbody>
|
46
45
|
<tr>
|
47
46
|
<td valign='top'>
|
48
|
-
<img src="https://cloud.githubusercontent.com/assets/1400414/
|
47
|
+
<img src="https://cloud.githubusercontent.com/assets/1400414/18522106/8b981524-7a63-11e6-8450-0605cc310205.png"/>
|
49
48
|
</td>
|
50
49
|
<td valign='top'>
|
51
|
-
<img src="https://cloud.githubusercontent.com/assets/1400414/
|
50
|
+
<img src="https://cloud.githubusercontent.com/assets/1400414/18522107/8d0bfa24-7a63-11e6-8c0a-12757528b9ee.png"/>
|
52
51
|
</td>
|
53
52
|
</tr>
|
54
53
|
</tbody>
|
@@ -56,15 +55,15 @@ A classic devise sign up view will look like this:
|
|
56
55
|
|
57
56
|
### Flash messages
|
58
57
|
|
59
|
-
![Flash-message](https://cloud.githubusercontent.com/assets/
|
58
|
+
![Flash-message](https://cloud.githubusercontent.com/assets/1400414/18522256/3d13c97e-7a64-11e6-9ee2-33adc93cd573.png "Flash-message")
|
60
59
|
|
61
60
|
## Installation
|
62
61
|
|
63
62
|
Add this line to your application's Gemfile:
|
64
63
|
|
65
64
|
```ruby
|
66
|
-
gem 'foundation-rails'
|
67
|
-
gem 'foundation_rails_helper', '
|
65
|
+
gem 'foundation-rails', '~> 6.0' # required
|
66
|
+
gem 'foundation_rails_helper', '>= 3.0.0.beta3', '< 4.0'
|
68
67
|
```
|
69
68
|
|
70
69
|
And then execute:
|
@@ -124,21 +123,21 @@ Change the label text and add a class on the label:
|
|
124
123
|
f.text_field :name, label: 'Nombre', label_options: { class: 'large' }
|
125
124
|
```
|
126
125
|
|
127
|
-
If the
|
126
|
+
If the help_text option is specified
|
128
127
|
|
129
128
|
```ruby
|
130
|
-
f.text_field :name,
|
129
|
+
f.text_field :name, help_text: "I'm a text field"
|
131
130
|
```
|
132
131
|
|
133
|
-
an additional
|
132
|
+
an additional p element will be added after the input element:
|
134
133
|
|
135
134
|
```html
|
136
|
-
<
|
135
|
+
<p class="help-text">I'm a text field</p>
|
137
136
|
```
|
138
137
|
|
139
138
|
### Submit Button
|
140
139
|
|
141
|
-
The 'submit' helper wraps the rails helper and sets the class attribute to "
|
140
|
+
The 'submit' helper wraps the rails helper and sets the class attribute to "success button" by default.
|
142
141
|
|
143
142
|
```ruby
|
144
143
|
f.submit
|
@@ -147,7 +146,7 @@ f.submit
|
|
147
146
|
generates:
|
148
147
|
|
149
148
|
```html
|
150
|
-
<input class="
|
149
|
+
<input class="success button" name="commit" type="submit" value="Create User">
|
151
150
|
```
|
152
151
|
|
153
152
|
Specify the class option to override the default classes.
|
@@ -163,9 +162,9 @@ f.email_field :email
|
|
163
162
|
generates:
|
164
163
|
|
165
164
|
```html
|
166
|
-
<label class="
|
167
|
-
<input class="
|
168
|
-
<small class="error">can't be blank</small>
|
165
|
+
<label class="is-invalid-label" for="user_email">Email</label>
|
166
|
+
<input class="is-invalid-input" id="user_email" name="user[email]" type="email" value="">
|
167
|
+
<small class="form-error is-visible">can't be blank</small>
|
169
168
|
```
|
170
169
|
|
171
170
|
The class attribute of the 'small' element will mirror the class attribute of the 'input' element.
|
@@ -205,8 +204,8 @@ Currently supported options:
|
|
205
204
|
### Submit Button Class
|
206
205
|
To use a different class for the [submit button](https://github.com/sgruhier/foundation_rails_helper#submit-button) used in `form_for`, add a config named **button_class**:
|
207
206
|
```ruby
|
208
|
-
# Default: '
|
209
|
-
config.button_class = 'large secondary button'
|
207
|
+
# Default: 'success button'
|
208
|
+
config.button_class = 'large hollow secondary button'
|
210
209
|
```
|
211
210
|
|
212
211
|
Please note, the button class can still be overridden by an options hash.
|
@@ -227,6 +226,4 @@ See the [CONTRIBUTING](CONTRIBUTING.md) file.
|
|
227
226
|
|
228
227
|
## Copyright
|
229
228
|
|
230
|
-
Sébastien Gruhier (http://xilinus.com, http://v2.maptimize.com) - MIT LICENSE
|
231
|
-
|
232
|
-
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/sgruhier/foundation_rails_helper/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
|
229
|
+
Sébastien Gruhier (http://xilinus.com, http://v2.maptimize.com) - MIT LICENSE
|
data/Rakefile
CHANGED
@@ -1,39 +1,43 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
require File.expand_path('../lib/foundation_rails_helper/version', __FILE__)
|
3
3
|
|
4
|
-
Gem::Specification
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
gem.require_paths = ['lib']
|
16
|
-
gem.version = FoundationRailsHelper::VERSION
|
17
|
-
gem.license = 'MIT'
|
4
|
+
class Gem::Specification # rubocop:disable ClassAndModuleChildren
|
5
|
+
def self.rails_gem_version
|
6
|
+
# Allow different versions of the rails gems to be specified, for testing
|
7
|
+
@rails_gem_version ||=
|
8
|
+
if ENV['RAILS_VERSION']
|
9
|
+
"~> #{ENV['RAILS_VERSION']}"
|
10
|
+
else
|
11
|
+
['~> 5.0', '>= 5.0.0']
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
18
15
|
|
19
|
-
|
20
|
-
|
16
|
+
Gem::Specification.new do |gem|
|
17
|
+
gem.authors = ['Sebastien Gruhier']
|
18
|
+
gem.email = ['sebastien.gruhier@xilinus.com']
|
19
|
+
gem.description =
|
20
|
+
'Rails for zurb foundation CSS framework. Form builder, flash message, ...'
|
21
|
+
gem.summary = 'Rails helpers for zurb foundation CSS framework'
|
22
|
+
gem.homepage = 'http://github.com/sgruhier/foundation_rails_helper'
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
gem.executables =
|
25
|
+
`git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
26
|
+
gem.files = `git ls-files`.split("\n")
|
27
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
28
|
+
gem.name = 'foundation_rails_helper'
|
29
|
+
gem.require_paths = %w(lib)
|
30
|
+
gem.version = FoundationRailsHelper::VERSION
|
31
|
+
gem.license = 'MIT'
|
28
32
|
|
29
|
-
gem.add_dependency 'railties',
|
30
|
-
gem.add_dependency 'actionpack',
|
31
|
-
gem.add_dependency 'activemodel',
|
32
|
-
gem.add_dependency 'activesupport',
|
33
|
-
gem.add_dependency 'tzinfo',
|
33
|
+
gem.add_dependency 'railties', Gem::Specification.rails_gem_version
|
34
|
+
gem.add_dependency 'actionpack', Gem::Specification.rails_gem_version
|
35
|
+
gem.add_dependency 'activemodel', Gem::Specification.rails_gem_version
|
36
|
+
gem.add_dependency 'activesupport', Gem::Specification.rails_gem_version
|
37
|
+
gem.add_dependency 'tzinfo', '~> 1.2', '>= 1.2.2'
|
34
38
|
|
35
|
-
gem.add_development_dependency 'rspec-rails', '
|
36
|
-
gem.add_development_dependency 'mime-types',
|
37
|
-
gem.add_development_dependency 'capybara',
|
38
|
-
gem.add_development_dependency 'rubocop',
|
39
|
+
gem.add_development_dependency 'rspec-rails', '~> 3.1'
|
40
|
+
gem.add_development_dependency 'mime-types', '~> 2'
|
41
|
+
gem.add_development_dependency 'capybara', '~> 2.7'
|
42
|
+
gem.add_development_dependency 'rubocop', '~> 0.44.1'
|
39
43
|
end
|
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'foundation_rails_helper/version'
|
2
3
|
require 'foundation_rails_helper/configuration'
|
3
4
|
require 'foundation_rails_helper/form_builder'
|
5
|
+
require 'foundation_rails_helper/size_class_calculator'
|
4
6
|
require 'foundation_rails_helper/flash_helper'
|
5
7
|
require 'foundation_rails_helper/action_view_extension'
|
6
8
|
ActiveSupport.on_load(:action_view) do
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module FoundationRailsHelper
|
2
3
|
class << self
|
3
4
|
attr_writer :configuration
|
@@ -18,10 +19,12 @@ module FoundationRailsHelper
|
|
18
19
|
class Configuration
|
19
20
|
attr_accessor :button_class
|
20
21
|
attr_accessor :ignored_flash_keys
|
22
|
+
attr_accessor :auto_labels
|
21
23
|
|
22
24
|
def initialize
|
23
|
-
@button_class = '
|
25
|
+
@button_class = 'success button'
|
24
26
|
@ignored_flash_keys = []
|
27
|
+
@auto_labels = true
|
25
28
|
end
|
26
29
|
end
|
27
30
|
end
|
@@ -1,44 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'action_view/helpers'
|
2
3
|
|
3
4
|
module FoundationRailsHelper
|
4
5
|
module FlashHelper
|
5
|
-
# <div class="
|
6
|
+
# <div class="callout [success alert secondary]" data-closable>
|
6
7
|
# This is an alert box.
|
7
|
-
# <
|
8
|
+
# <button name="button" type="submit" class="close-button" data-close="">
|
9
|
+
# <span>×</span>
|
10
|
+
# </button>
|
8
11
|
# </div>
|
9
12
|
DEFAULT_KEY_MATCHING = {
|
10
|
-
alert:
|
11
|
-
notice:
|
12
|
-
info:
|
13
|
+
alert: :alert,
|
14
|
+
notice: :success,
|
15
|
+
info: :info,
|
13
16
|
secondary: :secondary,
|
14
|
-
success:
|
15
|
-
error:
|
16
|
-
warning:
|
17
|
+
success: :success,
|
18
|
+
error: :alert,
|
19
|
+
warning: :warning,
|
20
|
+
primary: :primary
|
17
21
|
}.freeze
|
18
|
-
|
22
|
+
|
23
|
+
# Displays the flash messages found in ActionDispatch's +flash+ hash using
|
24
|
+
# Foundation's +callout+ component.
|
25
|
+
#
|
26
|
+
# Parameters:
|
27
|
+
# * +closable+ - A boolean to determine whether the displayed flash messages
|
28
|
+
# should be closable by the user. Defaults to true.
|
29
|
+
# * +key_matching+ - A Hash of key/value pairs mapping flash keys to the
|
30
|
+
# corresponding class to use for the callout box.
|
31
|
+
def display_flash_messages(closable: true, key_matching: {})
|
19
32
|
key_matching = DEFAULT_KEY_MATCHING.merge(key_matching)
|
20
|
-
key_matching.default = :
|
33
|
+
key_matching.default = :primary
|
21
34
|
|
22
35
|
capture do
|
23
36
|
flash.each do |key, value|
|
24
|
-
next if
|
37
|
+
next if ignored_key?(key.to_sym)
|
38
|
+
|
25
39
|
alert_class = key_matching[key.to_sym]
|
26
|
-
concat alert_box(value, alert_class)
|
40
|
+
concat alert_box(value, alert_class, closable)
|
27
41
|
end
|
28
42
|
end
|
29
43
|
end
|
30
44
|
|
31
45
|
private
|
32
46
|
|
33
|
-
def alert_box(value, alert_class)
|
34
|
-
|
47
|
+
def alert_box(value, alert_class, closable)
|
48
|
+
options = { class: "flash callout #{alert_class}" }
|
49
|
+
options[:data] = { closable: '' } if closable
|
50
|
+
content_tag(:div, options) do
|
35
51
|
concat value
|
36
|
-
concat close_link
|
52
|
+
concat close_link if closable
|
37
53
|
end
|
38
54
|
end
|
39
55
|
|
40
56
|
def close_link
|
41
|
-
|
57
|
+
button_tag(
|
58
|
+
class: 'close-button',
|
59
|
+
type: 'button',
|
60
|
+
data: { close: '' },
|
61
|
+
aria: { label: 'Dismiss alert' }
|
62
|
+
) do
|
63
|
+
content_tag(:span, '×'.html_safe, aria: { hidden: true })
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def ignored_key?(key)
|
68
|
+
FoundationRailsHelper.configuration.ignored_flash_keys.include?(key)
|
42
69
|
end
|
43
70
|
end
|
44
71
|
end
|