rails_bootstrap_form 0.2.2 → 0.2.3

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: eeb7afe12b186dfa741279347931a85c33ff4950dcb691d6089e18767d5edb80
4
- data.tar.gz: 18787c6cfd1ad0c3156f1611395551fb5c9c41d1e17983ac1393b7987d099455
3
+ metadata.gz: 58960cc1bb39e990327bb9653961f25761070edbd1d8cd0ddb281506fc0cf564
4
+ data.tar.gz: 6d19cd1958e1667a51ad91d60a09144934ddfaf3b5bdbc21972bfb00ed2cd2cb
5
5
  SHA512:
6
- metadata.gz: 7de97d7da63f5742b0db6816e908335540c1b66eaab7509bca8257005dc30e7bb2dd7f1974d3f7d0cf45dcdb909e9644c4cd29bddd7de6450bad05e2216f7c64
7
- data.tar.gz: 97997858453d5b926fb23a8a64fe36294d5cf08c7d164a8a984eb5b42ee5d956451908567d4f3473bf1cd369b2570119bb211c8071f26096e78e3b90852bdc54
6
+ metadata.gz: 1baea47dd00f08b64d4f7c156748b4dace0e30cdf16f95ebd568dd6db4de2d869748728a5d11d4844dfce943873136767d30cdc0c5262b2ac4c7a6dc898c6188
7
+ data.tar.gz: bf4c3178074b47e4ab37f7cc0ec0649d681e82c6a44f80196a071312235ed6503cc493385c08fde619dc1bb92636d8f0bc3f19b6ecca8599e925a150fa1a80ba
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rails_bootstrap_form (0.2.2)
4
+ rails_bootstrap_form (0.2.3)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -1 +1,10 @@
1
-
1
+ label.is-invalid, .invalid-feedback {
2
+ color: var(--bs-danger);
3
+ }
4
+ label.required::after {
5
+ color: var(--bs-danger);
6
+ content: "*";
7
+ padding-left: .25rem;
8
+ top: -2px;
9
+ font-weight: bolder;
10
+ }
@@ -20,6 +20,7 @@ module RailsBootstrapForm
20
20
  def label_classes(attribute, bootstrap_options)
21
21
  classes = [bootstrap_options.label_class, bootstrap_options.additional_label_class]
22
22
  classes << bootstrap_options.hide_class if bootstrap_options.hide_label
23
+ classes << "required" if is_attribute_required?(attribute)
23
24
  classes.flatten.compact
24
25
  end
25
26
 
@@ -0,0 +1,64 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ module RailsBootstrapForm
6
+ module Components
7
+ module RequiredField
8
+ extend ActiveSupport::Concern
9
+
10
+ def self.included(base_class)
11
+ def is_field_required?(attribute, options)
12
+ return false unless attribute
13
+
14
+ if options.key?(:required)
15
+ options[:required]
16
+ else
17
+ is_attribute_required?(attribute)
18
+ end
19
+ end
20
+
21
+ def required_field_options(options, attribute)
22
+ required = is_field_required?(attribute, options)
23
+
24
+ {}.tap do |option|
25
+ option[:aria] = {required: true} if required
26
+ option[:required] = required
27
+ end
28
+ end
29
+
30
+ def is_attribute_required?(attribute)
31
+ return false unless attribute
32
+
33
+ target = object.instance_of?(Class) ? object : object.class
34
+ return false unless target.respond_to?(:validators_on)
35
+
36
+ has_presence_validator?(target_validators(target, attribute)) ||
37
+ is_required_association?(target, attribute)
38
+ end
39
+
40
+ def target_validators(target, attribute)
41
+ target.validators_on(attribute).map(&:class)
42
+ end
43
+
44
+ def has_presence_validator?(target_validators)
45
+ target_validators.include?(ActiveModel::Validations::PresenceValidator) ||
46
+ (defined?(ActiveRecord::Validations::PresenceValidator) &&
47
+ target_validators.include?(ActiveRecord::Validations::PresenceValidator))
48
+ end
49
+
50
+ def is_required_association?(target, attribute)
51
+ target.reflections.find do |name, a|
52
+ next unless a.is_a?(ActiveRecord::Reflection::BelongsToReflection)
53
+ next unless a.foreign_key == attribute.to_s
54
+
55
+ has_presence_validator?(target_validators(target, name))
56
+ end
57
+ end
58
+
59
+ private :is_field_required?, :required_field_options, :target_validators,
60
+ :has_presence_validator?, :is_required_association?
61
+ end
62
+ end
63
+ end
64
+ end
@@ -8,8 +8,10 @@ module RailsBootstrapForm
8
8
 
9
9
  autoload :HelpText
10
10
  autoload :Labels
11
+ autoload :RequiredField
11
12
 
12
13
  include HelpText
13
14
  include Labels
15
+ include RequiredField
14
16
  end
15
17
  end
@@ -3,6 +3,6 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  module RailsBootstrapForm
6
- VERSION = "0.2.2".freeze
6
+ VERSION = "0.2.3".freeze
7
7
  REQUIRED_RAILS_VERSION = "~> 7.0".freeze
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_bootstrap_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harshal LADHE (shivam091)
@@ -110,6 +110,7 @@ files:
110
110
  - lib/rails_bootstrap_form/components.rb
111
111
  - lib/rails_bootstrap_form/components/help_text.rb
112
112
  - lib/rails_bootstrap_form/components/labels.rb
113
+ - lib/rails_bootstrap_form/components/required_field.rb
113
114
  - lib/rails_bootstrap_form/configuration.rb
114
115
  - lib/rails_bootstrap_form/engine.rb
115
116
  - lib/rails_bootstrap_form/field_wrapper_builder.rb