formatted_form 2.0.4 → 2.1.0

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.
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: