phlexi-form 0.4.4 → 0.4.6
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/lib/phlexi/form/base.rb +10 -6
- data/lib/phlexi/form/builder.rb +13 -11
- data/lib/phlexi/form/options/inferred_types.rb +2 -0
- data/lib/phlexi/form/structure/namespace.rb +1 -1
- data/lib/phlexi/form/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2929255d72fb1d3f8c2c810d16b349c94123b21bd0ed4c80254e32ca7051f0e9
|
4
|
+
data.tar.gz: 5f9cd0ca0770fb4826dc5d3f38707aac0d29a0a8990634085f3e2c7a68531200
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2824b0ef3da11028f88d8ab0b03e98e73f1e594a1817d32f740194727ff37668d4f7a359af09742c4f2397ee44b765a0c3999952bd941054ff2ab268f4bb28e
|
7
|
+
data.tar.gz: d7dafb70c5bea0fde0f922fc02d4cc8583763e1bfe334538a4b971a416a0154dbbf8c4718692d88b2731a2870f58c191ceb71f2fc10bb017214239411543ffb3
|
data/lib/phlexi/form/base.rb
CHANGED
@@ -49,6 +49,7 @@ module Phlexi
|
|
49
49
|
def initialize(record, action: nil, method: nil, attributes: {}, **options)
|
50
50
|
@form_action = action
|
51
51
|
@form_method = method
|
52
|
+
@dom_id = attributes.delete(:id)
|
52
53
|
@attributes = attributes
|
53
54
|
@namespace_klass = options.delete(:namespace_klass) || default_namespace_klass
|
54
55
|
@builder_klass = options.delete(:builder_klass) || default_builder_klass
|
@@ -135,7 +136,7 @@ module Phlexi
|
|
135
136
|
#
|
136
137
|
# @return [void]
|
137
138
|
def initialize_namespace
|
138
|
-
@namespace = namespace_klass.root(key, object: object, builder_klass: builder_klass)
|
139
|
+
@namespace = namespace_klass.root(key, object: object, builder_klass: builder_klass, dom_id: @dom_id)
|
139
140
|
end
|
140
141
|
|
141
142
|
# Initializes form attributes.
|
@@ -183,15 +184,18 @@ module Phlexi
|
|
183
184
|
#
|
184
185
|
# @return [ActiveSupport::StringInquirer] The form's HTTP method
|
185
186
|
def form_method
|
186
|
-
@form_method ||=
|
187
|
-
|
187
|
+
@form_method ||= object_form_method || :get
|
188
|
+
end
|
189
|
+
|
190
|
+
def inquirable_form_method
|
191
|
+
ActiveSupport::StringInquirer.new(form_method.to_s.downcase)
|
188
192
|
end
|
189
193
|
|
190
194
|
# Checks if the authenticity token should be included.
|
191
195
|
#
|
192
196
|
# @return [Boolean] True if the authenticity token should be included, false otherwise
|
193
197
|
def has_authenticity_token?
|
194
|
-
!
|
198
|
+
!inquirable_form_method.get? && ((defined?(helpers) && helpers) || options[:authenticity_token])
|
195
199
|
end
|
196
200
|
|
197
201
|
# Retrieves the authenticity token.
|
@@ -233,14 +237,14 @@ module Phlexi
|
|
233
237
|
#
|
234
238
|
# @return [Boolean] True if the form method is standard, false otherwise
|
235
239
|
def standard_form_method?
|
236
|
-
|
240
|
+
inquirable_form_method.get? || inquirable_form_method.post?
|
237
241
|
end
|
238
242
|
|
239
243
|
# Returns the standardized form method for the HTML form tag.
|
240
244
|
#
|
241
245
|
# @return [String] The standardized form method
|
242
246
|
def standardized_form_method
|
243
|
-
standard_form_method? ? form_method :
|
247
|
+
standard_form_method? ? form_method : :post
|
244
248
|
end
|
245
249
|
|
246
250
|
# Generates the form attributes hash.
|
data/lib/phlexi/form/builder.rb
CHANGED
@@ -43,8 +43,8 @@ module Phlexi
|
|
43
43
|
#
|
44
44
|
# @param attributes [Hash] Additional attributes for the input.
|
45
45
|
# @return [Components::Input] The input component.
|
46
|
-
def input_tag(**, &)
|
47
|
-
create_component(Components::Input,
|
46
|
+
def input_tag(theme: :input, **, &)
|
47
|
+
create_component(Components::Input, theme, **, &)
|
48
48
|
end
|
49
49
|
|
50
50
|
def string_tag(**, &)
|
@@ -252,8 +252,14 @@ module Phlexi
|
|
252
252
|
protected
|
253
253
|
|
254
254
|
def create_component(component_class, theme_key, **attributes, &)
|
255
|
-
|
256
|
-
|
255
|
+
theme_attributes = apply_component_theme(attributes, theme_key)
|
256
|
+
extra_attributes = if component_class.include?(Phlexi::Form::Components::Concerns::HandlesInput)
|
257
|
+
input_attributes
|
258
|
+
else
|
259
|
+
{}
|
260
|
+
end
|
261
|
+
attributes = mix(theme_attributes, extra_attributes, attributes)
|
262
|
+
component = component_class.new(self, **attributes, &)
|
257
263
|
if component_class.include?(Components::Concerns::ExtractsInput)
|
258
264
|
raise "input component already defined: #{@field_input_extractor.inspect}" if @field_input_extractor
|
259
265
|
|
@@ -264,10 +270,10 @@ module Phlexi
|
|
264
270
|
end
|
265
271
|
|
266
272
|
def apply_component_theme(attributes, theme_key)
|
267
|
-
return
|
273
|
+
return {} if attributes.key?(:class!)
|
268
274
|
|
269
275
|
theme_key = attributes.delete(:theme) || theme_key
|
270
|
-
|
276
|
+
{class: themed(theme_key, self)}
|
271
277
|
end
|
272
278
|
|
273
279
|
def determine_initial_value(value)
|
@@ -276,12 +282,8 @@ module Phlexi
|
|
276
282
|
determine_value_from_association || super
|
277
283
|
end
|
278
284
|
|
279
|
-
def determine_value_from_object
|
280
|
-
object.respond_to?(key) ? object.public_send(key) : nil
|
281
|
-
end
|
282
|
-
|
283
285
|
def determine_value_from_association
|
284
|
-
return
|
286
|
+
return unless association_reflection.present?
|
285
287
|
|
286
288
|
value = object.public_send(key)
|
287
289
|
case association_reflection.macro
|
@@ -20,6 +20,8 @@ module Phlexi
|
|
20
20
|
association_reflection.polymorphic? ? :"polymorphic_#{association_reflection.macro}" : association_reflection.macro
|
21
21
|
when :attachment, :binary
|
22
22
|
:file
|
23
|
+
when :citext
|
24
|
+
infer_string_field_type || :string
|
23
25
|
when :date, :time, :datetime, :boolean, :hstore
|
24
26
|
inferred_field_type
|
25
27
|
else
|
data/lib/phlexi/form/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phlexi-form
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Froelich
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-10-
|
11
|
+
date: 2024-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: phlex
|