formatted_form 2.0.4 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/VERSION +1 -1
  2. data/app/views/formatted_form/_check_box.html.erb +1 -1
  3. data/app/views/formatted_form/_date_select.html.erb +1 -1
  4. data/app/views/formatted_form/_datetime_select.html.erb +1 -1
  5. data/app/views/formatted_form/_element.html.erb +1 -1
  6. data/app/views/formatted_form/_email_field.html.erb +1 -1
  7. data/app/views/formatted_form/_file_field.html.erb +1 -1
  8. data/app/views/formatted_form/_number_field.html.erb +1 -1
  9. data/app/views/formatted_form/_password_field.html.erb +1 -1
  10. data/app/views/formatted_form/_phone_field.html.erb +1 -1
  11. data/app/views/formatted_form/_radio_button.html.erb +1 -1
  12. data/app/views/formatted_form/_range_field.html.erb +1 -1
  13. data/app/views/formatted_form/_search_field.html.erb +1 -1
  14. data/app/views/formatted_form/_select.html.erb +1 -1
  15. data/app/views/formatted_form/_telephone_field.html.erb +1 -1
  16. data/app/views/formatted_form/_text_area.html.erb +1 -1
  17. data/app/views/formatted_form/_text_field.html.erb +1 -1
  18. data/app/views/formatted_form/_time_select.html.erb +1 -1
  19. data/app/views/formatted_form/_time_zone_select.html.erb +1 -1
  20. data/app/views/formatted_form/templates/_choices.html.erb +8 -35
  21. data/app/views/formatted_form/templates/_choices_block.html.erb +30 -0
  22. data/app/views/formatted_form/templates/_choices_inline.html.erb +10 -0
  23. data/app/views/formatted_form/templates/_field.html.erb +8 -34
  24. data/app/views/formatted_form/templates/_field_block.html.erb +35 -0
  25. data/app/views/formatted_form/templates/_field_inline.html.erb +25 -0
  26. data/app/views/formatted_form/templates/_label.html.erb +3 -0
  27. data/formatted_form.gemspec +9 -2
  28. data/lib/formatted_form/form_builder.rb +10 -14
  29. data/lib/formatted_form/view_helper.rb +1 -20
  30. data/test/dummy/app/assets/javascripts/application.js +0 -2
  31. data/test/dummy/app/assets/stylesheets/bootstrap.css +6039 -0
  32. data/test/dummy/app/controllers/application_controller.rb +24 -0
  33. data/test/dummy/app/views/application/test.html.erb +98 -0
  34. data/test/dummy/app/views/layouts/application.html.erb +7 -5
  35. data/test/dummy/config/routes.rb +3 -0
  36. data/test/form_builder_test.rb +37 -72
  37. metadata +10 -3
@@ -1,3 +1,27 @@
1
+ class User
2
+
3
+ include ActiveModel::Validations
4
+
5
+ attr_accessor :name, :bio, :gender, :single, :colors,
6
+ :is_awesome, :is_terrible, :income, :extra, :exception
7
+
8
+ def to_key
9
+ nil
10
+ end
11
+
12
+ def persisted?
13
+ false
14
+ end
15
+
16
+ end
17
+
1
18
  class ApplicationController < ActionController::Base
2
19
  protect_from_forgery
20
+
21
+ def test
22
+ @user = User.new
23
+ @user.errors.add(:exception, 'terrible error')
24
+ @user.errors.add(:is_terrible, 'not checked')
25
+ end
26
+
3
27
  end
@@ -0,0 +1,98 @@
1
+ <h3> Vertical (default) </h3>
2
+ <pre>
3
+ &lt;%= formatted_form_for @user, :url =&gt; '' do |form| %&gt;
4
+ &lt;%= form.text_field :name, :help_block =&gt; 'Help Block' %&gt;
5
+ &lt;%= form.text_area :bio, :rows =&gt; 3 %&gt;
6
+ &lt;%= form.select :gender, ['male', 'female'] %&gt;
7
+ &lt;%= form.radio_button :single, ['yes', 'no'] %&gt;
8
+ &lt;%= form.check_box :colors, {:inline =&gt; true}, ['red', 'green'] %&gt;
9
+ &lt;%= form.check_box :is_awesome %&gt;
10
+ &lt;%= form.check_box :is_terrible %&gt;
11
+ &lt;%= form.text_field :exception %&gt;
12
+ &lt;%= form.text_field :income, :prepend =&gt; '$', :append =&gt; '.00' %&gt;
13
+ &lt;%= form.text_field :extra,
14
+ :prepend_html =&gt; '&lt;button class="btn"&gt;Action&lt;/button&gt;',
15
+ :append_html =&gt; '&lt;button class="btn"&gt;Action&lt;/button&gt;'
16
+ %&gt;
17
+ &lt;%= form.submit :class =&gt; 'btn' %&gt;
18
+ &lt;% end %&gt;
19
+ </pre>
20
+
21
+ <%= formatted_form_for @user, :url => '' do |form| %>
22
+ <%= form.text_field :name, :help_block => 'Help Block' %>
23
+ <%= form.text_area :bio, :rows => 3 %>
24
+ <%= form.select :gender, ['male', 'female'] %>
25
+ <%= form.radio_button :single, ['yes', 'no'] %>
26
+ <%= form.check_box :colors, {:inline => true}, ['red', 'green'] %>
27
+ <%= form.check_box :is_awesome %>
28
+ <%= form.check_box :is_terrible %>
29
+ <%= form.text_field :exception %>
30
+ <%= form.text_field :income, :prepend => '$', :append => '.00' %>
31
+ <%= form.text_field :extra,
32
+ :prepend_html => '<button class="btn">Action</button>',
33
+ :append_html => '<button class="btn">Action</button>'
34
+ %>
35
+ <%= form.submit :class => 'btn' %>
36
+ <% end %>
37
+
38
+ <h3> Horizontal </h3>
39
+ <pre>
40
+ &lt;%= formatted_form_for :user, :type => :horizontal do |form| %&gt;
41
+ # ... same as above
42
+ &lt;div class="form-actions"&gt;
43
+ &lt;%= form.submit :class =&gt; 'btn' %&gt;
44
+ &lt;/div&gt;
45
+ &lt;% end %&gt;
46
+ </pre>
47
+
48
+ <%= formatted_form_for @user, :url => '', :type => :horizontal do |form| %>
49
+ <%= form.text_field :name, :help_block => 'Help Block' %>
50
+ <%= form.text_area :bio, :rows => 3 %>
51
+ <%= form.select :gender, ['male', 'female'] %>
52
+ <%= form.radio_button :single, ['yes', 'no'] %>
53
+ <%= form.check_box :colors, {:inline => true}, ['red', 'green'] %>
54
+ <%= form.check_box :is_awesome %>
55
+ <%= form.check_box :is_terrible %>
56
+ <%= form.text_field :exception %>
57
+ <%= form.text_field :income, :prepend => '$', :append => '.00' %>
58
+ <%= form.text_field :extra,
59
+ :prepend_html => '<button class="btn">Action</button>',
60
+ :append_html => '<button class="btn">Action</button>'
61
+ %>
62
+ <div class="form-actions">
63
+ <%= form.submit :class => 'btn' %>
64
+ </div>
65
+ <% end %>
66
+
67
+ <h3> Inline </h3>
68
+ <pre>
69
+ &lt;%= formatted_form_for @user, :url =&gt; '', :type =&gt; :inline do |form| %&gt;
70
+ &lt;%= form.text_field :name, :label =&gt; false, :placeholder =&gt; 'Name' %&gt;
71
+ &lt;%= form.select :gender, ['male', 'female'] %&gt;
72
+ &lt;%= form.check_box :colors, {}, ['red', 'green'] %&gt;
73
+ &lt;%= form.submit :class =&gt; 'btn' %&gt;
74
+ &lt;% end %&gt;
75
+ </pre>
76
+ <%= formatted_form_for @user, :url => '', :type => :inline do |form| %>
77
+ <%= form.text_field :name, :label => false, :placeholder => 'Name' %>
78
+ <%= form.select :gender, ['male', 'female'] %>
79
+ <%= form.check_box :colors, {}, ['red', 'green'] %>
80
+ <%= form.submit :class => 'btn' %>
81
+ <% end %>
82
+
83
+ <h3>Search</h3>
84
+ <pre>
85
+ &lt;%= formatted_form_for @user, :url =&gt; '', :type =&gt; :search do |form| %&gt;
86
+ &lt;%= form.text_field :name %&gt;
87
+ &lt;%= form.text_field :name, :label =&gt; false, :placeholder =&gt; 'Search by Name',
88
+ :prepend =&gt; '@',
89
+ :append_html =&gt; '&lt;button type="submit" class="btn"&gt;Search&lt;/button&gt;' %&gt;
90
+ &lt;% end %&gt;
91
+ </pre>
92
+
93
+ <%= formatted_form_for @user, :url => '', :type => :search do |form| %>
94
+ <%= form.text_field :name %>
95
+ <%= form.text_field :name, :label => false, :placeholder => 'Search by Name',
96
+ :prepend => '@',
97
+ :append_html => '<button type="submit" class="btn">Search</button>' %>
98
+ <% end %>
@@ -1,14 +1,16 @@
1
1
  <!DOCTYPE html>
2
- <html>
2
+ <html lang="en">
3
3
  <head>
4
- <title>Dummy</title>
5
- <%= stylesheet_link_tag "application", :media => "all" %>
4
+ <title>FormattedForm Demo</title>
5
+ <%= stylesheet_link_tag "application", media: "all" %>
6
6
  <%= javascript_include_tag "application" %>
7
7
  <%= csrf_meta_tags %>
8
8
  </head>
9
9
  <body>
10
-
11
- <%= yield %>
10
+
11
+ <div class="container">
12
+ <%= yield %>
13
+ </div>
12
14
 
13
15
  </body>
14
16
  </html>
@@ -1,4 +1,7 @@
1
1
  Dummy::Application.routes.draw do
2
+
3
+ root :to => 'application#test'
4
+
2
5
  # The priority is based upon order of creation:
3
6
  # first created -> highest priority.
4
7
 
@@ -37,7 +37,7 @@ class FormBuilderTest < ActionView::TestCase
37
37
  # -- Text Field -----------------------------------------------------------
38
38
  def test_text_field
39
39
  with_text_field :name
40
- assert_select "div[class='control-group cg-name']" do
40
+ assert_select "div[class='control-group']" do
41
41
  assert_select "label[for='user_name']", 'Name'
42
42
  assert_select "div[class='controls']" do
43
43
  assert_select "input[type='text'][id='user_name'][name='user[name]']"
@@ -47,7 +47,7 @@ class FormBuilderTest < ActionView::TestCase
47
47
 
48
48
  def test_text_field_prepend_append
49
49
  with_text_field :twitter, :prepend => '@', :append => '!'
50
- assert_select "div[class='control-group cg-twitter']" do
50
+ assert_select "div[class='control-group']" do
51
51
  assert_select "label[for='user_twitter']", 'Twitter'
52
52
  assert_select "div[class='controls']" do
53
53
  assert_select "div[class='input-prepend input-append']" do
@@ -61,7 +61,7 @@ class FormBuilderTest < ActionView::TestCase
61
61
 
62
62
  def test_text_field_prepend_append_html
63
63
  with_text_field :twitter, :prepend_html => '<b>b</b>', :append_html => '<i>i</i>'
64
- assert_select "div[class='control-group cg-twitter']" do
64
+ assert_select "div[class='control-group']" do
65
65
  assert_select "label[for='user_twitter']", 'Twitter'
66
66
  assert_select "div[class='controls']" do
67
67
  assert_select "div[class='input-prepend input-append']" do
@@ -75,7 +75,7 @@ class FormBuilderTest < ActionView::TestCase
75
75
 
76
76
  def test_text_field_with_help_block
77
77
  with_text_field :name, :help_block => 'Help'
78
- assert_select "div[class='control-group cg-name']" do
78
+ assert_select "div[class='control-group']" do
79
79
  assert_select "div[class='controls']" do
80
80
  assert_select "input[type='text'][id='user_name'][name='user[name]']"
81
81
  assert_select "span[class='help-block']", 'Help'
@@ -83,13 +83,23 @@ class FormBuilderTest < ActionView::TestCase
83
83
  end
84
84
  end
85
85
 
86
+ def test_text_field_with_help_inline
87
+ with_text_field :name, :help_inline => 'Help'
88
+ assert_select "div[class='control-group']" do
89
+ assert_select "div[class='controls']" do
90
+ assert_select "input[type='text'][id='user_name'][name='user[name]']"
91
+ assert_select "span[class='help-inline']", 'Help'
92
+ end
93
+ end
94
+ end
95
+
86
96
  def test_text_field_with_errors
87
97
  assert @user.invalid?
88
98
  with_text_field :name
89
- assert_select "div[class='control-group cg-name error']" do
99
+ assert_select "div[class='control-group error']" do
90
100
  assert_select "div[class='controls']" do
91
101
  assert_select "input[type='text'][id='user_name'][name='user[name]']"
92
- assert_select "span[class='help-inline']", "can&#x27;t be blank"
102
+ assert_select "span[class='help-block']", "can&#x27;t be blank"
93
103
  end
94
104
  end
95
105
  end
@@ -104,47 +114,36 @@ class FormBuilderTest < ActionView::TestCase
104
114
 
105
115
  def test_text_field_for_inline_form
106
116
  with_formatted_form_for(@user, :url => '', :type => :inline){|f| f.text_field :name }
107
- assert_select "div[class='control-group cg-name']", 0
117
+ assert_select "div[class='control-group']", 0
108
118
  assert_select "input[type='text'][id='user_name'][name='user[name]']"
109
119
  end
110
120
 
111
121
  def test_text_field_with_no_builder
112
122
  with_text_field :name, :builder => false
113
- assert_select "div[class='control-group cg-name']", 0
123
+ assert_select "div[class='control-group']", 0
114
124
  assert_select "label[for='user_name']", 0
115
125
  assert_select "input[builder='false']", 0
116
126
  end
117
127
 
118
128
  # -- Radio Button ---------------------------------------------------------
119
129
  def test_radio_button
120
- with_radio_button :role, 'admin'
121
- assert_select "div[class='control-group cg-role']" do
122
- assert_select "div[class='control-label']" do
123
- assert_select "label[for='user_role']", 'Role'
124
- end
130
+ with_radio_button :role, ['admin', 'regular']
131
+ assert_select "div[class='control-group']" do
132
+ assert_select "div[class='control-label']", 'Role'
125
133
  assert_select "div[class='controls']" do
126
- assert_select "input[type='radio'][id='user_role_admin'][name='user[role]'][value='admin']"
134
+ assert_select "label" do
135
+ assert_select "input[type='radio'][id='user_role_admin'][name='user[role]'][value='admin']"
136
+ end
137
+ assert_select "label" do
138
+ assert_select "input[type='radio'][id='user_role_regular'][name='user[role]'][value='regular']"
139
+ end
127
140
  end
128
141
  end
129
142
  end
130
143
 
131
144
  def test_radio_button_with_custom_label
132
- with_radio_button :role, 'admin', :label => 'Access'
133
- assert_select "div[class='control-label']" do
134
- assert_select "label[for='user_role']", 'Access'
135
- end
136
- end
137
-
138
- def test_radio_button_with_choices_array
139
- with_radio_button :role, ['admin', 'regular']
140
- assert_select "div[class='controls']" do
141
- assert_select "label[class='radio']", 'admin' do
142
- assert_select "input[type='radio'][id='user_role_admin'][name='user[role]'][value='admin']"
143
- end
144
- assert_select "label[class='radio']", 'regular' do
145
- assert_select "input[type='radio'][id='user_role_regular'][name='user[role]'][value='regular']"
146
- end
147
- end
145
+ with_radio_button :role, ['admin', 'regular'], :label => 'Access'
146
+ assert_select "div[class='control-label']", 'Access'
148
147
  end
149
148
 
150
149
  def test_radio_button_with_choices_tuples
@@ -158,7 +157,7 @@ class FormBuilderTest < ActionView::TestCase
158
157
  end
159
158
 
160
159
  def test_radio_button_inline
161
- with_radio_button :role, ['admin', 'regular'], :class => 'inline'
160
+ with_radio_button :role, ['admin', 'regular'], :inline => true
162
161
  assert_select "label[class='radio inline']", 'admin' do
163
162
  assert_select "input[type='radio'][id='user_role_admin'][name='user[role]'][value='admin']"
164
163
  end
@@ -167,22 +166,19 @@ class FormBuilderTest < ActionView::TestCase
167
166
  # -- Check Boxes ----------------------------------------------------------
168
167
  def test_check_box
169
168
  with_check_box :colors, {}, 'yes', 'no'
170
- assert_select "div[class='control-group cg-colors']" do
171
- assert_select "div[class='control-label']" do
172
- assert_select "label[for='user_colors']", 'Colors'
173
- end
169
+ assert_select "div[class='control-group']" do
174
170
  assert_select "div[class='controls']" do
175
171
  assert_select "input[type='hidden'][name='user[colors]'][value='no']"
176
- assert_select "input[type='checkbox'][id='user_colors'][name='user[colors]'][value='yes']"
172
+ assert_select "label[class='checkbox']" do
173
+ assert_select "input[type='checkbox'][id='user_colors'][name='user[colors]'][value='yes']"
174
+ end
177
175
  end
178
176
  end
179
177
  end
180
178
 
181
179
  def test_check_box_custom_label
182
180
  with_check_box :colors, :label => 'Kolors'
183
- assert_select "div[class='control-label']" do
184
- assert_select "label[for='user_colors']", 'Kolors'
185
- end
181
+ assert_select "label", 'Kolors'
186
182
  end
187
183
 
188
184
  def test_check_box_with_choices_array
@@ -210,7 +206,7 @@ class FormBuilderTest < ActionView::TestCase
210
206
  end
211
207
 
212
208
  def test_check_box_inline
213
- with_check_box :colors, {:class => 'inline'}, ['red', 'green']
209
+ with_check_box :colors, {:inline => true}, ['red', 'green']
214
210
  assert_select "label[class='checkbox inline']" do
215
211
  assert_select "input[type='checkbox'][id='user_colors_red'][name='user[colors][]']"
216
212
  end
@@ -253,7 +249,7 @@ class FormBuilderTest < ActionView::TestCase
253
249
  # -- Submit ---------------------------------------------------------------
254
250
  def test_submit
255
251
  with_submit
256
- assert_select "input[name=commit][value='Create User'][class='btn btn-primary']"
252
+ assert_select "input[name=commit][value='Create User']"
257
253
  end
258
254
 
259
255
  def test_submit_with_label
@@ -261,11 +257,6 @@ class FormBuilderTest < ActionView::TestCase
261
257
  assert_select "input[name='commit'][value='Create']"
262
258
  end
263
259
 
264
- def test_submit_with_css_class
265
- with_submit :class => 'btn-danger'
266
- assert_select "input[name=commit][class='btn-danger btn']"
267
- end
268
-
269
260
  # -- Others ---------------------------------------------------------------
270
261
  def test_select_field
271
262
  with_select :name, ['Bob']
@@ -370,30 +361,4 @@ class FormBuilderTest < ActionView::TestCase
370
361
  end
371
362
  end
372
363
 
373
- # -- Conditional content tag ----------------------------------------------
374
- def test_content_tag_if_true
375
- concat content_tag_if(true, :div, 'test', :class => 'test')
376
- assert_equal "<div class=\"test\">test</div>", output_buffer
377
- end
378
-
379
- def test_content_tag_if_false
380
- concat content_tag_if(false, :div, 'test', :class => 'test')
381
- assert_equal 'test', output_buffer
382
- end
383
-
384
- def test_content_tag_if_with_block_if_true
385
- concat(content_tag_if(true, :div, :class => 'test'){ 'test' })
386
- assert_equal "<div class=\"test\">test</div>", output_buffer
387
- end
388
-
389
- def test_content_tag_if_with_block_if_false
390
- concat(content_tag_if(false, :div, :class => 'test'){ 'test' })
391
- assert_equal 'test', output_buffer
392
- end
393
-
394
- def test_content_tag_unless
395
- concat content_tag_unless(false, :div, 'test', :class => 'test')
396
- assert_equal "<div class=\"test\">test</div>", output_buffer
397
- end
398
-
399
364
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formatted_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-01-15 00:00:00.000000000 Z
14
+ date: 2013-01-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -80,7 +80,12 @@ files:
80
80
  - app/views/formatted_form/_time_select.html.erb
81
81
  - app/views/formatted_form/_time_zone_select.html.erb
82
82
  - app/views/formatted_form/templates/_choices.html.erb
83
+ - app/views/formatted_form/templates/_choices_block.html.erb
84
+ - app/views/formatted_form/templates/_choices_inline.html.erb
83
85
  - app/views/formatted_form/templates/_field.html.erb
86
+ - app/views/formatted_form/templates/_field_block.html.erb
87
+ - app/views/formatted_form/templates/_field_inline.html.erb
88
+ - app/views/formatted_form/templates/_label.html.erb
84
89
  - formatted_form.gemspec
85
90
  - lib/formatted_form.rb
86
91
  - lib/formatted_form/engine.rb
@@ -90,10 +95,12 @@ files:
90
95
  - test/dummy/Rakefile
91
96
  - test/dummy/app/assets/javascripts/application.js
92
97
  - test/dummy/app/assets/stylesheets/application.css
98
+ - test/dummy/app/assets/stylesheets/bootstrap.css
93
99
  - test/dummy/app/controllers/application_controller.rb
94
100
  - test/dummy/app/helpers/application_helper.rb
95
101
  - test/dummy/app/mailers/.gitkeep
96
102
  - test/dummy/app/models/.gitkeep
103
+ - test/dummy/app/views/application/test.html.erb
97
104
  - test/dummy/app/views/layouts/application.html.erb
98
105
  - test/dummy/config.ru
99
106
  - test/dummy/config/application.rb
@@ -134,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
134
141
  version: '0'
135
142
  segments:
136
143
  - 0
137
- hash: 1628412368511617234
144
+ hash: -2131357332028730939
138
145
  required_rubygems_version: !ruby/object:Gem::Requirement
139
146
  none: false
140
147
  requirements: