form_props 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: 50996188e265e32010c43926fd176b48e8f661d7356a64540a894ae47f25b4a1
4
- data.tar.gz: 2e351ab9e16c79116b06777fc155b8f009b139cfcbb8c9b9d679745b4f8f66a3
3
+ metadata.gz: 04e4a4f4bfea7086f93ea5383e606c63eb38289cc1a0472c847e4a620c2c4903
4
+ data.tar.gz: 318dbf7cd2439e6b6eec026ae1af88b8cf4828b78be8356189bbbc299449b6f1
5
5
  SHA512:
6
- metadata.gz: ae7b90aae7465eadf5c26208b0e61ea3ddd79315925e6bfb4f43deeea8b0d9cf9430eda6a59a377b880f70d795b1a16a9eaeb58297b03ff2ced8a75a233606e9
7
- data.tar.gz: a0b691ce0290eb313ca97a10d7c8ecb4378bb0c0ff8b356bd3ed9c529b0048d6876c7220d182ca42fc9d70f7fc4cc29be1fa70711c8680a5438e8e46b335b54b
6
+ metadata.gz: 0d157f640f699a4a063348075ccfa9f0b6d486623e0e60ef3fe6c68f1410b7afdbd73b161f8c559a4a9144f1d8dade3b09c0f794497504d3873fd6124362df67
7
+ data.tar.gz: 4c6af208f066db03e508f1f0ca2fb89b2983900420f17d2fe0d8da8e763aaac236a7961a2809a28ed017da9baf408faea102d8b21556f4a58215b5508f51d530
@@ -24,6 +24,7 @@ module FormProps
24
24
 
25
25
  def input_props(options)
26
26
  return if options.blank?
27
+ # tag_type = options[:type]
27
28
 
28
29
  options.each_pair do |key, value|
29
30
  type = TAG_TYPES[key]
@@ -68,10 +69,12 @@ module FormProps
68
69
  value = value.source
69
70
  end
70
71
 
72
+ is_checkable = respond_to?(:field_type, true) && (field_type == "checkbox" || field_type == "radio")
73
+
71
74
  @controlled ||= nil
72
75
 
73
76
  if !@controlled
74
- if key.to_sym == :value
77
+ if key.to_sym == :value && !is_checkable
75
78
  key = "default_value"
76
79
  end
77
80
 
@@ -20,9 +20,9 @@ module FormProps
20
20
 
21
21
  def render(flatten = false)
22
22
  options = @options.stringify_keys
23
- options[:type] = "checkbox"
23
+ options[:type] = field_type
24
24
  options[:value] = @checked_value
25
- options[:checked] = true if input_checked?(options)
25
+ options[:checked] = input_checked?(options)
26
26
  options[:unchecked_value] = @unchecked_value || ""
27
27
  options[:include_hidden] = options.fetch(:include_hidden) { true }
28
28
 
@@ -48,6 +48,10 @@ module FormProps
48
48
 
49
49
  private
50
50
 
51
+ def field_type
52
+ "checkbox"
53
+ end
54
+
51
55
  def checked?(value)
52
56
  case value
53
57
  when TrueClass, FalseClass
@@ -30,6 +30,12 @@ module FormProps
30
30
  @options, @html_options
31
31
  )
32
32
  end
33
+
34
+ private
35
+
36
+ def field_type
37
+ "select"
38
+ end
33
39
  end
34
40
  end
35
41
  end
@@ -31,6 +31,12 @@ module FormProps
31
31
  option_groups_from_collection_for_select(@collection, @group_method, @group_label_method, @option_key_method, @option_value_method, option_tags_options), @options, @html_options
32
32
  )
33
33
  end
34
+
35
+ private
36
+
37
+ def field_type
38
+ "select"
39
+ end
34
40
  end
35
41
  end
36
42
  end
@@ -18,7 +18,7 @@ module FormProps
18
18
  end
19
19
 
20
20
  def render(flatten = false)
21
- @options[:type] = "radio"
21
+ @options[:type] = field_type
22
22
  @options[:value] = @tag_value
23
23
  @options[:checked] = true if input_checked?(@options)
24
24
 
@@ -38,6 +38,11 @@ module FormProps
38
38
 
39
39
  private
40
40
 
41
+ def field_type
42
+ "radio"
43
+ end
44
+
45
+
41
46
  def sanitized_key
42
47
  @key || (sanitized_method_name + "_#{sanitized_value(@tag_value)}").camelize(:lower)
43
48
  end
@@ -35,6 +35,10 @@ module FormProps
35
35
 
36
36
  private
37
37
 
38
+ def field_type
39
+ "select"
40
+ end
41
+
38
42
  # Grouped choices look like this:
39
43
  #
40
44
  # [nil, []]
@@ -22,6 +22,12 @@ module FormProps
22
22
  time_zone_options_for_select(value || @options[:default], @priority_zones, @options[:model] || ActiveSupport::TimeZone), @options, @html_options
23
23
  )
24
24
  end
25
+
26
+ private
27
+
28
+ def field_type
29
+ "select"
30
+ end
25
31
  end
26
32
  end
27
33
  end
@@ -28,6 +28,12 @@ module FormProps
28
28
  @html_options
29
29
  )
30
30
  end
31
+
32
+ private
33
+
34
+ def field_type
35
+ "select"
36
+ end
31
37
  end
32
38
  end
33
39
  end
@@ -30,7 +30,7 @@ module FormProps
30
30
  options[:include_blank] ||= true unless options[:prompt]
31
31
  end
32
32
 
33
- html_options["type"] = "select"
33
+ html_options["type"] = field_type
34
34
  value_for_blank = options.fetch(:selected) { value }
35
35
  option_tags = add_options(option_tags, options, value_for_blank)
36
36
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FormProps
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: form_props
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
  - Johny Ho
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-31 00:00:00.000000000 Z
11
+ date: 2025-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport