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