rails_bootstrap_form 0.5.1 → 0.5.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 75f1c7df21987622c3341031991186ceff26dc21f48c301ee2017fb47dd1074a
4
- data.tar.gz: e84fbf45f5bcff4bfad1904253c5e549fa616ebc9d646b762facb78cca121ce7
3
+ metadata.gz: ed3da45cc2109afbc15026f1a12f80000890c7b7759bc7dbbbe855f3184bf0a2
4
+ data.tar.gz: 5e7897c4c60eb47a89f2eaf26a3f3ad46b5cc78cdc5519ff1dfe755302e7ab40
5
5
  SHA512:
6
- metadata.gz: ee6cf0a877cff1e96ccc3e95495c331f41c5af536a23332b58669a10f6c6db6c3f1dc9f5fd3cd2fc2e51c0040380e18a7477231f4b108d306593dfc1f6844fa7
7
- data.tar.gz: 39f8e46ae208727fd81127cb3c8de3f32878c16b957ff21fc882f6a250e7972bd00f573dd4dd6a958140d7564e57a4e70e1a86eb30c484e73b3ab42ece3a2bb5
6
+ metadata.gz: 6b84a087632ef6236a0b1975910ae6cabe61f5f1f70aa0f2950c765f53c23caa93de366b00517622a5fffabff0fb34794a563d04eb7ebe8bf4061bec6858ef57
7
+ data.tar.gz: 288e303d2c86355e5cd4a88d9046a84704d9091954981d7dee818f3f57f583995fa8bde1f28aa7f067ff851724deb6c8e00c03912a6c240da266000d353bd385
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rails_bootstrap_form (0.5.1)
4
+ rails_bootstrap_form (0.5.2)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -83,6 +83,7 @@ GEM
83
83
  crass (1.0.6)
84
84
  date (3.3.3)
85
85
  diff-lcs (1.5.0)
86
+ docile (1.4.0)
86
87
  erubi (1.12.0)
87
88
  execjs (2.8.1)
88
89
  ffi (1.15.5)
@@ -176,6 +177,12 @@ GEM
176
177
  sprockets (> 3.0)
177
178
  sprockets-rails
178
179
  tilt
180
+ simplecov (0.22.0)
181
+ docile (~> 1.1)
182
+ simplecov-html (~> 0.11)
183
+ simplecov_json_formatter (~> 0.1)
184
+ simplecov-html (0.12.3)
185
+ simplecov_json_formatter (0.1.4)
179
186
  sprockets (4.2.0)
180
187
  concurrent-ruby (~> 1.0)
181
188
  rack (>= 2.2.4, < 4)
@@ -207,6 +214,7 @@ DEPENDENCIES
207
214
  rake (~> 13.0)
208
215
  rspec-rails
209
216
  sassc-rails
217
+ simplecov
210
218
  sprockets-rails
211
219
  sqlite3 (~> 1.4)
212
220
 
@@ -4,7 +4,7 @@
4
4
  </div>
5
5
  <div class="card-body">
6
6
  <%= bootstrap_form_for @user, bootstrap_form: {} do |form| %>
7
- <%= form.text_field :name, autocomplete: "new-name", bootstrap_form: {} %>
7
+ <%= form.text_field :name, autocomplete: "new-name", class: "dsds", bootstrap_form: {} %>
8
8
  <%= form.text_field :email, autocomplete: "new-email", bootstrap_form: {} %>
9
9
  <%= form.text_field :password, autocomplete: "new-password" %>
10
10
  <%= form.phone_field :mobile_number %>
@@ -18,6 +18,9 @@ gem "bootstrap", "~> 5.3.0.alpha3"
18
18
  # Use sqlite3 as the database for Active Record
19
19
  gem "sqlite3", "~> 1.4"
20
20
 
21
+ # Library to show coverage of the code.
22
+ gem "simplecov"
23
+
21
24
  group :development do
22
25
  gem "puma"
23
26
  end
@@ -90,6 +90,14 @@ module RailsBootstrapForm
90
90
  # Default is `false`.
91
91
  attr_accessor :switch
92
92
 
93
+ # Controls the HTML attributes and options that will be added to the field wrapper.
94
+ # Default is `{}`.
95
+ attr_accessor :wrapper_options
96
+
97
+ # Option to specify the size of input groups and fields.
98
+ # The valid values are `sm` and `lg`. The default value is `nil`.
99
+ attr_accessor :size
100
+
93
101
  def initialize(options = {})
94
102
  set_defaults
95
103
  set_bootstrap_form_options(options)
@@ -107,10 +115,6 @@ module RailsBootstrapForm
107
115
  @layout.to_s == "vertical"
108
116
  end
109
117
 
110
- def floating?
111
- @layout.to_s == "floating"
112
- end
113
-
114
118
  # This will return a copy of `BootstrapFormOptions` object with new options set
115
119
  # that don't affect original object. This way we can have options specific
116
120
  # to a given form field. For example, we can change grid just for one field:
@@ -152,6 +156,10 @@ module RailsBootstrapForm
152
156
  @static_field_class = "form-control-plaintext"
153
157
 
154
158
  @switch = false
159
+
160
+ @wrapper_options = {}
161
+
162
+ @size = nil
155
163
  end
156
164
 
157
165
  private :set_defaults
@@ -27,6 +27,12 @@ module RailsBootstrapForm
27
27
  end
28
28
  end
29
29
 
30
+ def check_box_wrapper_options(bootstrap_options)
31
+ {}.tap do |option|
32
+ option[:class] = check_box_wrapper_class(bootstrap_options)
33
+ end.merge(bootstrap_options.wrapper_options)
34
+ end
35
+
30
36
  def check_box_label_text(attribute, options, bootstrap_options, &block)
31
37
  block ? capture(&block) : label_text(attribute, bootstrap_options)
32
38
  end
@@ -55,7 +61,7 @@ module RailsBootstrapForm
55
61
  def check_box_wrapper_class(bootstrap_options)
56
62
  classes = Array("form-check")
57
63
  classes << "form-switch" if bootstrap_options.switch
58
- classes << "form-check-inline" if bootstrap_options.inline?
64
+ classes << (bootstrap_options.inline? ? "form-check-inline" : "mb-3")
59
65
  classes.flatten.compact
60
66
  end
61
67
 
@@ -8,12 +8,15 @@ module RailsBootstrapForm
8
8
  extend ActiveSupport::Concern
9
9
 
10
10
  def self.included(base_class)
11
- def draw_label(attribute, bootstrap_options)
11
+ def draw_label(attribute, options, bootstrap_options)
12
12
  unless bootstrap_options.skip_label
13
- label_class = label_classes(attribute, bootstrap_options)
13
+ label_options = {
14
+ class: label_classes(attribute, bootstrap_options)
15
+ }
16
+ label_options[:for] = options[:id] if options[:id].present?
14
17
  label_text = label_text(attribute, bootstrap_options)
15
18
 
16
- label(attribute, label_text, class: label_class)
19
+ label(attribute, label_text, label_options)
17
20
  end
18
21
  end
19
22
 
@@ -28,6 +28,12 @@ module RailsBootstrapForm
28
28
  end
29
29
  end
30
30
 
31
+ def radio_button_wrapper_options(bootstrap_options)
32
+ {}.tap do |option|
33
+ option[:class] = radio_button_wrapper_class(bootstrap_options)
34
+ end.merge(bootstrap_options.wrapper_options)
35
+ end
36
+
31
37
  def radio_button_value(attribute, value)
32
38
  # label's `for` attribute needs to match checkbox tag's id,
33
39
  # IE sanitized value, IE
@@ -51,7 +57,7 @@ module RailsBootstrapForm
51
57
 
52
58
  def radio_button_wrapper_class(bootstrap_options)
53
59
  classes = Array("form-check")
54
- classes << "form-check-inline" if bootstrap_options.inline?
60
+ classes << (bootstrap_options.inline? ? "form-check-inline" : "mb-3")
55
61
  classes.flatten.compact
56
62
  end
57
63
 
@@ -13,11 +13,11 @@ module RailsBootstrapForm
13
13
  end
14
14
 
15
15
  def field_wrapper(attribute, bootstrap_options, options, &block)
16
- label = draw_label(attribute, bootstrap_options)
16
+ label = draw_label(attribute, options, bootstrap_options)
17
17
  help_text = help_text(attribute, bootstrap_options)
18
18
 
19
19
  if bootstrap_options.floating
20
- tag.div(class: field_wrapper_classes) do
20
+ tag.div(**field_wrapper_options(bootstrap_options)) do
21
21
  concat(input_group_wrapper(attribute, bootstrap_options) do
22
22
  tag.div(class: floating_label_classes(attribute)) do
23
23
  concat(capture(&block))
@@ -27,7 +27,7 @@ module RailsBootstrapForm
27
27
  concat(help_text)
28
28
  end
29
29
  else
30
- tag.div(class: field_wrapper_classes) do
30
+ tag.div(**field_wrapper_options(bootstrap_options)) do
31
31
  concat(label)
32
32
  concat(input_group_wrapper(attribute, bootstrap_options) do
33
33
  capture(&block)
@@ -37,14 +37,17 @@ module RailsBootstrapForm
37
37
  end
38
38
  end
39
39
 
40
+ def field_wrapper_options(bootstrap_options)
41
+ {}.tap do |option|
42
+ option[:class] = field_wrapper_classes
43
+ end.merge(bootstrap_options.wrapper_options)
44
+ end
45
+
40
46
  def field_wrapper_classes
41
47
  classes = [form_wrapper_default_class]
42
48
  classes.flatten.compact
43
49
  end
44
50
 
45
- def field_wrapper_options
46
- end
47
-
48
51
  def form_wrapper_default_class
49
52
  "mb-3"
50
53
  end
@@ -52,14 +55,17 @@ module RailsBootstrapForm
52
55
  def field_css_options(attribute, bootstrap_options, options, html_options)
53
56
  css_options = (html_options || options)
54
57
 
55
- field_classes = [
58
+ field_classes = Array(options[:class])
59
+ field_classes << [
56
60
  bootstrap_options.field_class,
57
61
  bootstrap_options.additional_field_class
58
62
  ]
59
63
  field_classes << "is-invalid" if is_invalid?(attribute)
64
+ if is_size_valid?(bootstrap_options)
65
+ field_classes << "#{bootstrap_options.field_class}-#{bootstrap_options.size}"
66
+ end
60
67
 
61
68
  css_options[:class] = field_classes.flatten.compact
62
-
63
69
  css_options.merge!(required_field_options(attribute, options))
64
70
 
65
71
  if bootstrap_options.floating
@@ -26,7 +26,10 @@ module RailsBootstrapForm
26
26
  end
27
27
 
28
28
  def input_group_classes(attribute, bootstrap_options)
29
- classes = ["input-group", bootstrap_options.additional_input_group_class]
29
+ classes = Array("input-group") << bootstrap_options.additional_input_group_class
30
+ if is_size_valid?(bootstrap_options)
31
+ classes << "input-group-#{bootstrap_options.size}"
32
+ end
30
33
  # Require `has-validation` class if field has errors.
31
34
  classes << "has-validation" if is_invalid?(attribute)
32
35
  classes.flatten.compact
@@ -17,7 +17,11 @@ module RailsBootstrapForm
17
17
  "rails-bootstrap-forms-#{field_tag_name.to_s.tr("_", "-")}"
18
18
  end
19
19
 
20
- private :collection_input_checked?, :control_specific_class
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?
21
25
  end
22
26
  end
23
27
  end
@@ -45,7 +45,7 @@ module RailsBootstrapForm
45
45
  end
46
46
 
47
47
  DATE_SELECT_HELPERS.each do |field_tag_name|
48
- define_method(field_tag_name) do |attribute, options = {}, html_options = {}, &block|
48
+ define_method(field_tag_name) do |attribute, options = {}, html_options = {}|
49
49
  options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
50
50
 
51
51
  field_wrapper_builder(attribute, options, html_options) do
@@ -137,7 +137,7 @@ module RailsBootstrapForm
137
137
 
138
138
  check_box_label = check_box_label(attribute, checked_value, options, bootstrap_options, &block)
139
139
 
140
- check_box_html = tag.div(class: check_box_wrapper_class(bootstrap_options)) do
140
+ check_box_html = tag.div(**check_box_wrapper_options(bootstrap_options)) do
141
141
  concat(check_box_field)
142
142
  concat(check_box_label)
143
143
  concat(check_box_help_text) unless bootstrap_options.inline?
@@ -157,7 +157,7 @@ module RailsBootstrapForm
157
157
 
158
158
  radio_button_label = radio_button_label(attribute, value, options, bootstrap_options)
159
159
 
160
- radio_button_html = tag.div(class: radio_button_wrapper_class(bootstrap_options)) do
160
+ radio_button_html = tag.div(**radio_button_wrapper_options(bootstrap_options)) do
161
161
  concat(radio_button_field)
162
162
  concat(radio_button_label)
163
163
  concat(radio_button_help_text) unless bootstrap_options.inline?
@@ -3,6 +3,6 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  module RailsBootstrapForm
6
- VERSION = "0.5.1".freeze
6
+ VERSION = "0.5.2".freeze
7
7
  REQUIRED_RAILS_VERSION = "~> 7.0".freeze
8
8
  end
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.5.1
4
+ version: 0.5.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-20 00:00:00.000000000 Z
11
+ date: 2023-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: generator_spec