5180 fichiers 38.5 Mo 0 téléchargements 535 vues mis à jour il y a 8 heures ui
nitro-v36-with-renderer-v36 / src / components / catalog / views / page / layout / CatalogLayoutPetCustomizationView.tsx
CatalogLayoutPetCustomizationView.tsx 3 Ko Télécharger le fichier
import { FC, useEffect } from 'react';
import { SanitizeHtml } from '../../../../../api';
import { LayoutRoomPreviewerView } from '../../../../../common';
import { NativeTextTree } from '../../../../../common/native-text/NativeTextTree';
import { useCatalogData } from '../../../../../hooks';
import { CatalogItemGridWidgetView } from '../widgets/CatalogItemGridWidgetView';
import { CatalogProductDetailsView } from '../widgets/CatalogProductDetailsView';
import { CatalogPurchaseSelectionPrompt } from '../widgets/CatalogPurchaseSelectionPrompt';
import { CatalogPurchaseWidgetView } from '../widgets/CatalogPurchaseWidgetView';
import { CatalogTotalPriceWidget } from '../widgets/CatalogTotalPriceWidget';
import { CatalogLayoutProps } from './CatalogLayout.types';
import { buildPetCustomizationPreviewFigure } from './petCustomization.helpers';

export const CatalogLayoutPetCustomizationView: FC<CatalogLayoutProps> = ({ page }) => {
    const { currentOffer = null, roomPreviewer = null } = useCatalogData();
    const selectedOffer = currentOffer && page.offers.includes(currentOffer) ? currentOffer : null;

    useEffect(() => {
        if (!selectedOffer?.product?.furnitureData || !roomPreviewer) return;

        const figure = buildPetCustomizationPreviewFigure(selectedOffer.product.furnitureData);

        roomPreviewer.reset(false);
        roomPreviewer.updateRoomWallsAndFloorVisibility(false, false);

        if (figure) roomPreviewer.addPetIntoRoom(figure);
    }, [roomPreviewer, selectedOffer]);

    return (
        <NativeTextTree>
            <div className="octane-catalog-pet-customization-layout">
                <div className="octane-catalog-pet-customization-preview">
                    {selectedOffer ? (
                        <>
                            <LayoutRoomPreviewerView height={240} roomPreviewer={roomPreviewer} />
                            <div className="octane-catalog-pet-customization-copy">
                                <CatalogProductDetailsView offer={selectedOffer} />
                            </div>
                            <div className="octane-catalog-pet-customization-price">
                                <CatalogTotalPriceWidget />
                            </div>
                        </>
                    ) : (
                        <>
                            {!!page.localization.getImage(1) && <img alt="" src={page.localization.getImage(1)} />}
                            {!!page.localization.getText(0) && <div dangerouslySetInnerHTML={{ __html: SanitizeHtml(page.localization.getText(0)) }} />}
                        </>
                    )}
                </div>
                <div className="octane-catalog-pet-customization-grid">
                    <CatalogItemGridWidgetView columnCount={6} columnMinHeight={74} columnMinWidth={53} />
                </div>
                <div className="octane-catalog-pet-customization-purchase">{selectedOffer ? <CatalogPurchaseWidgetView /> : <CatalogPurchaseSelectionPrompt />}</div>
            </div>
        </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