@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
41 lines (40 loc) • 2.33 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = tslib_1.__importStar(require("react"));
var hooks_1 = require("../app/hooks");
var slices_1 = require("../slices");
var CartItem_1 = tslib_1.__importDefault(require("./CartItem"));
var CartUpsells_1 = tslib_1.__importDefault(require("./CartUpsells"));
var Cart = function (_a) {
var navigate = _a.navigate, children = _a.children, CartUpsellsView = _a.CartUpsellsView, CartItemView = _a.CartItemView, QuantityView = _a.QuantityView, CartUpsellItemView = _a.CartUpsellItemView;
var dispatch = (0, hooks_1.useAppDispatch)();
var config = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig).cart;
var cart = (0, hooks_1.useAppSelector)(slices_1.selectOrder).cart;
var _b = (0, hooks_1.useAppSelector)(slices_1.selectCartTotals), count = _b.count, total = _b.total;
var isOpen = (0, hooks_1.useAppSelector)(slices_1.selectCartSummary).isOpen;
var isEmpty = !cart.length;
var toggleCart = function () { return dispatch((0, slices_1.toggleCartSummary)()); };
var checkout = function () { return navigate('/checkout'); };
var handlers = { checkout: checkout, toggleCart: toggleCart };
(0, react_1.useEffect)(function () {
if (!isOpen || !isEmpty)
return;
dispatch((0, slices_1.closeCartSummary)());
}, [dispatch, isOpen, isEmpty]);
var renderCartItem = (0, react_1.useCallback)(function (item, index, isLast) { return (react_1.default.createElement(CartItem_1.default, { key: "".concat(item.id, "-").concat(index), navigate: navigate, item: item, isLast: isLast, children: CartItemView, QuantityView: QuantityView })); }, [navigate, CartItemView, QuantityView]);
var renderCartUpsells = (0, react_1.useCallback)(function () { return (react_1.default.createElement(CartUpsells_1.default, { CartUpsellItemView: CartUpsellItemView, children: CartUpsellsView })); }, [CartUpsellsView, CartUpsellItemView]);
if (!config)
return null;
return children({
config: config,
handlers: handlers,
cart: cart,
count: count,
total: total,
isOpen: isOpen,
renderCartItem: renderCartItem,
renderCartUpsells: renderCartUpsells
});
};
exports.default = Cart;