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

32 lines (31 loc) 2.41 kB
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;