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 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
|
||||
readonly buy = output<void>();
|
||||
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"
|
||||
readonly formattedPrice = computed(() => {
|
||||
return this.formatCurrency(this.price());
|
||||
|
||||
Reference in New Issue
Block a user