Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit f26fc26

Browse files
committed
fix($animate): accept unwrapped DOM elements as inputs for enter + move
Prior to this fix the $animate.enter() and $animate.move() events caused an error when a parent or after element was provided that was not already wrapped as a jqLite element. This patch ensures that both wrapped and unwrapped DOM nodes are allowed. Closes #11848
1 parent d9bf6e3 commit f26fc26

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/ng/animate.js

+4
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,8 @@ var $AnimateProvider = ['$provide', function($provide) {
424424
*/
425425
enter: function(element, parent, after, options) {
426426
assertNoCallback(options);
427+
parent = parent && jqLite(parent);
428+
after = after && jqLite(after);
427429
parent = parent || after.parent();
428430
domInsert(element, parent, after);
429431
return $$animateQueue.push(element, 'enter', options);
@@ -449,6 +451,8 @@ var $AnimateProvider = ['$provide', function($provide) {
449451
*/
450452
move: function(element, parent, after, options) {
451453
assertNoCallback(options);
454+
parent = parent && jqLite(parent);
455+
after = after && jqLite(after);
452456
parent = parent || after.parent();
453457
domInsert(element, parent, after);
454458
return $$animateQueue.push(element, 'move', options);

test/ng/animateSpec.js

+26
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,32 @@ describe("$animate", function() {
216216

217217
expect(element).toHaveClass('ng-hide');
218218
}));
219+
220+
they("should accept an unwrapped \"parent\" element for the $prop event",
221+
['enter', 'move'], function(method) {
222+
223+
inject(function($document, $animate, $rootElement) {
224+
var element = jqLite('<div></div>');
225+
var parent = $document[0].createElement('div');
226+
$rootElement.append(parent);
227+
228+
$animate[method](element, parent);
229+
expect(element[0].parentNode).toBe(parent);
230+
});
231+
});
232+
233+
they("should accept an unwrapped \"after\" element for the $prop event",
234+
['enter', 'move'], function(method) {
235+
236+
inject(function($document, $animate, $rootElement) {
237+
var element = jqLite('<div></div>');
238+
var after = $document[0].createElement('div');
239+
$rootElement.append(after);
240+
241+
$animate[method](element, null, after);
242+
expect(element[0].previousSibling).toBe(after);
243+
});
244+
});
219245
});
220246

221247
describe('CSS class DOM manipulation', function() {

0 commit comments

Comments
 (0)