rails_bootstrap_form 0.6.0 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
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 +7 -7
  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 +15 -3
  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 +2 -2
  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.2".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.2
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