foundation_rails_helper 2.0.0 → 3.0.0.beta3
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/.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
|
-

|
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
|
-
[](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
|