action_form 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/action_form/base.rb +2 -1
- data/lib/action_form/element.rb +6 -3
- data/lib/action_form/rendering.rb +2 -2
- data/lib/action_form/subforms_collection.rb +2 -2
- data/lib/action_form/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: 3c388d4f18fe078d19f3bbc594f38785dbab5894f78296c2ca497de55babf291
|
4
|
+
data.tar.gz: 30dea5a93bf2f856f473cfd3332d0422f8bec36460f47141845fc0ded75b1c1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1e40b17cdc9f0afa700128fb05a724c6f6695881ea5047ceb4c00e3a2d7dc75915dfd7bd1de230cada42dc093b2e6b39b8fc978c04337d426a63b8930162dc9
|
7
|
+
data.tar.gz: b5e8960c78350ec32bfd4a665cafceb62287f7eabdd55b434fc85380fcaa3f95cd18f05fbf49d989736a4569f8c4b56cd23ef95682f006a9851ee3a46f9ff7ba
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://qlty.sh/gh/andriy-baran/projects/easy_params)
|
4
4
|
[](https://qlty.sh/gh/andriy-baran/projects/easy_params)
|
5
|
+
[](https://badge.fury.io/rb/action_form)
|
5
6
|
|
6
7
|
This library allows you to build complex forms in Ruby with a simple DSL. It provides:
|
7
8
|
|
data/lib/action_form/base.rb
CHANGED
@@ -101,7 +101,8 @@ module ActionForm
|
|
101
101
|
def build_subform_template(name, form_definition)
|
102
102
|
html_name = subform_html_name(name, index: "NEW_RECORD")
|
103
103
|
elements_keys = form_definition.elements.keys.push(:persisted?)
|
104
|
-
|
104
|
+
values = form_definition.elements.values.map(&:default)
|
105
|
+
value = Struct.new(*elements_keys).new(*values)
|
105
106
|
form_definition.new(name: name, scope: html_name, model: value, template: true).tap do |subform|
|
106
107
|
subform.helpers = helpers
|
107
108
|
end
|
data/lib/action_form/element.rb
CHANGED
@@ -18,6 +18,8 @@ module ActionForm
|
|
18
18
|
end
|
19
19
|
|
20
20
|
class << self
|
21
|
+
attr_reader :default
|
22
|
+
|
21
23
|
def label_options
|
22
24
|
@label_options ||= [{ text: nil, display: true }, {}]
|
23
25
|
end
|
@@ -38,7 +40,8 @@ module ActionForm
|
|
38
40
|
@tags_list ||= {}
|
39
41
|
end
|
40
42
|
|
41
|
-
def input(type:, **options)
|
43
|
+
def input(type:, default: nil, **options)
|
44
|
+
@default = default
|
42
45
|
@input_options = { type: type }.merge(options)
|
43
46
|
tags_list.merge!(input: type)
|
44
47
|
end
|
@@ -104,9 +107,9 @@ module ActionForm
|
|
104
107
|
end
|
105
108
|
|
106
109
|
def value
|
107
|
-
return unless object
|
110
|
+
return self.class.default unless object
|
108
111
|
|
109
|
-
object.public_send(name)
|
112
|
+
object.public_send(name) || self.class.default
|
110
113
|
end
|
111
114
|
|
112
115
|
def render?
|
@@ -55,11 +55,11 @@ module ActionForm
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def render_remove_subform_button(**html_attributes, &block)
|
58
|
-
a(**html_attributes, onclick: safe("
|
58
|
+
a(**html_attributes, onclick: safe("actionFormRemoveSubform(event)"), &block)
|
59
59
|
end
|
60
60
|
|
61
61
|
def render_new_subform_button(**html_attributes, &block)
|
62
|
-
a(**html_attributes, onclick: safe("
|
62
|
+
a(**html_attributes, onclick: safe("actionFormAddSubform(event)"), &block)
|
63
63
|
end
|
64
64
|
|
65
65
|
private
|
@@ -44,7 +44,7 @@ module ActionForm
|
|
44
44
|
|
45
45
|
def add_subform_js
|
46
46
|
<<~JS
|
47
|
-
function
|
47
|
+
function actionFormAddSubform(event) {
|
48
48
|
event.preventDefault()
|
49
49
|
var template = document.querySelector("##{template_html_id}")
|
50
50
|
const content = template.innerHTML.replace(/NEW_RECORD/g, new Date().getTime().toString())
|
@@ -60,7 +60,7 @@ module ActionForm
|
|
60
60
|
|
61
61
|
def remove_subform_js
|
62
62
|
<<~JS
|
63
|
-
function
|
63
|
+
function actionFormRemoveSubform(event) {
|
64
64
|
event.preventDefault()
|
65
65
|
var subform = event.target.closest(".new_#{name}")
|
66
66
|
if (subform) { subform.remove() }
|
data/lib/action_form/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: action_form
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrii Baran
|
@@ -15,14 +15,14 @@ dependencies:
|
|
15
15
|
requirements:
|
16
16
|
- - "~>"
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: 0.
|
18
|
+
version: '0.7'
|
19
19
|
type: :runtime
|
20
20
|
prerelease: false
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
22
22
|
requirements:
|
23
23
|
- - "~>"
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: 0.
|
25
|
+
version: '0.7'
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: phlex
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|