@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
32 lines (31 loc) • 2.41 kB
JavaScript
import { __rest } from "tslib";
import React, { useCallback } from 'react';
import { useAppSelector } from '../app/hooks';
import { selectCustomerIdentified, selectKioskConfig, selectMenu, selectStoreSettings } from '../slices';
import { default as CategoryNavItemContainer } from './CategoryNavItem';
import { default as CategoryNavOtherContainer } from './CategoryNavOther';
var CategoryNav = function (_a) {
var displayImage = _a.displayImage, children = _a.children, navigate = _a.navigate, CategoryNavOtherView = _a.CategoryNavOtherView, CategoryNavItemView = _a.CategoryNavItemView;
var _b = useAppSelector(selectStoreSettings), display_featured = _b.display_featured, display_favorites = _b.display_favorites, display_recents = _b.display_recents, navigation_page = _b.navigation_page;
var customer = (useAppSelector(selectCustomerIdentified) || {}).customer;
var config = useAppSelector(selectKioskConfig).categoryNav;
var _c = useAppSelector(selectMenu), categories = _c.categories, featured = _c.featured, rest = __rest(_c, ["categories", "featured"]);
var favorites = customer && display_favorites ? rest.favorites : [];
var recents = customer && display_recents ? rest.recents : [];
var renderCategoryNavOther = useCallback(function (title, path) { return (React.createElement(CategoryNavOtherContainer, { navigate: navigate, title: title, path: path, children: CategoryNavOtherView, displayImage: displayImage, navigationType: navigation_page })); }, [navigate, CategoryNavOtherView, displayImage, navigation_page]);
var renderCategoryNavItem = useCallback(function (item, index, setItemLayout) { return (React.createElement(CategoryNavItemContainer, { key: item.id, navigate: navigate, category: item, index: index, setItemLayout: setItemLayout, children: CategoryNavItemView, displayImage: displayImage, navigationType: navigation_page })); }, [navigate, CategoryNavItemView, displayImage, navigation_page]);
if (!config)
return null;
return children({
config: config,
categories: categories,
featured: display_featured ? featured : [],
favorites: favorites,
recents: recents,
navigationType: navigation_page,
displayImage: displayImage,
renderCategoryNavOther: renderCategoryNavOther,
renderCategoryNavItem: renderCategoryNavItem
});
};
export default CategoryNav;