rails_bootstrap_form 0.2.2 → 0.2.3

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