Was ich erreichen möchte, ist, dass die erste „Seite“ mit Elementen ausgeblendet wird, bevor neue Elemente beginnen eingeblendet und so das Springen der Seite verhindert.
Die Liste
Code: Select all
@for (item of items(); track item.id; let idx = $index) {
}
Code: Select all
Component({
/** ... **/
})
export class TaskListComponent {
/** ... **/
items = computed((): Item[] => {
const items = // signal from a store
const pagination = this.pagination(); // boolean
const paginationOffset = this.paginationOffset(); // increases with 10 on next page
let paginatedTasks = []
if (pagination) {
for(let i = 0; i < items.length; i++) {
if (i < paginationOffset + 10 && i >= paginationOffset) {
paginatedItems.push(items[i]);
}
}
} else {
paginatedItems = items;
}
return paginatedItems
});
}
Code: Select all
export const fadeInOutAnimation = trigger('fadeInOut', [
state('void', style({ opacity: 0,})), // Initial state when the element is not present
transition(':enter', [animate('300ms ease-in')]), // When the element enters
transition(':leave', [animate('300ms ease-out')]) // When the element leaves
]);