@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
22 lines (21 loc) • 1.23 kB
JavaScript
import { makeUpsellItemsForCart } from '@open-tender/utils';
import React, { useCallback, useMemo } from 'react';
import { useAppSelector } from '../app/hooks';
import { selectCartIds, selectKioskConfig, selectMenu } from '../slices';
import { default as CartUpsellItemContainer } from './CartUpsellItem';
var CartUpsells = function (_a) {
var children = _a.children, CartUpsellItemView = _a.CartUpsellItemView;
var config = useAppSelector(selectKioskConfig).cartUpsells;
var cartIds = useAppSelector(selectCartIds);
var _b = useAppSelector(selectMenu), categories = _b.categories, soldOut = _b.soldOut;
var upsellItems = useMemo(function () { return makeUpsellItemsForCart(categories, cartIds, soldOut); }, [categories, cartIds, soldOut]);
var renderCartUpsellItem = useCallback(function (item, isLast) { return (React.createElement(CartUpsellItemContainer, { key: item.id, item: item, isLast: isLast, children: CartUpsellItemView })); }, [CartUpsellItemView]);
if (!config || !upsellItems.length)
return null;
return children({
config: config,
upsellItems: upsellItems.slice(0, 5),
renderCartUpsellItem: renderCartUpsellItem
});
};
export default CartUpsells;