bh 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +1 -1
- data/lib/bh/helpers/form/base_helper.rb +30 -12
- data/lib/bh/version.rb +1 -1
- data/spec/helpers/form/field_helper_spec.rb +19 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2efc7f83e6175dbda16f557b14d18d6889748c35
|
4
|
+
data.tar.gz: d8f958fb28c28731a4fe32587b00f2767f1fc441
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16df29192db7253cda1592a8bdb3d0cad6272fe0eb6c5b6393f44dbd61b70fc1bba2117ee571b65d8283107fe4f9a91a546c41bb0894c950f94d95a03c9092dc
|
7
|
+
data.tar.gz: 43106b14b0e3741cb56b2165d0babe1241056e2e23189efd2ed42dead693b3283e5c6d2afc013af415c36eece5c1acb072fd7895b9ef8ada27a6a7159c3e8355
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,10 @@ For more information about changelogs, check
|
|
6
6
|
[Keep a Changelog](http://keepachangelog.com) and
|
7
7
|
[Vandamme](http://tech-angels.github.io/vandamme).
|
8
8
|
|
9
|
+
## 0.0.6 - 2014-08-22
|
10
|
+
|
11
|
+
* [FEATURE] Add `:prefix`, `:suffix` options to form field helpers
|
12
|
+
|
9
13
|
## 0.0.5 - 2014-08-22
|
10
14
|
|
11
15
|
* [FEATURE] Add `form_for` and form helpers for every type of field
|
data/README.md
CHANGED
@@ -46,7 +46,7 @@ How to install
|
|
46
46
|
|
47
47
|
Bh is meant to be included in Rails apps by adding this line to the Gemfile:
|
48
48
|
|
49
|
-
gem 'bh', '~> 0.0.
|
49
|
+
gem 'bh', '~> 0.0.6'
|
50
50
|
|
51
51
|
Since the gem follows [Semantic Versioning](http://semver.org),
|
52
52
|
indicating the full version in your Gemfile (~> *major*.*minor*.*patch*)
|
@@ -11,7 +11,7 @@ module Bh
|
|
11
11
|
errors = (object.errors.get method if object) || {}
|
12
12
|
label = label_for method, errors, options
|
13
13
|
field = field_container(options) do
|
14
|
-
field_tags errors, field_type, &block
|
14
|
+
field_tags errors, field_type, options, &block
|
15
15
|
end
|
16
16
|
label_and_field = safe_join [label, field].compact
|
17
17
|
label_and_field_container label_and_field, field_type, errors
|
@@ -27,29 +27,47 @@ module Bh
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
def field_tags(errors, field_type, &block)
|
31
|
-
|
32
|
-
|
30
|
+
def field_tags(errors, field_type, options = {}, &block)
|
31
|
+
prefix, suffix = options.delete(:prefix), options.delete(:suffix)
|
32
|
+
field = @template.capture(&block)
|
33
|
+
tags = [field_in_group(field, prefix, suffix)]
|
34
|
+
tags << error_icon_tag if show_error_icon?(field_type, errors, suffix)
|
33
35
|
tags << error_help_tag(errors) if errors.any? && show_error_help?
|
34
36
|
safe_join tags
|
35
37
|
end
|
36
38
|
|
39
|
+
def field_in_group(field, prefix, suffix)
|
40
|
+
input_group_container(prefix || suffix) do
|
41
|
+
safe_join [input_addon(prefix), field, input_addon(suffix)].compact
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def input_addon(addon)
|
46
|
+
content_tag :span, addon, class: 'input-group-addon' if addon
|
47
|
+
end
|
48
|
+
|
49
|
+
def input_group_container(has_addons, &block)
|
50
|
+
if has_addons
|
51
|
+
content_tag :div, class: 'input-group', &block
|
52
|
+
else
|
53
|
+
yield
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
37
57
|
def label_and_field_container(label_and_field, field_type, errors = {})
|
38
58
|
klass = ['form-group']
|
39
|
-
if errors.any?
|
40
|
-
|
41
|
-
klass << 'has-feedback' if show_error_icon?(field_type)
|
42
|
-
end
|
59
|
+
klass << 'has-error' if errors.any?
|
60
|
+
klass << 'has-feedback' if show_error_icon?(field_type, errors)
|
43
61
|
content_tag :div, label_and_field, class: klass.join(' ')
|
44
62
|
end
|
45
63
|
|
46
64
|
|
47
|
-
def show_error_icon?(field_type)
|
48
|
-
|
49
|
-
|
65
|
+
def show_error_icon?(field_type, errors, suffix = nil)
|
66
|
+
no_icon = %w(checkbox number_field radio_button select legend)
|
67
|
+
hide = no_icon.include?(field_type.to_s)
|
68
|
+
errors.any? && @options.fetch(:errors, {}).fetch(:icons, true) && !hide && suffix.nil?
|
50
69
|
end
|
51
70
|
|
52
|
-
|
53
71
|
def error_icon_tag
|
54
72
|
glyphicon :remove, class: 'form-control-feedback'
|
55
73
|
end
|
data/lib/bh/version.rb
CHANGED
@@ -42,6 +42,20 @@ field_helpers_to_test.each do |form_field|
|
|
42
42
|
it { expect(form).to include 'Given name</label>' }
|
43
43
|
end
|
44
44
|
|
45
|
+
specify 'not given a prefix or suffix option, does not use an input group' do
|
46
|
+
expect(form).not_to include 'input-group'
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'given a prefix option, prints the prefix before the field' do
|
50
|
+
let(:options) { {prefix: 'Mr.'} }
|
51
|
+
it { expect(form).to include '<div class="input-group"><span class="input-group-addon">Mr.</span><' }
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'given a suffix option, prints the prefix after the field' do
|
55
|
+
let(:options) { {suffix: 'Jr'} }
|
56
|
+
it { expect(form).to match %r{<div class="input-group"><.+?><span class="input-group-addon">Jr</span></div>}m }
|
57
|
+
end
|
58
|
+
|
45
59
|
specify 'not given an error, does not apply has-error to the form group' do
|
46
60
|
expect(form).not_to include 'has-error'
|
47
61
|
end
|
@@ -63,6 +77,11 @@ field_helpers_to_test.each do |form_field|
|
|
63
77
|
it{ expect(form).not_to include 'has-feedback' }
|
64
78
|
end
|
65
79
|
|
80
|
+
context 'given the suffix option, hides error icons (or they would overlap)' do
|
81
|
+
let(:options) { {suffix: 'Jr'} }
|
82
|
+
it{ expect(form).not_to include 'form-control-feedback' }
|
83
|
+
end
|
84
|
+
|
66
85
|
context 'given an option to hide error messages, hides error messages' do
|
67
86
|
let(:errors) { {messages: false} }
|
68
87
|
it{ expect(form).not_to include 'help-block' }
|