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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7902b4c3c6edd102d01a2008a8d69a639b6afde3a93997c202e9267dcda93e4b
4
- data.tar.gz: 4e65ba157ac848d45093d2aeda0673e840335bafd24b5861b0551dddc6cd130b
3
+ metadata.gz: 1e721e3897b40c0457a2cd5cfdd2d70be38f43b1c707f103e3799ea03a9c398d
4
+ data.tar.gz: baef33d0746182ad54d2dd1b0ca0b4e827bb1ff4ad70762fca8c44d4826f94c8
5
5
  SHA512:
6
- metadata.gz: 1641aaa9fa84627e32bd9d5d59c7bfb6c89f12fd7498a6ed443309125ee11b4a79a8f7636b55da81e28a003146e00707c89df0d10c2e2d58957a975a035af3dc
7
- data.tar.gz: 9ecea91f9b5c2af60282eb938e957e18cbfcbc7b089341b126db05728cdb44dd41cb4af9632e1cf6e6a14b6146a3b5c8841af3cd3c95a24b7c77af8dabcd6d10
6
+ metadata.gz: 8f1916dfbb809f724be629beeff70e6e7ca287967bf769dc9d5d3501f3ee00beb641ca73966661d33d3293972090667390672a4d444c32318f5a9ca74863822a
7
+ data.tar.gz: 6357308e7ddd7df6667d9a36a96cd506039526c258438bfa19583cc898f36221ffff2f96c4dcdb06f34fb75b39c9fbebfd3a9ced43ab5257f5323b61921bd8e9
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rails_bootstrap_form (0.2.0)
4
+ rails_bootstrap_form (0.2.1)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -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,13 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ module RailsBootstrapForm
6
+ module Components
7
+ extend ActiveSupport::Autoload
8
+
9
+ autoload :HelpText
10
+
11
+ include HelpText
12
+ end
13
+ 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
@@ -3,6 +3,6 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  module RailsBootstrapForm
6
- VERSION = "0.2.0".freeze
6
+ VERSION = "0.2.1".freeze
7
7
  REQUIRED_RAILS_VERSION = "~> 7.0".freeze
8
8
  end
@@ -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.0
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