bootstrap_forms 2.0.5 → 2.0.6
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.
- data/README.markdown +23 -11
- data/bootstrap_forms.gemspec +1 -1
- data/lib/bootstrap_forms/helpers/wrappers.rb +28 -9
- data/spec/support/shared_context.rb +16 -0
- metadata +4 -4
data/README.markdown
CHANGED
@@ -2,13 +2,13 @@ Bootstrap Forms
|
|
2
2
|
===============
|
3
3
|
[](http://travis-ci.org/sethvargo/bootstrap_forms)
|
4
4
|
|
5
|
-
Bootstrap Forms is a nice Rails generator that makes working with [Bootstrap (by Twitter)](http://twitter.github.com/bootstrap) even easier on Rails.
|
5
|
+
Bootstrap Forms is a nice Rails generator that makes working with [Bootstrap (by Twitter)](http://twitter.github.com/bootstrap) even easier on Rails.
|
6
6
|
|
7
7
|
Forms with Bootstrap are crowded with additional layout markup. While it's necessary, you shouldn't have to type it every time you create a form! That's why I created Bootstrap Forms.
|
8
8
|
|
9
9
|
Bootstrap 2.0 Compliant!
|
10
10
|
------------------------
|
11
|
-
A super special thanks to [vincenzor](https://github.com/vincenzor) for updating `bootstrap_forms` to comply with the new methods and features in Twitter Bootstrap 2.0.
|
11
|
+
A super special thanks to [vincenzor](https://github.com/vincenzor) for updating `bootstrap_forms` to comply with the new methods and features in Twitter Bootstrap 2.0.
|
12
12
|
|
13
13
|
To get these new features, ensure you are using `bootstrap_forms ~> 2.0.0`.
|
14
14
|
|
@@ -105,7 +105,7 @@ Bootstrap Forms also adds a default actions panel when you call `f.submit`:
|
|
105
105
|
```haml
|
106
106
|
= f.submit
|
107
107
|
```
|
108
|
-
|
108
|
+
|
109
109
|
generates:
|
110
110
|
|
111
111
|
```html
|
@@ -134,42 +134,54 @@ You can add as many options to any form helper tag. If they are interpreted by B
|
|
134
134
|
<tr>
|
135
135
|
<th>help_inline</th>
|
136
136
|
<td>Add inline help text</td>
|
137
|
-
<td>= f.text_field :name, :help_inline => 'help me!'</td>
|
137
|
+
<td><tt>= f.text_field :name, :help_inline => 'help me!'</td></td>
|
138
138
|
</tr>
|
139
139
|
<tr>
|
140
140
|
<th>help_block</th>
|
141
141
|
<td>Add block help text (below)</td>
|
142
|
-
<td>= f.text_field :name, :help_block => 'help me!'</td>
|
142
|
+
<td><tt>= f.text_field :name, :help_block => 'help me!'</td></td>
|
143
143
|
</tr>
|
144
144
|
<tr>
|
145
145
|
<th>error</th>
|
146
146
|
<td>Styles the field as error (red)</td>
|
147
|
-
<td>= f.text_field :name, :error => 'This is an error!'</td>
|
147
|
+
<td><tt>= f.text_field :name, :error => 'This is an error!'</td></td>
|
148
148
|
</tr>
|
149
149
|
<tr>
|
150
150
|
<th>success</th>
|
151
151
|
<td>Styles the field as success (green)</td>
|
152
|
-
<td>= f.text_field :name, :success => 'This checked out OK'</td>
|
152
|
+
<td><tt>= f.text_field :name, :success => 'This checked out OK'</td></td>
|
153
153
|
</tr>
|
154
154
|
<tr>
|
155
155
|
<th>warning</th>
|
156
156
|
<td>Styles the field as warning (yellow)</td>
|
157
|
-
<td>= f.text_field :name, :warning => 'Take a look at this...'</td>
|
157
|
+
<td><tt>= f.text_field :name, :warning => 'Take a look at this...'</td></td>
|
158
158
|
</tr>
|
159
159
|
<tr>
|
160
160
|
<th>prepend</th>
|
161
161
|
<td>Adds special text to the front of the input</td>
|
162
|
-
<td>= f.text_field :name, :prepend => '@'</td>
|
162
|
+
<td><tt>= f.text_field :name, :prepend => '@'</td></td>
|
163
163
|
</tr>
|
164
164
|
<tr>
|
165
165
|
<th>append</th>
|
166
166
|
<td>Adds special text at the end of the input</td>
|
167
|
-
<td>= f.text_field :name, :append => '@'</td>
|
167
|
+
<td><tt>= f.text_field :name, :append => '@'</td></td>
|
168
|
+
</tr>
|
169
|
+
<tr>
|
170
|
+
<th>append_button</th>
|
171
|
+
<td>
|
172
|
+
Adds the given button to the end of the input. The value is a hash.<br/>
|
173
|
+
:label is the button label<br/>
|
174
|
+
:icon adds an icon before the label<br/>
|
175
|
+
:class has a default value of 'btn'<br/>
|
176
|
+
:type has a default value of 'button'<br/>
|
177
|
+
Any other entries are passed directly to Rails's tag helper.
|
178
|
+
</td>
|
179
|
+
<td><tt>= f.text_field :name, :append_button => { :label => 'Button label', :icon => 'icon-plus', :type => 'button' }</td></td>
|
168
180
|
</tr>
|
169
181
|
<tr>
|
170
182
|
<th>label</th>
|
171
183
|
<td>Customize the field's label. Pass false to have no label.</td>
|
172
|
-
<td>= f.text_field :name, :label => 'Other name'</td>
|
184
|
+
<td><tt>= f.text_field :name, :label => 'Other name'</td></td>
|
173
185
|
</tr>
|
174
186
|
</table>
|
175
187
|
|
data/bootstrap_forms.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path('../lib', __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = 'bootstrap_forms'
|
6
|
-
s.version = '2.0.
|
6
|
+
s.version = '2.0.6'
|
7
7
|
s.author = 'Seth Vargo'
|
8
8
|
s.email = 'sethvargo@gmail.com'
|
9
9
|
s.homepage = 'https://github.com/sethvargo/bootstrap_forms'
|
@@ -35,10 +35,10 @@ module BootstrapForms
|
|
35
35
|
|
36
36
|
def input_div(&block)
|
37
37
|
content_tag(:div, :class => 'controls') do
|
38
|
-
if @field_options[:append] || @field_options[:prepend]
|
38
|
+
if @field_options[:append] || @field_options[:prepend] || @field_options[:append_button]
|
39
39
|
klass = []
|
40
40
|
klass << 'input-prepend' if @field_options[:prepend]
|
41
|
-
klass << 'input-append' if @field_options[:append]
|
41
|
+
klass << 'input-append' if @field_options[:append] || @field_options[:append_button]
|
42
42
|
content_tag(:div, :class => klass, &block)
|
43
43
|
else
|
44
44
|
yield if block_given?
|
@@ -65,30 +65,49 @@ module BootstrapForms
|
|
65
65
|
{}
|
66
66
|
end
|
67
67
|
|
68
|
-
%w(help_inline error success warning help_block append prepend).each do |method_name|
|
68
|
+
%w(help_inline error success warning help_block append append_button prepend).each do |method_name|
|
69
69
|
define_method(method_name) do |*args|
|
70
70
|
return '' unless value = @field_options[method_name.to_sym]
|
71
|
+
|
72
|
+
escape = true
|
73
|
+
tag_options = {}
|
71
74
|
case method_name
|
72
75
|
when 'help_block'
|
73
76
|
element = :p
|
74
|
-
|
77
|
+
tag_options[:class] = 'help-block'
|
75
78
|
when 'append', 'prepend'
|
76
79
|
element = :span
|
77
|
-
|
80
|
+
tag_options[:class] = 'add-on'
|
81
|
+
when 'append_button'
|
82
|
+
element = :button
|
83
|
+
button_options = value
|
84
|
+
value = ''
|
85
|
+
|
86
|
+
if button_options.has_key? :icon
|
87
|
+
value << content_tag(:i, '', { :class => button_options.delete(:icon) })
|
88
|
+
value << ' '
|
89
|
+
escape = false
|
90
|
+
end
|
91
|
+
|
92
|
+
value << button_options.delete(:label)
|
93
|
+
|
94
|
+
tag_options[:type] = 'button'
|
95
|
+
tag_options[:class] = 'btn'
|
96
|
+
tag_options.merge! button_options
|
78
97
|
else
|
79
98
|
element = :span
|
80
|
-
|
99
|
+
tag_options[:class] = 'help-inline'
|
81
100
|
end
|
82
|
-
content_tag(element, value,
|
101
|
+
content_tag(element, value, tag_options, escape)
|
83
102
|
end
|
84
103
|
end
|
85
104
|
|
86
105
|
def extras(&block)
|
87
|
-
[prepend, (yield if block_given?), append, help_inline, error, success, warning, help_block].join('').html_safe
|
106
|
+
[prepend, (yield if block_given?), append, append_button, help_inline, error, success, warning, help_block].join('').html_safe
|
88
107
|
end
|
89
108
|
|
90
109
|
def objectify_options(options)
|
91
|
-
super.except(:label, :help_inline, :error, :success, :warning, :help_block, :prepend, :append)
|
110
|
+
super.except(:label, :help_inline, :error, :success, :warning, :help_block, :prepend, :append, :append_button)
|
92
111
|
end
|
93
112
|
end
|
94
113
|
end
|
@@ -142,6 +142,22 @@ shared_examples 'a bootstrap form' do
|
|
142
142
|
it 'prepends and appends passed text' do
|
143
143
|
@builder.text_field(:name, :append => '@', :prepend => '#').should == "<div class=\"control-group\"><label class=\"control-label\" for=\"item_name\">Name</label><div class=\"controls\"><div class=\"input-prepend input-append\"><span class=\"add-on\">\#</span><input id=\"item_name\" name=\"item[name]\" size=\"30\" type=\"text\" /><span class=\"add-on\">@</span></div></div></div>"
|
144
144
|
end
|
145
|
+
|
146
|
+
it 'appends button with default values' do
|
147
|
+
@builder.text_field(:name, :append_button => { :label => 'button label' }).should == "<div class=\"control-group\"><label class=\"control-label\" for=\"item_name\">Name</label><div class=\"controls\"><div class=\"input-append\"><input id=\"item_name\" name=\"item[name]\" size=\"30\" type=\"text\" /><button class=\"btn\" type=\"button\">button label</button></div></div></div>"
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'appends button and overrides class and type' do
|
151
|
+
@builder.text_field(:name, :append_button => { :label => 'Danger!', :class => 'btn btn-danger', :type => 'submit' }).should == "<div class=\"control-group\"><label class=\"control-label\" for=\"item_name\">Name</label><div class=\"controls\"><div class=\"input-append\"><input id=\"item_name\" name=\"item[name]\" size=\"30\" type=\"text\" /><button class=\"btn btn-danger\" type=\"submit\">Danger!</button></div></div></div>"
|
152
|
+
end
|
153
|
+
|
154
|
+
it 'appends button with custom attributes' do
|
155
|
+
@builder.text_field(:name, :append_button => { :label => 'button label', :data => { :custom_1 => 'value 1', :custom_2 => 'value 2' } }).should == "<div class=\"control-group\"><label class=\"control-label\" for=\"item_name\">Name</label><div class=\"controls\"><div class=\"input-append\"><input id=\"item_name\" name=\"item[name]\" size=\"30\" type=\"text\" /><button class=\"btn\" data-custom-1=\"value 1\" data-custom-2=\"value 2\" type=\"button\">button label</button></div></div></div>"
|
156
|
+
end
|
157
|
+
|
158
|
+
it 'appends button with an icon' do
|
159
|
+
@builder.text_field(:name, :append_button => { :label => 'button label', :icon => 'icon-plus icon-white' }).should == "<div class=\"control-group\"><label class=\"control-label\" for=\"item_name\">Name</label><div class=\"controls\"><div class=\"input-append\"><input id=\"item_name\" name=\"item[name]\" size=\"30\" type=\"text\" /><button class=\"btn\" type=\"button\"><i class=\"icon-plus icon-white\"></i> button label</button></div></div></div>"
|
160
|
+
end
|
145
161
|
end
|
146
162
|
|
147
163
|
context 'label option' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap_forms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec-rails
|
@@ -195,7 +195,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
195
195
|
version: '0'
|
196
196
|
segments:
|
197
197
|
- 0
|
198
|
-
hash:
|
198
|
+
hash: 2313446882174708142
|
199
199
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
200
200
|
none: false
|
201
201
|
requirements:
|
@@ -204,7 +204,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
204
|
version: '0'
|
205
205
|
segments:
|
206
206
|
- 0
|
207
|
-
hash:
|
207
|
+
hash: 2313446882174708142
|
208
208
|
requirements: []
|
209
209
|
rubyforge_project:
|
210
210
|
rubygems_version: 1.8.24
|