@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
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 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;