@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
68 lines (67 loc) • 3.94 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 AccessibilityButton_1 = tslib_1.__importDefault(require("./AccessibilityButton"));
var CancelButton_1 = tslib_1.__importDefault(require("./CancelButton"));
var CartButton_1 = tslib_1.__importDefault(require("./CartButton"));
var SignInButton_1 = tslib_1.__importDefault(require("./SignInButton"));
var TagsButton_1 = tslib_1.__importDefault(require("./TagsButton"));
var Header = function (_a) {
var to = _a.to, _b = _a.backText, backText = _b === void 0 ? 'Back' : _b, _c = _a.showImage, showImage = _c === void 0 ? true : _c, backAction = _a.backAction, pathname = _a.pathname, navigate = _a.navigate, children = _a.children, SignInButtonView = _a.SignInButtonView, TagsButtonView = _a.TagsButtonView, CartButton = _a.CartButton, CancelButton = _a.CancelButton, AccessibilityButton = _a.AccessibilityButton, startOverCallback = _a.startOverCallback, BackButton = _a.BackButton;
var dispatch = (0, hooks_1.useAppDispatch)();
var config = ((0, hooks_1.useAppSelector)(slices_1.selectKioskConfig) || {}).header;
var showButtons = !!(backAction || to);
var _d = (0, hooks_1.useAppSelector)(slices_1.selectStoreSettings), display_sign_in = _d.display_sign_in, display_allergens = _d.display_allergens, display_tags = _d.display_tags;
var back = function () {
if (backAction) {
backAction();
}
else if (to) {
navigate(to);
}
else {
navigate('/');
}
};
var startOver = function () {
return startOverCallback ? startOverCallback === null || startOverCallback === void 0 ? void 0 : startOverCallback() : navigate('/');
};
var open = function () {
dispatch((0, slices_1.toggleSidebar)());
};
var handlers = { back: back, open: open, startOver: startOver };
var renderSignInButton = (0, react_1.useCallback)(function () { return (react_1.default.createElement(SignInButton_1.default, { pathname: pathname, navigate: navigate, children: SignInButtonView })); }, [pathname, navigate, SignInButtonView]);
var renderTagsButton = (0, react_1.useCallback)(function () {
return TagsButtonView ? react_1.default.createElement(TagsButton_1.default, { children: TagsButtonView }) : null;
}, [TagsButtonView]);
var renderCartButton = (0, react_1.useCallback)(function () { return (CartButton ? react_1.default.createElement(CartButton_1.default, { children: CartButton }) : null); }, [CartButton]);
var renderCancelButton = (0, react_1.useCallback)(function () {
return CancelButton ? (react_1.default.createElement(CancelButton_1.default, { navigate: navigate, children: CancelButton })) : null;
}, [CancelButton, navigate]);
var renderAccessibilityButton = (0, react_1.useCallback)(function () {
return AccessibilityButton ? (react_1.default.createElement(AccessibilityButton_1.default, { children: AccessibilityButton })) : null;
}, [AccessibilityButton]);
if (!config)
return null;
return children({
config: config,
handlers: handlers,
showButtons: showButtons,
showImage: showImage,
backText: backText,
renderSignInButton: display_sign_in ? renderSignInButton : undefined,
renderTagsButton: TagsButtonView && (display_allergens || display_tags)
? renderTagsButton
: undefined,
renderCartButton: CartButton ? renderCartButton : undefined,
renderCancelButton: CancelButton ? renderCancelButton : undefined,
renderAccessibilityButton: AccessibilityButton
? renderAccessibilityButton
: undefined,
BackButton: BackButton
});
};
exports.default = Header;