48 lines
1.7 KiB
TypeScript
48 lines
1.7 KiB
TypeScript
import { Component, inject } from '@angular/core';
|
|
import { SearchComponent } from '@app/shared/features/search/search.component';
|
|
import { VerticalProfileListComponent } from '@app/shared/components/vertical-profile-list/vertical-profile-list.component';
|
|
import { UntilDestroy } from '@ngneat/until-destroy';
|
|
import { ProfileFacade } from '@app/ui/profiles/profile.facade';
|
|
import { LoadingComponent } from '@app/shared/components/loading/loading.component';
|
|
import { Router } from '@angular/router';
|
|
import { SearchFilters } from '@app/domain/search/search-filters';
|
|
import { FilterComponent } from '@app/shared/features/filter/filter.component';
|
|
import { PaginationComponent } from '@app/shared/features/pagination/pagination.component';
|
|
|
|
@Component({
|
|
selector: 'app-profile-list',
|
|
standalone: true,
|
|
imports: [
|
|
SearchComponent,
|
|
VerticalProfileListComponent,
|
|
LoadingComponent,
|
|
FilterComponent,
|
|
PaginationComponent,
|
|
],
|
|
templateUrl: './profile-list.component.html',
|
|
styleUrl: './profile-list.component.scss',
|
|
})
|
|
@UntilDestroy()
|
|
export class ProfileListComponent {
|
|
private readonly facade = inject(ProfileFacade);
|
|
private readonly router = inject(Router);
|
|
|
|
protected readonly searchFilters = this.facade.searchFilters;
|
|
protected readonly profilePaginated = this.facade.profilePaginated;
|
|
protected readonly loading = this.facade.loading;
|
|
protected readonly error = this.facade.error;
|
|
|
|
showNewQuery(filters: SearchFilters) {
|
|
this.facade.load(filters);
|
|
this.router.navigate(['/profiles'], { queryParams: { search: filters.search } });
|
|
}
|
|
|
|
onFilterChange(filters: SearchFilters) {
|
|
this.facade.load(filters);
|
|
}
|
|
|
|
onPageChange(filters: SearchFilters) {
|
|
this.facade.load(filters);
|
|
}
|
|
}
|