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

41 lines (40 loc) 2.33 kB
"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;