refactor(product-row-card): move variant selection logic into constructor for better clarity
This commit is contained in:
@@ -27,22 +27,24 @@ export class ProductRowCardComponent {
|
|||||||
readonly quantity = model<number>(1);
|
readonly quantity = model<number>(1);
|
||||||
readonly selectedVariant = model<any>(null);
|
readonly selectedVariant = model<any>(null);
|
||||||
|
|
||||||
private readonly selectFirstVariant = effect(() => {
|
|
||||||
const variants = this.variants();
|
|
||||||
const selectedVariant = this.selectedVariant();
|
|
||||||
|
|
||||||
if (
|
|
||||||
variants.length > 0 &&
|
|
||||||
!variants.some((variant) => Object.is(variant.value, selectedVariant))
|
|
||||||
) {
|
|
||||||
this.selectedVariant.set(variants[0].value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Interactive events
|
// Interactive events
|
||||||
readonly buy = output<void>();
|
readonly buy = output<void>();
|
||||||
readonly addToCart = output<{ quantity: number; variant: any }>();
|
readonly addToCart = output<{ quantity: number; variant: any }>();
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
effect(() => {
|
||||||
|
const variants = this.variants();
|
||||||
|
const selectedVariant = this.selectedVariant();
|
||||||
|
|
||||||
|
if (
|
||||||
|
variants.length > 0 &&
|
||||||
|
!variants.some((variant) => Object.is(variant.value, selectedVariant))
|
||||||
|
) {
|
||||||
|
this.selectedVariant.set(variants[0].value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Formatted string for price: "$ 10.000"
|
// Formatted string for price: "$ 10.000"
|
||||||
readonly formattedPrice = computed(() => {
|
readonly formattedPrice = computed(() => {
|
||||||
return this.formatCurrency(this.price());
|
return this.formatCurrency(this.price());
|
||||||
|
|||||||
Reference in New Issue
Block a user