import type { CommonProps } from '@/@types/common' import type { NavigationTree } from '@/@types/navigation' import type { Direction } from '@/@types/theme' import { PermissionCheck } from '@/components/shared' import Dropdown from '@/components/ui/Dropdown' import Menu from '@/components/ui/Menu' import { Link } from 'react-router-dom' import VerticalMenuIcon from './VerticalMenuIcon' interface DefaultItemProps extends CommonProps { nav: NavigationTree onLinkClick?: (link: { key: string; title: string; path: string }) => void userAuthority: string[] icon?: string } interface CollapsedItemProps extends DefaultItemProps { direction: Direction } interface VerticalCollapsedMenuItemProps extends CollapsedItemProps { sideCollapsed?: boolean } const { MenuItem, MenuCollapse } = Menu const DefaultItem = ({ nav, onLinkClick }: DefaultItemProps) => { return ( {nav.title} } eventKey={nav.key} expanded={false} > {nav.subMenu.map((subNav) => ( {subNav.path ? ( onLinkClick?.({ key: subNav.key, title: subNav.title, path: subNav.path, }) } target={subNav.isExternalLink ? '_blank' : ''} > {nav.title} ) : ( {nav.title} )} ))} ) } const CollapsedItem = ({ nav, onLinkClick, direction }: CollapsedItemProps) => { const menuItem = ( ) return ( {nav.subMenu.map((subNav) => ( {subNav.path ? ( onLinkClick?.({ key: subNav.key, title: subNav.title, path: subNav.path, }) } target={subNav.isExternalLink ? '_blank' : ''} > {subNav.title} ) : ( {subNav.title} )} ))} ) } const VerticalCollapsedMenuItem = ({ sideCollapsed, ...rest }: VerticalCollapsedMenuItemProps) => { return sideCollapsed ? : } export default VerticalCollapsedMenuItem