vcfb 1.0.0

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.
Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +9 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.md +89 -0
  5. data/Rakefile +3 -0
  6. data/lib/generators/vcfb/components/USAGE.md +74 -0
  7. data/lib/generators/vcfb/components/components_generator.rb +172 -0
  8. data/lib/generators/vcfb/components/templates/button/component.html.erb +3 -0
  9. data/lib/generators/vcfb/components/templates/button/component.rb.tt +17 -0
  10. data/lib/generators/vcfb/components/templates/check_box/component.html.erb +1 -0
  11. data/lib/generators/vcfb/components/templates/check_box/component.rb.tt +19 -0
  12. data/lib/generators/vcfb/components/templates/collection_check_boxes/check_box/component.html.erb +1 -0
  13. data/lib/generators/vcfb/components/templates/collection_check_boxes/check_box/component.rb.tt +21 -0
  14. data/lib/generators/vcfb/components/templates/collection_check_boxes/component.html.erb +3 -0
  15. data/lib/generators/vcfb/components/templates/collection_check_boxes/component.rb.tt +29 -0
  16. data/lib/generators/vcfb/components/templates/collection_check_boxes/label/component.html.erb +3 -0
  17. data/lib/generators/vcfb/components/templates/collection_check_boxes/label/component.rb.tt +21 -0
  18. data/lib/generators/vcfb/components/templates/collection_radio_buttons/component.html.erb +3 -0
  19. data/lib/generators/vcfb/components/templates/collection_radio_buttons/component.rb.tt +29 -0
  20. data/lib/generators/vcfb/components/templates/collection_radio_buttons/label/component.html.erb +3 -0
  21. data/lib/generators/vcfb/components/templates/collection_radio_buttons/label/component.rb.tt +21 -0
  22. data/lib/generators/vcfb/components/templates/collection_radio_buttons/radio_button/component.html.erb +1 -0
  23. data/lib/generators/vcfb/components/templates/collection_radio_buttons/radio_button/component.rb.tt +20 -0
  24. data/lib/generators/vcfb/components/templates/collection_select/component.html.erb +1 -0
  25. data/lib/generators/vcfb/components/templates/collection_select/component.rb.tt +21 -0
  26. data/lib/generators/vcfb/components/templates/color_field/component.html.erb +1 -0
  27. data/lib/generators/vcfb/components/templates/color_field/component.rb.tt +17 -0
  28. data/lib/generators/vcfb/components/templates/date_field/component.html.erb +1 -0
  29. data/lib/generators/vcfb/components/templates/date_field/component.rb.tt +17 -0
  30. data/lib/generators/vcfb/components/templates/date_select/component.html.erb +1 -0
  31. data/lib/generators/vcfb/components/templates/date_select/component.rb.tt +18 -0
  32. data/lib/generators/vcfb/components/templates/datetime_field/component.html.erb +1 -0
  33. data/lib/generators/vcfb/components/templates/datetime_field/component.rb.tt +17 -0
  34. data/lib/generators/vcfb/components/templates/datetime_select/component.html.erb +1 -0
  35. data/lib/generators/vcfb/components/templates/datetime_select/component.rb.tt +18 -0
  36. data/lib/generators/vcfb/components/templates/email_field/component.html.erb +1 -0
  37. data/lib/generators/vcfb/components/templates/email_field/component.rb.tt +17 -0
  38. data/lib/generators/vcfb/components/templates/file_field/component.html.erb +1 -0
  39. data/lib/generators/vcfb/components/templates/file_field/component.rb.tt +17 -0
  40. data/lib/generators/vcfb/components/templates/grouped_collection_select/component.html.erb +1 -0
  41. data/lib/generators/vcfb/components/templates/grouped_collection_select/component.rb.tt +23 -0
  42. data/lib/generators/vcfb/components/templates/label/component.html.erb +3 -0
  43. data/lib/generators/vcfb/components/templates/label/component.rb.tt +19 -0
  44. data/lib/generators/vcfb/components/templates/month_field/component.html.erb +1 -0
  45. data/lib/generators/vcfb/components/templates/month_field/component.rb.tt +17 -0
  46. data/lib/generators/vcfb/components/templates/number_field/component.html.erb +1 -0
  47. data/lib/generators/vcfb/components/templates/number_field/component.rb.tt +17 -0
  48. data/lib/generators/vcfb/components/templates/password_field/component.html.erb +1 -0
  49. data/lib/generators/vcfb/components/templates/password_field/component.rb.tt +17 -0
  50. data/lib/generators/vcfb/components/templates/radio_button/component.html.erb +1 -0
  51. data/lib/generators/vcfb/components/templates/radio_button/component.rb.tt +18 -0
  52. data/lib/generators/vcfb/components/templates/range_field/component.html.erb +1 -0
  53. data/lib/generators/vcfb/components/templates/range_field/component.rb.tt +17 -0
  54. data/lib/generators/vcfb/components/templates/rich_text_area/component.html.erb +1 -0
  55. data/lib/generators/vcfb/components/templates/rich_text_area/component.rb.tt +17 -0
  56. data/lib/generators/vcfb/components/templates/search_field/component.html.erb +1 -0
  57. data/lib/generators/vcfb/components/templates/search_field/component.rb.tt +17 -0
  58. data/lib/generators/vcfb/components/templates/select/component.html.erb +1 -0
  59. data/lib/generators/vcfb/components/templates/select/component.rb.tt +23 -0
  60. data/lib/generators/vcfb/components/templates/submit/component.html.erb +1 -0
  61. data/lib/generators/vcfb/components/templates/submit/component.rb.tt +17 -0
  62. data/lib/generators/vcfb/components/templates/telephone_field/component.html.erb +1 -0
  63. data/lib/generators/vcfb/components/templates/telephone_field/component.rb.tt +17 -0
  64. data/lib/generators/vcfb/components/templates/text_area/component.html.erb +1 -0
  65. data/lib/generators/vcfb/components/templates/text_area/component.rb.tt +17 -0
  66. data/lib/generators/vcfb/components/templates/text_field/component.html.erb +1 -0
  67. data/lib/generators/vcfb/components/templates/text_field/component.rb.tt +17 -0
  68. data/lib/generators/vcfb/components/templates/time_field/component.html.erb +1 -0
  69. data/lib/generators/vcfb/components/templates/time_field/component.rb.tt +17 -0
  70. data/lib/generators/vcfb/components/templates/time_select/component.html.erb +1 -0
  71. data/lib/generators/vcfb/components/templates/time_select/component.rb.tt +18 -0
  72. data/lib/generators/vcfb/components/templates/time_zone_select/component.html.erb +1 -0
  73. data/lib/generators/vcfb/components/templates/time_zone_select/component.rb.tt +19 -0
  74. data/lib/generators/vcfb/components/templates/url_field/component.html.erb +1 -0
  75. data/lib/generators/vcfb/components/templates/url_field/component.rb.tt +17 -0
  76. data/lib/generators/vcfb/components/templates/week_field/component.html.erb +1 -0
  77. data/lib/generators/vcfb/components/templates/week_field/component.rb.tt +17 -0
  78. data/lib/generators/vcfb/components/templates/weekday_select/component.html.erb +1 -0
  79. data/lib/generators/vcfb/components/templates/weekday_select/component.rb.tt +18 -0
  80. data/lib/vcfb/action_view_tag_patch.rb +9 -0
  81. data/lib/vcfb/acts_as_form_collection_component.rb +19 -0
  82. data/lib/vcfb/acts_as_form_component.rb +22 -0
  83. data/lib/vcfb/acts_as_form_label_component.rb +21 -0
  84. data/lib/vcfb/form_builder.rb +188 -0
  85. data/lib/vcfb/railtie.rb +6 -0
  86. data/lib/vcfb/resolver.rb +18 -0
  87. data/lib/vcfb/tags/collection_check_boxes.rb +26 -0
  88. data/lib/vcfb/tags/collection_helpers.rb +19 -0
  89. data/lib/vcfb/tags/collection_radio_buttons.rb +25 -0
  90. data/lib/vcfb/template.rb +44 -0
  91. data/lib/vcfb/version.rb +3 -0
  92. data/lib/vcfb.rb +12 -0
  93. metadata +247 -0
@@ -0,0 +1,21 @@
1
+ require "active_support/concern"
2
+
3
+ require "vcfb/acts_as_form_component"
4
+
5
+ module VCFB
6
+ module ActsAsFormLabelComponent
7
+ extend ActiveSupport::Concern
8
+ include ActsAsFormComponent
9
+
10
+ included do
11
+ delegate :translation, :to_s, to: :label_builder
12
+ end
13
+
14
+ private
15
+
16
+ def label_builder
17
+ @label_builder ||= ActionView::Helpers::Tags::Label::LabelBuilder
18
+ .new(@form.template, @form.object_name, @method, @form.object, @options[:value])
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,188 @@
1
+ require "active_support/core_ext/class/attribute"
2
+ require "view_component"
3
+
4
+ require "vcfb/acts_as_form_component"
5
+ require "vcfb/acts_as_form_collection_component"
6
+ require "vcfb/acts_as_form_label_component"
7
+ require "vcfb/resolver"
8
+ require "vcfb/template"
9
+
10
+ module VCFB
11
+ class FormBuilder < ::ActionView::Helpers::FormBuilder
12
+ class_attribute :namespace, instance_writer: false, default: "form"
13
+
14
+ attr_reader :object, :object_name, :template
15
+
16
+ def initialize(*args)
17
+ super
18
+ @template = Template.new(@template, self)
19
+ end
20
+
21
+ # SIMPLE FIELDS
22
+
23
+ SIMPLE_FIELDS = %i[color_field date_field datetime_field email_field month_field number_field password_field
24
+ range_field search_field telephone_field text_area text_field time_field url_field week_field]
25
+
26
+ SIMPLE_FIELDS.each do |selector|
27
+ class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
28
+ def #{selector}(method, options = {})
29
+ return super unless component_defined?(#{selector.inspect})
30
+
31
+ componentify(#{selector.inspect}, method, objectify_options(options))
32
+ end
33
+ RUBY_EVAL
34
+ end
35
+
36
+ alias_method :phone_field, :telephone_field
37
+ alias_method :datetime_local_field, :datetime_field
38
+
39
+ # SIMPLE SELECTS
40
+
41
+ SIMPLE_SELECTS = %i[date_select datetime_select time_select]
42
+ SIMPLE_SELECTS.each do |selector|
43
+ class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
44
+ def #{selector}(method, options = {}, html_options = {})
45
+ return super unless component_defined?(#{selector.inspect})
46
+
47
+ componentify(#{selector.inspect}, method, objectify_options(options), html_options)
48
+ end
49
+ RUBY_EVAL
50
+ end
51
+
52
+ # MORE COMPLEX FIELDS AND SELECTS
53
+
54
+ def check_box(method, options = {}, checked_value = "1", unchecked_value = "0")
55
+ return super unless component_defined?(:check_box)
56
+
57
+ componentify(:check_box, method, objectify_options(options), checked_value, unchecked_value)
58
+ end
59
+
60
+ def collection_check_boxes(method, collection, value_method, text_method, options = {}, html_options = {}, &block)
61
+ return super unless component_defined?(:collection_check_boxes)
62
+
63
+ componentify(:collection_check_boxes, method, collection, value_method, text_method, objectify_options(options), @default_html_options.merge(html_options), &block)
64
+ end
65
+
66
+ def collection_check_boxes_label(method, text = nil, options = {}, &block)
67
+ if component_defined?(:"collection_check_boxes/label")
68
+ componentify(:"collection_check_boxes/label", method, text, options, &block)
69
+ elsif component_defined?(:label)
70
+ componentify(:label, method, text, options, &block)
71
+ else
72
+ label(method, text, options, &block)
73
+ end
74
+ end
75
+
76
+ def collection_check_boxes_check_box(method, options = {}, checked_value = "1", unchecked_value = "0")
77
+ if component_defined?(:"collection_check_boxes/check_box")
78
+ componentify(:"collection_check_boxes/check_box", method, options, checked_value, unchecked_value)
79
+ elsif component_defined?(:check_box)
80
+ componentify(:check_box, method, options, checked_value, unchecked_value)
81
+ else
82
+ check_box(method, options, checked_value, unchecked_value)
83
+ end
84
+ end
85
+
86
+ def collection_radio_buttons(method, collection, value_method, text_method, options = {}, html_options = {}, &block)
87
+ return super unless component_defined?(:collection_radio_buttons)
88
+
89
+ componentify(:collection_radio_buttons, method, collection, value_method, text_method, objectify_options(options), @default_html_options.merge(html_options), &block)
90
+ end
91
+
92
+ def collection_radio_buttons_label(method, text = nil, options = {}, &block)
93
+ if component_defined?(:"collection_radio_buttons/label")
94
+ componentify(:"collection_radio_buttons/label", method, text, options, &block)
95
+ elsif component_defined?(:label)
96
+ componentify(:label, method, text, options, &block)
97
+ else
98
+ label(method, text, options, &block)
99
+ end
100
+ end
101
+
102
+ def collection_radio_buttons_radio_button(method, value, options = {})
103
+ if component_defined?(:"collection_radio_buttons/radio_button")
104
+ componentify(:"collection_radio_buttons/radio_button", method, value, options)
105
+ elsif component_defined?(:radio_button)
106
+ componentify(:radio_button, method, value, options)
107
+ else
108
+ radio_button(method, options, checked_value, unchecked_value)
109
+ end
110
+ end
111
+
112
+ def collection_select(method, collection, value_method, text_method, options = {}, html_options = {})
113
+ return super unless component_defined?(:collection_select)
114
+
115
+ componentify(:collection_select, method, collection, value_method, text_method, objectify_options(options), @default_html_options.merge(html_options))
116
+ end
117
+
118
+ def file_field(method, options = {})
119
+ return super unless component_defined?(:file_field)
120
+
121
+ self.multipart = true
122
+ componentify(:file_field, method, objectify_options(options))
123
+ end
124
+
125
+ def grouped_collection_select(method, collection, group_method, group_label_method, option_key_method, option_value_method, options = {}, html_options = {})
126
+ return super unless component_defined?(:grouped_collection_select)
127
+
128
+ componentify(:grouped_collection_select, method, collection, group_method, group_label_method, option_key_method, option_value_method, objectify_options(options), @default_html_options.merge(html_options))
129
+ end
130
+
131
+ def label(method, text = nil, options = {}, &block)
132
+ return super unless component_defined?(:label)
133
+
134
+ componentify(:label, method, text, objectify_options(options), &block)
135
+ end
136
+
137
+ def radio_button(method, value, options = {})
138
+ return super unless component_defined?(:radio_button)
139
+
140
+ componentify(:radio_button, method, value, objectify_options(options))
141
+ end
142
+
143
+ def rich_text_area(method, options = {})
144
+ return super unless component_defined?(:rich_text_area)
145
+
146
+ componentify(:rich_text_area, method, objectify_options(options))
147
+ end
148
+
149
+ def select(method, choices = nil, options = {}, html_options = {}, &block)
150
+ return super unless component_defined?(:select)
151
+
152
+ componentify(:select, method, choices, objectify_options(options), @default_html_options.merge(html_options), &block)
153
+ end
154
+
155
+ def time_zone_select(method, priority_zones = nil, options = {}, html_options = {})
156
+ return super unless component_defined?(:time_zone_select)
157
+
158
+ componentify(:time_zone_select, method, priority_zones, objectify_options(options), @default_html_options.merge(html_options))
159
+ end
160
+
161
+ if Gem::Version.new(Rails::VERSION::STRING) >= Gem::Version.new("7.0")
162
+ def weekday_select(method, options = {}, html_options = {})
163
+ return super unless component_defined?(:weekday_select)
164
+
165
+ componentify(:weekday_select, method, objectify_options(options), html_options)
166
+ end
167
+ end
168
+
169
+ # COMPONENT LOOKUP
170
+
171
+ def component_defined?(form_element)
172
+ resolve_form_component(form_element).present?
173
+ rescue
174
+ false
175
+ end
176
+
177
+ def componentify(form_element, *args, **opts, &block)
178
+ form_component_class = resolve_form_component(form_element)
179
+ @template.render form_component_class.new(self, *args, **opts), &block
180
+ end
181
+
182
+ private
183
+
184
+ def resolve_form_component(form_element)
185
+ VCFB::Resolver.call(namespace, form_element)
186
+ end
187
+ end
188
+ end
@@ -0,0 +1,6 @@
1
+ require "rails/railtie"
2
+
3
+ module VCFB
4
+ class Railtie < ::Rails::Railtie
5
+ end
6
+ end
@@ -0,0 +1,18 @@
1
+ require "active_support/core_ext/string/inflections"
2
+
3
+ module VCFB
4
+ class Resolver
5
+ def initialize(namespace, form_element)
6
+ @namespace = namespace.to_s.underscore
7
+ @form_element = form_element.to_s.underscore
8
+ end
9
+
10
+ def call
11
+ "#{@namespace}/#{@form_element}/component".camelize.constantize
12
+ end
13
+
14
+ def self.call(namespace, form_element)
15
+ new(namespace, form_element).call
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,26 @@
1
+ require "vcfb/tags/collection_helpers"
2
+
3
+ module VCFB
4
+ module Tags
5
+ class CollectionCheckBoxes < ActionView::Helpers::Tags::CollectionCheckBoxes
6
+ class CheckBoxBuilder < ActionView::Helpers::Tags::CollectionCheckBoxes::Builder
7
+ include CollectionHelpers
8
+
9
+ def label(extra_html_options = {}, &block)
10
+ form.collection_check_boxes_label(@sanitized_attribute_name, @text, label_html_options(extra_html_options), &block)
11
+ end
12
+
13
+ def check_box(extra_html_options = {})
14
+ html_options = extra_html_options.merge(@input_html_options)
15
+ html_options[:multiple] = true
16
+ html_options[:skip_default_ids] = false
17
+ form.collection_check_boxes_check_box(@method_name, html_options, @value, nil)
18
+ end
19
+ end
20
+
21
+ def render(&block)
22
+ render_collection_for(CheckBoxBuilder, &block)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ require "action_view/helpers/tags/collection_helpers"
2
+
3
+ module VCFB
4
+ module Tags
5
+ module CollectionHelpers
6
+ private
7
+
8
+ def form
9
+ @template_object.instance_variable_get(:@form)
10
+ end
11
+
12
+ def label_html_options(extra_html_options)
13
+ html_options = @input_html_options.slice(:index, :namespace).merge(extra_html_options)
14
+ html_options[:for] ||= @input_html_options[:id] if @input_html_options[:id]
15
+ html_options
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,25 @@
1
+ require "vcfb/tags/collection_helpers"
2
+
3
+ module VCFB
4
+ module Tags
5
+ class CollectionRadioButtons < ActionView::Helpers::Tags::CollectionRadioButtons
6
+ class RadioButtonBuilder < ActionView::Helpers::Tags::CollectionRadioButtons::Builder
7
+ include CollectionHelpers
8
+
9
+ def label(extra_html_options = {}, &block)
10
+ form.collection_radio_buttons_label(@sanitized_attribute_name, @text, label_html_options(extra_html_options), &block)
11
+ end
12
+
13
+ def radio_button(extra_html_options = {})
14
+ html_options = extra_html_options.merge(@input_html_options)
15
+ html_options[:skip_default_ids] = false
16
+ form.collection_radio_buttons_radio_button(@method_name, @value, html_options)
17
+ end
18
+ end
19
+
20
+ def render(&block)
21
+ render_collection_for(RadioButtonBuilder, &block)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,44 @@
1
+ module VCFB
2
+ class Template
3
+ def initialize(template, form)
4
+ @template = template
5
+ @form = form
6
+ end
7
+
8
+ # Custom Tag Helpers
9
+
10
+ def button_tag(value, options, &block)
11
+ return super unless @form.component_defined?(:button)
12
+
13
+ if block
14
+ value = @template.capture(value, &block)
15
+ end
16
+
17
+ @form.componentify(:button, value, options)
18
+ end
19
+
20
+ def submit_tag(value, options)
21
+ return super unless @form.component_defined?(:submit)
22
+
23
+ @form.componentify(:submit, value, options)
24
+ end
25
+
26
+ # Forward everything else to @template
27
+
28
+ def send(method_name, *args, &block)
29
+ @template.send(method_name, *args, &block)
30
+ end
31
+
32
+ def public_send(method_name, *args, &block)
33
+ @template.public_send(method_name, *args, &block)
34
+ end
35
+
36
+ def method_missing(method_name, *args, &block)
37
+ @template.public_send(method_name, *args, &block)
38
+ end
39
+
40
+ def respond_to_missing?(method_name, include_private = false)
41
+ @template.respond_to?(method_name, include_private)
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ module VCFB
2
+ VERSION = "1.0.0"
3
+ end
data/lib/vcfb.rb ADDED
@@ -0,0 +1,12 @@
1
+ require "view_component"
2
+ require "vcfb/tags/collection_helpers"
3
+ require "vcfb/tags/collection_check_boxes"
4
+ require "vcfb/tags/collection_radio_buttons"
5
+ require "vcfb/acts_as_form_component"
6
+ require "vcfb/acts_as_form_collection_component"
7
+ require "vcfb/acts_as_form_label_component"
8
+ require "vcfb/form_builder"
9
+ require "vcfb/railtie"
10
+ require "vcfb/resolver"
11
+ require "vcfb/template"
12
+ require "vcfb/version"
metadata ADDED
@@ -0,0 +1,247 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vcfb
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Alex Monroe
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-07-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '6.1'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '8.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '6.1'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '8.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: view_component
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '2.35'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '3.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '2.35'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '3.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: combustion
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.3'
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '1.3'
67
+ - !ruby/object:Gem::Dependency
68
+ name: rake
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '13.0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '13.0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: rspec-rails
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '5.1'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '5.1'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rubocop-rspec
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '2.11'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '2.11'
109
+ - !ruby/object:Gem::Dependency
110
+ name: standard
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '1.12'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '1.12'
123
+ description: FormBuilder for Rails using ViewComponent
124
+ email:
125
+ - alex.monroe@cofense.com
126
+ executables: []
127
+ extensions: []
128
+ extra_rdoc_files: []
129
+ files:
130
+ - CHANGELOG.md
131
+ - MIT-LICENSE
132
+ - README.md
133
+ - Rakefile
134
+ - lib/generators/vcfb/components/USAGE.md
135
+ - lib/generators/vcfb/components/components_generator.rb
136
+ - lib/generators/vcfb/components/templates/button/component.html.erb
137
+ - lib/generators/vcfb/components/templates/button/component.rb.tt
138
+ - lib/generators/vcfb/components/templates/check_box/component.html.erb
139
+ - lib/generators/vcfb/components/templates/check_box/component.rb.tt
140
+ - lib/generators/vcfb/components/templates/collection_check_boxes/check_box/component.html.erb
141
+ - lib/generators/vcfb/components/templates/collection_check_boxes/check_box/component.rb.tt
142
+ - lib/generators/vcfb/components/templates/collection_check_boxes/component.html.erb
143
+ - lib/generators/vcfb/components/templates/collection_check_boxes/component.rb.tt
144
+ - lib/generators/vcfb/components/templates/collection_check_boxes/label/component.html.erb
145
+ - lib/generators/vcfb/components/templates/collection_check_boxes/label/component.rb.tt
146
+ - lib/generators/vcfb/components/templates/collection_radio_buttons/component.html.erb
147
+ - lib/generators/vcfb/components/templates/collection_radio_buttons/component.rb.tt
148
+ - lib/generators/vcfb/components/templates/collection_radio_buttons/label/component.html.erb
149
+ - lib/generators/vcfb/components/templates/collection_radio_buttons/label/component.rb.tt
150
+ - lib/generators/vcfb/components/templates/collection_radio_buttons/radio_button/component.html.erb
151
+ - lib/generators/vcfb/components/templates/collection_radio_buttons/radio_button/component.rb.tt
152
+ - lib/generators/vcfb/components/templates/collection_select/component.html.erb
153
+ - lib/generators/vcfb/components/templates/collection_select/component.rb.tt
154
+ - lib/generators/vcfb/components/templates/color_field/component.html.erb
155
+ - lib/generators/vcfb/components/templates/color_field/component.rb.tt
156
+ - lib/generators/vcfb/components/templates/date_field/component.html.erb
157
+ - lib/generators/vcfb/components/templates/date_field/component.rb.tt
158
+ - lib/generators/vcfb/components/templates/date_select/component.html.erb
159
+ - lib/generators/vcfb/components/templates/date_select/component.rb.tt
160
+ - lib/generators/vcfb/components/templates/datetime_field/component.html.erb
161
+ - lib/generators/vcfb/components/templates/datetime_field/component.rb.tt
162
+ - lib/generators/vcfb/components/templates/datetime_select/component.html.erb
163
+ - lib/generators/vcfb/components/templates/datetime_select/component.rb.tt
164
+ - lib/generators/vcfb/components/templates/email_field/component.html.erb
165
+ - lib/generators/vcfb/components/templates/email_field/component.rb.tt
166
+ - lib/generators/vcfb/components/templates/file_field/component.html.erb
167
+ - lib/generators/vcfb/components/templates/file_field/component.rb.tt
168
+ - lib/generators/vcfb/components/templates/grouped_collection_select/component.html.erb
169
+ - lib/generators/vcfb/components/templates/grouped_collection_select/component.rb.tt
170
+ - lib/generators/vcfb/components/templates/label/component.html.erb
171
+ - lib/generators/vcfb/components/templates/label/component.rb.tt
172
+ - lib/generators/vcfb/components/templates/month_field/component.html.erb
173
+ - lib/generators/vcfb/components/templates/month_field/component.rb.tt
174
+ - lib/generators/vcfb/components/templates/number_field/component.html.erb
175
+ - lib/generators/vcfb/components/templates/number_field/component.rb.tt
176
+ - lib/generators/vcfb/components/templates/password_field/component.html.erb
177
+ - lib/generators/vcfb/components/templates/password_field/component.rb.tt
178
+ - lib/generators/vcfb/components/templates/radio_button/component.html.erb
179
+ - lib/generators/vcfb/components/templates/radio_button/component.rb.tt
180
+ - lib/generators/vcfb/components/templates/range_field/component.html.erb
181
+ - lib/generators/vcfb/components/templates/range_field/component.rb.tt
182
+ - lib/generators/vcfb/components/templates/rich_text_area/component.html.erb
183
+ - lib/generators/vcfb/components/templates/rich_text_area/component.rb.tt
184
+ - lib/generators/vcfb/components/templates/search_field/component.html.erb
185
+ - lib/generators/vcfb/components/templates/search_field/component.rb.tt
186
+ - lib/generators/vcfb/components/templates/select/component.html.erb
187
+ - lib/generators/vcfb/components/templates/select/component.rb.tt
188
+ - lib/generators/vcfb/components/templates/submit/component.html.erb
189
+ - lib/generators/vcfb/components/templates/submit/component.rb.tt
190
+ - lib/generators/vcfb/components/templates/telephone_field/component.html.erb
191
+ - lib/generators/vcfb/components/templates/telephone_field/component.rb.tt
192
+ - lib/generators/vcfb/components/templates/text_area/component.html.erb
193
+ - lib/generators/vcfb/components/templates/text_area/component.rb.tt
194
+ - lib/generators/vcfb/components/templates/text_field/component.html.erb
195
+ - lib/generators/vcfb/components/templates/text_field/component.rb.tt
196
+ - lib/generators/vcfb/components/templates/time_field/component.html.erb
197
+ - lib/generators/vcfb/components/templates/time_field/component.rb.tt
198
+ - lib/generators/vcfb/components/templates/time_select/component.html.erb
199
+ - lib/generators/vcfb/components/templates/time_select/component.rb.tt
200
+ - lib/generators/vcfb/components/templates/time_zone_select/component.html.erb
201
+ - lib/generators/vcfb/components/templates/time_zone_select/component.rb.tt
202
+ - lib/generators/vcfb/components/templates/url_field/component.html.erb
203
+ - lib/generators/vcfb/components/templates/url_field/component.rb.tt
204
+ - lib/generators/vcfb/components/templates/week_field/component.html.erb
205
+ - lib/generators/vcfb/components/templates/week_field/component.rb.tt
206
+ - lib/generators/vcfb/components/templates/weekday_select/component.html.erb
207
+ - lib/generators/vcfb/components/templates/weekday_select/component.rb.tt
208
+ - lib/vcfb.rb
209
+ - lib/vcfb/action_view_tag_patch.rb
210
+ - lib/vcfb/acts_as_form_collection_component.rb
211
+ - lib/vcfb/acts_as_form_component.rb
212
+ - lib/vcfb/acts_as_form_label_component.rb
213
+ - lib/vcfb/form_builder.rb
214
+ - lib/vcfb/railtie.rb
215
+ - lib/vcfb/resolver.rb
216
+ - lib/vcfb/tags/collection_check_boxes.rb
217
+ - lib/vcfb/tags/collection_helpers.rb
218
+ - lib/vcfb/tags/collection_radio_buttons.rb
219
+ - lib/vcfb/template.rb
220
+ - lib/vcfb/version.rb
221
+ homepage: https://github.com/wamonroe/vcfb
222
+ licenses:
223
+ - MIT
224
+ metadata:
225
+ homepage_uri: https://github.com/wamonroe/vcfb
226
+ source_code_uri: https://github.com/wamonroe/vcfb
227
+ changelog_uri: https://github.com/wamonroe/vcfb/blob/main/CHANGELOG.md
228
+ post_install_message:
229
+ rdoc_options: []
230
+ require_paths:
231
+ - lib
232
+ required_ruby_version: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: 2.7.0
237
+ required_rubygems_version: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ requirements: []
243
+ rubygems_version: 3.3.7
244
+ signing_key:
245
+ specification_version: 4
246
+ summary: FormBuilder for Rails using ViewComponent
247
+ test_files: []