62 lines
2.4 KiB
TypeScript
62 lines
2.4 KiB
TypeScript
import { Title } from '@angular/platform-browser';
|
|
import { trigger, state, style, animate, transition } from '@angular/animations';
|
|
import { Component, DestroyRef, inject, OnInit, OnDestroy } from '@angular/core';
|
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
import { DatePipe, DecimalPipe } from '@angular/common';
|
|
import { ActivatedRoute } from '@angular/router';
|
|
import { MatCardModule } from '@angular/material/card';
|
|
import { MatDividerModule } from '@angular/material/divider';
|
|
import { MatIconModule } from '@angular/material/icon';
|
|
import { Observable, Subscription } from 'rxjs';
|
|
|
|
import { ListErrorsComponent } from '@components/shared';
|
|
import { Errors, Product, ProductPageData } from '@models';
|
|
|
|
@Component({
|
|
selector: 'app-product',
|
|
imports: [DatePipe, DecimalPipe, MatCardModule, MatDividerModule, MatIconModule, ListErrorsComponent],
|
|
templateUrl: './product.component.html',
|
|
styleUrl: './product.component.scss',
|
|
animations: [
|
|
trigger('flyInOut', [
|
|
state('in', style({ transform: 'translateY(0)' })),
|
|
transition('void => *', [style({ transform: 'translateY(-100%)' }), animate(200)]),
|
|
transition('* => void', [style({ transform: 'translateY(100%)' }), animate(200)]),
|
|
]),
|
|
],
|
|
})
|
|
export class ProductComponent implements OnInit, OnDestroy {
|
|
private route = inject(ActivatedRoute);
|
|
private titleService = inject(Title);
|
|
|
|
private _data: Subscription = new Subscription();
|
|
public title = 'Ad Astra - Produit';
|
|
public description = "Encore un peu de patience, notre shop sera mis en ligne d'ici peu.";
|
|
public errors: Errors = { errors: {} };
|
|
public destroyRef = inject(DestroyRef);
|
|
public product: Product = {} as Product;
|
|
|
|
ngOnInit() {
|
|
const data$: Observable<{ pageData: ProductPageData }> = this.route.data as Observable<{
|
|
pageData: ProductPageData;
|
|
}>;
|
|
this._data = data$
|
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
.subscribe((data: { pageData: ProductPageData }) => {
|
|
this.product = data.pageData.product;
|
|
this.title = this.product.name;
|
|
this.description = this.product.description;
|
|
this.titleService.setTitle(this.product.name);
|
|
console.log(this.product);
|
|
});
|
|
}
|
|
|
|
ngOnDestroy() {
|
|
this._data.unsubscribe();
|
|
}
|
|
|
|
getProductTags() {
|
|
return this.product.tags;
|
|
}
|
|
}
|