simple_form 3.4.0 → 4.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.
Potentially problematic release.
This version of simple_form might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/CHANGELOG.md +62 -0
- data/README.md +208 -36
- data/lib/generators/simple_form/install_generator.rb +1 -0
- data/lib/generators/simple_form/templates/README +3 -3
- data/lib/generators/simple_form/templates/_form.html.erb +2 -0
- data/lib/generators/simple_form/templates/_form.html.haml +2 -0
- data/lib/generators/simple_form/templates/_form.html.slim +1 -0
- data/lib/generators/simple_form/templates/config/initializers/simple_form.rb +15 -5
- data/lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb +358 -73
- data/lib/generators/simple_form/templates/config/initializers/simple_form_foundation.rb +20 -8
- data/lib/simple_form/action_view_extensions/builder.rb +1 -0
- data/lib/simple_form/action_view_extensions/form_helper.rb +1 -0
- data/lib/simple_form/components/errors.rb +15 -2
- data/lib/simple_form/components/hints.rb +1 -0
- data/lib/simple_form/components/html5.rb +1 -0
- data/lib/simple_form/components/label_input.rb +2 -1
- data/lib/simple_form/components/labels.rb +11 -4
- data/lib/simple_form/components/maxlength.rb +4 -13
- data/lib/simple_form/components/min_max.rb +1 -0
- data/lib/simple_form/components/minlength.rb +5 -14
- data/lib/simple_form/components/pattern.rb +1 -0
- data/lib/simple_form/components/placeholders.rb +2 -1
- data/lib/simple_form/components/readonly.rb +1 -0
- data/lib/simple_form/components.rb +1 -0
- data/lib/simple_form/error_notification.rb +1 -0
- data/lib/simple_form/form_builder.rb +81 -26
- data/lib/simple_form/helpers/autofocus.rb +1 -0
- data/lib/simple_form/helpers/disabled.rb +1 -0
- data/lib/simple_form/helpers/readonly.rb +1 -0
- data/lib/simple_form/helpers/required.rb +1 -0
- data/lib/simple_form/helpers/validators.rb +2 -1
- data/lib/simple_form/helpers.rb +1 -0
- data/lib/simple_form/i18n_cache.rb +1 -0
- data/lib/simple_form/inputs/base.rb +24 -2
- data/lib/simple_form/inputs/block_input.rb +1 -0
- data/lib/simple_form/inputs/boolean_input.rb +4 -2
- data/lib/simple_form/inputs/collection_check_boxes_input.rb +2 -1
- data/lib/simple_form/inputs/collection_input.rb +3 -2
- data/lib/simple_form/inputs/collection_radio_buttons_input.rb +2 -1
- data/lib/simple_form/inputs/collection_select_input.rb +1 -0
- data/lib/simple_form/inputs/color_input.rb +14 -0
- data/lib/simple_form/inputs/date_time_input.rb +1 -0
- data/lib/simple_form/inputs/file_input.rb +1 -0
- data/lib/simple_form/inputs/grouped_collection_select_input.rb +1 -0
- data/lib/simple_form/inputs/hidden_input.rb +1 -0
- data/lib/simple_form/inputs/numeric_input.rb +1 -0
- data/lib/simple_form/inputs/password_input.rb +1 -0
- data/lib/simple_form/inputs/priority_input.rb +1 -0
- data/lib/simple_form/inputs/range_input.rb +1 -0
- data/lib/simple_form/inputs/string_input.rb +2 -1
- data/lib/simple_form/inputs/text_input.rb +1 -0
- data/lib/simple_form/inputs.rb +2 -0
- data/lib/simple_form/map_type.rb +1 -0
- data/lib/simple_form/railtie.rb +1 -0
- data/lib/simple_form/tags.rb +1 -0
- data/lib/simple_form/version.rb +2 -1
- data/lib/simple_form/wrappers/builder.rb +1 -0
- data/lib/simple_form/wrappers/leaf.rb +2 -1
- data/lib/simple_form/wrappers/many.rb +1 -0
- data/lib/simple_form/wrappers/root.rb +2 -0
- data/lib/simple_form/wrappers/single.rb +2 -1
- data/lib/simple_form/wrappers.rb +1 -0
- data/lib/simple_form.rb +58 -7
- data/test/action_view_extensions/builder_test.rb +6 -5
- data/test/action_view_extensions/form_helper_test.rb +3 -2
- data/test/components/custom_components_test.rb +62 -0
- data/test/components/label_test.rb +33 -4
- data/test/form_builder/association_test.rb +27 -2
- data/test/form_builder/button_test.rb +1 -0
- data/test/form_builder/error_notification_test.rb +1 -0
- data/test/form_builder/error_test.rb +12 -0
- data/test/form_builder/general_test.rb +67 -3
- data/test/form_builder/hint_test.rb +6 -0
- data/test/form_builder/input_field_test.rb +30 -10
- data/test/form_builder/label_test.rb +9 -3
- data/test/form_builder/wrapper_test.rb +24 -4
- data/test/generators/simple_form_generator_test.rb +4 -3
- data/test/inputs/boolean_input_test.rb +17 -0
- data/test/inputs/collection_check_boxes_input_test.rb +30 -14
- data/test/inputs/collection_radio_buttons_input_test.rb +40 -24
- data/test/inputs/collection_select_input_test.rb +40 -39
- data/test/inputs/color_input_test.rb +10 -0
- data/test/inputs/datetime_input_test.rb +7 -16
- data/test/inputs/disabled_test.rb +14 -0
- data/test/inputs/discovery_test.rb +22 -0
- data/test/inputs/file_input_test.rb +1 -0
- data/test/inputs/general_test.rb +3 -2
- data/test/inputs/grouped_collection_select_input_test.rb +11 -10
- data/test/inputs/hidden_input_test.rb +1 -0
- data/test/inputs/numeric_input_test.rb +2 -1
- data/test/inputs/priority_input_test.rb +3 -10
- data/test/inputs/readonly_test.rb +1 -0
- data/test/inputs/required_test.rb +1 -0
- data/test/inputs/string_input_test.rb +10 -16
- data/test/inputs/text_input_test.rb +1 -0
- data/test/simple_form_test.rb +1 -0
- data/test/support/discovery_inputs.rb +8 -0
- data/test/support/misc_helpers.rb +22 -1
- data/test/support/mock_controller.rb +7 -1
- data/test/support/models.rb +52 -16
- data/test/test_helper.rb +2 -0
- metadata +40 -47
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class StringInput < SimpleForm::Inputs::StringInput
|
2
3
|
def input(wrapper_options = nil)
|
3
4
|
"<section>#{super}</section>".html_safe
|
@@ -36,6 +37,13 @@ class CollectionSelectInput < SimpleForm::Inputs::CollectionSelectInput
|
|
36
37
|
end
|
37
38
|
end
|
38
39
|
|
40
|
+
class FileInput < SimpleForm::Inputs::FileInput
|
41
|
+
def input_html_classes
|
42
|
+
super.delete_if { |html_class| html_class == :file }
|
43
|
+
super.push('file-upload')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
39
47
|
module CustomInputs
|
40
48
|
class CustomizedInput < SimpleForm::Inputs::StringInput
|
41
49
|
def input_html_classes
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module MiscHelpers
|
2
3
|
def store_translations(locale, translations, &block)
|
3
4
|
I18n.backend.store_translations locale, translations
|
@@ -181,7 +182,7 @@ module MiscHelpers
|
|
181
182
|
end
|
182
183
|
|
183
184
|
def custom_wrapper_with_label_text
|
184
|
-
SimpleForm.build :
|
185
|
+
SimpleForm.build label_text: proc { |label, required| "**#{label}**" } do |b|
|
185
186
|
b.use :label_input
|
186
187
|
end
|
187
188
|
end
|
@@ -205,6 +206,20 @@ module MiscHelpers
|
|
205
206
|
end
|
206
207
|
end
|
207
208
|
|
209
|
+
def custom_wrapper_with_input_error_class
|
210
|
+
SimpleForm.build tag: :div, class: "custom_wrapper", error_class: :field_with_errors do |b|
|
211
|
+
b.use :label
|
212
|
+
b.use :input, class: 'inline-class', error_class: 'is-invalid'
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
def custom_wrapper_with_input_valid_class
|
217
|
+
SimpleForm.build tag: :div, class: "custom_wrapper", valid_class: :field_without_errors do |b|
|
218
|
+
b.use :label
|
219
|
+
b.use :input, class: 'inline-class', valid_class: 'is-valid'
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
208
223
|
def custom_form_for(object, *args, &block)
|
209
224
|
simple_form_for(object, *args, { builder: CustomFormBuilder }, &block)
|
210
225
|
end
|
@@ -240,6 +255,12 @@ module MiscHelpers
|
|
240
255
|
f.input(attribute_name, options.merge(as: type))
|
241
256
|
end
|
242
257
|
end
|
258
|
+
|
259
|
+
def with_input_field_for(object, *args)
|
260
|
+
with_concat_form_for(object) do |f|
|
261
|
+
f.input_field(*args)
|
262
|
+
end
|
263
|
+
end
|
243
264
|
end
|
244
265
|
|
245
266
|
class CustomFormBuilder < SimpleForm::FormBuilder
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class MockController
|
2
3
|
attr_writer :action_name
|
3
4
|
|
@@ -9,7 +10,7 @@ class MockController
|
|
9
10
|
defined?(@action_name) ? @action_name : "edit"
|
10
11
|
end
|
11
12
|
|
12
|
-
def url_for(*
|
13
|
+
def url_for(*)
|
13
14
|
"http://example.com"
|
14
15
|
end
|
15
16
|
|
@@ -17,8 +18,13 @@ class MockController
|
|
17
18
|
{}
|
18
19
|
end
|
19
20
|
|
21
|
+
def polymorphic_mappings(*); {}; end
|
22
|
+
|
20
23
|
def hash_for_user_path(*); end
|
24
|
+
|
21
25
|
def hash_for_validating_user_path(*); end
|
26
|
+
|
22
27
|
def hash_for_other_validating_user_path(*); end
|
28
|
+
|
23
29
|
def hash_for_users_path(*); end
|
24
30
|
end
|
data/test/support/models.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
Association = Struct.new(:klass, :name, :macro, :scope, :options)
|
2
3
|
|
3
4
|
Column = Struct.new(:name, :type, :limit) do
|
@@ -7,7 +8,7 @@ Relation = Struct.new(:records) do
|
|
7
8
|
delegate :each, to: :records
|
8
9
|
|
9
10
|
def where(conditions = nil)
|
10
|
-
self.class.new conditions ? records.first : records
|
11
|
+
self.class.new conditions ? [records.first] : records
|
11
12
|
end
|
12
13
|
|
13
14
|
def order(conditions = nil)
|
@@ -18,6 +19,12 @@ Relation = Struct.new(:records) do
|
|
18
19
|
alias_method :to_ary, :records
|
19
20
|
end
|
20
21
|
|
22
|
+
Decorator = Struct.new(:object) do
|
23
|
+
def to_model
|
24
|
+
object
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
21
28
|
Picture = Struct.new(:id, :name) do
|
22
29
|
extend ActiveModel::Naming
|
23
30
|
include ActiveModel::Conversion
|
@@ -56,6 +63,19 @@ Company = Struct.new(:id, :name) do
|
|
56
63
|
end
|
57
64
|
end
|
58
65
|
|
66
|
+
Friend = Struct.new(:id, :name) do
|
67
|
+
extend ActiveModel::Naming
|
68
|
+
include ActiveModel::Conversion
|
69
|
+
|
70
|
+
def self.all
|
71
|
+
(1..3).map { |i| new(i, "#{name} #{i}") }
|
72
|
+
end
|
73
|
+
|
74
|
+
def persisted?
|
75
|
+
true
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
59
79
|
class Tag < Company; end
|
60
80
|
|
61
81
|
TagGroup = Struct.new(:id, :name, :tags)
|
@@ -70,7 +90,8 @@ class User
|
|
70
90
|
:avatar, :home_picture, :email, :status, :residence_country, :phone_number,
|
71
91
|
:post_count, :lock_version, :amount, :attempts, :action, :credit_card, :gender,
|
72
92
|
:extra_special_company_id, :pictures, :picture_ids, :special_pictures,
|
73
|
-
:special_picture_ids, :uuid
|
93
|
+
:special_picture_ids, :uuid, :friends, :friend_ids, :special_tags, :special_tag_ids,
|
94
|
+
:citext, :hstore, :json, :jsonb, :hourly, :favorite_color
|
74
95
|
|
75
96
|
def self.build(extra_attributes = {})
|
76
97
|
attributes = {
|
@@ -121,13 +142,22 @@ class User
|
|
121
142
|
when :attempts then :integer
|
122
143
|
when :action then :string
|
123
144
|
when :credit_card then :string
|
124
|
-
|
145
|
+
else attribute.to_sym
|
125
146
|
end
|
126
147
|
Column.new(attribute, column_type, limit)
|
127
148
|
end
|
128
149
|
|
129
150
|
begin
|
130
151
|
require 'active_model/type'
|
152
|
+
begin
|
153
|
+
ActiveModel::Type.lookup(:text)
|
154
|
+
rescue ArgumentError # :text is no longer an ActiveModel::Type
|
155
|
+
# But we don't want our tests to depend on ActiveRecord
|
156
|
+
class ::ActiveModel::Type::Text < ActiveModel::Type::String
|
157
|
+
def type; :text; end
|
158
|
+
end
|
159
|
+
ActiveModel::Type.register(:text, ActiveModel::Type::Text)
|
160
|
+
end
|
131
161
|
def type_for_attribute(attribute)
|
132
162
|
column_type, limit = case attribute
|
133
163
|
when 'name', 'status', 'password' then [:string, 100]
|
@@ -146,6 +176,10 @@ class User
|
|
146
176
|
when 'action' then :string
|
147
177
|
when 'credit_card' then :string
|
148
178
|
when 'uuid' then :string
|
179
|
+
when 'citext' then :string
|
180
|
+
when 'hstore' then [:text, 200]
|
181
|
+
when 'json' then [:text, 200]
|
182
|
+
when 'jsonb' then [:text, 200]
|
149
183
|
end
|
150
184
|
|
151
185
|
ActiveModel::Type.lookup(column_type, limit: limit)
|
@@ -158,7 +192,8 @@ class User
|
|
158
192
|
when :name, :status, :password, :description, :age,
|
159
193
|
:credit_limit, :active, :born_at, :delivery_time,
|
160
194
|
:created_at, :updated_at, :lock_version, :home_picture,
|
161
|
-
:amount, :attempts, :action, :credit_card, :uuid
|
195
|
+
:amount, :attempts, :action, :credit_card, :uuid,
|
196
|
+
:citext, :hstore, :json, :jsonb then true
|
162
197
|
else false
|
163
198
|
end
|
164
199
|
end
|
@@ -182,16 +217,20 @@ class User
|
|
182
217
|
Association.new(Company, association, :belongs_to, nil, {})
|
183
218
|
when :tags
|
184
219
|
Association.new(Tag, association, :has_many, nil, {})
|
220
|
+
when :special_tags
|
221
|
+
Association.new(Tag, association, :has_many, ->(user) { where(id: user.id) }, {})
|
185
222
|
when :first_company
|
186
223
|
Association.new(Company, association, :has_one, nil, {})
|
187
224
|
when :special_company
|
188
|
-
Association.new(Company, association, :belongs_to, nil,
|
225
|
+
Association.new(Company, association, :belongs_to, nil, conditions: { id: 1 })
|
189
226
|
when :extra_special_company
|
190
|
-
Association.new(Company, association, :belongs_to, nil,
|
227
|
+
Association.new(Company, association, :belongs_to, nil, conditions: proc { { id: self.id } })
|
191
228
|
when :pictures
|
192
229
|
Association.new(Picture, association, :has_many, nil, {})
|
193
230
|
when :special_pictures
|
194
231
|
Association.new(Picture, association, :has_many, proc { where(name: self.name) }, {})
|
232
|
+
when :friends
|
233
|
+
Association.new(Friend, association, :has_many, nil, {})
|
195
234
|
end
|
196
235
|
end
|
197
236
|
|
@@ -217,8 +256,8 @@ class ValidatingUser < User
|
|
217
256
|
include ActiveModel::Validations
|
218
257
|
validates :name, presence: true
|
219
258
|
validates :company, presence: true
|
220
|
-
validates :age, presence: true, if:
|
221
|
-
validates :amount, presence: true, unless:
|
259
|
+
validates :age, presence: true, if: proc { |user| user.name }
|
260
|
+
validates :amount, presence: true, unless: proc { |user| user.age }
|
222
261
|
|
223
262
|
validates :action, presence: true, on: :create
|
224
263
|
validates :credit_limit, presence: true, on: :save
|
@@ -238,9 +277,6 @@ class ValidatingUser < User
|
|
238
277
|
only_integer: true
|
239
278
|
validates_length_of :name, maximum: 25, minimum: 5
|
240
279
|
validates_length_of :description, in: 15..50
|
241
|
-
if ActionPack::VERSION::STRING < '5'
|
242
|
-
validates_length_of :action, maximum: 10, tokenizer: lambda { |str| str.scan(/\w+/) }
|
243
|
-
end
|
244
280
|
validates_length_of :home_picture, is: 12
|
245
281
|
|
246
282
|
def min_amount
|
@@ -267,16 +303,16 @@ class OtherValidatingUser < User
|
|
267
303
|
less_than: 100,
|
268
304
|
only_integer: true
|
269
305
|
validates_numericality_of :amount,
|
270
|
-
greater_than:
|
271
|
-
less_than:
|
306
|
+
greater_than: proc { |user| user.age },
|
307
|
+
less_than: proc { |user| user.age + 100 },
|
272
308
|
only_integer: true
|
273
309
|
validates_numericality_of :attempts,
|
274
|
-
greater_than_or_equal_to:
|
275
|
-
less_than_or_equal_to:
|
310
|
+
greater_than_or_equal_to: proc { |user| user.age },
|
311
|
+
less_than_or_equal_to: proc { |user| user.age + 100 },
|
276
312
|
only_integer: true
|
277
313
|
|
278
314
|
validates_format_of :country, with: /\w+/
|
279
|
-
validates_format_of :name, with:
|
315
|
+
validates_format_of :name, with: proc { /\w+/ }
|
280
316
|
validates_format_of :description, without: /\d+/
|
281
317
|
end
|
282
318
|
|
data/test/test_helper.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'bundler/setup'
|
2
3
|
|
3
4
|
require 'minitest/autorun'
|
@@ -53,6 +54,7 @@ class ActionView::TestCase
|
|
53
54
|
|
54
55
|
def setup_users(extra_attributes = {})
|
55
56
|
@user = User.build(extra_attributes)
|
57
|
+
@decorated_user = Decorator.new(@user)
|
56
58
|
|
57
59
|
@validating_user = ValidatingUser.build({
|
58
60
|
name: 'Tester McTesterson',
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_form
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- José Valim
|
@@ -10,48 +10,36 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2018-11-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activemodel
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - "
|
19
|
+
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
22
|
-
- - "<"
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: '5.1'
|
21
|
+
version: '5.0'
|
25
22
|
type: :runtime
|
26
23
|
prerelease: false
|
27
24
|
version_requirements: !ruby/object:Gem::Requirement
|
28
25
|
requirements:
|
29
|
-
- - "
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
version: '4'
|
32
|
-
- - "<"
|
26
|
+
- - ">="
|
33
27
|
- !ruby/object:Gem::Version
|
34
|
-
version: '5.
|
28
|
+
version: '5.0'
|
35
29
|
- !ruby/object:Gem::Dependency
|
36
30
|
name: actionpack
|
37
31
|
requirement: !ruby/object:Gem::Requirement
|
38
32
|
requirements:
|
39
|
-
- - "
|
33
|
+
- - ">="
|
40
34
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
42
|
-
- - "<"
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: '5.1'
|
35
|
+
version: '5.0'
|
45
36
|
type: :runtime
|
46
37
|
prerelease: false
|
47
38
|
version_requirements: !ruby/object:Gem::Requirement
|
48
39
|
requirements:
|
49
|
-
- - "
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
version: '4'
|
52
|
-
- - "<"
|
40
|
+
- - ">="
|
53
41
|
- !ruby/object:Gem::Version
|
54
|
-
version: '5.
|
42
|
+
version: '5.0'
|
55
43
|
description: Forms made easy!
|
56
44
|
email: opensource@plataformatec.com.br
|
57
45
|
executables: []
|
@@ -103,6 +91,7 @@ files:
|
|
103
91
|
- lib/simple_form/inputs/collection_input.rb
|
104
92
|
- lib/simple_form/inputs/collection_radio_buttons_input.rb
|
105
93
|
- lib/simple_form/inputs/collection_select_input.rb
|
94
|
+
- lib/simple_form/inputs/color_input.rb
|
106
95
|
- lib/simple_form/inputs/date_time_input.rb
|
107
96
|
- lib/simple_form/inputs/file_input.rb
|
108
97
|
- lib/simple_form/inputs/grouped_collection_select_input.rb
|
@@ -125,6 +114,7 @@ files:
|
|
125
114
|
- lib/simple_form/wrappers/single.rb
|
126
115
|
- test/action_view_extensions/builder_test.rb
|
127
116
|
- test/action_view_extensions/form_helper_test.rb
|
117
|
+
- test/components/custom_components_test.rb
|
128
118
|
- test/components/label_test.rb
|
129
119
|
- test/form_builder/association_test.rb
|
130
120
|
- test/form_builder/button_test.rb
|
@@ -140,6 +130,7 @@ files:
|
|
140
130
|
- test/inputs/collection_check_boxes_input_test.rb
|
141
131
|
- test/inputs/collection_radio_buttons_input_test.rb
|
142
132
|
- test/inputs/collection_select_input_test.rb
|
133
|
+
- test/inputs/color_input_test.rb
|
143
134
|
- test/inputs/datetime_input_test.rb
|
144
135
|
- test/inputs/disabled_test.rb
|
145
136
|
- test/inputs/discovery_test.rb
|
@@ -179,44 +170,46 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
170
|
version: '0'
|
180
171
|
requirements: []
|
181
172
|
rubyforge_project: simple_form
|
182
|
-
rubygems_version: 2.6
|
173
|
+
rubygems_version: 2.7.6
|
183
174
|
signing_key:
|
184
175
|
specification_version: 4
|
185
176
|
summary: Forms made easy!
|
186
177
|
test_files:
|
187
|
-
- test/action_view_extensions/builder_test.rb
|
188
|
-
- test/action_view_extensions/form_helper_test.rb
|
189
178
|
- test/components/label_test.rb
|
190
|
-
- test/
|
191
|
-
- test/
|
192
|
-
- test/
|
179
|
+
- test/components/custom_components_test.rb
|
180
|
+
- test/support/discovery_inputs.rb
|
181
|
+
- test/support/misc_helpers.rb
|
182
|
+
- test/support/mock_controller.rb
|
183
|
+
- test/support/models.rb
|
184
|
+
- test/test_helper.rb
|
193
185
|
- test/form_builder/error_test.rb
|
194
|
-
- test/form_builder/general_test.rb
|
195
186
|
- test/form_builder/hint_test.rb
|
187
|
+
- test/form_builder/error_notification_test.rb
|
188
|
+
- test/form_builder/general_test.rb
|
189
|
+
- test/form_builder/button_test.rb
|
196
190
|
- test/form_builder/input_field_test.rb
|
197
191
|
- test/form_builder/label_test.rb
|
198
192
|
- test/form_builder/wrapper_test.rb
|
193
|
+
- test/form_builder/association_test.rb
|
199
194
|
- test/generators/simple_form_generator_test.rb
|
200
|
-
- test/
|
195
|
+
- test/action_view_extensions/builder_test.rb
|
196
|
+
- test/action_view_extensions/form_helper_test.rb
|
197
|
+
- test/simple_form_test.rb
|
198
|
+
- test/inputs/string_input_test.rb
|
199
|
+
- test/inputs/numeric_input_test.rb
|
200
|
+
- test/inputs/readonly_test.rb
|
201
|
+
- test/inputs/grouped_collection_select_input_test.rb
|
202
|
+
- test/inputs/text_input_test.rb
|
201
203
|
- test/inputs/collection_check_boxes_input_test.rb
|
202
|
-
- test/inputs/
|
203
|
-
- test/inputs/collection_select_input_test.rb
|
204
|
-
- test/inputs/datetime_input_test.rb
|
204
|
+
- test/inputs/boolean_input_test.rb
|
205
205
|
- test/inputs/disabled_test.rb
|
206
206
|
- test/inputs/discovery_test.rb
|
207
|
-
- test/inputs/
|
207
|
+
- test/inputs/collection_select_input_test.rb
|
208
208
|
- test/inputs/general_test.rb
|
209
|
-
- test/inputs/
|
210
|
-
- test/inputs/hidden_input_test.rb
|
211
|
-
- test/inputs/numeric_input_test.rb
|
212
|
-
- test/inputs/priority_input_test.rb
|
213
|
-
- test/inputs/readonly_test.rb
|
209
|
+
- test/inputs/color_input_test.rb
|
214
210
|
- test/inputs/required_test.rb
|
215
|
-
- test/inputs/
|
216
|
-
- test/inputs/
|
217
|
-
- test/
|
218
|
-
- test/
|
219
|
-
- test/
|
220
|
-
- test/support/mock_controller.rb
|
221
|
-
- test/support/models.rb
|
222
|
-
- test/test_helper.rb
|
211
|
+
- test/inputs/collection_radio_buttons_input_test.rb
|
212
|
+
- test/inputs/priority_input_test.rb
|
213
|
+
- test/inputs/hidden_input_test.rb
|
214
|
+
- test/inputs/file_input_test.rb
|
215
|
+
- test/inputs/datetime_input_test.rb
|