1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-02 22:52:21 +01:00

66 lines
1.8 KiB
TypeScript
Raw Normal View History

2022-08-19 19:59:13 +02:00
import React 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';
declare const Application: IApplication;
interface StoreCartProps {
onError: (message: string) => void,
}
/**
* This component shows user's cart
*/
const StoreCart: React.FC<StoreCartProps> = ({ onError }) => {
const { t } = useTranslation('public');
const { loading, cart, setCart } = useCart();
/**
* 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);
});
};
};
return (
<div className="store-cart">
{loading && <p>loading</p>}
{cart && cart.order_items_attributes.map(item => (
<div key={item.id}>
<div>{item.orderable_name}</div>
<div>{FormatLib.price(item.amount)}</div>
<div>{item.quantity}</div>
<div>{FormatLib.price(item.quantity * item.amount)}</div>
<FabButton className="delete-btn" onClick={removeProductFromCart(item)}>
<i className="fa fa-trash" /> {t('app.public.store_cart.remove_item')}
</FabButton>
</div>
))}
{cart && <p>{cart.amount}</p>}
</div>
);
};
const StoreCartWrapper: React.FC<StoreCartProps> = ({ onError }) => {
return (
<Loader>
<StoreCart onError={onError} />
</Loader>
);
};
Application.Components.component('storeCart', react2angular(StoreCartWrapper, ['onError']));