UNPKG

@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
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;