@open-tender/store
Version:
A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our in-store POS API
40 lines (39 loc) • 2.29 kB
JavaScript
import React, { useCallback } from 'react';
import { useAppDispatch, useAppSelector } from '../app/hooks';
import { decrementItemInCart, incrementItemInCart, removeItemFromCart, selectKioskApi, selectKioskConfig, selectStoreSettings, setCurrentItem, showNotification, toggleCartSummary } from '../slices';
import { default as QuantityContainer } from './Quantity';
var CartItem = function (_a) {
var item = _a.item, _b = _a.isLast, isLast = _b === void 0 ? false : _b, _c = _a.isEditable, isEditable = _c === void 0 ? true : _c, _d = _a.isCheckout, isCheckout = _d === void 0 ? false : _d, navigate = _a.navigate, children = _a.children, QuantityView = _a.QuantityView;
var dispatch = useAppDispatch();
var apiUrl = useAppSelector(selectKioskApi);
var _e = useAppSelector(selectKioskConfig), config = _e.cartItem, checkoutCartItem = _e.checkoutCartItem;
var display_cals = useAppSelector(selectStoreSettings).display_cals;
var increment = useCallback(function () { return dispatch(incrementItemInCart(item)); }, [item, dispatch]);
var decrement = useCallback(function () {
if (item.quantity === 1) {
dispatch(showNotification("".concat(item.name, " removed from cart")));
}
dispatch(decrementItemInCart(item));
}, [dispatch, item]);
var remove = function () { return dispatch(removeItemFromCart(item)); };
var edit = function () {
dispatch(setCurrentItem(item));
navigate('/menu/item');
dispatch(toggleCartSummary());
};
var handlers = { increment: increment, decrement: decrement, edit: edit, remove: remove };
var renderQuantity = useCallback(function (quantity) { return (React.createElement(QuantityContainer, { fontSize: 24, iconSize: 28, quantity: quantity, increment: increment, decrement: decrement, children: QuantityView })); }, [increment, decrement, QuantityView]);
if (!config || !checkoutCartItem)
return null;
return children({
item: item,
config: isCheckout && checkoutCartItem ? checkoutCartItem : config,
handlers: handlers,
isLast: isLast,
isEditable: isEditable,
renderQuantity: renderQuantity,
apiUrl: apiUrl,
displayCals: display_cals
});
};
export default CartItem;