bootstrap_forms 2.1.1 → 3.0.0.rc1
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/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 = '
|
6
|
+
s.version = '3.0.0.rc1'
|
7
7
|
s.author = 'Seth Vargo'
|
8
8
|
s.email = 'sethvargo@gmail.com'
|
9
9
|
s.homepage = 'https://github.com/sethvargo/bootstrap_forms'
|
@@ -19,11 +19,11 @@ module BootstrapForms
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
%w(
|
22
|
+
%w(country_select time_zone_select email_field file_field number_field password_field phone_field range_field search_field telephone_field text_area text_field url_field datetime_select date_select time_select).each do |method_name|
|
23
23
|
define_method(method_name) do |name, *args|
|
24
24
|
# Workaround for ree and 1.8.7 since they don't allow block arguments with default values
|
25
25
|
args = args.extract_options!
|
26
|
-
|
26
|
+
|
27
27
|
@name = name
|
28
28
|
@field_options = field_options(args)
|
29
29
|
@args = args
|
@@ -38,6 +38,34 @@ module BootstrapForms
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
+
%w(collection_select select).each do |method_name|
|
42
|
+
define_method(method_name) do |name, *args|
|
43
|
+
if args[-1].is_a? Hash
|
44
|
+
if args[-2].is_a? Hash
|
45
|
+
html_options = args.pop
|
46
|
+
options = args.pop
|
47
|
+
else
|
48
|
+
html_options = {}
|
49
|
+
options = args.pop
|
50
|
+
end
|
51
|
+
else
|
52
|
+
html_options = {}
|
53
|
+
options = {}
|
54
|
+
end
|
55
|
+
|
56
|
+
@name = name
|
57
|
+
@field_options = field_options(options)
|
58
|
+
@args = args
|
59
|
+
|
60
|
+
control_group_div do
|
61
|
+
label_field + input_div do
|
62
|
+
rebuilt_args = args + [options.merge(@field_options.merge(required_attribute)), html_options]
|
63
|
+
extras { super(name, *rebuilt_args) }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
41
69
|
def check_box(name, args = {})
|
42
70
|
@name = name
|
43
71
|
@field_options = field_options(args)
|
@@ -83,7 +83,7 @@ module BootstrapForms
|
|
83
83
|
|
84
84
|
def required_attribute
|
85
85
|
return {} if @field_options.present? && @field_options.has_key?(:required) && !@field_options[:required]
|
86
|
-
|
86
|
+
|
87
87
|
if respond_to?(:object) and object.respond_to?(:errors) and object.class.respond_to?('validators_on')
|
88
88
|
return { :required => true } if object.class.validators_on(@name).any? { |v| v.kind_of?( ActiveModel::Validations::PresenceValidator ) && valid_validator?( v ) }
|
89
89
|
end
|
@@ -95,29 +95,29 @@ describe 'BootstrapForms::FormBuilder' do
|
|
95
95
|
it 'adds the required attribute' do
|
96
96
|
@builder.text_field('owner').should match /<input .*required="required"/
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
it "does not add the required attribute if required: false" do
|
100
100
|
@builder.text_field('owner', :required => false).should_not match /<input .*required="required"/
|
101
101
|
end
|
102
|
-
|
102
|
+
|
103
103
|
it "not require if or unless validators" do
|
104
104
|
@builder.text_field('if_presence').should_not match /<input .*required="required"/
|
105
105
|
@builder.text_field('unless_presence').should_not match /<input .*required="required"/
|
106
106
|
end
|
107
|
-
|
107
|
+
|
108
108
|
it "should not be required if presence is on update and model is created" do
|
109
109
|
@builder.text_field('update_presence').should_not match /<input .*required="required"/
|
110
110
|
end
|
111
|
-
|
111
|
+
|
112
112
|
it "should be required if on create and model is new" do
|
113
113
|
@builder.text_field('create_presence').should match /<input .*required="required"/
|
114
114
|
end
|
115
|
-
|
115
|
+
|
116
116
|
it "should be required if presence is on update and model is not new" do
|
117
117
|
@project.stub!(:persisted?).and_return(true)
|
118
118
|
@builder.text_field('update_presence').should match /<input .*required="required"/
|
119
119
|
end
|
120
|
-
|
120
|
+
|
121
121
|
it "should not be required if on create and model is not new" do
|
122
122
|
@project.stub!(:persisted?).and_return(true)
|
123
123
|
@builder.text_field('create_presence').should_not match /<input .*required="required"/
|
@@ -41,7 +41,7 @@ shared_examples 'a bootstrap form' do
|
|
41
41
|
it 'allows no label with :label => '' ' do
|
42
42
|
@builder.check_box('name', :label => '').should_not match /<\/label>/
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
it 'adds inline class' do
|
46
46
|
@builder.check_box('name', :inline => true).should == "<div class=\"control-group\"><div class=\"controls\"><label class=\"checkbox inline\" for=\"item_name\"><input name=\"item[name]\" type=\"hidden\" value=\"0\" /><input id=\"item_name\" name=\"item[name]\" type=\"checkbox\" value=\"1\" />Name</label></div></div>"
|
47
47
|
end
|
@@ -115,6 +115,27 @@ shared_examples 'a bootstrap form' do
|
|
115
115
|
|
116
116
|
end # field
|
117
117
|
end # fields
|
118
|
+
|
119
|
+
describe 'collection select' do
|
120
|
+
before(:each) do
|
121
|
+
@result = @builder.collection_select(:name, [["foo", "Foo"]], :first, :last)
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'is wrapped' do
|
125
|
+
@result.should match /^<div class=\"control-group\"><label class=\"control-label\" for=\"item_name\">Name<\/label><div class=\"controls\">.*<\/div><\/div>$/
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe 'collection select with html options' do
|
130
|
+
before(:each) do
|
131
|
+
@result = @builder.collection_select(:name, [["foo", "Foo"]], :first, :last, {}, :class => "baz")
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'uses html options' do
|
135
|
+
@result.should match /class=".*baz/
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
118
139
|
end # no options
|
119
140
|
|
120
141
|
describe 'extras' do
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap_forms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 3.0.0.rc1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Seth Vargo
|
@@ -213,16 +213,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
213
213
|
version: '0'
|
214
214
|
segments:
|
215
215
|
- 0
|
216
|
-
hash:
|
216
|
+
hash: 594779022012185333
|
217
217
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
218
|
none: false
|
219
219
|
requirements:
|
220
|
-
- - ! '
|
220
|
+
- - ! '>'
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
223
|
-
segments:
|
224
|
-
- 0
|
225
|
-
hash: -1030141123140574531
|
222
|
+
version: 1.3.1
|
226
223
|
requirements: []
|
227
224
|
rubyforge_project:
|
228
225
|
rubygems_version: 1.8.23
|