rails_bootstrap_form 0.5.2 → 0.6.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/app/assets/stylesheets/rails_bootstrap_form.css +3 -0
- data/demo/app/views/users/_form.html.erb +2 -0
- data/demo/app/views/users/_horizontal_form.html.erb +32 -0
- data/demo/app/views/users/_vertical_form.html.erb +3 -3
- data/lib/rails_bootstrap_form/bootstrap_form_options.rb +37 -6
- data/lib/rails_bootstrap_form/components/check_box.rb +12 -2
- data/lib/rails_bootstrap_form/components/labels.rb +7 -1
- data/lib/rails_bootstrap_form/components/radio_button.rb +12 -2
- data/lib/rails_bootstrap_form/field_wrapper_builder.rb +31 -17
- data/lib/rails_bootstrap_form/helpers.rb +30 -0
- data/lib/rails_bootstrap_form/inputs.rb +35 -14
- data/lib/rails_bootstrap_form/version.rb +1 -1
- data/lib/rails_bootstrap_form.rb +1 -0
- metadata +4 -3
- data/lib/rails_bootstrap_form/inputs/base.rb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa73fbc58e6dd0b2dc4b823cd6732de17b0e84e52d9177bce4684b61609238e0
|
4
|
+
data.tar.gz: f190515751e2cbc2bf51c195c8aa0ac7e2459ae040f1ba8dd544532f6887a514
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f41528a442151162803ec730b18fde0d10cd002446e5a402c037acb4aea7933e5749a5f5d3824762a83fc41a5fc2d87ecedafc7371755c45cdeafcb783f13a7f
|
7
|
+
data.tar.gz: 139a3f9bd52be5936676ddc8b730a9a211f715f32b8ca8ba12ad6d045233ed9836e90317bf33a43ab07e27ac52c0ae77e5c9c290e9157e75def6b07341a96a30
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
<div class="card card-primary my-3">
|
2
|
+
<div class="card-header fw-bold">
|
3
|
+
Profile Form (Horizontal layout)
|
4
|
+
</div>
|
5
|
+
<div class="card-body">
|
6
|
+
<%= bootstrap_form_for @user, bootstrap_form: {layout: :horizontal} do |form| %>
|
7
|
+
<%= form.text_field :name, autocomplete: "new-name" %>
|
8
|
+
<%= form.text_field :email, autocomplete: "new-email" %>
|
9
|
+
<%= form.text_field :password, autocomplete: "new-password" %>
|
10
|
+
<%= form.phone_field :mobile_number %>
|
11
|
+
<%= form.date_field :birth_date %>
|
12
|
+
<%= form.radio_button :terms, 1, required: true %>
|
13
|
+
<%= form.range_field :excellence %>
|
14
|
+
<%= form.url_field :blog_url %>
|
15
|
+
<%= form.collection_radio_buttons :fruit_id, ::Fruit.all, :id, :name, {bootstrap_form: {}, checked: form.object.fruit_id} %>
|
16
|
+
<%= form.color_field :favorite_color %>
|
17
|
+
<%= form.collection_check_boxes :skill_ids, ::Skill.all, :id, :name, {bootstrap_form: {}} %>
|
18
|
+
<%= form.fields_for :address, include_id: false, bootstrap_form: {layout: :horizontal} do |address_form| %>
|
19
|
+
<%= address_form.text_area :street %>
|
20
|
+
<%= address_form.text_field :state %>
|
21
|
+
<%= address_form.grouped_collection_select :city, ::Country.includes(:cities), :cities, :name, :id, :name, {include_blank: "Select city"} %>
|
22
|
+
<%= address_form.text_field :postal_code %>
|
23
|
+
<%= address_form.select :country_id, options_for_select(::Country.pluck(:name, :id), address_form.object.country_id),
|
24
|
+
{include_blank: "Select Country", bootstrap_form: {}} %>
|
25
|
+
<% end %>
|
26
|
+
<div class="mt-3">
|
27
|
+
<%= form.submit "Register", class: "btn btn-primary" %>
|
28
|
+
<%= link_to "Cancel", users_path, class: "btn btn-secondary" %>
|
29
|
+
</div>
|
30
|
+
<% end %>
|
31
|
+
</div>
|
32
|
+
</div>
|
@@ -12,13 +12,13 @@
|
|
12
12
|
<%= form.check_box :terms, bootstrap_form: {switch: false}, required: true %>
|
13
13
|
<%= form.range_field :excellence %>
|
14
14
|
<%= form.url_field :blog_url %>
|
15
|
-
<%= form.collection_radio_buttons :fruit_id, ::Fruit.all, :id, :name, {bootstrap_form: {
|
15
|
+
<%= form.collection_radio_buttons :fruit_id, ::Fruit.all, :id, :name, {bootstrap_form: {}, checked: form.object.fruit_id} %>
|
16
16
|
<%= form.color_field :favorite_color %>
|
17
|
-
<%= form.collection_check_boxes :skill_ids, ::Skill.all, :id, :name, {bootstrap_form: {
|
17
|
+
<%= form.collection_check_boxes :skill_ids, ::Skill.all, :id, :name, {bootstrap_form: {}} %>
|
18
18
|
<%= form.fields_for :address, include_id: false do |address_form| %>
|
19
19
|
<%= address_form.text_area :street %>
|
20
20
|
<%= address_form.text_field :state %>
|
21
|
-
<%= address_form.grouped_collection_select :city, ::Country.
|
21
|
+
<%= address_form.grouped_collection_select :city, ::Country.includes(:cities), :cities, :name, :id, :name, {include_blank: "Select city"} %>
|
22
22
|
<%= address_form.text_field :postal_code %>
|
23
23
|
<%= address_form.select :country_id, options_for_select(::Country.pluck(:name, :id), address_form.object.country_id),
|
24
24
|
{include_blank: "Select Country", bootstrap_form: {}} %>
|
@@ -50,8 +50,9 @@ module RailsBootstrapForm
|
|
50
50
|
# readers. Default is `visually-hidden`
|
51
51
|
attr_accessor :hide_class
|
52
52
|
|
53
|
-
# Default CSS class that will be applied to all label tags
|
54
|
-
#
|
53
|
+
# Default CSS class that will be applied to all label tags when layout is
|
54
|
+
# vertical.
|
55
|
+
# The default value is `form-label`.
|
55
56
|
attr_accessor :label_class
|
56
57
|
|
57
58
|
# An additional CSS class that will be added along with the existing
|
@@ -98,29 +99,53 @@ module RailsBootstrapForm
|
|
98
99
|
# The valid values are `sm` and `lg`. The default value is `nil`.
|
99
100
|
attr_accessor :size
|
100
101
|
|
102
|
+
# Option to render checkboxes and radio buttons inline.
|
103
|
+
# The default value if `false`.
|
104
|
+
#
|
105
|
+
# Example:
|
106
|
+
# form.collection_radio_buttons :choices, ["yes", "no"], :to_s, :to_s, bootstrap_form: {inline: true}
|
107
|
+
attr_accessor :inline
|
108
|
+
|
109
|
+
# Default CSS class that will be applied to all label tags when layout is
|
110
|
+
# horizontal.
|
111
|
+
# The default value is `col-form-label`.
|
112
|
+
attr_accessor :label_col_class
|
113
|
+
|
114
|
+
# Default CSS class for label column when using horizontal form.
|
115
|
+
# The default value is `col-sm-2`.
|
116
|
+
attr_accessor :label_col_wrapper_class
|
117
|
+
|
118
|
+
# Default CSS class for control column when using horizontal form.
|
119
|
+
# The default value is `col-sm-10`.
|
120
|
+
attr_accessor :field_col_wrapper_class
|
121
|
+
|
101
122
|
def initialize(options = {})
|
102
123
|
set_defaults
|
103
124
|
set_bootstrap_form_options(options)
|
104
125
|
end
|
105
126
|
|
106
|
-
def
|
127
|
+
def layout_horizontal?
|
107
128
|
@layout.to_s == "horizontal"
|
108
129
|
end
|
109
130
|
|
110
|
-
def
|
131
|
+
def layout_inline?
|
111
132
|
@layout.to_s == "inline"
|
112
133
|
end
|
113
134
|
|
114
|
-
def
|
135
|
+
def layout_vertical?
|
115
136
|
@layout.to_s == "vertical"
|
116
137
|
end
|
117
138
|
|
139
|
+
def inline?
|
140
|
+
self.inline
|
141
|
+
end
|
142
|
+
|
118
143
|
# This will return a copy of `BootstrapFormOptions` object with new options set
|
119
144
|
# that don't affect original object. This way we can have options specific
|
120
145
|
# to a given form field. For example, we can change grid just for one field:
|
121
146
|
#
|
122
147
|
# bootstrap_form_with model: @user do |f|
|
123
|
-
# f.text_field :email, bootstrap_form: {
|
148
|
+
# f.text_field :email, bootstrap_form: {label_col_wrapper_class: "col-md-6", field_col_wrapper_class: "col-md-6"}
|
124
149
|
# f.password_field :password
|
125
150
|
# end
|
126
151
|
#
|
@@ -160,6 +185,12 @@ module RailsBootstrapForm
|
|
160
185
|
@wrapper_options = {}
|
161
186
|
|
162
187
|
@size = nil
|
188
|
+
|
189
|
+
@inline = false
|
190
|
+
|
191
|
+
@label_col_class = "col-form-label"
|
192
|
+
@label_col_wrapper_class = "col-sm-2"
|
193
|
+
@field_col_wrapper_class = "col-sm-10"
|
163
194
|
end
|
164
195
|
|
165
196
|
private :set_defaults
|
@@ -7,6 +7,8 @@ module RailsBootstrapForm
|
|
7
7
|
module CheckBox
|
8
8
|
extend ActiveSupport::Concern
|
9
9
|
|
10
|
+
include RailsBootstrapForm::Helpers
|
11
|
+
|
10
12
|
def self.included(base_class)
|
11
13
|
def check_box_label(attribute, checked_value, options, bootstrap_options, &block)
|
12
14
|
unless bootstrap_options.skip_label
|
@@ -61,11 +63,19 @@ module RailsBootstrapForm
|
|
61
63
|
def check_box_wrapper_class(bootstrap_options)
|
62
64
|
classes = Array("form-check")
|
63
65
|
classes << "form-switch" if bootstrap_options.switch
|
64
|
-
classes <<
|
66
|
+
classes << "form-check-inline" if bootstrap_options.inline?
|
67
|
+
classes << "mb-3" unless (bootstrap_options.layout_horizontal? || bootstrap_options.inline?)
|
68
|
+
classes.flatten.compact
|
69
|
+
end
|
70
|
+
|
71
|
+
def check_box_container_classes(bootstrap_options)
|
72
|
+
classes = Array(bootstrap_options.field_col_wrapper_class)
|
73
|
+
classes << field_offset_class(bootstrap_options.label_col_wrapper_class)
|
65
74
|
classes.flatten.compact
|
66
75
|
end
|
67
76
|
|
68
|
-
private :check_box_label, :check_box_classes, :check_box_label_class,
|
77
|
+
private :check_box_label, :check_box_classes, :check_box_label_class,
|
78
|
+
:check_box_wrapper_class, :check_box_container_classes
|
69
79
|
end
|
70
80
|
end
|
71
81
|
end
|
@@ -21,7 +21,13 @@ module RailsBootstrapForm
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def label_classes(attribute, bootstrap_options)
|
24
|
-
classes = [
|
24
|
+
classes = []
|
25
|
+
classes << if bootstrap_options.layout_horizontal?
|
26
|
+
[bootstrap_options.label_col_class, bootstrap_options.label_col_wrapper_class]
|
27
|
+
else
|
28
|
+
bootstrap_options.label_class
|
29
|
+
end
|
30
|
+
classes << bootstrap_options.additional_label_class
|
25
31
|
classes << bootstrap_options.hide_class if bootstrap_options.hide_label
|
26
32
|
classes << "required" if is_attribute_required?(attribute)
|
27
33
|
classes << "is-invalid" if is_invalid?(attribute)
|
@@ -7,6 +7,8 @@ module RailsBootstrapForm
|
|
7
7
|
module RadioButton
|
8
8
|
extend ActiveSupport::Concern
|
9
9
|
|
10
|
+
include RailsBootstrapForm::Helpers
|
11
|
+
|
10
12
|
def self.included(base_class)
|
11
13
|
def radio_button_label(attribute, value, options, bootstrap_options)
|
12
14
|
unless bootstrap_options.skip_label
|
@@ -57,11 +59,19 @@ module RailsBootstrapForm
|
|
57
59
|
|
58
60
|
def radio_button_wrapper_class(bootstrap_options)
|
59
61
|
classes = Array("form-check")
|
60
|
-
classes <<
|
62
|
+
classes << "form-check-inline" if bootstrap_options.inline?
|
63
|
+
classes << "mb-3" unless (bootstrap_options.layout_horizontal? || bootstrap_options.inline?)
|
64
|
+
classes.flatten.compact
|
65
|
+
end
|
66
|
+
|
67
|
+
def radio_button_container_classes(bootstrap_options)
|
68
|
+
classes = Array(bootstrap_options.field_col_wrapper_class)
|
69
|
+
classes << field_offset_class(bootstrap_options.label_col_wrapper_class)
|
61
70
|
classes.flatten.compact
|
62
71
|
end
|
63
72
|
|
64
|
-
private :radio_button_label, :radio_button_classes, :radio_button_label_class,
|
73
|
+
private :radio_button_label, :radio_button_classes, :radio_button_label_class,
|
74
|
+
:radio_button_wrapper_class, :radio_button_container_classes
|
65
75
|
end
|
66
76
|
end
|
67
77
|
end
|
@@ -16,35 +16,49 @@ module RailsBootstrapForm
|
|
16
16
|
label = draw_label(attribute, options, bootstrap_options)
|
17
17
|
help_text = help_text(attribute, bootstrap_options)
|
18
18
|
|
19
|
-
if bootstrap_options.
|
19
|
+
if bootstrap_options.layout_horizontal?
|
20
20
|
tag.div(**field_wrapper_options(bootstrap_options)) do
|
21
|
-
concat(
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
21
|
+
concat(label)
|
22
|
+
concat(tag.div(class: bootstrap_options.field_col_wrapper_class) do
|
23
|
+
concat(input_group_wrapper(attribute, bootstrap_options) do
|
24
|
+
capture(&block)
|
25
|
+
end)
|
26
|
+
concat(help_text)
|
26
27
|
end)
|
27
|
-
concat(help_text)
|
28
28
|
end
|
29
29
|
else
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
if bootstrap_options.floating
|
31
|
+
tag.div(**field_wrapper_options(bootstrap_options)) do
|
32
|
+
concat(input_group_wrapper(attribute, bootstrap_options) do
|
33
|
+
tag.div(class: floating_label_classes(attribute)) do
|
34
|
+
concat(capture(&block))
|
35
|
+
concat(label)
|
36
|
+
end
|
37
|
+
end)
|
38
|
+
concat(help_text)
|
39
|
+
end
|
40
|
+
else
|
41
|
+
tag.div(**field_wrapper_options(bootstrap_options)) do
|
42
|
+
concat(label)
|
43
|
+
concat(input_group_wrapper(attribute, bootstrap_options) do
|
44
|
+
capture(&block)
|
45
|
+
end)
|
46
|
+
concat(help_text)
|
47
|
+
end
|
36
48
|
end
|
37
49
|
end
|
38
50
|
end
|
39
51
|
|
40
52
|
def field_wrapper_options(bootstrap_options)
|
41
53
|
{}.tap do |option|
|
42
|
-
option[:class] = field_wrapper_classes
|
54
|
+
option[:class] = field_wrapper_classes(bootstrap_options)
|
43
55
|
end.merge(bootstrap_options.wrapper_options)
|
44
56
|
end
|
45
57
|
|
46
|
-
def field_wrapper_classes
|
47
|
-
classes = [
|
58
|
+
def field_wrapper_classes(bootstrap_options)
|
59
|
+
classes = []
|
60
|
+
classes << "row" if bootstrap_options.layout_horizontal?
|
61
|
+
classes << form_wrapper_default_class
|
48
62
|
classes.flatten.compact
|
49
63
|
end
|
50
64
|
|
@@ -68,7 +82,7 @@ module RailsBootstrapForm
|
|
68
82
|
css_options[:class] = field_classes.flatten.compact
|
69
83
|
css_options.merge!(required_field_options(attribute, options))
|
70
84
|
|
71
|
-
if bootstrap_options.floating
|
85
|
+
if (bootstrap_options.floating && !bootstrap_options.layout_horizontal?)
|
72
86
|
css_options[:placeholder] ||= label_text(attribute, bootstrap_options)
|
73
87
|
end
|
74
88
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- frozen_string_literal: true -*-
|
3
|
+
# -*- warn_indent: true -*-
|
4
|
+
|
5
|
+
module RailsBootstrapForm
|
6
|
+
module Helpers
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
def self.included(base_class)
|
10
|
+
def collection_input_checked?(checked, obj, input_value)
|
11
|
+
checked == input_value || Array(checked).try(:include?, input_value) ||
|
12
|
+
checked == obj || Array(checked).try(:include?, obj)
|
13
|
+
end
|
14
|
+
|
15
|
+
def control_specific_class(field_tag_name)
|
16
|
+
"rails-bootstrap-forms-#{field_tag_name.to_s.tr("_", "-")}"
|
17
|
+
end
|
18
|
+
|
19
|
+
def is_size_valid?(bootstrap_options)
|
20
|
+
bootstrap_options.size && %i(sm lg).include?(bootstrap_options.size)
|
21
|
+
end
|
22
|
+
|
23
|
+
def field_offset_class(label_col_wrapper_class)
|
24
|
+
label_col_wrapper_class.gsub(/\bcol-(\w+)-(\d)\b/, 'offset-\1-\2')
|
25
|
+
end
|
26
|
+
|
27
|
+
private :collection_input_checked?, :control_specific_class, :is_size_valid?
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -3,14 +3,9 @@
|
|
3
3
|
# -*- warn_indent: true -*-
|
4
4
|
|
5
5
|
module RailsBootstrapForm
|
6
|
-
|
7
|
-
|
8
|
-
extend ActiveSupport::Autoload
|
9
|
-
|
10
|
-
autoload :Base
|
11
|
-
|
12
|
-
include Base
|
6
|
+
include Helpers
|
13
7
|
|
8
|
+
module Inputs
|
14
9
|
FIELD_HELPERS = %i[
|
15
10
|
text_field
|
16
11
|
url_field
|
@@ -141,10 +136,22 @@ module RailsBootstrapForm
|
|
141
136
|
concat(check_box_field)
|
142
137
|
concat(check_box_label)
|
143
138
|
concat(check_box_help_text) unless bootstrap_options.inline?
|
144
|
-
concat(generate_error(attribute)) if is_invalid?(attribute) && !bootstrap_options.inline?
|
139
|
+
concat(generate_error(attribute)) if (is_invalid?(attribute) && !bootstrap_options.inline?)
|
145
140
|
end
|
146
141
|
|
147
|
-
|
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
|
148
155
|
end
|
149
156
|
|
150
157
|
def radio_button(attribute, value, options = {})
|
@@ -161,10 +168,22 @@ module RailsBootstrapForm
|
|
161
168
|
concat(radio_button_field)
|
162
169
|
concat(radio_button_label)
|
163
170
|
concat(radio_button_help_text) unless bootstrap_options.inline?
|
164
|
-
concat(generate_error(attribute)) if is_invalid?(attribute) && !bootstrap_options.inline?
|
171
|
+
concat(generate_error(attribute)) if (is_invalid?(attribute) && !bootstrap_options.inline?)
|
165
172
|
end
|
166
173
|
|
167
|
-
|
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
|
168
187
|
end
|
169
188
|
|
170
189
|
def collection_check_boxes(attribute, collection, value_method, text_method, options = {}, html_options = {}, &block)
|
@@ -176,7 +195,8 @@ module RailsBootstrapForm
|
|
176
195
|
input_value = value_method.respond_to?(:call) ? value_method.call(object) : object.send(value_method)
|
177
196
|
input_options = {
|
178
197
|
bootstrap_form: {
|
179
|
-
label_text: text_method.respond_to?(:call) ? text_method.call(object) : object.send(text_method)
|
198
|
+
label_text: text_method.respond_to?(:call) ? text_method.call(object) : object.send(text_method),
|
199
|
+
inline: true
|
180
200
|
}
|
181
201
|
}.deep_merge!(options)
|
182
202
|
|
@@ -184,7 +204,7 @@ module RailsBootstrapForm
|
|
184
204
|
end
|
185
205
|
|
186
206
|
if options.delete(:include_hidden) { true }
|
187
|
-
inputs.prepend
|
207
|
+
inputs.prepend(hidden_field(attribute, value: "", multiple: options[:multiple]))
|
188
208
|
end
|
189
209
|
|
190
210
|
field_wrapper_builder(attribute, options, html_options) do
|
@@ -201,7 +221,8 @@ module RailsBootstrapForm
|
|
201
221
|
input_value = value_method.respond_to?(:call) ? value_method.call(object) : object.send(value_method)
|
202
222
|
input_options = {
|
203
223
|
bootstrap_form: {
|
204
|
-
label_text: text_method.respond_to?(:call) ? text_method.call(object) : object.send(text_method)
|
224
|
+
label_text: text_method.respond_to?(:call) ? text_method.call(object) : object.send(text_method),
|
225
|
+
inline: true
|
205
226
|
}
|
206
227
|
}.deep_merge!(options)
|
207
228
|
|
data/lib/rails_bootstrap_form.rb
CHANGED
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.
|
4
|
+
version: 0.6.0
|
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-
|
11
|
+
date: 2023-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: generator_spec
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- demo/app/views/layouts/application.html.erb
|
66
66
|
- demo/app/views/users/_form.html.erb
|
67
67
|
- demo/app/views/users/_form_without_bootstrap_helpers.html.erb
|
68
|
+
- demo/app/views/users/_horizontal_form.html.erb
|
68
69
|
- demo/app/views/users/_vertical_form.html.erb
|
69
70
|
- demo/app/views/users/edit.html.erb
|
70
71
|
- demo/app/views/users/index.html.erb
|
@@ -120,9 +121,9 @@ files:
|
|
120
121
|
- lib/rails_bootstrap_form/configuration.rb
|
121
122
|
- lib/rails_bootstrap_form/engine.rb
|
122
123
|
- lib/rails_bootstrap_form/field_wrapper_builder.rb
|
124
|
+
- lib/rails_bootstrap_form/helpers.rb
|
123
125
|
- lib/rails_bootstrap_form/input_group_builder.rb
|
124
126
|
- lib/rails_bootstrap_form/inputs.rb
|
125
|
-
- lib/rails_bootstrap_form/inputs/base.rb
|
126
127
|
- lib/rails_bootstrap_form/version.rb
|
127
128
|
- sig/rails_bootstrap_form.rbs
|
128
129
|
homepage: https://github.com/shivam091/rails_bootstrap_form
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
# -*- frozen_string_literal: true -*-
|
3
|
-
# -*- warn_indent: true -*-
|
4
|
-
|
5
|
-
module RailsBootstrapForm
|
6
|
-
module Inputs
|
7
|
-
module Base
|
8
|
-
extend ActiveSupport::Concern
|
9
|
-
|
10
|
-
def self.included(base_class)
|
11
|
-
def collection_input_checked?(checked, obj, input_value)
|
12
|
-
checked == input_value || Array(checked).try(:include?, input_value) ||
|
13
|
-
checked == obj || Array(checked).try(:include?, obj)
|
14
|
-
end
|
15
|
-
|
16
|
-
def control_specific_class(field_tag_name)
|
17
|
-
"rails-bootstrap-forms-#{field_tag_name.to_s.tr("_", "-")}"
|
18
|
-
end
|
19
|
-
|
20
|
-
def is_size_valid?(bootstrap_options)
|
21
|
-
bootstrap_options.size && %i(sm lg).include?(bootstrap_options.size)
|
22
|
-
end
|
23
|
-
|
24
|
-
private :collection_input_checked?, :control_specific_class, :is_size_valid?
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|