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

49 lines (48 loc) 2.34 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 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, backAction = _a.backAction, pathname = _a.pathname, navigate = _a.navigate, children = _a.children, SignInButtonView = _a.SignInButtonView, TagsButtonView = _a.TagsButtonView; var dispatch = (0, hooks_1.useAppDispatch)(); var config = ((0, hooks_1.useAppSelector)(slices_1.selectKioskConfig) || {}).header; var showButtons = !!(backAction || to); var _c = (0, hooks_1.useAppSelector)(slices_1.selectStoreSettings), display_sign_in = _c.display_sign_in, display_allergens = _c.display_allergens, display_tags = _c.display_tags; var back = function () { if (backAction) { backAction(); } else if (to) { navigate(to); } else { navigate('/'); } }; var startOver = function () { return 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]); if (!config) return null; return children({ config: config, handlers: handlers, showButtons: showButtons, backText: backText, renderSignInButton: display_sign_in ? renderSignInButton : undefined, renderTagsButton: TagsButtonView && (display_allergens || display_tags) ? renderTagsButton : undefined }); }; exports.default = Header;