bh 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/.yardopts +2 -0
- data/CHANGELOG.md +9 -0
- data/README.md +8 -4
- data/bh.gemspec +3 -0
- data/config.rb +6 -0
- data/lib/bh.rb +1 -0
- data/lib/bh/helpers/alert_helper.rb +2 -6
- data/lib/bh/helpers/base_helper.rb +14 -0
- data/lib/bh/helpers/button_helper.rb +63 -0
- data/lib/bh/helpers/cdn_helper.rb +26 -6
- data/lib/bh/helpers/dropdown_helper.rb +82 -0
- data/lib/bh/helpers/form/fields_for_helper.rb +3 -1
- data/lib/bh/helpers/glyphicon_helper.rb +7 -7
- data/lib/bh/helpers/icon_helper.rb +41 -0
- data/lib/bh/helpers/link_to_helper.rb +21 -5
- data/lib/bh/helpers/modal_helper.rb +2 -9
- data/lib/bh/helpers/panel_helper.rb +2 -8
- data/lib/bh/helpers/progress_bar_helper.rb +66 -0
- data/lib/bh/middleman.rb +39 -0
- data/lib/bh/railtie.rb +8 -0
- data/lib/bh/version.rb +1 -1
- data/lib/bh/views/bh/_dropdown.html.erb +9 -0
- data/lib/bh/views/bh/_dropdown_split.html.erb +10 -0
- data/spec/dummy/index.html.erb +60 -0
- data/spec/dummy/layouts/default.erb +17 -0
- data/spec/helpers/button_helper_spec.rb +100 -0
- data/spec/helpers/cdn_helper_spec.rb +25 -1
- data/spec/helpers/dropdown_helper_spec.rb +146 -0
- data/spec/helpers/form/fields_for_helper_spec.rb +30 -14
- data/spec/helpers/icon_helper_spec.rb +45 -0
- data/spec/helpers/link_to_helper_spec.rb +24 -0
- data/spec/helpers/progress_bar_helper_spec.rb +114 -0
- metadata +37 -2
@@ -12,26 +12,42 @@ describe 'fields_for' do
|
|
12
12
|
let(:title) { nil }
|
13
13
|
let(:fields_block) { Proc.new {|f| f.text_field :street } }
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
describe 'with the :fieldset option' do
|
16
|
+
specify 'not set, wraps the fields in a <fieldset> styled like a panel' do
|
17
|
+
expect(form).to include 'fieldset class="panel panel-default">'
|
18
|
+
end
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
describe 'set to true, wraps the fields in a <fieldset> styled like a panel' do
|
21
|
+
let(:options) { {fieldset: true} }
|
22
|
+
it { expect(form).to include 'fieldset class="panel panel-default">' }
|
23
|
+
end
|
23
24
|
|
24
|
-
|
25
|
-
|
25
|
+
describe 'set to false, does not wrap the fields in a <fieldset>' do
|
26
|
+
let(:options) { {fieldset: false} }
|
27
|
+
it { expect(form).not_to include 'fieldset' }
|
28
|
+
end
|
26
29
|
end
|
27
30
|
|
28
|
-
|
29
|
-
|
31
|
+
describe 'with the :title option' do
|
32
|
+
specify 'not set, generates a title from the field name' do
|
33
|
+
expect(form).to include '<div class="panel-heading">Address</div>'
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'set to a value, uses the value as the panel title' do
|
37
|
+
let(:options) { {title: 'Your address'} }
|
38
|
+
it { expect(form).to include '<div class="panel-heading">Your address</div>' }
|
39
|
+
end
|
30
40
|
end
|
31
41
|
|
32
|
-
|
33
|
-
|
34
|
-
|
42
|
+
describe 'with the :layout option' do
|
43
|
+
specify 'not set, inherits the layout options of the parent form' do
|
44
|
+
expect(form).to match %r{<div class="form-group"><label for.+?>Street</label>}
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'set to a value, uses the value as the layout' do
|
48
|
+
let(:options) { {layout: :horizontal} }
|
49
|
+
it { expect(form).to match %r{<div class="form-group"><label class="col-sm-3 control-label" for.+?>Street</label>} }
|
50
|
+
end
|
35
51
|
end
|
36
52
|
|
37
53
|
context 'given a record object' do
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'bh/helpers/icon_helper'
|
3
|
+
include Bh::IconHelper
|
4
|
+
|
5
|
+
describe 'icon' do
|
6
|
+
context 'given the icon name' do
|
7
|
+
specify 'has underscores, returns the icon with dashes' do
|
8
|
+
expect(icon :zoom_in).to eq '<span class="glyphicon glyphicon-zoom-in"></span>'
|
9
|
+
end
|
10
|
+
|
11
|
+
specify 'has dashes, returns the icon with dashes' do
|
12
|
+
expect(icon 'zoom-out').to eq '<span class="glyphicon glyphicon-zoom-out"></span>'
|
13
|
+
end
|
14
|
+
|
15
|
+
specify 'is missing, returns an empty icon' do
|
16
|
+
expect(icon).to eq '<span class="glyphicon"></span>'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'given the :library option (underscored)' do
|
21
|
+
specify 'is glyphicon, shows a Glyphicons icon' do
|
22
|
+
expect(icon :heart, library: :glyphicon).to eq '<span class="glyphicon glyphicon-heart"></span>'
|
23
|
+
end
|
24
|
+
|
25
|
+
specify 'is font-awesome, shows a Font Awesome icon' do
|
26
|
+
expect(icon :heart, library: 'font-awesome').to eq '<span class="fa fa-heart"></span>'
|
27
|
+
end
|
28
|
+
|
29
|
+
specify 'is font_awesome, shows a Font Awesome icon' do
|
30
|
+
expect(icon :heart, library: :font_awesome).to eq '<span class="fa fa-heart"></span>'
|
31
|
+
end
|
32
|
+
|
33
|
+
specify 'is any other string, uses the string as a prefix' do
|
34
|
+
expect(icon :heart, library: :custom).to eq '<span class="custom custom-heart"></span>'
|
35
|
+
end
|
36
|
+
|
37
|
+
specify 'is missing, shows a Glyphicons icon' do
|
38
|
+
expect(icon :heart).to eq '<span class="glyphicon glyphicon-heart"></span>'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
specify 'given extra options, passes the options to the <span>' do
|
43
|
+
expect(icon :ok, title: 'Approved').to eq '<span class="glyphicon glyphicon-ok" title="Approved"></span>'
|
44
|
+
end
|
45
|
+
end
|
@@ -2,11 +2,13 @@ require 'spec_helper'
|
|
2
2
|
require 'action_dispatch'
|
3
3
|
|
4
4
|
require 'bh/helpers/alert_helper'
|
5
|
+
require 'bh/helpers/dropdown_helper'
|
5
6
|
require 'bh/helpers/link_to_helper'
|
6
7
|
require 'bh/helpers/nav_helper'
|
7
8
|
require 'bh/helpers/navbar_helper'
|
8
9
|
|
9
10
|
include Bh::AlertHelper
|
11
|
+
include Bh::DropdownHelper
|
10
12
|
include Bh::LinkToHelper
|
11
13
|
include Bh::NavHelper
|
12
14
|
include Bh::NavbarHelper
|
@@ -55,6 +57,17 @@ describe 'link_to' do
|
|
55
57
|
it { expect(html).to include 'li class="active"' }
|
56
58
|
end
|
57
59
|
end
|
60
|
+
|
61
|
+
context 'inside a dropdown' do
|
62
|
+
let(:views_folder) { File.expand_path('../../../lib/bh/views', __FILE__) }
|
63
|
+
let(:lookup_context) { ActionView::LookupContext.new views_folder }
|
64
|
+
let(:view_renderer) { ActionView::Renderer.new lookup_context }
|
65
|
+
let(:html) { dropdown('Menu') { link } }
|
66
|
+
|
67
|
+
specify 'surrounds the link in a list item, and adds role, tabindex' do
|
68
|
+
expect(html).to include '<li role="presentation"><a href="/" role="menuitem" tabindex="-1">Home</a></li>'
|
69
|
+
end
|
70
|
+
end
|
58
71
|
end
|
59
72
|
|
60
73
|
context 'used with a block' do
|
@@ -96,5 +109,16 @@ describe 'link_to' do
|
|
96
109
|
it { expect(html).to include 'li class="active"' }
|
97
110
|
end
|
98
111
|
end
|
112
|
+
|
113
|
+
context 'inside a dropdown' do
|
114
|
+
let(:views_folder) { File.expand_path('../../../lib/bh/views', __FILE__) }
|
115
|
+
let(:lookup_context) { ActionView::LookupContext.new views_folder }
|
116
|
+
let(:view_renderer) { ActionView::Renderer.new lookup_context }
|
117
|
+
let(:html) { dropdown('Menu') { link } }
|
118
|
+
|
119
|
+
specify 'surrounds the link in a list item, and adds role, tabindex' do
|
120
|
+
expect(html).to include '<li role="presentation"><a href="/" role="menuitem" tabindex="-1">Home</a></li>'
|
121
|
+
end
|
122
|
+
end
|
99
123
|
end
|
100
124
|
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'bh/helpers/progress_bar_helper'
|
5
|
+
|
6
|
+
include Bh::ProgressBarHelper
|
7
|
+
|
8
|
+
describe 'progress_bar' do
|
9
|
+
context 'without options' do
|
10
|
+
let(:html) { progress_bar }
|
11
|
+
|
12
|
+
it 'displays an empty progress bar' do
|
13
|
+
expect(html).to include '<div class="progress">'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'with a hash of options' do
|
18
|
+
let(:html) { progress_bar options.merge(percentage: 30) }
|
19
|
+
let(:options) { {} }
|
20
|
+
|
21
|
+
it 'displays one progress bar for the given value' do
|
22
|
+
expect(html).to include '<div aria-valuemax="100" aria-valuemin="0" aria-valuenow="30" class="progress-bar" role="progressbar" style="width: 30%">'
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'given the :label option' do
|
26
|
+
specify 'is not set, hides the label' do
|
27
|
+
expect(html).to include '<span class="sr-only">30%</span>'
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'is set to false, hides the label' do
|
31
|
+
let(:options) { {label: false }}
|
32
|
+
it { expect(html).to include '<span class="sr-only">30%</span>' }
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'is set to true, displays a label matching the percentage' do
|
36
|
+
let(:options) { {label: true }}
|
37
|
+
it { expect(html).to include '30%</div>' }
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'is a string, displays the string as the label' do
|
41
|
+
let(:options) { {label: "Thirty percent" }}
|
42
|
+
it { expect(html).to include 'Thirty percent</div>' }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe 'given the :context option' do
|
47
|
+
specify 'is not set, shows a default bar' do
|
48
|
+
expect(html).to include 'class="progress-bar"'
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'is set to :success, shows a "success" bar' do
|
52
|
+
let(:options) { {context: :success} }
|
53
|
+
it { expect(html).to include 'class="progress-bar progress-bar-success"' }
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'is set to :info, shows a "info" bar' do
|
57
|
+
let(:options) { {context: :info} }
|
58
|
+
it { expect(html).to include 'class="progress-bar progress-bar-info"' }
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'is set to :warning, shows a "warning" bar' do
|
62
|
+
let(:options) { {context: :warning} }
|
63
|
+
it { expect(html).to include 'class="progress-bar progress-bar-warning"' }
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'is set to :danger, shows a "danger" bar' do
|
67
|
+
let(:options) { {context: :danger} }
|
68
|
+
it { expect(html).to include 'class="progress-bar progress-bar-danger"' }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe 'given the :striped option' do
|
73
|
+
specify 'is not set, shows a solid color bar' do
|
74
|
+
expect(html).to include 'class="progress-bar"'
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'is set to false, shows a solid color bar' do
|
78
|
+
let(:options) { {striped: false} }
|
79
|
+
it { expect(html).to include 'class="progress-bar"' }
|
80
|
+
end
|
81
|
+
|
82
|
+
context 'is set to true, shows a striped color bar' do
|
83
|
+
let(:options) { {striped: true} }
|
84
|
+
it { expect(html).to include 'class="progress-bar progress-bar-striped"' }
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe 'given the :animated option' do
|
89
|
+
specify 'is not set, shows a static color bar' do
|
90
|
+
expect(html).to include 'class="progress-bar"'
|
91
|
+
end
|
92
|
+
|
93
|
+
context 'is set to false, shows a static color bar' do
|
94
|
+
let(:options) { {animated: false} }
|
95
|
+
it { expect(html).to include 'class="progress-bar"' }
|
96
|
+
end
|
97
|
+
|
98
|
+
context 'is set to true, shows an animated color bar' do
|
99
|
+
let(:options) { {animated: true} }
|
100
|
+
it { expect(html).to include 'class="progress-bar progress-bar-striped active"' }
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'with an array of options' do
|
106
|
+
let(:html) { progress_bar [options_bar_1, options_bar_2] }
|
107
|
+
let(:options_bar_1) { {percentage: 20, context: :success, label: true} }
|
108
|
+
let(:options_bar_2) { {percentage: 30, animated: true, label: 'Current'} }
|
109
|
+
|
110
|
+
it 'displays a group of stacked progress bars with their options' do
|
111
|
+
expect(html).to match %r{^<div class="progress"><div.+aria-valuenow="20" class="progress-bar progress-bar-success".+style="width: 20%">20% \(success\)</div>\n<div.+aria-valuenow="30" class="progress-bar progress-bar-striped active".+style="width: 30%">Current</div></div>$}m
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claudio Baccigalupo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: middleman-core
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
125
139
|
description: Bh - Bootstrap Helpers
|
126
140
|
email:
|
127
141
|
- claudio@fullscreen.net
|
@@ -132,20 +146,24 @@ files:
|
|
132
146
|
- ".gitignore"
|
133
147
|
- ".rspec"
|
134
148
|
- ".travis.yml"
|
149
|
+
- ".yardopts"
|
135
150
|
- CHANGELOG.md
|
136
151
|
- Gemfile
|
137
152
|
- MIT-LICENSE
|
138
153
|
- README.md
|
139
154
|
- Rakefile
|
140
155
|
- bh.gemspec
|
156
|
+
- config.rb
|
141
157
|
- gemfiles/Gemfile.rails-3.x
|
142
158
|
- gemfiles/Gemfile.rails-4.x
|
143
159
|
- lib/bh.rb
|
144
160
|
- lib/bh/form_builders/form_builder.rb
|
145
161
|
- lib/bh/helpers/alert_helper.rb
|
146
162
|
- lib/bh/helpers/base_helper.rb
|
163
|
+
- lib/bh/helpers/button_helper.rb
|
147
164
|
- lib/bh/helpers/button_to_helper.rb
|
148
165
|
- lib/bh/helpers/cdn_helper.rb
|
166
|
+
- lib/bh/helpers/dropdown_helper.rb
|
149
167
|
- lib/bh/helpers/form/base_helper.rb
|
150
168
|
- lib/bh/helpers/form/check_box_helper.rb
|
151
169
|
- lib/bh/helpers/form/field_helper.rb
|
@@ -159,18 +177,27 @@ files:
|
|
159
177
|
- lib/bh/helpers/form/submit_helper.rb
|
160
178
|
- lib/bh/helpers/form_for_helper.rb
|
161
179
|
- lib/bh/helpers/glyphicon_helper.rb
|
180
|
+
- lib/bh/helpers/icon_helper.rb
|
162
181
|
- lib/bh/helpers/link_to_helper.rb
|
163
182
|
- lib/bh/helpers/modal_helper.rb
|
164
183
|
- lib/bh/helpers/nav_helper.rb
|
165
184
|
- lib/bh/helpers/navbar_helper.rb
|
166
185
|
- lib/bh/helpers/panel_helper.rb
|
167
186
|
- lib/bh/helpers/panel_row_helper.rb
|
187
|
+
- lib/bh/helpers/progress_bar_helper.rb
|
188
|
+
- lib/bh/middleman.rb
|
168
189
|
- lib/bh/railtie.rb
|
169
190
|
- lib/bh/version.rb
|
191
|
+
- lib/bh/views/bh/_dropdown.html.erb
|
192
|
+
- lib/bh/views/bh/_dropdown_split.html.erb
|
170
193
|
- lib/bh/views/bh/_modal.html.erb
|
194
|
+
- spec/dummy/index.html.erb
|
195
|
+
- spec/dummy/layouts/default.erb
|
171
196
|
- spec/helpers/alert_helper_spec.rb
|
197
|
+
- spec/helpers/button_helper_spec.rb
|
172
198
|
- spec/helpers/button_to_helper_spec.rb
|
173
199
|
- spec/helpers/cdn_helper_spec.rb
|
200
|
+
- spec/helpers/dropdown_helper_spec.rb
|
174
201
|
- spec/helpers/form/check_box_helper_spec.rb
|
175
202
|
- spec/helpers/form/field_helper_spec.rb
|
176
203
|
- spec/helpers/form/fields_for_helper_spec.rb
|
@@ -183,12 +210,14 @@ files:
|
|
183
210
|
- spec/helpers/form/submit_helper_spec.rb
|
184
211
|
- spec/helpers/form_for_helper_spec.rb
|
185
212
|
- spec/helpers/glyphicon_helper_spec.rb
|
213
|
+
- spec/helpers/icon_helper_spec.rb
|
186
214
|
- spec/helpers/link_to_helper_spec.rb
|
187
215
|
- spec/helpers/modal_helper_spec.rb
|
188
216
|
- spec/helpers/nav_helper_spec.rb
|
189
217
|
- spec/helpers/navbar_helper_spec.rb
|
190
218
|
- spec/helpers/panel_helper_spec.rb
|
191
219
|
- spec/helpers/panel_row_helper_spec.rb
|
220
|
+
- spec/helpers/progress_bar_helper_spec.rb
|
192
221
|
- spec/spec_helper.rb
|
193
222
|
homepage: http://github.com/Fullscreen/bh
|
194
223
|
licenses:
|
@@ -216,9 +245,13 @@ specification_version: 4
|
|
216
245
|
summary: Bh provides a set of powerful helpers that streamlines the use of Bootstrap
|
217
246
|
components in Rails views.
|
218
247
|
test_files:
|
248
|
+
- spec/dummy/index.html.erb
|
249
|
+
- spec/dummy/layouts/default.erb
|
219
250
|
- spec/helpers/alert_helper_spec.rb
|
251
|
+
- spec/helpers/button_helper_spec.rb
|
220
252
|
- spec/helpers/button_to_helper_spec.rb
|
221
253
|
- spec/helpers/cdn_helper_spec.rb
|
254
|
+
- spec/helpers/dropdown_helper_spec.rb
|
222
255
|
- spec/helpers/form/check_box_helper_spec.rb
|
223
256
|
- spec/helpers/form/field_helper_spec.rb
|
224
257
|
- spec/helpers/form/fields_for_helper_spec.rb
|
@@ -231,11 +264,13 @@ test_files:
|
|
231
264
|
- spec/helpers/form/submit_helper_spec.rb
|
232
265
|
- spec/helpers/form_for_helper_spec.rb
|
233
266
|
- spec/helpers/glyphicon_helper_spec.rb
|
267
|
+
- spec/helpers/icon_helper_spec.rb
|
234
268
|
- spec/helpers/link_to_helper_spec.rb
|
235
269
|
- spec/helpers/modal_helper_spec.rb
|
236
270
|
- spec/helpers/nav_helper_spec.rb
|
237
271
|
- spec/helpers/navbar_helper_spec.rb
|
238
272
|
- spec/helpers/panel_helper_spec.rb
|
239
273
|
- spec/helpers/panel_row_helper_spec.rb
|
274
|
+
- spec/helpers/progress_bar_helper_spec.rb
|
240
275
|
- spec/spec_helper.rb
|
241
276
|
has_rdoc:
|