import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; import { CustomFieldControl, DataService, SharedModule } from '@vendure/admin-ui/core'; import { Observable } from 'rxjs'; import { switchMap } from 'rxjs/operators'; import { GetReviewForProductDocument, ProductReviewFragment } from '../../generated-types'; @Component({ selector: 'kb-relation-review-input', template: `
{{ review.rating }} / 5 {{ review.summary }}
`, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [SharedModule], }) export class RelationReviewInputComponent implements OnInit, CustomFieldControl { @Input() readonly: boolean; @Input() formControl: FormControl; @Input() config: any; reviews$: Observable; constructor(private dataService: DataService, private route: ActivatedRoute) {} ngOnInit() { this.reviews$ = this.route.data.pipe( switchMap(data => data.detail.entity), switchMap((product: any) => { return this.dataService .query(GetReviewForProductDocument, { productId: product.id, }) .mapSingle(({ product }) => product?.reviews.items ?? []); }), ); } }