5180 fichiers 38.5 Mo 0 téléchargements 527 vues mis à jour il y a 8 heures ui
nitro-v36-with-renderer-v36 / src / components / catalog / views / page / widgets / CatalogBundleGridWidgetView.tsx
CatalogBundleGridWidgetView.tsx 1.9 Ko Télécharger le fichier
import { FC, useEffect, useRef } from 'react';
import { GetProductIconUrl, ProductTypeEnum } from '../../../../../api';
import { AutoGrid, AutoGridProps, LayoutGridItem } from '../../../../../common';
import { NativeTextTree } from '../../../../../common/native-text/NativeTextTree';
import { useCatalogData } from '../../../../../hooks';

interface CatalogBundleGridWidgetViewProps extends AutoGridProps {
    /** AIR BundleProductContainer: list every product of the bundle except its badges. */
    hideBadges?: boolean;
}

export const CatalogBundleGridWidgetView: FC<CatalogBundleGridWidgetViewProps> = (props) => {
    const { columnCount = 5, children = null, hideBadges = false, ...rest } = props;
    const { currentOffer = null } = useCatalogData();
    const elementRef = useRef<HTMLDivElement>(null);

    useEffect(() => {
        if (elementRef && elementRef.current) elementRef.current.scrollTop = 0;
    }, [currentOffer]);

    if (!currentOffer) return null;

    const products = hideBadges ? currentOffer.products?.filter((product) => product.productType !== ProductTypeEnum.BADGE) : currentOffer.products;

    return (
        <NativeTextTree>
            <AutoGrid columnCount={columnCount} innerRef={elementRef} {...rest}>
                {products &&
                    products.length > 0 &&
                    products.map((product, index) => {
                        const iconUrl = GetProductIconUrl(product, currentOffer);

                        return (
                            <LayoutGridItem key={index} itemCount={product.productCount}>
                                {iconUrl && <img alt="" className="octane-catalog-grid-offer-icon" draggable={false} src={iconUrl} />}
                            </LayoutGridItem>
                        );
                    })}
                {children}
            </AutoGrid>
        </NativeTextTree>
    );
};
15Sujets
1Dépôts
20Membres
4En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser