rails_bootstrap_form 0.6.0 → 0.6.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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +111 -2
  3. data/Gemfile.lock +9 -3
  4. data/README.md +68 -0
  5. data/Rakefile +2 -0
  6. data/demo/app/views/users/_horizontal_form.html.erb +6 -6
  7. data/demo/app/views/users/_vertical_form.html.erb +8 -8
  8. data/demo/config/database.yml +7 -15
  9. data/demo/db/schema.rb +8 -5
  10. data/gemfiles/common.gemfile +10 -2
  11. data/lib/rails_bootstrap_form/bootstrap_form_builder.rb +1 -1
  12. data/lib/rails_bootstrap_form/{components → helpers}/check_box.rb +1 -3
  13. data/lib/rails_bootstrap_form/{components → helpers}/errors.rb +1 -1
  14. data/lib/rails_bootstrap_form/{components → helpers}/help_text.rb +1 -1
  15. data/lib/rails_bootstrap_form/{components → helpers}/labels.rb +1 -1
  16. data/lib/rails_bootstrap_form/{components → helpers}/radio_button.rb +1 -3
  17. data/lib/rails_bootstrap_form/{components → helpers}/required_field.rb +1 -1
  18. data/lib/rails_bootstrap_form/helpers.rb +15 -0
  19. data/lib/rails_bootstrap_form/inputs/base.rb +33 -0
  20. data/lib/rails_bootstrap_form/inputs/check_box.rb +45 -0
  21. data/lib/rails_bootstrap_form/inputs/collection_check_boxes.rb +41 -0
  22. data/lib/rails_bootstrap_form/inputs/collection_radio_buttons.rb +39 -0
  23. data/lib/rails_bootstrap_form/inputs/collection_select.rb +21 -0
  24. data/lib/rails_bootstrap_form/inputs/color_field.rb +21 -0
  25. data/lib/rails_bootstrap_form/inputs/date_field.rb +15 -0
  26. data/lib/rails_bootstrap_form/inputs/date_select.rb +15 -0
  27. data/lib/rails_bootstrap_form/inputs/datetime_field.rb +15 -0
  28. data/lib/rails_bootstrap_form/inputs/datetime_local_field.rb +15 -0
  29. data/lib/rails_bootstrap_form/inputs/datetime_select.rb +15 -0
  30. data/lib/rails_bootstrap_form/inputs/email_field.rb +15 -0
  31. data/lib/rails_bootstrap_form/inputs/file_field.rb +15 -0
  32. data/lib/rails_bootstrap_form/inputs/grouped_collection_select.rb +21 -0
  33. data/lib/rails_bootstrap_form/inputs/hidden_field.rb +19 -0
  34. data/lib/rails_bootstrap_form/inputs/month_field.rb +15 -0
  35. data/lib/rails_bootstrap_form/inputs/number_field.rb +15 -0
  36. data/lib/rails_bootstrap_form/inputs/password_field.rb +15 -0
  37. data/lib/rails_bootstrap_form/inputs/phone_field.rb +15 -0
  38. data/lib/rails_bootstrap_form/inputs/radio_button.rb +45 -0
  39. data/lib/rails_bootstrap_form/inputs/range_field.rb +21 -0
  40. data/lib/rails_bootstrap_form/inputs/search_field.rb +15 -0
  41. data/lib/rails_bootstrap_form/inputs/select.rb +21 -0
  42. data/lib/rails_bootstrap_form/inputs/static_field.rb +30 -0
  43. data/lib/rails_bootstrap_form/inputs/telephone_field.rb +15 -0
  44. data/lib/rails_bootstrap_form/inputs/text_area.rb +15 -0
  45. data/lib/rails_bootstrap_form/inputs/text_field.rb +15 -0
  46. data/lib/rails_bootstrap_form/inputs/time_field.rb +15 -0
  47. data/lib/rails_bootstrap_form/inputs/time_select.rb +15 -0
  48. data/lib/rails_bootstrap_form/inputs/time_zone_select.rb +21 -0
  49. data/lib/rails_bootstrap_form/inputs/url_field.rb +15 -0
  50. data/lib/rails_bootstrap_form/inputs/week_field.rb +15 -0
  51. data/lib/rails_bootstrap_form/inputs.rb +67 -235
  52. data/lib/rails_bootstrap_form/version.rb +1 -1
  53. data/lib/rails_bootstrap_form.rb +2 -2
  54. metadata +69 -10
  55. data/lib/rails_bootstrap_form/components.rb +0 -23
@@ -3,241 +3,73 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  module RailsBootstrapForm
6
- include Helpers
7
-
8
6
  module Inputs
9
- FIELD_HELPERS = %i[
10
- text_field
11
- url_field
12
- search_field
13
- telephone_field
14
- number_field
15
- email_field
16
- file_field
17
- phone_field
18
- password_field
19
- text_area
20
- date_field
21
- time_field
22
- datetime_field
23
- datetime_local_field
24
- month_field
25
- week_field
26
- ].freeze
27
-
28
- DATE_SELECT_HELPERS = %i[
29
- date_select
30
- time_select
31
- datetime_select
32
- ].freeze
33
-
34
- FIELD_HELPERS.each do |field_tag_name|
35
- define_method(field_tag_name) do |attribute, options = {}|
36
- field_wrapper_builder(attribute, options) do
37
- super(attribute, options)
38
- end
39
- end
40
- end
41
-
42
- DATE_SELECT_HELPERS.each do |field_tag_name|
43
- define_method(field_tag_name) do |attribute, options = {}, html_options = {}|
44
- options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
45
-
46
- field_wrapper_builder(attribute, options, html_options) do
47
- tag.div(class: control_specific_class(field_tag_name)) do
48
- super(attribute, options, html_options)
49
- end
50
- end
51
- end
52
- end
53
-
54
- def select(attribute, choices = nil, options = {}, html_options = {}, &block)
55
- options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
56
-
57
- field_wrapper_builder(attribute, options, html_options) do
58
- super(attribute, choices, options, html_options, &block)
59
- end
60
- end
61
-
62
- def collection_select(attribute, collection, value_method, text_method, options = {}, html_options = {})
63
- options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
64
-
65
- field_wrapper_builder(attribute, options, html_options) do
66
- super(attribute, collection, value_method, text_method, options, html_options)
67
- end
68
- end
69
-
70
- def grouped_collection_select(attribute, collection, group_method, group_label_method, option_key_method, option_value_method, options = {}, html_options = {})
71
- options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
72
-
73
- field_wrapper_builder(attribute, options, html_options) do
74
- super(attribute, collection, group_method, group_label_method, option_key_method, option_value_method, options, html_options)
75
- end
76
- end
77
-
78
- def time_zone_select(attribute, priority_zones = nil, options = {}, html_options = {})
79
- options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
80
-
81
- field_wrapper_builder(attribute, options, html_options) do
82
- super(attribute, priority_zones, options, html_options)
83
- end
84
- end
85
-
86
- def range_field(attribute, options = {})
87
- options = {bootstrap_form: {field_class: "form-range"}}.deep_merge!(options)
88
-
89
- field_wrapper_builder(attribute, options) do
90
- super(attribute, options)
91
- end
92
- end
93
-
94
- def color_field(attribute, options = {})
95
- options = {bootstrap_form: {field_class: "form-control form-control-color"}}.deep_merge!(options)
96
-
97
- field_wrapper_builder(attribute, options) do
98
- super(attribute, options)
99
- end
100
- end
101
-
102
- def hidden_field(attribute, options = {})
103
- options[:value] = object.send(attribute) unless options.key?(:value)
104
-
105
- super(attribute, options)
106
- end
107
-
108
- def static_field(*args)
109
- options = args.extract_options!
110
- attribute = args.first
111
-
112
- static_options = options.merge(
113
- readonly: true,
114
- disabled: true,
115
- bootstrap_form: {
116
- field_class: bootstrap_form_options.static_field_class
117
- }
118
- )
119
-
120
- static_options[:value] = object.send(attribute) unless options.key?(:value)
121
-
122
- text_field(attribute, static_options)
123
- end
124
-
125
- def check_box(attribute, options = {}, checked_value = "1", unchecked_value = "0", &block)
126
- bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap_form))
127
-
128
- options[:class] = check_box_classes(attribute, options)
129
-
130
- check_box_field = super(attribute, options, checked_value, unchecked_value)
131
- check_box_help_text = help_text(attribute, bootstrap_options)
132
-
133
- check_box_label = check_box_label(attribute, checked_value, options, bootstrap_options, &block)
134
-
135
- check_box_html = tag.div(**check_box_wrapper_options(bootstrap_options)) do
136
- concat(check_box_field)
137
- concat(check_box_label)
138
- concat(check_box_help_text) unless bootstrap_options.inline?
139
- concat(generate_error(attribute)) if (is_invalid?(attribute) && !bootstrap_options.inline?)
140
- end
141
-
142
- if bootstrap_options.inline?
143
- check_box_html
144
- else
145
- if bootstrap_options.layout_horizontal?
146
- tag.div(class: field_wrapper_classes(bootstrap_options)) do
147
- tag.div(class: check_box_container_classes(bootstrap_options)) do
148
- check_box_html
149
- end
150
- end
151
- else
152
- check_box_html
153
- end
154
- end
155
- end
156
-
157
- def radio_button(attribute, value, options = {})
158
- bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap_form))
159
-
160
- options[:class] = radio_button_classes(attribute, options)
161
-
162
- radio_button_field = super(attribute, value, options)
163
- radio_button_help_text = help_text(attribute, bootstrap_options)
164
-
165
- radio_button_label = radio_button_label(attribute, value, options, bootstrap_options)
166
-
167
- radio_button_html = tag.div(**radio_button_wrapper_options(bootstrap_options)) do
168
- concat(radio_button_field)
169
- concat(radio_button_label)
170
- concat(radio_button_help_text) unless bootstrap_options.inline?
171
- concat(generate_error(attribute)) if (is_invalid?(attribute) && !bootstrap_options.inline?)
172
- end
173
-
174
- if bootstrap_options.inline?
175
- radio_button_html
176
- else
177
- if bootstrap_options.layout_horizontal?
178
- tag.div(class: field_wrapper_classes(bootstrap_options)) do
179
- tag.div(class: radio_button_container_classes(bootstrap_options)) do
180
- radio_button_html
181
- end
182
- end
183
- else
184
- radio_button_html
185
- end
186
- end
187
- end
188
-
189
- def collection_check_boxes(attribute, collection, value_method, text_method, options = {}, html_options = {}, &block)
190
- options[:multiple] = true
191
-
192
- inputs = ActiveSupport::SafeBuffer.new
193
-
194
- collection.each do |object|
195
- input_value = value_method.respond_to?(:call) ? value_method.call(object) : object.send(value_method)
196
- input_options = {
197
- bootstrap_form: {
198
- label_text: text_method.respond_to?(:call) ? text_method.call(object) : object.send(text_method),
199
- inline: true
200
- }
201
- }.deep_merge!(options)
202
-
203
- inputs << check_box(attribute, input_options, input_value, nil)
204
- end
205
-
206
- if options.delete(:include_hidden) { true }
207
- inputs.prepend(hidden_field(attribute, value: "", multiple: options[:multiple]))
208
- end
209
-
210
- field_wrapper_builder(attribute, options, html_options) do
211
- concat(tag.div(class: control_specific_class(:collection_check_boxes)) do
212
- concat(inputs)
213
- end)
214
- end
215
- end
216
-
217
- def collection_radio_buttons(attribute, collection, value_method, text_method, options = {}, html_options = {}, &block)
218
- inputs = ActiveSupport::SafeBuffer.new
219
-
220
- collection.each do |object|
221
- input_value = value_method.respond_to?(:call) ? value_method.call(object) : object.send(value_method)
222
- input_options = {
223
- bootstrap_form: {
224
- label_text: text_method.respond_to?(:call) ? text_method.call(object) : object.send(text_method),
225
- inline: true
226
- }
227
- }.deep_merge!(options)
228
-
229
- if (checked = input_options[:checked])
230
- input_options[:checked] = collection_input_checked?(checked, object, object.send(value_method))
231
- end
232
-
233
- inputs << radio_button(attribute, input_value, input_options)
234
- end
235
-
236
- field_wrapper_builder(attribute, options, html_options) do
237
- concat(tag.div(class: control_specific_class(:collection_radio_buttons)) do
238
- concat(inputs)
239
- end)
240
- end
241
- end
7
+ extend ActiveSupport::Autoload
8
+
9
+ autoload :Base
10
+ autoload :CheckBox
11
+ autoload :CollectionCheckBoxes
12
+ autoload :CollectionRadioButtons
13
+ autoload :CollectionSelect
14
+ autoload :ColorField
15
+ autoload :DateField
16
+ autoload :DateSelect
17
+ autoload :DatetimeField
18
+ autoload :DatetimeLocalField
19
+ autoload :DatetimeSelect
20
+ autoload :EmailField
21
+ autoload :FileField
22
+ autoload :GroupedCollectionSelect
23
+ autoload :HiddenField
24
+ autoload :MonthField
25
+ autoload :NumberField
26
+ autoload :PasswordField
27
+ autoload :PhoneField
28
+ autoload :RadioButton
29
+ autoload :RangeField
30
+ autoload :SearchField
31
+ autoload :Select
32
+ autoload :StaticField
33
+ autoload :TelephoneField
34
+ autoload :TextArea
35
+ autoload :TextField
36
+ autoload :TimeField
37
+ autoload :TimeSelect
38
+ autoload :TimeZoneSelect
39
+ autoload :UrlField
40
+ autoload :WeekField
41
+
42
+ include Base
43
+ include CheckBox
44
+ include CollectionCheckBoxes
45
+ include CollectionRadioButtons
46
+ include CollectionSelect
47
+ include ColorField
48
+ include DateField
49
+ include DateSelect
50
+ include DatetimeField
51
+ include DatetimeLocalField
52
+ include DatetimeSelect
53
+ include EmailField
54
+ include FileField
55
+ include GroupedCollectionSelect
56
+ include HiddenField
57
+ include MonthField
58
+ include NumberField
59
+ include PasswordField
60
+ include PhoneField
61
+ include RadioButton
62
+ include RangeField
63
+ include SearchField
64
+ include Select
65
+ include StaticField
66
+ include TelephoneField
67
+ include TextArea
68
+ include TextField
69
+ include TimeField
70
+ include TimeSelect
71
+ include TimeZoneSelect
72
+ include UrlField
73
+ include WeekField
242
74
  end
243
75
  end
@@ -3,6 +3,6 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  module RailsBootstrapForm
6
- VERSION = "0.6.0".freeze
6
+ VERSION = "0.6.1".freeze
7
7
  REQUIRED_RAILS_VERSION = "~> 7.0".freeze
8
8
  end
@@ -13,7 +13,6 @@ module RailsBootstrapForm
13
13
  autoload :Configuration
14
14
  autoload :BootstrapFormOptions
15
15
  autoload :BootstrapFormBuilder
16
- autoload :Components
17
16
  autoload :FieldWrapperBuilder
18
17
  autoload :InputGroupBuilder
19
18
  autoload :Inputs
@@ -23,7 +22,8 @@ module RailsBootstrapForm
23
22
  class << self
24
23
  def eager_load!
25
24
  super
26
- RailsBootstrapForm::Components.eager_load!
25
+ RailsBootstrapForm::Helpers.eager_load!
26
+ RailsBootstrapForm::Inputs.eager_load!
27
27
  end
28
28
 
29
29
  def config
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_bootstrap_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harshal LADHE (shivam091)
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-22 00:00:00.000000000 Z
11
+ date: 2023-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: generator_spec
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: actionpack
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '7.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '7.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activemodel
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '7.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '7.0'
27
55
  description: Rails form helpers and form builder extensions that make it super easy
28
56
  to build Bootstrap 5 forms.
29
57
  email:
@@ -111,19 +139,50 @@ files:
111
139
  - lib/rails_bootstrap_form/action_view_extensions/bootstrap_form_helper.rb
112
140
  - lib/rails_bootstrap_form/bootstrap_form_builder.rb
113
141
  - lib/rails_bootstrap_form/bootstrap_form_options.rb
114
- - lib/rails_bootstrap_form/components.rb
115
- - lib/rails_bootstrap_form/components/check_box.rb
116
- - lib/rails_bootstrap_form/components/errors.rb
117
- - lib/rails_bootstrap_form/components/help_text.rb
118
- - lib/rails_bootstrap_form/components/labels.rb
119
- - lib/rails_bootstrap_form/components/radio_button.rb
120
- - lib/rails_bootstrap_form/components/required_field.rb
121
142
  - lib/rails_bootstrap_form/configuration.rb
122
143
  - lib/rails_bootstrap_form/engine.rb
123
144
  - lib/rails_bootstrap_form/field_wrapper_builder.rb
124
145
  - lib/rails_bootstrap_form/helpers.rb
146
+ - lib/rails_bootstrap_form/helpers/check_box.rb
147
+ - lib/rails_bootstrap_form/helpers/errors.rb
148
+ - lib/rails_bootstrap_form/helpers/help_text.rb
149
+ - lib/rails_bootstrap_form/helpers/labels.rb
150
+ - lib/rails_bootstrap_form/helpers/radio_button.rb
151
+ - lib/rails_bootstrap_form/helpers/required_field.rb
125
152
  - lib/rails_bootstrap_form/input_group_builder.rb
126
153
  - lib/rails_bootstrap_form/inputs.rb
154
+ - lib/rails_bootstrap_form/inputs/base.rb
155
+ - lib/rails_bootstrap_form/inputs/check_box.rb
156
+ - lib/rails_bootstrap_form/inputs/collection_check_boxes.rb
157
+ - lib/rails_bootstrap_form/inputs/collection_radio_buttons.rb
158
+ - lib/rails_bootstrap_form/inputs/collection_select.rb
159
+ - lib/rails_bootstrap_form/inputs/color_field.rb
160
+ - lib/rails_bootstrap_form/inputs/date_field.rb
161
+ - lib/rails_bootstrap_form/inputs/date_select.rb
162
+ - lib/rails_bootstrap_form/inputs/datetime_field.rb
163
+ - lib/rails_bootstrap_form/inputs/datetime_local_field.rb
164
+ - lib/rails_bootstrap_form/inputs/datetime_select.rb
165
+ - lib/rails_bootstrap_form/inputs/email_field.rb
166
+ - lib/rails_bootstrap_form/inputs/file_field.rb
167
+ - lib/rails_bootstrap_form/inputs/grouped_collection_select.rb
168
+ - lib/rails_bootstrap_form/inputs/hidden_field.rb
169
+ - lib/rails_bootstrap_form/inputs/month_field.rb
170
+ - lib/rails_bootstrap_form/inputs/number_field.rb
171
+ - lib/rails_bootstrap_form/inputs/password_field.rb
172
+ - lib/rails_bootstrap_form/inputs/phone_field.rb
173
+ - lib/rails_bootstrap_form/inputs/radio_button.rb
174
+ - lib/rails_bootstrap_form/inputs/range_field.rb
175
+ - lib/rails_bootstrap_form/inputs/search_field.rb
176
+ - lib/rails_bootstrap_form/inputs/select.rb
177
+ - lib/rails_bootstrap_form/inputs/static_field.rb
178
+ - lib/rails_bootstrap_form/inputs/telephone_field.rb
179
+ - lib/rails_bootstrap_form/inputs/text_area.rb
180
+ - lib/rails_bootstrap_form/inputs/text_field.rb
181
+ - lib/rails_bootstrap_form/inputs/time_field.rb
182
+ - lib/rails_bootstrap_form/inputs/time_select.rb
183
+ - lib/rails_bootstrap_form/inputs/time_zone_select.rb
184
+ - lib/rails_bootstrap_form/inputs/url_field.rb
185
+ - lib/rails_bootstrap_form/inputs/week_field.rb
127
186
  - lib/rails_bootstrap_form/version.rb
128
187
  - sig/rails_bootstrap_form.rbs
129
188
  homepage: https://github.com/shivam091/rails_bootstrap_form
@@ -133,7 +192,7 @@ metadata:
133
192
  allowed_push_host: https://rubygems.org
134
193
  homepage_uri: https://github.com/shivam091/rails_bootstrap_form
135
194
  source_code_uri: https://github.com/shivam091/rails_bootstrap_form
136
- changelog_uri: https://github.com/shivam091/rails_bootstrap_form/CHANGELOG.md
195
+ changelog_uri: https://github.com/shivam091/rails_bootstrap_form/blob/main/CHANGELOG.md
137
196
  post_install_message:
138
197
  rdoc_options: []
139
198
  require_paths:
@@ -1,23 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- # -*- frozen_string_literal: true -*-
3
- # -*- warn_indent: true -*-
4
-
5
- module RailsBootstrapForm
6
- module Components
7
- extend ActiveSupport::Autoload
8
-
9
- autoload :HelpText
10
- autoload :Labels
11
- autoload :RequiredField
12
- autoload :Errors
13
- autoload :CheckBox
14
- autoload :RadioButton
15
-
16
- include HelpText
17
- include Labels
18
- include RequiredField
19
- include Errors
20
- include CheckBox
21
- include RadioButton
22
- end
23
- end