cocooned 1.4.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +178 -0
- data/README.md +244 -172
- data/app/assets/javascripts/cocoon.js +1 -13
- data/app/assets/javascripts/cocooned.js +929 -399
- data/app/assets/stylesheets/cocooned.css +1 -9
- data/cocooned.gemspec +27 -18
- data/lib/cocooned/association/builder.rb +66 -0
- data/lib/cocooned/association/renderer.rb +53 -0
- data/lib/cocooned/association.rb +8 -0
- data/lib/cocooned/deprecation.rb +105 -0
- data/lib/cocooned/helpers/containers.rb +72 -0
- data/lib/cocooned/helpers/tags/add.rb +136 -0
- data/lib/cocooned/helpers/tags/down.rb +76 -0
- data/lib/cocooned/helpers/tags/remove.rb +78 -0
- data/lib/cocooned/helpers/tags/up.rb +76 -0
- data/lib/cocooned/helpers/tags.rb +60 -0
- data/lib/cocooned/helpers.rb +3 -329
- data/lib/cocooned/railtie.rb +7 -2
- data/lib/cocooned/tags/add.rb +61 -0
- data/lib/cocooned/tags/base.rb +61 -0
- data/lib/cocooned/tags/down.rb +19 -0
- data/lib/cocooned/tags/remove.rb +35 -0
- data/lib/cocooned/tags/up.rb +19 -0
- data/lib/cocooned/tags.rb +12 -0
- data/lib/cocooned/tags_helper.rb +83 -0
- data/lib/cocooned/version.rb +1 -1
- data/lib/cocooned.rb +6 -1
- metadata +51 -86
- data/History.md +0 -283
- data/Rakefile +0 -113
- data/lib/cocooned/association_builder.rb +0 -68
- data/lib/cocooned/helpers/cocoon_compatibility.rb +0 -27
- data/lib/cocooned/helpers/deprecate.rb +0 -47
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Cocooned
|
4
|
+
module Tags # :nodoc:
|
5
|
+
autoload :Base, 'cocooned/tags/base'
|
6
|
+
|
7
|
+
autoload :Add, 'cocooned/tags/add'
|
8
|
+
autoload :Down, 'cocooned/tags/down'
|
9
|
+
autoload :Remove, 'cocooned/tags/remove'
|
10
|
+
autoload :Up, 'cocooned/tags/up'
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Cocooned
|
4
|
+
module TagsHelper # :nodoc:
|
5
|
+
module DefaultLabel # :nodoc:
|
6
|
+
protected
|
7
|
+
|
8
|
+
def default_label
|
9
|
+
keys = default_label_i18n_keys.collect(&:to_sym) + [action.to_s.humanize]
|
10
|
+
I18n.t(keys.first, default: keys.drop(1))
|
11
|
+
end
|
12
|
+
|
13
|
+
def default_label_i18n_keys
|
14
|
+
i18n_namespaces.collect { |ns| "#{ns}.defaults.#{action}" }
|
15
|
+
end
|
16
|
+
|
17
|
+
def i18n_namespaces
|
18
|
+
%w[cocooned]
|
19
|
+
end
|
20
|
+
|
21
|
+
def action
|
22
|
+
self.class.name.demodulize.underscore
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
module AssociationLabel # :nodoc:
|
27
|
+
protected
|
28
|
+
|
29
|
+
def default_label_i18n_keys
|
30
|
+
super + i18n_namespaces.collect { |ns| "#{ns}.#{association}.#{action}" }
|
31
|
+
end
|
32
|
+
|
33
|
+
# Extract association name from form's object_name.
|
34
|
+
# Ex: 'items' from 'list[items_attributes][0]'
|
35
|
+
def association
|
36
|
+
matches = form.object_name.scan(/\[([^\]]+)\]\[[^\]]+\]\z/).flatten
|
37
|
+
return matches.first.delete_suffix('_attributes') if matches.size.positive?
|
38
|
+
|
39
|
+
form.object.class.to_s.tableize
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
module DataAttributes # :nodoc:
|
44
|
+
protected
|
45
|
+
|
46
|
+
def html_data
|
47
|
+
html_data_normalize(options.delete(:data) || {})
|
48
|
+
end
|
49
|
+
|
50
|
+
# Normalize keys as underscored symbol to ease future lookups (as we
|
51
|
+
# won't need to check for dashed or underscored option names everytime)
|
52
|
+
def html_data_normalize(data)
|
53
|
+
data.transform_keys { |key| key.to_s.underscore.to_sym }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
module Renderer # :nodoc:
|
58
|
+
protected
|
59
|
+
|
60
|
+
def renderer
|
61
|
+
Association::Renderer.new(template, form, association, builder.build, renderer_options)
|
62
|
+
end
|
63
|
+
|
64
|
+
def renderer_options
|
65
|
+
extract_options(:locals, :partial, :form_name, :form_options)
|
66
|
+
end
|
67
|
+
|
68
|
+
def builder
|
69
|
+
Association::Builder.new(form.object, association, builder_options)
|
70
|
+
end
|
71
|
+
|
72
|
+
def builder_options
|
73
|
+
extract_options(:wrap_object, :force_non_association_create)
|
74
|
+
end
|
75
|
+
|
76
|
+
def extract_options(*names)
|
77
|
+
names.each_with_object({}) do |name, extracted|
|
78
|
+
extracted[name] = options.delete(name) if options.key?(name)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
data/lib/cocooned/version.rb
CHANGED
data/lib/cocooned.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'cocooned/deprecation'
|
3
4
|
require 'cocooned/railtie'
|
4
5
|
|
5
|
-
module Cocooned
|
6
|
+
module Cocooned # :nodoc:
|
7
|
+
autoload :Association, 'cocooned/association'
|
8
|
+
autoload :Helpers, 'cocooned/helpers'
|
9
|
+
autoload :Tags, 'cocooned/tags'
|
10
|
+
autoload :TagsHelper, 'cocooned/tags_helper'
|
6
11
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocooned
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gaël-Ian Havard
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-03-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -17,7 +17,7 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '6.0'
|
21
21
|
- - "<="
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: '7.1'
|
@@ -27,7 +27,7 @@ dependencies:
|
|
27
27
|
requirements:
|
28
28
|
- - ">="
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: '
|
30
|
+
version: '6.0'
|
31
31
|
- - "<="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '7.1'
|
@@ -46,132 +46,78 @@ dependencies:
|
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '2.1'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
49
|
+
name: formtastic
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '4.0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '4.0'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: rake
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
type: :development
|
70
|
-
prerelease: false
|
71
|
-
version_requirements: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name: rspec
|
78
64
|
requirement: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
68
|
+
version: '13.0'
|
83
69
|
type: :development
|
84
70
|
prerelease: false
|
85
71
|
version_requirements: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
73
|
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
75
|
+
version: '13.0'
|
90
76
|
- !ruby/object:Gem::Dependency
|
91
|
-
name: rspec
|
77
|
+
name: rspec
|
92
78
|
requirement: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
82
|
+
version: '3.11'
|
97
83
|
type: :development
|
98
84
|
prerelease: false
|
99
85
|
version_requirements: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
104
|
-
- !ruby/object:Gem::Dependency
|
105
|
-
name: rubocop
|
106
|
-
requirement: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
type: :development
|
112
|
-
prerelease: false
|
113
|
-
version_requirements: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
- !ruby/object:Gem::Dependency
|
119
|
-
name: rubocop-performance
|
120
|
-
requirement: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
type: :development
|
126
|
-
prerelease: false
|
127
|
-
version_requirements: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
- !ruby/object:Gem::Dependency
|
133
|
-
name: rubocop-rails
|
134
|
-
requirement: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
type: :development
|
140
|
-
prerelease: false
|
141
|
-
version_requirements: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
89
|
+
version: '3.11'
|
146
90
|
- !ruby/object:Gem::Dependency
|
147
|
-
name:
|
91
|
+
name: rspec-rails
|
148
92
|
requirement: !ruby/object:Gem::Requirement
|
149
93
|
requirements:
|
150
94
|
- - ">="
|
151
95
|
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
96
|
+
version: '5.0'
|
153
97
|
type: :development
|
154
98
|
prerelease: false
|
155
99
|
version_requirements: !ruby/object:Gem::Requirement
|
156
100
|
requirements:
|
157
101
|
- - ">="
|
158
102
|
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
103
|
+
version: '5.0'
|
160
104
|
- !ruby/object:Gem::Dependency
|
161
|
-
name:
|
105
|
+
name: simple_form
|
162
106
|
requirement: !ruby/object:Gem::Requirement
|
163
107
|
requirements:
|
164
|
-
- - "
|
108
|
+
- - "~>"
|
165
109
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
110
|
+
version: '5.1'
|
167
111
|
type: :development
|
168
112
|
prerelease: false
|
169
113
|
version_requirements: !ruby/object:Gem::Requirement
|
170
114
|
requirements:
|
171
|
-
- - "
|
115
|
+
- - "~>"
|
172
116
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
174
|
-
description: Easier nested form
|
117
|
+
version: '5.1'
|
118
|
+
description: " Easier nested form in Rails with capabilities to add, remove, reorder
|
119
|
+
or limit nested items. Works with standard Rails form builder, Formtastic or SimpleForm,
|
120
|
+
and with or without jQuery. "
|
175
121
|
email:
|
176
122
|
- gael-ian@notus.sh
|
177
123
|
- nathan@dixis.com
|
@@ -179,27 +125,46 @@ executables: []
|
|
179
125
|
extensions: []
|
180
126
|
extra_rdoc_files: []
|
181
127
|
files:
|
182
|
-
-
|
128
|
+
- CHANGELOG.md
|
183
129
|
- LICENSE
|
184
130
|
- README.md
|
185
|
-
- Rakefile
|
186
131
|
- app/assets/javascripts/cocoon.js
|
187
132
|
- app/assets/javascripts/cocooned.js
|
188
133
|
- app/assets/stylesheets/cocoon.css
|
189
134
|
- app/assets/stylesheets/cocooned.css
|
190
135
|
- cocooned.gemspec
|
191
136
|
- lib/cocooned.rb
|
192
|
-
- lib/cocooned/
|
137
|
+
- lib/cocooned/association.rb
|
138
|
+
- lib/cocooned/association/builder.rb
|
139
|
+
- lib/cocooned/association/renderer.rb
|
140
|
+
- lib/cocooned/deprecation.rb
|
193
141
|
- lib/cocooned/helpers.rb
|
194
|
-
- lib/cocooned/helpers/
|
195
|
-
- lib/cocooned/helpers/
|
142
|
+
- lib/cocooned/helpers/containers.rb
|
143
|
+
- lib/cocooned/helpers/tags.rb
|
144
|
+
- lib/cocooned/helpers/tags/add.rb
|
145
|
+
- lib/cocooned/helpers/tags/down.rb
|
146
|
+
- lib/cocooned/helpers/tags/remove.rb
|
147
|
+
- lib/cocooned/helpers/tags/up.rb
|
196
148
|
- lib/cocooned/railtie.rb
|
149
|
+
- lib/cocooned/tags.rb
|
150
|
+
- lib/cocooned/tags/add.rb
|
151
|
+
- lib/cocooned/tags/base.rb
|
152
|
+
- lib/cocooned/tags/down.rb
|
153
|
+
- lib/cocooned/tags/remove.rb
|
154
|
+
- lib/cocooned/tags/up.rb
|
155
|
+
- lib/cocooned/tags_helper.rb
|
197
156
|
- lib/cocooned/version.rb
|
198
|
-
homepage:
|
157
|
+
homepage: https://github.com/notus-sh/cocooned
|
199
158
|
licenses:
|
200
159
|
- Apache-2.0
|
201
160
|
metadata:
|
202
161
|
allowed_push_host: https://rubygems.org
|
162
|
+
rubygems_mfa_required: 'true'
|
163
|
+
bug_tracker_uri: https://github.com/notus-sh/cocooned/issues
|
164
|
+
changelog_uri: https://github.com/notus-sh/cocooned/blob/main/CHANGELOG.md
|
165
|
+
homepage_uri: https://github.com/notus-sh/cocooned
|
166
|
+
source_code_uri: https://github.com/notus-sh/cocooned
|
167
|
+
funding_uri: https://opencollective.com/notus-sh
|
203
168
|
post_install_message:
|
204
169
|
rdoc_options: []
|
205
170
|
require_paths:
|
@@ -208,15 +173,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
208
173
|
requirements:
|
209
174
|
- - ">="
|
210
175
|
- !ruby/object:Gem::Version
|
211
|
-
version: '2.
|
176
|
+
version: '2.6'
|
212
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
213
178
|
requirements:
|
214
179
|
- - ">="
|
215
180
|
- !ruby/object:Gem::Version
|
216
181
|
version: '0'
|
217
182
|
requirements: []
|
218
|
-
rubygems_version: 3.
|
183
|
+
rubygems_version: 3.4.1
|
219
184
|
signing_key:
|
220
185
|
specification_version: 4
|
221
|
-
summary:
|
186
|
+
summary: Form builder agnostic handling of Rails nested forms
|
222
187
|
test_files: []
|
data/History.md
DELETED
@@ -1,283 +0,0 @@
|
|
1
|
-
# Change History / Release Notes
|
2
|
-
|
3
|
-
## Version 2.0.0 (Not released yet)
|
4
|
-
|
5
|
-
* Remove dependency to jQuery
|
6
|
-
|
7
|
-
## Version 1.4.0
|
8
|
-
|
9
|
-
### Breaking changes
|
10
|
-
|
11
|
-
* Drop support for Rails < 5.0 and Ruby < 2.5
|
12
|
-
* Pass the original browser event to all event handlers _via_ e.originalEvent. (See [jQuery Event object](https://api.jquery.com/category/events/event-object/)).
|
13
|
-
|
14
|
-
### New features
|
15
|
-
|
16
|
-
* Add support for @hotwired/turbo
|
17
|
-
|
18
|
-
### Bug fixes and other changes
|
19
|
-
|
20
|
-
* Prevent side effects on options passed to view helpers.
|
21
|
-
* Use form builder to add the hidden `_destroy` field instead of `hidden_field`.
|
22
|
-
* Update deprecation warnings to postpone compatibility drop with the original `cocoon` to 3.0 (instead of 2.0)
|
23
|
-
|
24
|
-
## Version 1.3.2
|
25
|
-
|
26
|
-
* Compatibility with Mongoid 7+
|
27
|
-
|
28
|
-
## Version 1.3.1
|
29
|
-
|
30
|
-
* Use UMD pattern to load the Cocooned module
|
31
|
-
* Now publish packages on both rubygems.org and npmjs.com
|
32
|
-
|
33
|
-
## Version 1.3.0
|
34
|
-
|
35
|
-
### Breaking changes
|
36
|
-
|
37
|
-
* Drop support for Rubinius, Ruby < 2.2 and Rails < 4.0
|
38
|
-
* Drop support for custom wrapper class on item containers (originaly supported _via_ an option on `link_to_remove_association`).
|
39
|
-
|
40
|
-
### Deprecated
|
41
|
-
|
42
|
-
The gem has been renamed to `cocooned`:
|
43
|
-
|
44
|
-
* `link_to_add_association` has been renamed `cocooned_add_item_link`
|
45
|
-
* Generated add links class `add_fields` has been renamed `cocooned-add`
|
46
|
-
* `link_to_remove_association` has been renamed `cocooned_remove_item_link`
|
47
|
-
* Generated remove links class `remove_fields` has been renamed `cocooned-remove`
|
48
|
-
* `cocoon:*` and `*.cocoon` Javascript events have been renamed to `cocooned:*` and `*.cocooned`
|
49
|
-
(ex: `cocooned:before-insert`, `click.cocooned`)
|
50
|
-
* The `cocoon` i18n scope have been renamed to `cocooned`
|
51
|
-
* The `.nested-fields` default item wrapper class have been renamed to `cocooned-item`
|
52
|
-
|
53
|
-
Other deprecations:
|
54
|
-
|
55
|
-
* `link_to_add_association`/`cocooned_add_item_link` no longer require a `:render_options` hash to pass locals to the nested partial
|
56
|
-
|
57
|
-
### Non-breaking changes
|
58
|
-
|
59
|
-
* Refactor cocoon javascript as a self-contained object with same functionalities
|
60
|
-
* Automatically remove `required` attributes on destroyed elements (thanks @markkhair)
|
61
|
-
* Add extra properties on events (thanks @ayaman)
|
62
|
-
* Add a basic package.json to be used with Webpack (thanks @dmfrancisco)
|
63
|
-
* Compatibility with jQuery 3 (thanks @mstmfm)
|
64
|
-
* Namespace click handlers (thanks @chrise86)
|
65
|
-
* Drop support for Ruby 1.9 (thanks @simi)
|
66
|
-
* Remove Jeweller (thanks @brixen, @tlynam)
|
67
|
-
|
68
|
-
## Version 1.2.11
|
69
|
-
|
70
|
-
* Allow events to be cancelled in the 'before' callbacks (thanks @wgordon17)
|
71
|
-
|
72
|
-
## Version 1.2.10
|
73
|
-
|
74
|
-
* Use lazy-loading in initializer
|
75
|
-
|
76
|
-
## Version 1.2.9
|
77
|
-
|
78
|
-
* Allow function pass to association-insertion-node (thanks @Liooo)
|
79
|
-
|
80
|
-
## Version 1.2.8
|
81
|
-
|
82
|
-
* Compatibility with Turbolinks
|
83
|
-
|
84
|
-
## Version 1.2.7
|
85
|
-
|
86
|
-
* Fix SimpleForm/Formtastic detections (thanks @mfrederickson)
|
87
|
-
* Add default captions for add and remove links through I18n (thanks @ViliusLuneckas)
|
88
|
-
|
89
|
-
## Version 1.2.6
|
90
|
-
|
91
|
-
* added some explicit documentation we use haml. Fixed the formtastic example.
|
92
|
-
* "unfreeze" frozen objects. Fixes #193.
|
93
|
-
* IE8 jquery fix (thanks @niuage).
|
94
|
-
* merged #191 which fixes an issue with a monkeypatched CGI. For more info, see
|
95
|
-
ticket #191. Thanks gsmendoza.
|
96
|
-
|
97
|
-
## Version 1.2.5
|
98
|
-
|
99
|
-
* fix gem dependencies: we added gems to allow building for rubinius, but those are only
|
100
|
-
needed when developing
|
101
|
-
|
102
|
-
## Version 1.2.4
|
103
|
-
|
104
|
-
* the wrapper class is now configurable. Before it was assumed to be `nested-fields`.
|
105
|
-
Now it is configurable by handing. See #180. Thanks Yoav Matchulsky.
|
106
|
-
* fix build on travis-ci for rubinius (thanks brixen).
|
107
|
-
|
108
|
-
## Version 1.2.3
|
109
|
-
|
110
|
-
* add license info
|
111
|
-
|
112
|
-
## Version 1.2.2
|
113
|
-
|
114
|
-
* added option to add multiple items on one click. See #175.
|
115
|
-
* cleaned up javascript code. See #171.
|
116
|
-
|
117
|
-
|
118
|
-
## Version 1.2.1
|
119
|
-
|
120
|
-
* added a `:form_name` parameter (fixes #153) which allows to use a self-chosen
|
121
|
-
parameter in the nested views. Up until now `f` was assumed (and enforced).
|
122
|
-
* improvement of creation of the objects on the association (thanks to Dirk von Grünigen). This
|
123
|
-
alleviates the need for the `:force_non_association_create` option in most cases.
|
124
|
-
That option is for now still kept.
|
125
|
-
* after validation errors, already deleted (but not saved) nested elements, will remain deleted
|
126
|
-
(e.g. the state is remembered, and they remain hidden, and will be correctly deleted on next
|
127
|
-
succesfull save) (fixes #136).
|
128
|
-
|
129
|
-
## Version 1.2.0
|
130
|
-
|
131
|
-
* support for rails 4.0
|
132
|
-
|
133
|
-
## Version 1.1.2
|
134
|
-
|
135
|
-
* pull #118 (thanks @ahmozkya): remove the deprecated `.live` function, and use `.on` instead.
|
136
|
-
Note: at least jquery 1.7 is required now!
|
137
|
-
|
138
|
-
## Version 1.1.1
|
139
|
-
|
140
|
-
* added the to be added/deleted element to the event, this allows to add animations/actions onto them
|
141
|
-
* added extra option :wrap_object, allowing to use Decorators instead of the association object
|
142
|
-
* added an option :force_non_association_create, that will allow to use `link_to_add_association` inside the fields-partial
|
143
|
-
|
144
|
-
## Version 1.1.0
|
145
|
-
|
146
|
-
* BREAKING: the triggered javascript events `removal-callback`, `after-removal-callback`, and `insertion-callback` are renamed to the more correct and symmetric
|
147
|
-
`cocoon:after-insert, cocoon:before-insert, cocoon:after-remove, cocoon:before-remove`. Also the events are namespaced to prevent collisions with other libraries.
|
148
|
-
* allow created objects to be decorated with a callable. This is especially useful if you are using Draper or some decorator instead of the plain model in your views.
|
149
|
-
* it is now possible to specify a relative node, and use standard jquery traversal methods on insertion
|
150
|
-
* trigger insertion event on correct `insertionNode`
|
151
|
-
* thanks to #90 cocoon now supports non-AR associations and array-fields, you just have to supply your own `build_<association>` methods
|
152
|
-
|
153
|
-
I would really really like to thank all contributors, check them out https://github.com/nathanvda/cocoon/graphs/contributors
|
154
|
-
They made cocoon way more awesome than I could have done in my lonesome.
|
155
|
-
|
156
|
-
## Version 1.0.22
|
157
|
-
|
158
|
-
* Fix that it still works for mongoid
|
159
|
-
|
160
|
-
## Version 1.0.21
|
161
|
-
|
162
|
-
* Use association build methods instead of assoc.klass.new. This avoids mass-assignment errors and other misbehaviors around attribute accessibility.
|
163
|
-
|
164
|
-
|
165
|
-
## Version 1.0.20
|
166
|
-
|
167
|
-
* improved handing of the `:partial`: remove the extra options-hash, and just make it use the single hash, so now we can just write
|
168
|
-
|
169
|
-
= link_to_add_association 'add something', f, :tasks, :partial => 'shared/task_fields'
|
170
|
-
= link_to_add_association 'add something', f, :tasks, :class => 'your-special-class', :partial => 'shared/task_fields'
|
171
|
-
|
172
|
-
|
173
|
-
## Version 1.0.19
|
174
|
-
|
175
|
-
* pull #53 (@CuriousCurmudgeon): fixed some bugs introduced in previous version (ooooops! Thanks!!!)
|
176
|
-
|
177
|
-
## Version 1.0.18
|
178
|
-
|
179
|
-
* pull in #51 (@erwin): adding an `after-removal-callback` in javascript, very useful if you want to recalculate e.g. total-items or indexes
|
180
|
-
* pull in #42 (@zacstewart): allow to hand extra `:locals` to the partial
|
181
|
-
* updated documentation
|
182
|
-
|
183
|
-
## Version 1.0.17
|
184
|
-
|
185
|
-
* fix: make sure that cocoon still works for rails 3.0, where the `conditions` is not available yet
|
186
|
-
|
187
|
-
## Version 1.0.16
|
188
|
-
|
189
|
-
* merged pull request #33 (@fl00r): added the a custom partial option! genius :)
|
190
|
-
Also the creation of the nested objects takes any available conditions into account.
|
191
|
-
Now you can write
|
192
|
-
|
193
|
-
= link_to_add_association 'add something', f, :tasks, {}, :partial => 'shared/task_fields'
|
194
|
-
|
195
|
-
## Version 1.0.15
|
196
|
-
|
197
|
-
* added `data-association-insertion-method` that gives more control over where to insert the new nested fields.
|
198
|
-
It takes a jquery method as parameter that inserts the new data. `before`, `after`, `append`, `prepend`, etc. Default: `before`.
|
199
|
-
* `data-association-insertion-position` is still available and acts as an alias. Probably this will be deprecated in the future.
|
200
|
-
|
201
|
-
|
202
|
-
## Version 1.0.14
|
203
|
-
|
204
|
-
* When playing with `simple_form` and `twitter-bootstrap`, I noticed it is crucial that I call the correct nested-fields function.
|
205
|
-
That is: `fields_for` for standard forms, `semantic_fields_for` in formtastic and `simple_fields_for` for simple_form.
|
206
|
-
Secondly, this was not enough, I needed to be able to hand down options to that method. So in the `link_to_add_association` method you
|
207
|
-
can now an extra option `:render_options` and that hash will be handed to the association-builder.
|
208
|
-
|
209
|
-
This allows the nested fields to be built correctly with `simple_form` for `twitter-bootstrap`.
|
210
|
-
|
211
|
-
## Version 1.0.13
|
212
|
-
|
213
|
-
* A while ago we added the option to add a javascript callback on inserting a new associated object, I now made sure we can add a callback on insertion
|
214
|
-
and on removal of a new item. One example where this was useful for me is visible in the demo project `cocoon_simple_form_demo` where I implemented a
|
215
|
-
`belongs_to` relation, and either select from a list, or add a new element.
|
216
|
-
So: the callback-mechanism has changed, and now the callback is bound to the parent container, instead of the link itself. This is because we can also
|
217
|
-
bind the removal callback there (as the removal link is inserted in the html dynamically).
|
218
|
-
|
219
|
-
For more info, see the `README`.
|
220
|
-
|
221
|
-
## Version 1.0.12
|
222
|
-
|
223
|
-
* using "this" in `association-insertion-node` is now possible
|
224
|
-
|
225
|
-
If you are using rails < 3.1, you should run
|
226
|
-
|
227
|
-
rails g cocoon:install
|
228
|
-
|
229
|
-
to install the new `cocoon.js` to your `public/javascripts` folder.
|
230
|
-
|
231
|
-
|
232
|
-
## Version 1.0.11
|
233
|
-
|
234
|
-
|
235
|
-
## Version 1.0.10
|
236
|
-
|
237
|
-
* Fuck! Built the gem with 1.9.2 again. Built the gem again with 1.8.7.
|
238
|
-
|
239
|
-
## Version 1.0.9
|
240
|
-
|
241
|
-
* is now rails 3.1 compatible. If you are not using Rails 3.1 yet, this should have no effect.
|
242
|
-
For rails 3.1 the cocoon.js no longer needs to be installed using the `rails g cocoon:install`. It is
|
243
|
-
automatically used from the gem.
|
244
|
-
|
245
|
-
## Version 1.0.8
|
246
|
-
|
247
|
-
* Loosened the gem dependencies.
|
248
|
-
|
249
|
-
## Version 1.0.7 (20/06/2011)
|
250
|
-
|
251
|
-
Apparently, the gem 1.0.6 which was generated with ruby 1.9.2 gave the following error upon install:
|
252
|
-
|
253
|
-
uninitialized constant Psych::Syck (NameError)
|
254
|
-
|
255
|
-
This is related to this bug: http://rubyforge.org/tracker/?group_id=126&atid=575&func=detail&aid=29163
|
256
|
-
|
257
|
-
This should be fixed in the next release of rubygems, the fix should be to build the gem with ruby 1.8.7.
|
258
|
-
Let's hope this works.
|
259
|
-
|
260
|
-
## Version 1.0.6 (19/06/2011)
|
261
|
-
|
262
|
-
* The javascript has been improved to consistently use `e.preventDefault` instead of returning false.
|
263
|
-
|
264
|
-
Run
|
265
|
-
|
266
|
-
rails g cocoon:install
|
267
|
-
|
268
|
-
to copy the new `cocoon.js` to your `public/javascripts` folder.
|
269
|
-
|
270
|
-
|
271
|
-
## Version 1.0.5 (17/06/2011)
|
272
|
-
|
273
|
-
* This release make sure that the `link_to_add_association` generates a correctly clickable
|
274
|
-
link in the newer rails 3 versions as well. In rails 3.0.8. the html was double escaped.
|
275
|
-
|
276
|
-
If you are upgrading from 1.0.4, you just have to update the gem. No other actions needed. If you are updating
|
277
|
-
from earlier versions, it is safer to do
|
278
|
-
|
279
|
-
rails g cocoon:install
|
280
|
-
|
281
|
-
This will copy the new `cocoon.js` files to your `public/javascripts` folder.
|
282
|
-
|
283
|
-
|