import React, { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { react2angular } from 'react2angular'; import { Loader } from '../base/loader'; import { IApplication } from '../../models/application'; import { FabButton } from '../base/fab-button'; import useCart from '../../hooks/use-cart'; import FormatLib from '../../lib/format'; import CartAPI from '../../api/cart'; import { User } from '../../models/user'; declare const Application: IApplication; interface StoreCartProps { onError: (message: string) => void, currentUser: User, } /** * This component shows user's cart */ const StoreCart: React.FC = ({ onError, currentUser }) => { const { t } = useTranslation('public'); const { cart, setCart, reloadCart } = useCart(); useEffect(() => { if (currentUser) { reloadCart(); } }, [currentUser]); /** * Remove the product from cart */ const removeProductFromCart = (item) => { return (e: React.BaseSyntheticEvent) => { e.preventDefault(); e.stopPropagation(); CartAPI.removeItem(cart, item.orderable_id).then(data => { setCart(data); }); }; }; /** * Change product quantity */ const changeProductQuantity = (item) => { return (e: React.BaseSyntheticEvent) => { CartAPI.setQuantity(cart, item.orderable_id, e.target.value).then(data => { setCart(data); }); }; }; /** * Checkout cart */ const checkout = () => { console.log('checkout .....'); }; return (
{cart && cart.order_items_attributes.map(item => (
{item.orderable_name}
{FormatLib.price(item.amount)}
{item.quantity}
{FormatLib.price(item.quantity * item.amount)}
))} {cart &&

Totale: {FormatLib.price(cart.amount)}

} {t('app.public.store_cart.checkout')}
); }; const StoreCartWrapper: React.FC = (props) => { return ( ); }; Application.Components.component('storeCart', react2angular(StoreCartWrapper, ['onError', 'currentUser']));