form_props 0.0.2 → 0.0.4
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/README.md +12 -14
- data/lib/form_props/action_view_extensions/form_helper.rb +4 -3
- data/lib/form_props/form_builder.rb +5 -4
- data/lib/form_props/inputs/hidden_field.rb +1 -1
- data/lib/form_props/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3200a705c61ab6b0ebae4316cb80874b53ee0be1297e1230632e8b4568d7054
|
4
|
+
data.tar.gz: e0f83bff9ce077fee68002cedc1a0906d4139aff509fe514c73a4e085c82a386
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6054204836874c8cebb5fa3f9cfd6f84fb3cb5c96f27ac9945683dc5e2aac73fe4be3a652dd64d3cfab33bfc70703fb2283fcf553d1908eaba46a0b4c10a8c7c
|
7
|
+
data.tar.gz: d586f6ebb862c1e75fe55056cdf7138dc72db2a0e3f2c847563524d2889d44b5afb16dc4135681b7524e80c4d2081ae08719fdd46951e3a14631fa73fa84a504
|
data/README.md
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# Form Props
|
2
2
|
|
3
|
-

|
4
4
|
|
5
|
-
FormProps is a Rails form builder that outputs HTML
|
6
|
-
|
7
|
-
React, and React Native.
|
5
|
+
FormProps is a Rails form builder that outputs HTML props instead of tags. Now
|
6
|
+
you can enjoy the power and convenience of Rails helpers in React!
|
8
7
|
|
9
8
|
By separting attributes from tags, FormProps can offer greater flexbility than normal
|
10
9
|
Rails form builders; allowing designers to stay longer in HTML land and more easily
|
@@ -26,7 +25,7 @@ gem "form_props"
|
|
26
25
|
and `bundle install`
|
27
26
|
|
28
27
|
## Usage
|
29
|
-
`form_props` is designed to be used in a [PropsTemplate] template (it can work with
|
28
|
+
`form_props` is designed to be used in a [PropsTemplate] template (it can work with
|
30
29
|
[jbuilder](#jbuilder)). For example in your `new.json.props`:
|
31
30
|
|
32
31
|
```ruby
|
@@ -46,7 +45,7 @@ would output
|
|
46
45
|
props: {
|
47
46
|
id: "create-post",
|
48
47
|
action: "/posts/123",
|
49
|
-
|
48
|
+
acceptCharset: "UTF-8",
|
50
49
|
method: "post"
|
51
50
|
},
|
52
51
|
extras: {
|
@@ -54,19 +53,19 @@ would output
|
|
54
53
|
name: "_method",
|
55
54
|
type: "hidden",
|
56
55
|
defaultValue: "patch",
|
57
|
-
|
56
|
+
autoComplete: "off"
|
58
57
|
},
|
59
58
|
utf8: {
|
60
59
|
name: "utf8",
|
61
60
|
type: "hidden",
|
62
61
|
defaultValue: "\u0026#x2713;",
|
63
|
-
|
62
|
+
autoComplete: "off"
|
64
63
|
}
|
65
64
|
csrf: {
|
66
65
|
name: "utf8",
|
67
66
|
type: "authenticity_token",
|
68
67
|
defaultValue: "SomeTOken!23$",
|
69
|
-
|
68
|
+
autoComplete: "off"
|
70
69
|
}
|
71
70
|
},
|
72
71
|
inputs: {
|
@@ -84,12 +83,11 @@ import React from 'react'
|
|
84
83
|
|
85
84
|
export default ({props, inputs, extras}) => {
|
86
85
|
<form {...props}>
|
87
|
-
{Object.values(extras).map((hiddenProps) => (<input {...hiddenProps}
|
86
|
+
{Object.values(extras).map((hiddenProps) => (<input {...hiddenProps} key={hiddenProps.name}/>))}
|
88
87
|
|
89
|
-
<input {...inputs.title}
|
88
|
+
<input {...inputs.title} />
|
90
89
|
<label for={inputs.title.id}>Your Name</label>
|
91
|
-
|
92
|
-
<input {...inputs.submit} type="submit"/>
|
90
|
+
<button {...inputs.submit}>{inputs.submit.text}</button>
|
93
91
|
</form>
|
94
92
|
}
|
95
93
|
```
|
@@ -649,7 +647,7 @@ available.
|
|
649
647
|
|
650
648
|
## jbuilder
|
651
649
|
|
652
|
-
form_props can work with jbuilder, but needs an extra call in the beginning of
|
650
|
+
form_props can work with jbuilder, but needs an extra call in the beginning of
|
653
651
|
your template to `FormProps.set` to inject `json`. For example.
|
654
652
|
|
655
653
|
```ruby
|
@@ -40,6 +40,7 @@ module FormProps
|
|
40
40
|
end
|
41
41
|
|
42
42
|
html_options = html_options_for_form_with(url, model, **options)
|
43
|
+
html_options["acceptCharset"] ||= html_options.delete("accept-charset")
|
43
44
|
|
44
45
|
json.extras do
|
45
46
|
extra_props_for_form(json, html_options)
|
@@ -62,7 +63,7 @@ module FormProps
|
|
62
63
|
json.name request_forgery_protection_token.to_s
|
63
64
|
json.type "hidden"
|
64
65
|
json.default_value token
|
65
|
-
json.
|
66
|
+
json.auto_complete "off"
|
66
67
|
end
|
67
68
|
end
|
68
69
|
end
|
@@ -72,7 +73,7 @@ module FormProps
|
|
72
73
|
json.name "_method"
|
73
74
|
json.type "hidden"
|
74
75
|
json.default_value method.to_s
|
75
|
-
json.
|
76
|
+
json.auto_complete "off"
|
76
77
|
end
|
77
78
|
end
|
78
79
|
|
@@ -81,7 +82,7 @@ module FormProps
|
|
81
82
|
json.name "utf8"
|
82
83
|
json.type "hidden"
|
83
84
|
json.default_value "✓"
|
84
|
-
json.
|
85
|
+
json.auto_complete "off"
|
85
86
|
end
|
86
87
|
end
|
87
88
|
|
@@ -132,7 +132,7 @@ module FormProps
|
|
132
132
|
def submit(value = nil, options = {})
|
133
133
|
value, options = nil, value if value.is_a?(Hash)
|
134
134
|
value ||= submit_default_value
|
135
|
-
options = {name: "commit",
|
135
|
+
options = {name: "commit", text: value}.update(options)
|
136
136
|
|
137
137
|
Inputs::Submit.new(@template, options).render
|
138
138
|
end
|
@@ -140,6 +140,7 @@ module FormProps
|
|
140
140
|
def fields_for_with_nested_attributes(association_name, association, options, block)
|
141
141
|
name = "#{object_name}[#{association_name}_attributes]"
|
142
142
|
association = convert_to_model(association)
|
143
|
+
json = @template.instance_variable_get(:@__json)
|
143
144
|
|
144
145
|
if association.respond_to?(:persisted?)
|
145
146
|
association = [association] if @object.public_send(association_name).respond_to?(:to_ary)
|
@@ -150,8 +151,8 @@ module FormProps
|
|
150
151
|
if association.respond_to?(:to_ary)
|
151
152
|
explicit_child_index = options[:child_index]
|
152
153
|
|
153
|
-
|
154
|
-
|
154
|
+
json.set!("#{association_name}_attributes") do
|
155
|
+
json.array! association do |child|
|
155
156
|
if explicit_child_index
|
156
157
|
options[:child_index] = explicit_child_index.call if explicit_child_index.respond_to?(:call)
|
157
158
|
else
|
@@ -162,7 +163,7 @@ module FormProps
|
|
162
163
|
end
|
163
164
|
end
|
164
165
|
elsif association
|
165
|
-
|
166
|
+
json.set!("#{association_name}_attributes") do
|
166
167
|
fields_for_nested_model(name, association, options, block)
|
167
168
|
end
|
168
169
|
end
|
data/lib/form_props/version.rb
CHANGED
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.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Johny Ho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -106,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
106
106
|
requirements:
|
107
107
|
- - ">="
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '2.
|
109
|
+
version: '2.7'
|
110
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
111
|
requirements:
|
112
112
|
- - ">="
|