// 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)}>
}