rails_bootstrap_form 0.2.0 → 0.2.1
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/demo/config/locales/en.rb +36 -3
- data/lib/rails_bootstrap_form/bootstrap_form_builder.rb +5 -0
- data/lib/rails_bootstrap_form/bootstrap_form_options.rb +19 -0
- data/lib/rails_bootstrap_form/components/help_text.rb +53 -0
- data/lib/rails_bootstrap_form/components.rb +13 -0
- data/lib/rails_bootstrap_form/field_wrapper_builder.rb +51 -0
- data/lib/rails_bootstrap_form/inputs.rb +43 -0
- data/lib/rails_bootstrap_form/version.rb +1 -1
- data/lib/rails_bootstrap_form.rb +4 -0
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e721e3897b40c0457a2cd5cfdd2d70be38f43b1c707f103e3799ea03a9c398d
|
4
|
+
data.tar.gz: baef33d0746182ad54d2dd1b0ca0b4e827bb1ff4ad70762fca8c44d4826f94c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f1916dfbb809f724be629beeff70e6e7ca287967bf769dc9d5d3501f3ee00beb641ca73966661d33d3293972090667390672a4d444c32318f5a9ca74863822a
|
7
|
+
data.tar.gz: 6357308e7ddd7df6667d9a36a96cd506039526c258438bfa19583cc898f36221ffff2f96c4dcdb06f34fb75b39c9fbebfd3a9ced43ab5257f5323b61921bd8e9
|
data/Gemfile.lock
CHANGED
data/demo/config/locales/en.rb
CHANGED
@@ -6,11 +6,44 @@
|
|
6
6
|
en: {
|
7
7
|
activerecord: {
|
8
8
|
attributes: {
|
9
|
-
|
9
|
+
country: {
|
10
|
+
name: "Name",
|
11
|
+
},
|
12
|
+
fruit: {
|
13
|
+
name: "Name",
|
14
|
+
},
|
15
|
+
skill: {
|
16
|
+
name: "Name",
|
17
|
+
},
|
18
|
+
user: {
|
19
|
+
name: "Name",
|
20
|
+
email: "Email address",
|
21
|
+
password: "Password",
|
22
|
+
password_confirmation: "Confirm password",
|
23
|
+
mobile_number: "Mobile number",
|
24
|
+
blog_url: "Blog URL",
|
25
|
+
birth_date: "Birth date",
|
26
|
+
fruit_id: "Favorite fruit",
|
27
|
+
terms: "I accept terms and conditions",
|
28
|
+
excellence: "Excellence",
|
29
|
+
},
|
30
|
+
user_skill: {
|
31
|
+
user_id: "User",
|
32
|
+
skill_id: "Skill"
|
33
|
+
},
|
34
|
+
address: {
|
35
|
+
street: "Street",
|
36
|
+
state: "State",
|
37
|
+
city: "City",
|
38
|
+
postal_code: "Postal code",
|
39
|
+
country_id: "Country"
|
40
|
+
},
|
10
41
|
},
|
11
42
|
help_texts: {
|
12
|
-
|
43
|
+
user: {
|
44
|
+
email: "Please use official email address"
|
45
|
+
}
|
13
46
|
},
|
14
|
-
}
|
47
|
+
}
|
15
48
|
}
|
16
49
|
}
|
@@ -4,6 +4,11 @@
|
|
4
4
|
|
5
5
|
module RailsBootstrapForm
|
6
6
|
class BootstrapFormBuilder < ActionView::Helpers::FormBuilder
|
7
|
+
|
8
|
+
include RailsBootstrapForm::FieldWrapperBuilder
|
9
|
+
include RailsBootstrapForm::Components
|
10
|
+
include RailsBootstrapForm::Inputs
|
11
|
+
|
7
12
|
delegate :capture, :concat, :tag, to: :@template
|
8
13
|
|
9
14
|
attr_accessor :bootstrap_form_options
|
@@ -20,6 +20,20 @@ module RailsBootstrapForm
|
|
20
20
|
# It can also be "floating" if field should have floating labels.
|
21
21
|
attr_accessor :layout
|
22
22
|
|
23
|
+
# A CSS class that will be applied to all form fields and it can be overridden
|
24
|
+
# by the `BootstrapFormOptions` object. Default is `form-control`.
|
25
|
+
attr_accessor :field_class
|
26
|
+
|
27
|
+
# An additional CSS class that will be added along with the existing
|
28
|
+
# `field_class` of the field. Default is nil.
|
29
|
+
attr_accessor :additional_field_class
|
30
|
+
|
31
|
+
# Describes help text for the HTML field. Help text is automatically read
|
32
|
+
# from translation file. If you want to customize it, you can pass string.
|
33
|
+
# You can also set it false if you do not want help text displayed.
|
34
|
+
# Default is nil.
|
35
|
+
attr_accessor :help_text
|
36
|
+
|
23
37
|
def initialize(options = {})
|
24
38
|
set_defaults
|
25
39
|
set_bootstrap_form_options(options)
|
@@ -64,6 +78,11 @@ module RailsBootstrapForm
|
|
64
78
|
|
65
79
|
def set_defaults
|
66
80
|
@layout = "vertical"
|
81
|
+
|
82
|
+
@field_class = "form-control"
|
83
|
+
@additional_field_class = nil
|
84
|
+
|
85
|
+
@help_text = nil
|
67
86
|
end
|
68
87
|
|
69
88
|
private :set_defaults
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- frozen_string_literal: true -*-
|
3
|
+
# -*- warn_indent: true -*-
|
4
|
+
|
5
|
+
module RailsBootstrapForm
|
6
|
+
module Components
|
7
|
+
module HelpText
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
def self.included(base_class)
|
11
|
+
def help_text(attribute, bootstrap_options)
|
12
|
+
return if bootstrap_options.help_text == false
|
13
|
+
|
14
|
+
help_text = (bootstrap_options.help_text || scoped_help_text(attribute))
|
15
|
+
|
16
|
+
tag.span(help_text, class: "form-text text-muted") if help_text.present?
|
17
|
+
end
|
18
|
+
|
19
|
+
def object_class
|
20
|
+
if !object.class.is_a?(ActiveModel::Naming) &&
|
21
|
+
object.respond_to?(:klass) && object.klass.is_a?(ActiveModel::Naming)
|
22
|
+
object.klass
|
23
|
+
else
|
24
|
+
object.class
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def partial_scope
|
29
|
+
if object_class.respond_to?(:model_name)
|
30
|
+
object_class.model_name.name
|
31
|
+
else
|
32
|
+
object_class.name
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def scoped_help_text(attribute)
|
37
|
+
translation_scope = "activerecord.help_texts.#{partial_scope.underscore}"
|
38
|
+
|
39
|
+
help_text = translated_help_text(attribute, translation_scope).presence
|
40
|
+
|
41
|
+
help_text
|
42
|
+
end
|
43
|
+
|
44
|
+
def translated_help_text(attribute, scope)
|
45
|
+
ActiveSupport::SafeBuffer.new(I18n.t(attribute, scope: scope, default: ""))
|
46
|
+
end
|
47
|
+
|
48
|
+
private :help_text, :partial_scope, :object_class, :scoped_help_text
|
49
|
+
:translated_help_text
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- frozen_string_literal: true -*-
|
3
|
+
# -*- warn_indent: true -*-
|
4
|
+
|
5
|
+
module RailsBootstrapForm
|
6
|
+
module FieldWrapperBuilder
|
7
|
+
def field_wrapper_builder(attribute, options, html_options = nil, &block)
|
8
|
+
bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap_form))
|
9
|
+
|
10
|
+
field_options = field_css_options(attribute, bootstrap_options, options, html_options.try(:symbolize_keys!))
|
11
|
+
|
12
|
+
field_wrapper(attribute, bootstrap_options, field_options, &block)
|
13
|
+
end
|
14
|
+
|
15
|
+
def field_wrapper(attribute, bootstrap_options, options, &block)
|
16
|
+
help_text = help_text(attribute, bootstrap_options)
|
17
|
+
|
18
|
+
tag.div(class: field_wrapper_classes) do
|
19
|
+
concat(capture(&block))
|
20
|
+
concat(help_text)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def field_wrapper_classes
|
25
|
+
classes = [form_wrapper_default_class]
|
26
|
+
classes.flatten.compact
|
27
|
+
end
|
28
|
+
|
29
|
+
def field_wrapper_options
|
30
|
+
end
|
31
|
+
|
32
|
+
def form_wrapper_default_class
|
33
|
+
"mb-3"
|
34
|
+
end
|
35
|
+
|
36
|
+
def field_css_options(attribute, bootstrap_options, options, html_options)
|
37
|
+
css_options = (html_options || options)
|
38
|
+
|
39
|
+
field_classes = [
|
40
|
+
bootstrap_options.field_class,
|
41
|
+
bootstrap_options.additional_field_class
|
42
|
+
]
|
43
|
+
css_options[:class] = field_classes.flatten.compact
|
44
|
+
|
45
|
+
css_options
|
46
|
+
end
|
47
|
+
|
48
|
+
private :field_wrapper, :field_wrapper_classes, :form_wrapper_default_class,
|
49
|
+
:field_css_options
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- frozen_string_literal: true -*-
|
3
|
+
# -*- warn_indent: true -*-
|
4
|
+
|
5
|
+
module RailsBootstrapForm
|
6
|
+
module Inputs
|
7
|
+
|
8
|
+
FIELD_HELPERS = %i[
|
9
|
+
text_field
|
10
|
+
url_field
|
11
|
+
search_field
|
12
|
+
telephone_field
|
13
|
+
number_field
|
14
|
+
email_field
|
15
|
+
file_field
|
16
|
+
phone_field
|
17
|
+
password_field
|
18
|
+
text_area
|
19
|
+
date_field
|
20
|
+
time_field
|
21
|
+
datetime_field
|
22
|
+
datetime_local_field
|
23
|
+
month_field
|
24
|
+
week_field
|
25
|
+
].freeze
|
26
|
+
|
27
|
+
FIELD_HELPERS.each do |field_tag_name|
|
28
|
+
define_method(field_tag_name) do |attribute, options = {}|
|
29
|
+
field_wrapper_builder(attribute, options) do
|
30
|
+
super(attribute, options)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def select(attribute, choices = nil, options = {}, html_options = {}, &block)
|
36
|
+
options = options.reverse_merge(bootstrap_form: {field_class: "form-select"})
|
37
|
+
|
38
|
+
field_wrapper_builder(attribute, options, html_options) do
|
39
|
+
super(attribute, choices, options, html_options, &block)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/rails_bootstrap_form.rb
CHANGED
@@ -13,11 +13,15 @@ module RailsBootstrapForm
|
|
13
13
|
autoload :Configuration
|
14
14
|
autoload :BootstrapFormOptions
|
15
15
|
autoload :BootstrapFormBuilder
|
16
|
+
autoload :FieldWrapperBuilder
|
17
|
+
autoload :Components
|
18
|
+
autoload :Inputs
|
16
19
|
end
|
17
20
|
|
18
21
|
class << self
|
19
22
|
def eager_load!
|
20
23
|
super
|
24
|
+
RailsBootstrapForm::Components.eager_load!
|
21
25
|
end
|
22
26
|
|
23
27
|
def config
|
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.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harshal LADHE (shivam091)
|
@@ -107,8 +107,12 @@ files:
|
|
107
107
|
- lib/rails_bootstrap_form/action_view_extensions/bootstrap_form_helper.rb
|
108
108
|
- lib/rails_bootstrap_form/bootstrap_form_builder.rb
|
109
109
|
- lib/rails_bootstrap_form/bootstrap_form_options.rb
|
110
|
+
- lib/rails_bootstrap_form/components.rb
|
111
|
+
- lib/rails_bootstrap_form/components/help_text.rb
|
110
112
|
- lib/rails_bootstrap_form/configuration.rb
|
111
113
|
- lib/rails_bootstrap_form/engine.rb
|
114
|
+
- lib/rails_bootstrap_form/field_wrapper_builder.rb
|
115
|
+
- lib/rails_bootstrap_form/inputs.rb
|
112
116
|
- lib/rails_bootstrap_form/version.rb
|
113
117
|
- sig/rails_bootstrap_form.rbs
|
114
118
|
homepage: https://github.com/shivam091/rails_bootstrap_form
|