// Component Imports import { SubMenu as HorizontalSubMenu, MenuItem as HorizontalMenuItem } from '@menu/horizontal-menu' import { SubMenu as VerticalSubMenu, MenuItem as VerticalMenuItem, MenuSection } from '@menu/vertical-menu' import CustomChip from '@core/components/mui/Chip' // Generate a menu from the menu data array export const GenerateVerticalMenu = ({ menuData }) => { // Hooks const renderMenuItems = data => { // Use the map method to iterate through the array of menu data return data.map((item, index) => { const menuSectionItem = item const subMenuItem = item const menuItem = item // Check if the current item is a section if (menuSectionItem.isSection) { const { children, isSection, ...rest } = menuSectionItem // If it is, return a MenuSection component and call generateMenu with the current menuSectionItem's children return ( {children && renderMenuItems(children)} ) } // Check if the current item is a sub menu if (subMenuItem.children) { const { children, icon, prefix, suffix, ...rest } = subMenuItem const Icon = icon ? : null const subMenuPrefix = prefix && prefix.label ? : prefix const subMenuSuffix = suffix && suffix.label ? : suffix // If it is, return a SubMenu component and call generateMenu with the current subMenuItem's children return ( {children && renderMenuItems(children)} ) } // If the current item is neither a section nor a sub menu, return a MenuItem component const { label, icon, prefix, suffix, ...rest } = menuItem // Localize the href const href = rest.href const Icon = icon ? : null const menuItemPrefix = prefix && prefix.label ? : prefix const menuItemSuffix = suffix && suffix.label ? : suffix return ( {label} ) }) } return <>{renderMenuItems(menuData)} } // Generate a menu from the menu data array export const GenerateHorizontalMenu = ({ menuData }) => { // Hooks const renderMenuItems = data => { // Use the map method to iterate through the array of menu data return data.map((item, index) => { const subMenuItem = item const menuItem = item // Check if the current item is a sub menu if (subMenuItem.children) { const { children, icon, prefix, suffix, ...rest } = subMenuItem const Icon = icon ? : null const subMenuPrefix = prefix && prefix.label ? : prefix const subMenuSuffix = suffix && suffix.label ? : suffix // If it is, return a SubMenu component and call generateMenu with the current subMenuItem's children return ( {children && renderMenuItems(children)} ) } // If the current item is not a sub menu, return a MenuItem component const { label, icon, prefix, suffix, ...rest } = menuItem // Localize the href const href = rest.href const Icon = icon ? : null const menuItemPrefix = prefix && prefix.label ? : prefix const menuItemSuffix = suffix && suffix.label ? : suffix return ( {label} ) }) } return <>{renderMenuItems(menuData)} }