@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
24 lines (23 loc) • 1.2 kB
JavaScript
import { makeMenuItemLookup, makeUpsellItems } from '@open-tender/utils';
import React, { useCallback, useMemo } from 'react';
import { useAppSelector } from '../app/hooks';
import { selectKioskConfig, selectMenu } from '../slices';
import { default as UpsellItemContainer } from './UpsellItem';
var Upsells = function (_a) {
var itemIds = _a.itemIds, close = _a.close, children = _a.children, UpsellItemView = _a.UpsellItemView;
var config = useAppSelector(selectKioskConfig).upsells;
var categories = useAppSelector(selectMenu).categories;
var itemLookup = useMemo(function () { return makeMenuItemLookup(categories); }, [categories]);
var items = makeUpsellItems(itemIds, itemLookup);
var handlers = { close: close };
var renderUpsellItem = useCallback(function (item, isLast) { return (React.createElement(UpsellItemContainer, { key: item.id, item: item, isLast: isLast, callback: close, children: UpsellItemView })); }, [close, UpsellItemView]);
if (!config)
return null;
return children({
config: config,
handlers: handlers,
items: items.slice(0, 5),
renderUpsellItem: renderUpsellItem
});
};
export default Upsells;