nested_form_fields 0.7.8 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 02d61af1c6293f8421ae8e3c0d9239786a0b67aa
4
- data.tar.gz: 362b4669eb7a3826512a3c3832bfe39538aeb1f1
2
+ SHA256:
3
+ metadata.gz: 236d8d7b63143d4f30595622869bee46712a055ef652de7fd57ae6b754d8e19f
4
+ data.tar.gz: fc404d3d852c8d65097a2559478e8fb7057cdf7d4aab93f151accec28366c3b4
5
5
  SHA512:
6
- metadata.gz: f679f1cdaaaeb1c1c931541c3f3739c2647b75e7ec90c3ebc7fb6b439fcda2540861bb0e36fe3ae652b351c22d2466e174c7bacbc3fbbada57ba08f66a40fa62
7
- data.tar.gz: ad09cd926e9304264bb0f8b1dd741b5eb06582d23e545727b6abe7b01abc6a18148f6933d00dc07d5c1395063b8fa918ed7d840894ebe0951ff34becc583e9bc
6
+ metadata.gz: b77de97deb51cbe1022d436f41d22f9fb89a559d22aa02477d5f7cd8c5d08eb500090c6c5a6771bc437567edffeca7a8edba99543b545693f5123f04570e11b4
7
+ data.tar.gz: ea3b05a99b66042edf6e48798bd8be2903dddad0638d7cb89cb0d370a4673abcd762d05d99453335efdd9e858a982c53f0e399e37578b17567e14535546ae44b
@@ -1,10 +1,10 @@
1
1
  rvm:
2
- - 1.9.3
3
2
  - 2.0.0
4
3
  - 2.1.7
5
4
  - 2.2.3
5
+ - 2.3.2
6
6
 
7
- before_install: gem install bundler -v 1.11.2
7
+ before_install: gem install bundler -v 1.11.2
8
8
 
9
9
  before_script:
10
10
  - "export DISPLAY=:99.0"
data/README.md CHANGED
@@ -14,15 +14,44 @@ It uses jQuery to dynamically add and remove nested associations.
14
14
 
15
15
  Add this line to your application's Gemfile:
16
16
 
17
- gem 'nested_form_fields'
17
+ ```ruby
18
+ gem 'nested_form_fields'
19
+ ```
18
20
 
19
21
  And then execute:
20
22
 
21
- $ bundle
23
+ ```console
24
+ $ bundle
25
+ ```
22
26
 
23
27
  In your application.js file add:
24
28
 
25
- //= require nested_form_fields
29
+ ```javascript
30
+ //= require nested_form_fields
31
+ ```
32
+
33
+ ### Rails 5.1+
34
+
35
+ You will need to install jQuery as Rails dropped it from its default stack.
36
+
37
+ Add to Gemfile:
38
+
39
+ ```ruby
40
+ gem 'jquery-rails'
41
+ ```
42
+
43
+ Execute:
44
+
45
+ ```console
46
+ $ bundle
47
+ ```
48
+
49
+ Add to application.js:
50
+
51
+ ```javascript
52
+ //= require jquery3
53
+ //= require jquery_ujs
54
+ ```
26
55
 
27
56
  ## Usage
28
57
 
@@ -80,7 +109,7 @@ f.add_nested_fields_link :videos, 'Add another funtastic video', class: 'btn btn
80
109
  You can supply a block to the `remove_nested_fields_link` and the `add_nested_fields_link` helpers, as you can with `link_to`:
81
110
 
82
111
  ```haml
83
- = ff.remove_nested_fields_link
112
+ = ff.remove_nested_fields_link do
84
113
  Remove me %span.icon-trash
85
114
  ```
86
115
 
@@ -141,8 +170,8 @@ def user_params
141
170
  params.require(:user)
142
171
  .permit(:name,:email,videos_attributes:[:video_title,:_destroy,:id])
143
172
  # ^^^ ^^^ ^^^
144
- # nested model attrs
145
- # they will let you delete the nested model
173
+ # nested model attrs
174
+ # they will let you delete the nested model
146
175
  end
147
176
  ```
148
177
 
@@ -190,11 +219,11 @@ $(document).on "fields_added.nested_form_fields", (event, param) ->
190
219
 
191
220
  ## Index replacement string
192
221
 
193
- Sometimes your code needs to know what index it has when it is instantiated onto the page.
194
- HTML data elements may need point to other form elements for instance. This is needed for integration
195
- with rails3-jquery-autocomplete.
222
+ Sometimes your code needs to know what index it has when it is instantiated onto the page.
223
+ HTML data elements may need to point to other form elements for instance. This is needed for integration
224
+ with rails3-jquery-autocomplete.
196
225
 
197
- To enable string substitution with the current index use the magic string '__nested_field_for_replace_with_index__'
226
+ To enable string substitution with the current index use the magic string `__nested_field_for_replace_with_index__`.
198
227
 
199
228
  ## Contributing
200
229
 
@@ -39,7 +39,8 @@ nested_form_fields.bind_nested_forms_links = () ->
39
39
  $('body').off("click", '.remove_nested_fields_link')
40
40
  $('body').on 'click', '.remove_nested_fields_link', ->
41
41
  $link = $(this)
42
- return false unless $.rails.allowAction($link)
42
+ return false unless $.rails == undefined || $.rails.allowAction($link)
43
+ return false if $link.attr('disabled')
43
44
  object_class = $link.data('object-class')
44
45
  delete_association_field_name = $link.data('delete-association-field-name')
45
46
  removed_index = parseInt(delete_association_field_name.match('(\\d+\\]\\[_destroy])')[0].match('\\d+')[0])
@@ -51,7 +52,7 @@ nested_form_fields.bind_nested_forms_links = () ->
51
52
  else
52
53
  $nested_fields_container.before "<input type='hidden' name='#{delete_association_field_name}' value='1' />"
53
54
  $nested_fields_container.hide()
54
- $nested_fields_container.find('input[required]:hidden').removeAttr('required')
55
+ $nested_fields_container.find('input[required]:hidden, select[required]:hidden, textarea[required]:hidden').removeAttr('required')
55
56
  $nested_fields_container.trigger("fields_removed.nested_form_fields",{object_class: object_class, delete_association_field_name: delete_association_field_name, removed_index: removed_index});
56
57
  false
57
58
 
@@ -73,12 +73,14 @@ module ActionView::Helpers
73
73
  wrapper_options = options[:wrapper_options].clone || {}
74
74
  if child._destroy == true
75
75
  wrapper_options[:style] = wrapper_options[:style] ? wrapper_options[:style] + ';' + 'display:none' : 'display:none'
76
+ output << destroy_hidden_field(association_name, index)
76
77
  end
77
- output << nested_fields_wrapper(association_name, options[:wrapper_tag], options[:legend], wrapper_options) do
78
- new_block = fields_for_nested_model("#{name}[#{options[:child_index] || nested_child_index(name)}]", child, options, block)
79
- # do substitution in user defined blocks with the current index allows JS functions to have proper references
80
- new_block.gsub('__nested_field_for_replace_with_index__', index.to_s).html_safe
78
+
79
+ # Build the wrapper + content and do substitution with the current index allows JS functions to have proper references
80
+ wrapped_block = nested_fields_wrapper(association_name, options[:wrapper_tag], options[:legend], wrapper_options) do
81
+ fields_for_nested_model("#{name}[#{options[:child_index] || nested_child_index(name)}]", child, options, block)
81
82
  end
83
+ output << wrapped_block.gsub('__nested_field_for_replace_with_index__', index.to_s).html_safe
82
84
  end
83
85
 
84
86
  output << nested_model_template(name, association_name, options, block)
@@ -114,7 +116,7 @@ module ActionView::Helpers
114
116
  end
115
117
 
116
118
  def association_path association_name
117
- "#{object_name.gsub('][','_').gsub(/_attributes/,'').sub('[','_').sub(']','')}_#{association_name}"
119
+ "#{object_name.to_s.gsub('][','_').gsub(/_attributes/,'').sub('[','_').sub(']','')}_#{association_name}"
118
120
  end
119
121
 
120
122
  def index_placeholder association_name
@@ -132,6 +134,11 @@ module ActionView::Helpers
132
134
  end
133
135
  end
134
136
 
137
+ def destroy_hidden_field(association_name, index)
138
+ @template.hidden_field "#{object_name}[#{association_name}_attributes][#{index}]",
139
+ :_destroy, value: 1
140
+ end
141
+
135
142
  def add_default_classes_to_wrapper_options(association_name, wrapper_options)
136
143
  default_classes = ["nested_fields", "nested_#{association_path(association_name)}"]
137
144
  wrapper_options[:class] = wrapper_options[:class].is_a?(String) ? wrapper_options[:class].split(" ") : wrapper_options[:class].to_a
@@ -1,3 +1,3 @@
1
1
  module NestedFormFields
2
- VERSION = "0.7.8"
2
+ VERSION = "0.8.4"
3
3
  end
@@ -21,13 +21,16 @@ Gem::Specification.new do |gem|
21
21
  gem.add_dependency 'coffee-rails', '>= 3.2.1'
22
22
  gem.add_dependency 'jquery-rails'
23
23
 
24
- gem.add_development_dependency 'rspec-rails', '~> 2.9'
24
+ gem.add_development_dependency 'rspec-rails', '~> 3.5'
25
+ gem.add_development_dependency 'nokogiri', '1.6.8.1'
25
26
  gem.add_development_dependency 'assert_difference'
26
27
  gem.add_development_dependency 'capybara'
27
- gem.add_development_dependency 'selenium-webdriver'
28
- gem.add_development_dependency 'sqlite3'
28
+ gem.add_development_dependency 'geckodriver-helper'
29
+ gem.add_development_dependency 'selenium-webdriver', '> 3.0.5'
30
+ gem.add_development_dependency 'sqlite3', '~> 1.3.6'
29
31
  gem.add_development_dependency 'haml', '>= 3.1.5'
30
- gem.add_development_dependency 'haml-rails'
32
+ gem.add_development_dependency 'haml-rails', '~> 0.4.0'
31
33
  gem.add_development_dependency 'sass-rails', '~> 3.2.3'
32
34
  gem.add_development_dependency 'test-unit', '1.2.3'
35
+ gem.add_development_dependency 'public_suffix', '~> 1.4.6'
33
36
  end
@@ -9,6 +9,10 @@ ENV["RAILS_ENV"] = 'test'
9
9
  require_relative "dummy/config/environment"
10
10
 
11
11
  require 'rspec/rails'
12
+
13
+ # prevent Test::Unit's AutoRunner from executing during RSpec's rake task see https://github.com/rspec/rspec-rails/issues/1171
14
+ Test::Unit.run = true if defined?(Test::Unit) && Test::Unit.respond_to?(:run=)
15
+
12
16
  require 'assert_difference'
13
17
  require 'sqlite3'
14
18
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nested_form_fields
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.8
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nico Ritsche
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-07 00:00:00.000000000 Z
11
+ date: 2020-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -58,14 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.9'
61
+ version: '3.5'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.9'
68
+ version: '3.5'
69
+ - !ruby/object:Gem::Dependency
70
+ name: nokogiri
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 1.6.8.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 1.6.8.1
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: assert_difference
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +109,7 @@ dependencies:
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
- name: selenium-webdriver
112
+ name: geckodriver-helper
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
@@ -108,20 +122,34 @@ dependencies:
108
122
  - - ">="
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: selenium-webdriver
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">"
130
+ - !ruby/object:Gem::Version
131
+ version: 3.0.5
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">"
137
+ - !ruby/object:Gem::Version
138
+ version: 3.0.5
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: sqlite3
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
- - - ">="
143
+ - - "~>"
116
144
  - !ruby/object:Gem::Version
117
- version: '0'
145
+ version: 1.3.6
118
146
  type: :development
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
- - - ">="
150
+ - - "~>"
123
151
  - !ruby/object:Gem::Version
124
- version: '0'
152
+ version: 1.3.6
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: haml
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -140,16 +168,16 @@ dependencies:
140
168
  name: haml-rails
141
169
  requirement: !ruby/object:Gem::Requirement
142
170
  requirements:
143
- - - ">="
171
+ - - "~>"
144
172
  - !ruby/object:Gem::Version
145
- version: '0'
173
+ version: 0.4.0
146
174
  type: :development
147
175
  prerelease: false
148
176
  version_requirements: !ruby/object:Gem::Requirement
149
177
  requirements:
150
- - - ">="
178
+ - - "~>"
151
179
  - !ruby/object:Gem::Version
152
- version: '0'
180
+ version: 0.4.0
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: sass-rails
155
183
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +206,20 @@ dependencies:
178
206
  - - '='
179
207
  - !ruby/object:Gem::Version
180
208
  version: 1.2.3
209
+ - !ruby/object:Gem::Dependency
210
+ name: public_suffix
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: 1.4.6
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: 1.4.6
181
223
  description: |-
182
224
  Rails gem for dynamically adding and removing nested has_many association fields in a form.
183
225
  Uses jQuery and supports multiple nesting levels. Requires Ruby 1.9+ and the asset pipeline.
@@ -194,8 +236,6 @@ files:
194
236
  - LICENSE
195
237
  - README.md
196
238
  - Rakefile
197
- - lib/assets/.DS_Store
198
- - lib/assets/javascripts/.DS_Store
199
239
  - lib/assets/javascripts/nested_form_fields.js.coffee
200
240
  - lib/nested_form_fields.rb
201
241
  - lib/nested_form_fields/version.rb
@@ -271,8 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
271
311
  - !ruby/object:Gem::Version
272
312
  version: '0'
273
313
  requirements: []
274
- rubyforge_project:
275
- rubygems_version: 2.5.1
314
+ rubygems_version: 3.0.4
276
315
  signing_key:
277
316
  specification_version: 4
278
317
  summary: Rails gem for dynamically adding and removing nested has_many association