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 +4 -4
- data/Gemfile.lock +1 -1
- data/app/assets/stylesheets/rails_bootstrap_form.css +10 -1
- data/lib/rails_bootstrap_form/components/labels.rb +1 -0
- data/lib/rails_bootstrap_form/components/required_field.rb +64 -0
- data/lib/rails_bootstrap_form/components.rb +2 -0
- data/lib/rails_bootstrap_form/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58960cc1bb39e990327bb9653961f25761070edbd1d8cd0ddb281506fc0cf564
|
4
|
+
data.tar.gz: 6d19cd1958e1667a51ad91d60a09144934ddfaf3b5bdbc21972bfb00ed2cd2cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1baea47dd00f08b64d4f7c156748b4dace0e30cdf16f95ebd568dd6db4de2d869748728a5d11d4844dfce943873136767d30cdc0c5262b2ac4c7a6dc898c6188
|
7
|
+
data.tar.gz: bf4c3178074b47e4ab37f7cc0ec0649d681e82c6a44f80196a071312235ed6503cc493385c08fde619dc1bb92636d8f0bc3f19b6ecca8599e925a150fa1a80ba
|
data/Gemfile.lock
CHANGED
@@ -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
|
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.
|
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
|