@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
46 lines (45 loc) • 2.16 kB
JavaScript
import React, { useCallback } from 'react';
import { useAppDispatch, useAppSelector } from '../app/hooks';
import { selectKioskConfig, selectStoreSettings, toggleSidebar } from '../slices';
import { default as SignInButtonContainer } from './SignInButton';
import { default as TagsButtonContainer } from './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 = useAppDispatch();
var config = (useAppSelector(selectKioskConfig) || {}).header;
var showButtons = !!(backAction || to);
var _c = useAppSelector(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(toggleSidebar());
};
var handlers = { back: back, open: open, startOver: startOver };
var renderSignInButton = useCallback(function () { return (React.createElement(SignInButtonContainer, { pathname: pathname, navigate: navigate, children: SignInButtonView })); }, [pathname, navigate, SignInButtonView]);
var renderTagsButton = useCallback(function () {
return TagsButtonView ? React.createElement(TagsButtonContainer, { 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
});
};
export default Header;