formtastic-bootstrap 2.1.3 → 3.0.0.rc.1
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.
- checksums.yaml +7 -0
- data/README.md +43 -56
- data/VERSION +1 -1
- data/lib/action_view/helpers/text_field_date_helper.rb +7 -7
- data/lib/formtastic-bootstrap/actions/base.rb +11 -6
- data/lib/formtastic-bootstrap/form_builder.rb +5 -5
- data/lib/formtastic-bootstrap/helpers.rb +1 -1
- data/lib/formtastic-bootstrap/helpers/actions_helper.rb +4 -4
- data/lib/formtastic-bootstrap/helpers/errors_helper.rb +1 -1
- data/lib/formtastic-bootstrap/helpers/fieldset_wrapper.rb +2 -2
- data/lib/formtastic-bootstrap/helpers/input_helper.rb +3 -3
- data/lib/formtastic-bootstrap/helpers/inputs_helper.rb +3 -3
- data/lib/formtastic-bootstrap/inputs.rb +19 -19
- data/lib/formtastic-bootstrap/inputs/base.rb +1 -1
- data/lib/formtastic-bootstrap/inputs/base/errors.rb +2 -2
- data/lib/formtastic-bootstrap/inputs/base/hints.rb +3 -3
- data/lib/formtastic-bootstrap/inputs/base/html.rb +8 -2
- data/lib/formtastic-bootstrap/inputs/base/labelling.rb +6 -11
- data/lib/formtastic-bootstrap/inputs/base/stringish.rb +4 -4
- data/lib/formtastic-bootstrap/inputs/base/timeish.rb +24 -18
- data/lib/formtastic-bootstrap/inputs/base/wrapping.rb +30 -52
- data/lib/formtastic-bootstrap/inputs/boolean_input.rb +18 -10
- data/lib/formtastic-bootstrap/inputs/check_boxes_input.rb +19 -18
- data/lib/formtastic-bootstrap/inputs/email_input.rb +1 -1
- data/lib/formtastic-bootstrap/inputs/number_input.rb +3 -3
- data/lib/formtastic-bootstrap/inputs/password_input.rb +1 -1
- data/lib/formtastic-bootstrap/inputs/phone_input.rb +1 -1
- data/lib/formtastic-bootstrap/inputs/radio_input.rb +19 -18
- data/lib/formtastic-bootstrap/inputs/range_input.rb +1 -1
- data/lib/formtastic-bootstrap/inputs/search_input.rb +1 -1
- data/lib/formtastic-bootstrap/inputs/select_input.rb +17 -0
- data/lib/formtastic-bootstrap/inputs/text_input.rb +4 -4
- data/lib/formtastic-bootstrap/inputs/url_input.rb +1 -1
- data/lib/formtastic-bootstrap/version.rb +1 -1
- data/vendor/assets/stylesheets/formtastic-bootstrap.css +32 -0
- metadata +51 -55
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ecb19013ed0931f06bd003f1ea90049610323e95
|
4
|
+
data.tar.gz: 689d4e4702a9fe931cc3123291dada9d8df21d35
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5be322ff2419bc7915198e7d34bcdf98ff62843f6119c6f293ce87d799f33972e0fadfcb9dbd7d9bb10aa08dc0fca56c777612bc15c5ab20d1c3b74e55979049
|
7
|
+
data.tar.gz: 0b30ebf52df315ad4223bb91f28804c74161c2a59fe33d45723a752e7dc11c5a1d330d1b237e1023e737424038e6c4f6b291fa2e7f0d1ea758419fc910fe8243
|
data/README.md
CHANGED
@@ -8,7 +8,27 @@ You can follow [FormBoot on twitter](http://twitter.com/FormBoot) for update ann
|
|
8
8
|
|
9
9
|
### Dependencies
|
10
10
|
|
11
|
-
|
11
|
+
This version of Formtastic Bootstrap should support the following:
|
12
|
+
|
13
|
+
*Bootstrap*
|
14
|
+
|
15
|
+
* Bootstrap 3.x
|
16
|
+
|
17
|
+
*Rails*
|
18
|
+
|
19
|
+
* Rails 3.2.x
|
20
|
+
* Rails 4.0.x
|
21
|
+
|
22
|
+
*Formtastic*
|
23
|
+
|
24
|
+
* Formtastic 2.2.x
|
25
|
+
* Formtastic 2.3.x
|
26
|
+
|
27
|
+
*Ruby*
|
28
|
+
|
29
|
+
* 1.9.2
|
30
|
+
* 1.9.3
|
31
|
+
* 2.0.x
|
12
32
|
|
13
33
|
#### Installation
|
14
34
|
|
@@ -43,58 +63,12 @@ THIS SECTION IS OUT OF DATE.
|
|
43
63
|
|
44
64
|
### Overview
|
45
65
|
|
46
|
-
In general, Formtastic creates very verbose HTML whereas
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
<%= semantic_form_for @post do |f| %>
|
52
|
-
<%= f.semantic_errors %>
|
53
|
-
<%= f.inputs do %>
|
54
|
-
<%= f.input :title, :hint => "This is the title!" %>
|
55
|
-
<% end %>
|
56
|
-
<%= f.actions do %>
|
57
|
-
<%= f.action :submit %>
|
58
|
-
<% end %>
|
59
|
-
<% end %>
|
66
|
+
In general, Formtastic creates very verbose HTML whereas
|
67
|
+
Bootstrap expects (ever) simpler HTML. Every attempt has been
|
68
|
+
made to generate the HTML expected by Bootstrap while still
|
69
|
+
generating the rich HTML provided by Formtastic. When there
|
70
|
+
is a conflict, Bootstrap wins.
|
60
71
|
|
61
|
-
#### Formtastic
|
62
|
-
|
63
|
-
<form accept-charset="UTF-8" action="/posts" class="formtastic post" id="new_post" method="post">
|
64
|
-
<fieldset class="inputs">
|
65
|
-
<ol>
|
66
|
-
<li class="string input optional stringish" id="post_title_input">
|
67
|
-
<label class=" label" for="post_title">Title</label>
|
68
|
-
<input id="post_title" maxlength="255" name="post[title]" type="text" value="" />
|
69
|
-
<p class="inline-hints">This is the title!</p>
|
70
|
-
</li>
|
71
|
-
</ol>
|
72
|
-
</fieldset>
|
73
|
-
<fieldset class="buttons">
|
74
|
-
<ol>
|
75
|
-
<li class="commit button">
|
76
|
-
<input class="create" name="commit" type="submit" value="Create Post" />
|
77
|
-
</li>
|
78
|
-
</ol>
|
79
|
-
</fieldset>
|
80
|
-
</form>
|
81
|
-
|
82
|
-
#### Formtastic Bootstrap
|
83
|
-
|
84
|
-
<form accept-charset="UTF-8" action="/posts" class="formtastic post" id="new_post" method="post">
|
85
|
-
<fieldset class="inputs">
|
86
|
-
<div class="string clearfix optional stringish" id="post_title_input">
|
87
|
-
<label class="" for="post_title">Title</label>
|
88
|
-
<div class="input">
|
89
|
-
<input id="post_title" maxlength="255" name="post[title]" type="text" value="" />
|
90
|
-
<span class="help-inline">This is the title!</span>
|
91
|
-
</div>
|
92
|
-
</div>
|
93
|
-
</fieldset>
|
94
|
-
<div class="actions">
|
95
|
-
<input class="btn create commit" name="commit" type="submit" value="Create Post" />
|
96
|
-
</div>
|
97
|
-
</form>
|
98
72
|
|
99
73
|
### Major Difference in Behavior
|
100
74
|
|
@@ -114,7 +88,10 @@ The gem also provides some "shim" CSS where Bootstrap is missing styles provided
|
|
114
88
|
|
115
89
|
### Other
|
116
90
|
|
117
|
-
A lot of the code (especially the test suite) was copied
|
91
|
+
A lot of the code (especially the test suite) was copied
|
92
|
+
over from Formtastic and then beaten into submission. I'm
|
93
|
+
sure you'll find some ugliness in there. In general, I
|
94
|
+
mimicked the Formtastic code structure as much as possible.
|
118
95
|
|
119
96
|
In particular:
|
120
97
|
|
@@ -130,7 +107,7 @@ In particular:
|
|
130
107
|
Contributions are welcome!
|
131
108
|
|
132
109
|
* Formtastic's <tt>:country</tt> has not yet been implemented.
|
133
|
-
*
|
110
|
+
* I'm sure there's lots ...
|
134
111
|
|
135
112
|
## Usage
|
136
113
|
|
@@ -156,6 +133,16 @@ To create an Appended Text field, use the ```:append``` option. This works on a
|
|
156
133
|
<% end %>
|
157
134
|
<% end %>
|
158
135
|
|
136
|
+
#### Appended Content
|
137
|
+
To add appended elements that are not contained within an add-on span
|
138
|
+
use the ```:append_content``` or ```:prepend_content``` option.
|
139
|
+
|
140
|
+
<%= semantic_form_for @user do |f| %>
|
141
|
+
<%= f.inputs do %>
|
142
|
+
<%= f.input :handle, :append_content => content_tag(:a, "Click Here", :class => 'btn') %>
|
143
|
+
<% end %>
|
144
|
+
<% end %>
|
145
|
+
|
159
146
|
## Contributing
|
160
147
|
|
161
148
|
### Contributors
|
@@ -198,16 +185,16 @@ Source contributions are very welcome! Most of the recent work on this package
|
|
198
185
|
* As rich functionally as their Rails counterparts.
|
199
186
|
* Extract into a standalone gem.
|
200
187
|
* Tests
|
188
|
+
* Get them passing!
|
201
189
|
* Refactor
|
202
190
|
* More -- See if I'm making sure the Bootstrap classes are present.
|
203
191
|
* Documentation
|
204
192
|
* Refactor :boolean to use common "choices" code (if possible.) (Not sure it is.)
|
205
193
|
* Boostrap
|
206
|
-
* Ask why they use 'inline-inputs' class instead of a fieldset tag.
|
207
194
|
* Why 'help-inline' and 'help-block' when they could have done p.help and span.help?
|
208
195
|
|
209
196
|
|
210
197
|
## Copyright
|
211
198
|
|
212
|
-
Copyright (c)
|
199
|
+
Copyright (c) 2013 Matthew Bellantoni. See LICENSE.txt for further details.
|
213
200
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.0.0.rc.1
|
@@ -40,8 +40,8 @@ module ActionView
|
|
40
40
|
@options[:discard_day] ||= true if @options[:discard_month] || !order.include?(:day)
|
41
41
|
|
42
42
|
# Save this so we can restore it.
|
43
|
-
original_datetime_separator_separator = @options[:datetime_separator]
|
44
|
-
original_date_separator = @options[:date_separator]
|
43
|
+
original_datetime_separator_separator = @options[:datetime_separator]
|
44
|
+
original_date_separator = @options[:date_separator]
|
45
45
|
|
46
46
|
@options[:datetime_separator] = ""
|
47
47
|
@options[:date_separator] = " "
|
@@ -71,8 +71,8 @@ module ActionView
|
|
71
71
|
|
72
72
|
# Save this so we can restore it.
|
73
73
|
original_datetime_separator = @options[:datetime_separator]
|
74
|
-
original_time_separator = @options[:time_separator]
|
75
|
-
original_date_separator = @options[:date_separator]
|
74
|
+
original_time_separator = @options[:time_separator]
|
75
|
+
original_date_separator = @options[:date_separator]
|
76
76
|
|
77
77
|
@options[:datetime_separator] = ''
|
78
78
|
@options[:time_separator] = ':'
|
@@ -85,7 +85,7 @@ module ActionView
|
|
85
85
|
|
86
86
|
build_text_field_from_types(order).tap do
|
87
87
|
# Restore.
|
88
|
-
@options[:datetime_separator] = original_datetime_separator
|
88
|
+
@options[:datetime_separator] = original_datetime_separator
|
89
89
|
@options[:date_separator] = original_date_separator
|
90
90
|
@options[:time_separator] = original_time_separator
|
91
91
|
end
|
@@ -131,7 +131,7 @@ module ActionView
|
|
131
131
|
input = ''
|
132
132
|
order.reverse.each do |type|
|
133
133
|
separator = separator(type) unless type == order.first # don't add on last field
|
134
|
-
input.insert(0, separator.to_s + send("text_field_#{type}").to_s)
|
134
|
+
input.insert(0, separator.to_s + send("text_field_#{type}").to_s)
|
135
135
|
end
|
136
136
|
text_field_tag("", input.html_safe, @html_options).html_safe
|
137
137
|
end
|
@@ -163,4 +163,4 @@ module ActionView
|
|
163
163
|
include TextFieldDateHelper
|
164
164
|
|
165
165
|
end
|
166
|
-
end
|
166
|
+
end
|
@@ -4,19 +4,24 @@ module FormtasticBootstrap
|
|
4
4
|
|
5
5
|
# Bootstrap doesn't have wrappers.
|
6
6
|
def wrapper(&block)
|
7
|
-
# TODO Detect if user passed wrapper_html_options and issue
|
8
|
-
# a warning that they're ignored. (See the original in
|
9
|
-
# Formtastic.)
|
10
7
|
template.capture(&block)
|
11
8
|
end
|
12
9
|
|
10
|
+
# Default button class
|
11
|
+
def default_wrapper_classes
|
12
|
+
["btn"]
|
13
|
+
end
|
14
|
+
|
15
|
+
# :wrapper_html member :class is prefixed with btn
|
16
|
+
# :button_html member :class is all encompassing
|
13
17
|
def default_button_html
|
14
|
-
{
|
18
|
+
{
|
15
19
|
:accesskey => accesskey,
|
16
|
-
:class =>
|
20
|
+
:class => wrapper_class.strip,
|
21
|
+
:id => wrapper_id
|
17
22
|
}
|
18
23
|
end
|
19
24
|
|
20
25
|
end
|
21
26
|
end
|
22
|
-
end
|
27
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module FormtasticBootstrap
|
2
|
-
|
2
|
+
|
3
3
|
class FormBuilder < Formtastic::FormBuilder
|
4
4
|
|
5
5
|
configure :default_inline_error_class, 'help-inline'
|
@@ -11,18 +11,18 @@ module FormtasticBootstrap
|
|
11
11
|
# self.default_inline_error_class
|
12
12
|
raise
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def self.default_error_class=(error_class)
|
16
16
|
# self.default_inline_error_class = error_class
|
17
17
|
# self.default_block_error_class = error_class
|
18
18
|
raise
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def self.default_hint_class
|
22
22
|
# self.default_inline_hint_class
|
23
23
|
raise
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
def self.default_hint_class=(hint_class)
|
27
27
|
# self.default_inline_hint_class = hint_class
|
28
28
|
# self.default_block_hint_class = hint_class
|
@@ -38,4 +38,4 @@ module FormtasticBootstrap
|
|
38
38
|
|
39
39
|
end
|
40
40
|
|
41
|
-
end
|
41
|
+
end
|
@@ -9,7 +9,7 @@ module FormtasticBootstrap
|
|
9
9
|
# autoload :FormHelper, 'formtastic/helpers/form_helper'
|
10
10
|
autoload :InputHelper, 'formtastic-bootstrap/helpers/input_helper'
|
11
11
|
autoload :InputsHelper, 'formtastic-bootstrap/helpers/inputs_helper'
|
12
|
-
# autoload :LabelHelper, 'formtastic/helpers/label_helper'
|
12
|
+
# autoload :LabelHelper, 'formtastic/helpers/label_helper'
|
13
13
|
# autoload :SemanticFormHelper, 'formtastic/helpers/semantic_form_helper'
|
14
14
|
# autoload :Reflection, 'formtastic/helpers/reflection'
|
15
15
|
end
|
@@ -4,12 +4,12 @@ module FormtasticBootstrap
|
|
4
4
|
|
5
5
|
include Formtastic::Helpers::ActionsHelper
|
6
6
|
include FormtasticBootstrap::Helpers::FieldsetWrapper
|
7
|
-
|
7
|
+
|
8
8
|
def actions(*args, &block)
|
9
9
|
|
10
10
|
html_options = args.extract_options!
|
11
11
|
html_options[:class] ||= "form-actions"
|
12
|
-
|
12
|
+
|
13
13
|
if block_given?
|
14
14
|
field_set_and_list_wrapping(html_options, &block)
|
15
15
|
else
|
@@ -18,7 +18,7 @@ module FormtasticBootstrap
|
|
18
18
|
field_set_and_list_wrapping(html_options, contents)
|
19
19
|
end
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
end
|
23
23
|
end
|
24
|
-
end
|
24
|
+
end
|
@@ -59,7 +59,7 @@ module FormtasticBootstrap
|
|
59
59
|
end
|
60
60
|
|
61
61
|
template.content_tag(:div, html_options) do
|
62
|
-
template.content_tag(:
|
62
|
+
template.content_tag(:a, "×".html_safe, :class => "close", "data-dismiss" => "alert") +
|
63
63
|
template.content_tag(:ul, {:class => "error-list"}) do
|
64
64
|
Formtastic::Util.html_safe(full_errors.map { |error| template.content_tag(:li, Formtastic::Util.html_safe(error)) }.join)
|
65
65
|
end
|
@@ -5,7 +5,7 @@ module FormtasticBootstrap
|
|
5
5
|
def inputs(*args, &block)
|
6
6
|
wrap_it = @already_in_an_inputs_block ? true : false
|
7
7
|
@already_in_an_inputs_block = true
|
8
|
-
|
8
|
+
|
9
9
|
title = field_set_title_from_args(*args)
|
10
10
|
html_options = args.extract_options!
|
11
11
|
html_options[:class] ||= "inputs"
|
@@ -24,11 +24,11 @@ module FormtasticBootstrap
|
|
24
24
|
field_set_and_list_wrapping(*((args << html_options) << contents))
|
25
25
|
end
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
@already_in_an_inputs_block = false
|
29
29
|
out
|
30
30
|
end
|
31
31
|
|
32
32
|
end
|
33
33
|
end
|
34
|
-
end
|
34
|
+
end
|
@@ -2,33 +2,33 @@ module FormtasticBootstrap
|
|
2
2
|
module Inputs
|
3
3
|
|
4
4
|
autoload :Base, "formtastic-bootstrap/inputs/base"
|
5
|
-
# autoload :Basic
|
6
|
-
autoload :BooleanInput, "formtastic-bootstrap/inputs/boolean_input"
|
5
|
+
# autoload :Basic
|
6
|
+
autoload :BooleanInput, "formtastic-bootstrap/inputs/boolean_input"
|
7
7
|
autoload :CheckBoxesInput, "formtastic-bootstrap/inputs/check_boxes_input"
|
8
|
-
autoload :CountryInput, "formtastic-bootstrap/inputs/country_input"
|
9
|
-
autoload :DateInput, "formtastic-bootstrap/inputs/date_input"
|
10
|
-
autoload :DatePickerInput, "formtastic-bootstrap/inputs/date_picker_input"
|
11
|
-
autoload :DatetimePickerInput, "formtastic-bootstrap/inputs/datetime_picker_input"
|
8
|
+
autoload :CountryInput, "formtastic-bootstrap/inputs/country_input"
|
9
|
+
autoload :DateInput, "formtastic-bootstrap/inputs/date_input"
|
10
|
+
autoload :DatePickerInput, "formtastic-bootstrap/inputs/date_picker_input"
|
11
|
+
autoload :DatetimePickerInput, "formtastic-bootstrap/inputs/datetime_picker_input"
|
12
12
|
autoload :DateSelectInput, "formtastic-bootstrap/inputs/date_select_input"
|
13
|
-
autoload :DatetimeInput, "formtastic-bootstrap/inputs/datetime_input"
|
14
|
-
autoload :DatetimeSelectInput, "formtastic-bootstrap/inputs/datetime_select_input"
|
15
|
-
autoload :EmailInput, "formtastic-bootstrap/inputs/email_input"
|
16
|
-
autoload :FileInput, "formtastic-bootstrap/inputs/file_input"
|
17
|
-
autoload :HiddenInput, "formtastic-bootstrap/inputs/hidden_input"
|
18
|
-
autoload :NumberInput, "formtastic-bootstrap/inputs/number_input"
|
13
|
+
autoload :DatetimeInput, "formtastic-bootstrap/inputs/datetime_input"
|
14
|
+
autoload :DatetimeSelectInput, "formtastic-bootstrap/inputs/datetime_select_input"
|
15
|
+
autoload :EmailInput, "formtastic-bootstrap/inputs/email_input"
|
16
|
+
autoload :FileInput, "formtastic-bootstrap/inputs/file_input"
|
17
|
+
autoload :HiddenInput, "formtastic-bootstrap/inputs/hidden_input"
|
18
|
+
autoload :NumberInput, "formtastic-bootstrap/inputs/number_input"
|
19
19
|
# autoload :NumericInput # TODO Where does Formtastic actually define this?
|
20
|
-
autoload :PasswordInput, "formtastic-bootstrap/inputs/password_input"
|
21
|
-
autoload :PhoneInput, "formtastic-bootstrap/inputs/phone_input"
|
22
|
-
autoload :RadioInput, "formtastic-bootstrap/inputs/radio_input"
|
23
|
-
autoload :RangeInput, "formtastic-bootstrap/inputs/range_input"
|
24
|
-
autoload :SearchInput, "formtastic-bootstrap/inputs/search_input"
|
25
|
-
autoload :SelectInput, "formtastic-bootstrap/inputs/select_input"
|
20
|
+
autoload :PasswordInput, "formtastic-bootstrap/inputs/password_input"
|
21
|
+
autoload :PhoneInput, "formtastic-bootstrap/inputs/phone_input"
|
22
|
+
autoload :RadioInput, "formtastic-bootstrap/inputs/radio_input"
|
23
|
+
autoload :RangeInput, "formtastic-bootstrap/inputs/range_input"
|
24
|
+
autoload :SearchInput, "formtastic-bootstrap/inputs/search_input"
|
25
|
+
autoload :SelectInput, "formtastic-bootstrap/inputs/select_input"
|
26
26
|
autoload :StringInput, "formtastic-bootstrap/inputs/string_input"
|
27
27
|
autoload :TextInput, "formtastic-bootstrap/inputs/text_input"
|
28
28
|
autoload :TimeInput, "formtastic-bootstrap/inputs/time_input"
|
29
29
|
# autoload :TimePickerInput # TODO Come back to this.
|
30
30
|
autoload :TimeSelectInput, "formtastic-bootstrap/inputs/time_select_input"
|
31
|
-
autoload :TimeZoneInput, "formtastic-bootstrap/inputs/time_zone_input"
|
31
|
+
autoload :TimeZoneInput, "formtastic-bootstrap/inputs/time_zone_input"
|
32
32
|
# autoload :Timeish # This seems like a mistake.
|
33
33
|
autoload :UrlInput, "formtastic-bootstrap/inputs/url_input"
|
34
34
|
|
@@ -27,7 +27,7 @@ module FormtasticBootstrap
|
|
27
27
|
# end
|
28
28
|
# template.content_tag(:ul, Formtastic::Util.html_safe(list_elements.join("\n")), :class => error_class)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
def error_first_html(inline_or_block = :inline)
|
32
32
|
error_class = if inline_or_block == :inline
|
33
33
|
options[:error_class] || builder.default_inline_error_class
|
@@ -45,4 +45,4 @@ module FormtasticBootstrap
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
48
|
-
end
|
48
|
+
end
|