vanilla_nested 1.6.2 → 1.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7d2002ba8ba1ccf4f6e749969bff008be4a64f2a30d2e3ec011947d1cf0956e
4
- data.tar.gz: e0a2d6e189be30823c4a68a95fbc48fb07c83fb1b02e1e46b4cfa1f8cf2c2323
3
+ metadata.gz: ac7c63dd72d8c42d48ab71efde141c98ec65a465cfd8323e0e5f447ecc7ebfd9
4
+ data.tar.gz: 2a3b4ca86838840ae7d82f85627e6227f2e45023b81e274ecc1b2dd3ec882514
5
5
  SHA512:
6
- metadata.gz: a35ecfef2084cc706603b16a2ec45088d1d061a5007ea98ba2643769e21e6c4ea24b7f80b2057bbf80e33c5c01b0cfc52c84312b3bc16a248f65329a8a0bcd18
7
- data.tar.gz: 372d0a1a456a17cd339fa95dcb7b65a8d16c9940acee89aeb5a803f15af0e73ff757f93b85a756dbbe9a64cc25dc8142d203b2331c8dc6f7fe171679e4622ee1
6
+ metadata.gz: 9053d7029a45a74074f441d525ba98abc262e4d818ee2f226686bdf1842287835fedd1c620fd3f7991d817c1ea8cac60757fc803a6c0109a36c40de05bdff7b1
7
+ data.tar.gz: 50b6c9cc47231d7bb69804797a46870c1ad8c4293a3718b95b999007139253bd6bb5304b662ccb14e5851a2514ed41712735b9913bff1555cb8fefe166a47c09
@@ -63,6 +63,7 @@
63
63
  if (wrapper.classList.contains('added-by-vanilla-nested')) {
64
64
  wrapper.remove();
65
65
  } else {
66
+ wrapper.classList.add('removed-by-vanilla-nested');
66
67
  const destroyInput = wrapper.querySelector('[name$="[_destroy]"');
67
68
  wrapper.innerHTML = '';
68
69
  wrapper.insertAdjacentElement('afterbegin', destroyInput);
@@ -85,6 +86,7 @@
85
86
  // "wrapper" is the wrapper to hide
86
87
  // "element" is the link to remove the wrapper
87
88
  function hideFieldsWithUndo(wrapper, element) {
89
+ wrapper.classList.add('hidden-by-vanilla-nested');
88
90
  [...wrapper.children].forEach(child => {
89
91
  // store original style for after undo
90
92
  if (child.getAttribute("style")) {
@@ -104,6 +106,7 @@
104
106
  clearTimeout(timer);
105
107
  unhideFields(wrapper);
106
108
  wrapper.querySelector('[name$="[_destroy]"]').value = '0';
109
+ wrapper.classList.remove('hidden-by-vanilla-nested');
107
110
  _dispatchEvent(wrapper, 'vanilla-nested:fields-hidden-undo', undoLink);
108
111
  undoLink.remove();
109
112
  }
@@ -113,6 +116,7 @@
113
116
  // start the timer
114
117
  const _onTimerCompleted = function() {
115
118
  hideWrapper(wrapper);
119
+ wrapper.classList.remove('hidden-by-vanilla-nested');
116
120
  unhideFields(wrapper);
117
121
  _dispatchEvent(wrapper, 'vanilla-nested:fields-removed', undoLink);
118
122
  undoLink.remove();
@@ -167,11 +171,19 @@
167
171
  })
168
172
  }
169
173
 
170
- let vanillaNestedInitialized = false;
171
- document.addEventListener('DOMContentLoaded', function(){
174
+ let vanillaNestedInitialized = false
175
+ const initOnce = () => {
172
176
  if (!vanillaNestedInitialized) {
173
- vanillaNestedInitialized = true;
174
- initVanillaNested();
177
+ vanillaNestedInitialized = true
178
+ initVanillaNested()
175
179
  }
176
- })
180
+ }
181
+
182
+ if (["complete", "interactive"].includes(document.readyState)) {
183
+ // if DOMContentLoaded was already fired
184
+ initOnce()
185
+ } else {
186
+ // else wait for it
187
+ document.addEventListener("DOMContentLoaded", () => initOnce())
188
+ }
177
189
  })()
@@ -9,11 +9,12 @@ module VanillaNested
9
9
  # @param link_classes [String] space separated classes for the link tag
10
10
  # @param insert_method [:append, :prepend] tells javascript if the new fields should be appended or prepended to the container
11
11
  # @param partial_form_variable [String, Symbol] name of the variable that represents the form builder inside the fields partial
12
+ # @param partial_locals [Hash] extra params that should be send to the partial
12
13
  # @param tag [String] HTML tag to use for the html generated, defaults to and `a` tag
13
14
  # @param link_content [Block] block of code for the link content
14
15
  # @param tag_attributes [Hash<attribute, value>] hash with attribute,value pairs for the html tag
15
16
  # @return [String] link tag
16
- def link_to_add_nested(form, association, container_selector, link_text: nil, link_classes: '', insert_method: :append, partial: nil, partial_form_variable: :form, tag: 'a', tag_attributes: {}, &link_content)
17
+ def link_to_add_nested(form, association, container_selector, link_text: nil, link_classes: '', insert_method: :append, partial: nil, partial_form_variable: :form, partial_locals: {}, tag: 'a', tag_attributes: {}, &link_content)
17
18
  association_class = form.object.class.reflections[association.to_s].klass
18
19
  object = association_class.new
19
20
 
@@ -21,7 +22,7 @@ module VanillaNested
21
22
 
22
23
  html = capture do
23
24
  form.fields_for association, object, child_index: '_idx_placeholder_' do |ff|
24
- render partial: partial_name, locals: { partial_form_variable => ff }
25
+ render partial: partial_name, locals: { partial_form_variable => ff }.merge(partial_locals)
25
26
  end
26
27
  end
27
28
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vanilla_nested
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
4
+ version: 1.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ariel Juodziukynas <arieljuod@gmail.com>
@@ -38,7 +38,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
38
38
  - !ruby/object:Gem::Version
39
39
  version: '0'
40
40
  requirements: []
41
- rubygems_version: 3.0.9
41
+ rubygems_version: 3.4.6
42
42
  signing_key:
43
43
  specification_version: 4
44
44
  summary: Dynamic nested forms using vanilla javascript