action_form 0.1.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b89eb9b2b47de093e36f453363da7465ae8167d40f7a75e60c00019ae0d217c
4
- data.tar.gz: 334f73299ec2b70dd9d6ff1642cd5cf59aff5310920471800d2233cc49c31264
3
+ metadata.gz: 3c388d4f18fe078d19f3bbc594f38785dbab5894f78296c2ca497de55babf291
4
+ data.tar.gz: 30dea5a93bf2f856f473cfd3332d0422f8bec36460f47141845fc0ded75b1c1a
5
5
  SHA512:
6
- metadata.gz: 4f5db0392feef195df986be0a63ee9cfe97c48312451ab4714d5d2a9bf97df4b12598a79a2db7260523356d1c28b95492ba56de55a8f5dfb54346f38b0e02087
7
- data.tar.gz: 99ac20473487f9e37e4405375dc4bc6f092ba308b5f57e09f0df9cb1a569c3b744c31596f47c6363c39ac7221c47b2af0571d219109b3f3a881d747d27d46328
6
+ metadata.gz: f1e40b17cdc9f0afa700128fb05a724c6f6695881ea5047ceb4c00e3a2d7dc75915dfd7bd1de230cada42dc093b2e6b39b8fc978c04337d426a63b8930162dc9
7
+ data.tar.gz: b5e8960c78350ec32bfd4a665cafceb62287f7eabdd55b434fc85380fcaa3f95cd18f05fbf49d989736a4569f8c4b56cd23ef95682f006a9851ee3a46f9ff7ba
@@ -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
- value = Struct.new(*elements_keys).new
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
@@ -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("easyFormRemoveSubform(event)"), &block)
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("easyFormAddSubform(event)"), &block)
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 easyFormAddSubform(event) {
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 easyFormRemoveSubform(event) {
63
+ function actionFormRemoveSubform(event) {
64
64
  event.preventDefault()
65
65
  var subform = event.target.closest(".new_#{name}")
66
66
  if (subform) { subform.remove() }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActionForm
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
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.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrii Baran