simple_form 4.1.0 → 5.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 (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -9
  3. data/MIT-LICENSE +2 -1
  4. data/README.md +47 -51
  5. data/lib/generators/simple_form/templates/README +2 -3
  6. data/lib/generators/simple_form/templates/config/initializers/simple_form.rb +1 -4
  7. data/lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb +26 -25
  8. data/lib/generators/simple_form/templates/config/initializers/simple_form_foundation.rb +1 -1
  9. data/lib/simple_form.rb +22 -5
  10. data/lib/simple_form/components/labels.rb +3 -5
  11. data/lib/simple_form/components/maxlength.rb +0 -4
  12. data/lib/simple_form/components/minlength.rb +0 -4
  13. data/lib/simple_form/form_builder.rb +23 -3
  14. data/lib/simple_form/inputs.rb +1 -0
  15. data/lib/simple_form/inputs/base.rb +0 -3
  16. data/lib/simple_form/inputs/collection_check_boxes_input.rb +1 -1
  17. data/lib/simple_form/inputs/collection_input.rb +3 -5
  18. data/lib/simple_form/inputs/priority_input.rb +0 -4
  19. data/lib/simple_form/inputs/rich_text_area_input.rb +12 -0
  20. data/lib/simple_form/tags.rb +6 -2
  21. data/lib/simple_form/version.rb +1 -1
  22. data/lib/simple_form/wrappers/root.rb +8 -3
  23. data/test/action_view_extensions/builder_test.rb +22 -4
  24. data/test/components/label_test.rb +0 -4
  25. data/test/form_builder/association_test.rb +6 -0
  26. data/test/form_builder/general_test.rb +17 -19
  27. data/test/form_builder/label_test.rb +1 -1
  28. data/test/form_builder/wrapper_test.rb +8 -1
  29. data/test/inputs/collection_check_boxes_input_test.rb +8 -4
  30. data/test/inputs/collection_radio_buttons_input_test.rb +8 -4
  31. data/test/inputs/collection_select_input_test.rb +6 -4
  32. data/test/inputs/priority_input_test.rb +4 -4
  33. data/test/inputs/rich_text_area_input_test.rb +15 -0
  34. data/test/support/misc_helpers.rb +2 -2
  35. data/test/support/models.rb +28 -2
  36. data/test/test_helper.rb +7 -4
  37. metadata +16 -15
  38. data/lib/simple_form/i18n_cache.rb +0 -23
@@ -3,10 +3,6 @@
3
3
  require 'test_helper'
4
4
 
5
5
  class CollectionRadioButtonsInputTest < ActionView::TestCase
6
- setup do
7
- SimpleForm::Inputs::CollectionRadioButtonsInput.reset_i18n_cache :boolean_collection
8
- end
9
-
10
6
  test 'input generates boolean radio buttons by default for radio types' do
11
7
  with_input_for @user, :active, :radio_buttons
12
8
  assert_select 'input[type=radio][value=true].radio_buttons#user_active_true'
@@ -439,4 +435,12 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
439
435
  assert_select 'span.radio > label', '200'
440
436
  end
441
437
  end
438
+
439
+ test 'input check boxes with inline style support label custom classes' do
440
+ swap SimpleForm, boolean_style: :inline do
441
+ with_input_for @user, :gender, :radio_buttons, collection: %i[male female], item_label_class: 'beautiful-label'
442
+
443
+ assert_select 'label.beautiful-label', count: 2
444
+ end
445
+ end
442
446
  end
@@ -3,10 +3,6 @@
3
3
  require 'test_helper'
4
4
 
5
5
  class CollectionSelectInputTest < ActionView::TestCase
6
- setup do
7
- SimpleForm::Inputs::CollectionSelectInput.reset_i18n_cache :boolean_collection
8
- end
9
-
10
6
  test 'input generates a boolean select with options by default for select types' do
11
7
  with_input_for @user, :active, :select
12
8
  assert_select 'select.select#user_active'
@@ -284,6 +280,12 @@ class CollectionSelectInputTest < ActionView::TestCase
284
280
  assert_select 'select[required]'
285
281
  end
286
282
 
283
+ test "collection input generated aria-label should contain 'true'" do
284
+ with_input_for @user, :age, :select, collection: 18..30, prompt: "Please select foo"
285
+ assert_select 'select.required'
286
+ assert_select 'select[aria-required=true]'
287
+ end
288
+
287
289
  test 'collection input with select type does not generate required html attribute without blank option' do
288
290
  with_input_for @user, :name, :select, include_blank: false, collection: %w[Jose Carlos]
289
291
  assert_select 'select.required'
@@ -36,15 +36,15 @@ class PriorityInputTest < ActionView::TestCase
36
36
  assert_no_select 'select option[value=""]', /^$/
37
37
  end
38
38
 
39
- test 'priority input does not generate invalid required html attribute' do
39
+ test 'priority input does generate select element with required html attribute' do
40
40
  with_input_for @user, :country, :country
41
41
  assert_select 'select.required'
42
- assert_no_select 'select[required]'
42
+ assert_select 'select[required]'
43
43
  end
44
44
 
45
- test 'priority input does not generate invalid aria-required html attribute' do
45
+ test 'priority input does generate select element with aria-required html attribute' do
46
46
  with_input_for @user, :country, :country
47
47
  assert_select 'select.required'
48
- assert_no_select 'select[aria-required]'
48
+ assert_select 'select[aria-required]'
49
49
  end
50
50
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+ # encoding: UTF-8
3
+ require 'test_helper'
4
+
5
+ class RichTextAreaInputTest < ActionView::TestCase
6
+ test 'input generates a text area for text attributes' do
7
+ with_input_for @user, :description, :text
8
+ assert_select 'textarea.text#user_description'
9
+ end
10
+
11
+ test 'input generates a text area for text attributes that accept placeholder' do
12
+ with_input_for @user, :description, :text, placeholder: 'Put in some text'
13
+ assert_select 'textarea.text[placeholder="Put in some text"]'
14
+ end
15
+ end
@@ -213,8 +213,8 @@ module MiscHelpers
213
213
  end
214
214
  end
215
215
 
216
- def custom_wrapper_with_input_valid_class
217
- SimpleForm.build tag: :div, class: "custom_wrapper", valid_class: :field_without_errors do |b|
216
+ def custom_wrapper_with_input_valid_class(valid_class: :field_without_errors)
217
+ SimpleForm.build tag: :div, class: "custom_wrapper", valid_class: valid_class do |b|
218
218
  b.use :label
219
219
  b.use :input, class: 'inline-class', valid_class: 'is-valid'
220
220
  end
@@ -76,7 +76,11 @@ Friend = Struct.new(:id, :name) do
76
76
  end
77
77
  end
78
78
 
79
- class Tag < Company; end
79
+ class Tag < Company
80
+ def group_method
81
+ ["category-1"]
82
+ end
83
+ end
80
84
 
81
85
  TagGroup = Struct.new(:id, :name, :tags)
82
86
 
@@ -200,7 +204,7 @@ class User
200
204
 
201
205
  def self.human_attribute_name(attribute, options = {})
202
206
  case attribute
203
- when 'name'
207
+ when 'name', :name
204
208
  'Super User Name!'
205
209
  when 'description'
206
210
  'User Description!'
@@ -329,3 +333,25 @@ end
329
333
 
330
334
  class UserNumber1And2 < User
331
335
  end
336
+
337
+ class UserWithAttachment < User
338
+ def avatar_attachment
339
+ OpenStruct.new
340
+ end
341
+
342
+ def avatars_attachments
343
+ OpenStruct.new
344
+ end
345
+
346
+ def remote_cover_url
347
+ "/uploads/cover.png"
348
+ end
349
+
350
+ def profile_image_attacher
351
+ OpenStruct.new
352
+ end
353
+
354
+ def portrait_file_name
355
+ "portrait.png"
356
+ end
357
+ end
data/test/test_helper.rb CHANGED
@@ -1,15 +1,13 @@
1
1
  # frozen_string_literal: true
2
- require 'bundler/setup'
3
-
4
2
  require 'minitest/autorun'
5
3
 
6
4
  require 'active_model'
7
5
  require 'action_controller'
8
6
  require 'action_view'
7
+
9
8
  ActionView::RoutingUrlFor.send(:include, ActionDispatch::Routing::UrlFor)
10
9
 
11
10
  require 'action_view/template'
12
-
13
11
  require 'action_view/test_case'
14
12
 
15
13
  module Rails
@@ -41,10 +39,14 @@ if ActiveSupport::TestCase.respond_to?(:test_order=)
41
39
  ActiveSupport::TestCase.test_order = :random
42
40
  end
43
41
 
42
+ require "rails/test_unit/line_filtering"
43
+
44
44
  class ActionView::TestCase
45
45
  include MiscHelpers
46
46
  include SimpleForm::ActionViewExtensions::FormHelper
47
47
 
48
+ extend Rails::LineFiltering
49
+
48
50
  setup :set_controller
49
51
  setup :setup_users
50
52
 
@@ -58,7 +60,7 @@ class ActionView::TestCase
58
60
 
59
61
  @validating_user = ValidatingUser.build({
60
62
  name: 'Tester McTesterson',
61
- description: 'A test user of the most distinguised caliber',
63
+ description: 'A test user of the most distinguished caliber',
62
64
  home_picture: 'Home picture',
63
65
  age: 19,
64
66
  amount: 15,
@@ -89,4 +91,5 @@ class ActionView::TestCase
89
91
  alias :validating_user_path :user_path
90
92
  alias :validating_users_path :user_path
91
93
  alias :other_validating_user_path :user_path
94
+ alias :user_with_attachment_path :user_path
92
95
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Valim
8
8
  - Carlos Antônio
9
9
  - Rafael França
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-11-22 00:00:00.000000000 Z
13
+ date: 2021-02-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
@@ -18,30 +18,30 @@ dependencies:
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '5.0'
21
+ version: '5.2'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: '5.0'
28
+ version: '5.2'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: actionpack
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: '5.0'
35
+ version: '5.2'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: '5.0'
42
+ version: '5.2'
43
43
  description: Forms made easy!
44
- email: opensource@plataformatec.com.br
44
+ email: heartcombo@googlegroups.com
45
45
  executables: []
46
46
  extensions: []
47
47
  extra_rdoc_files: []
@@ -82,7 +82,6 @@ files:
82
82
  - lib/simple_form/helpers/readonly.rb
83
83
  - lib/simple_form/helpers/required.rb
84
84
  - lib/simple_form/helpers/validators.rb
85
- - lib/simple_form/i18n_cache.rb
86
85
  - lib/simple_form/inputs.rb
87
86
  - lib/simple_form/inputs/base.rb
88
87
  - lib/simple_form/inputs/block_input.rb
@@ -100,6 +99,7 @@ files:
100
99
  - lib/simple_form/inputs/password_input.rb
101
100
  - lib/simple_form/inputs/priority_input.rb
102
101
  - lib/simple_form/inputs/range_input.rb
102
+ - lib/simple_form/inputs/rich_text_area_input.rb
103
103
  - lib/simple_form/inputs/string_input.rb
104
104
  - lib/simple_form/inputs/text_input.rb
105
105
  - lib/simple_form/map_type.rb
@@ -142,6 +142,7 @@ files:
142
142
  - test/inputs/priority_input_test.rb
143
143
  - test/inputs/readonly_test.rb
144
144
  - test/inputs/required_test.rb
145
+ - test/inputs/rich_text_area_input_test.rb
145
146
  - test/inputs/string_input_test.rb
146
147
  - test/inputs/text_input_test.rb
147
148
  - test/simple_form_test.rb
@@ -150,11 +151,11 @@ files:
150
151
  - test/support/mock_controller.rb
151
152
  - test/support/models.rb
152
153
  - test/test_helper.rb
153
- homepage: https://github.com/plataformatec/simple_form
154
+ homepage: https://github.com/heartcombo/simple_form
154
155
  licenses:
155
156
  - MIT
156
157
  metadata: {}
157
- post_install_message:
158
+ post_install_message:
158
159
  rdoc_options: []
159
160
  require_paths:
160
161
  - lib
@@ -162,16 +163,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
163
  requirements:
163
164
  - - ">="
164
165
  - !ruby/object:Gem::Version
165
- version: '0'
166
+ version: 2.5.0
166
167
  required_rubygems_version: !ruby/object:Gem::Requirement
167
168
  requirements:
168
169
  - - ">="
169
170
  - !ruby/object:Gem::Version
170
171
  version: '0'
171
172
  requirements: []
172
- rubyforge_project: simple_form
173
- rubygems_version: 2.7.6
174
- signing_key:
173
+ rubygems_version: 3.2.6
174
+ signing_key:
175
175
  specification_version: 4
176
176
  summary: Forms made easy!
177
177
  test_files:
@@ -197,6 +197,7 @@ test_files:
197
197
  - test/simple_form_test.rb
198
198
  - test/inputs/string_input_test.rb
199
199
  - test/inputs/numeric_input_test.rb
200
+ - test/inputs/rich_text_area_input_test.rb
200
201
  - test/inputs/readonly_test.rb
201
202
  - test/inputs/grouped_collection_select_input_test.rb
202
203
  - test/inputs/text_input_test.rb
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
- module SimpleForm
3
- # A lot of configuration values are retrived from I18n,
4
- # like boolean collection, required string. This module provides
5
- # caching facility to speed up form construction.
6
- module I18nCache
7
- def i18n_cache(key)
8
- get_i18n_cache(key)[I18n.locale] ||= yield.freeze
9
- end
10
-
11
- def get_i18n_cache(key)
12
- if class_variable_defined?(:"@@#{key}")
13
- class_variable_get(:"@@#{key}")
14
- else
15
- reset_i18n_cache(key)
16
- end
17
- end
18
-
19
- def reset_i18n_cache(key)
20
- class_variable_set(:"@@#{key}", {})
21
- end
22
- end
23
- end