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

43 lines (42 loc) 2.44 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 Quantity_1 = tslib_1.__importDefault(require("./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 = (0, hooks_1.useAppDispatch)(); var apiUrl = (0, hooks_1.useAppSelector)(slices_1.selectKioskApi); var _e = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig), config = _e.cartItem, checkoutCartItem = _e.checkoutCartItem; var display_cals = (0, hooks_1.useAppSelector)(slices_1.selectStoreSettings).display_cals; var increment = (0, react_1.useCallback)(function () { return dispatch((0, slices_1.incrementItemInCart)(item)); }, [item, dispatch]); var decrement = (0, react_1.useCallback)(function () { if (item.quantity === 1) { dispatch((0, slices_1.showNotification)("".concat(item.name, " removed from cart"))); } dispatch((0, slices_1.decrementItemInCart)(item)); }, [dispatch, item]); var remove = function () { return dispatch((0, slices_1.removeItemFromCart)(item)); }; var edit = function () { dispatch((0, slices_1.setCurrentItem)(item)); navigate('/menu/item'); dispatch((0, slices_1.toggleCartSummary)()); }; var handlers = { increment: increment, decrement: decrement, edit: edit, remove: remove }; var renderQuantity = (0, react_1.useCallback)(function (quantity) { return (react_1.default.createElement(Quantity_1.default, { 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 }); }; exports.default = CartItem;