Product Page Variants Issue

Hi russian-dima,

the picture that i showed above was just an example webpage of what i’m trying to achieve.

I created most of my site through custom elements.

below is the code that i’m trying to use, but i’m getting a parsing error on the last line (mind you, i’m not an expert on coding…)

import wixWindow from ‘wix-window’ ;

const colorPicker = [ ‘black’ , ‘bone’ , ‘blush’ ];
let productsMap = {};

export function productsRepeater_itemReady($item, itemData, index) {
let product = createProductObject(itemData);
productsMap[product.productId] = product;

$w( '#image' ).src = product.mainImage.src; 
$w( '#productPrice' ).text = product.price; 
$w( '#productName' ).text = product.name; 

if (wixWindow.formFactor === ‘Mobile’ ) {
colorPicker.forEach(color => {
$w(#${color}).show();
});
$w( ‘#cartButton’ ).show();
} else {
initProductHover($item);
initDirectionsHover($item, product);
}

initColorPicker($item, product); 

$w( '#cartButton' ).onClick(() => { 

let productObj = productsMap[product.productId];
$w( ‘#shoppingCartIcon1’ ).addToCart(productObj.productId, 1 , { choices: { Color: productObj.colorSelected } })
.then(() => { console.log( ‘added!’ ) })
. catch (console.error);

}) 

}

function createProductObject(productRecord) {
let product = {
colorSelected: ‘black’ ,
productId: productRecord._id,
productImagesByColor: {
Black: {
front: productRecord.mediaItems[ 0 ],
right: productRecord.mediaItems[ 1 ],
left: productRecord.mediaItems[ 2 ],
},
Bone: {
front: productRecord.mediaItems[ 3 ],
right: productRecord.mediaItems[ 4 ],
left: productRecord.mediaItems[ 5 ],
},
Blush: {
front: productRecord.mediaItems[ 6 ],
right: productRecord.mediaItems[ 7 ],
left: productRecord.mediaItems[ 8 ],
}
},
mainImage: productRecord.mediaItems[ 0 ],
price: productRecord.formattedPrice,
name: productRecord.name
}

return product;
}

function initProductHover($w) {
$w( ‘#productContainer’ ).onMouseIn(() => {
colorPicker.forEach(colorChoice => {
$w(#${colorChoice}).show();
});

    $w( '#productContainer' ).onMouseOut(() => { 
        colorPicker.forEach(colorChoice => { 
            $w(`#${colorChoice}`).hide(); 
        }); 
        $w( '#cartButton' ).hide(); 
    }); 
}) 

function initColorPicker($w, product) {
colorPicker.forEach(colorChoice => {
$w(#${colorChoice}).onClick(() => {
let productObj = productsMap[product.productId];
productObj.colorSelected = colorChoice;
$w( ‘#image’ ).src = productObj.productImagesByColor[colorChoice].front.src;
});
});
}

function initDirectionsHover($w, product) {
let productObj;
let colorSelected;
const directions = [ ‘left’ , ‘right’ ];

    directions.forEach(direction => { 
        $w(`#${direction}Box`).onMouseIn(() => { 
            productObj = productsMap[product.productId]; 
            colorSelected = productObj.colorSelected; 
            $w( 'image' ).src = productObj.productImagesByColor[colorSelected].front.src; 
        }) 
    }) 
} 

Thanks!