fix(animations): properly support the query limit option value
Closes #19232
This commit is contained in:
parent
e889c68aff
commit
b54368bf35
|
@ -556,7 +556,11 @@ export class AnimationTimelineContext {
|
||||||
}
|
}
|
||||||
if (selector.length > 0) { // if :self is only used then the selector is empty
|
if (selector.length > 0) { // if :self is only used then the selector is empty
|
||||||
const multi = limit != 1;
|
const multi = limit != 1;
|
||||||
results.push(...this._driver.query(this.element, selector, multi));
|
let elements = this._driver.query(this.element, selector, multi);
|
||||||
|
if (limit !== 0) {
|
||||||
|
elements = elements.slice(0, limit);
|
||||||
|
}
|
||||||
|
results.push(...elements);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!optional && results.length == 0) {
|
if (!optional && results.length == 0) {
|
||||||
|
|
|
@ -1713,6 +1713,56 @@ export function main() {
|
||||||
expect(players[1].element.innerText.trim()).toEqual('5');
|
expect(players[1].element.innerText.trim()).toEqual('5');
|
||||||
expect(players[2].element.innerText.trim()).toEqual('6');
|
expect(players[2].element.innerText.trim()).toEqual('6');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('options.limit', () => {
|
||||||
|
it('should limit results when a limit value is passed into the query options', () => {
|
||||||
|
@Component({
|
||||||
|
selector: 'cmp',
|
||||||
|
template: `
|
||||||
|
<div [@myAnimation]="exp">
|
||||||
|
<div *ngFor="let item of items" class="item">
|
||||||
|
{{ item }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
animations: [
|
||||||
|
trigger(
|
||||||
|
'myAnimation',
|
||||||
|
[
|
||||||
|
transition(
|
||||||
|
'* => go',
|
||||||
|
[
|
||||||
|
query(
|
||||||
|
'.item',
|
||||||
|
[
|
||||||
|
style({opacity: 0}),
|
||||||
|
animate('1s', style({opacity: 1})),
|
||||||
|
],
|
||||||
|
{limit: 2}),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
]
|
||||||
|
})
|
||||||
|
class Cmp {
|
||||||
|
public exp: any;
|
||||||
|
public items: any[] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
TestBed.configureTestingModule({declarations: [Cmp]});
|
||||||
|
const fixture = TestBed.createComponent(Cmp);
|
||||||
|
const cmp = fixture.componentInstance;
|
||||||
|
cmp.items = ['a', 'b', 'c', 'd', 'e'];
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
cmp.exp = 'go';
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
const players = getLog() as any[];
|
||||||
|
expect(players.length).toEqual(2);
|
||||||
|
expect(players[0].element.innerText.trim()).toEqual('a');
|
||||||
|
expect(players[1].element.innerText.trim()).toEqual('b');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('sub triggers', () => {
|
describe('sub triggers', () => {
|
||||||
|
|
Loading…
Reference in New Issue