import { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; // material-ui import { useTheme } from '@mui/material/styles'; import { Box, Card, Divider, Grid, Typography } from '@mui/material'; import MuiBreadcrumbs from '@mui/material/Breadcrumbs'; // project imports import config from 'config'; import { gridSpacing } from 'store/constant'; // assets import { IconTallymark1 } from '@tabler/icons'; import AccountTreeTwoToneIcon from '@mui/icons-material/AccountTreeTwoTone'; import HomeIcon from '@mui/icons-material/Home'; import HomeTwoToneIcon from '@mui/icons-material/HomeTwoTone'; import { NavItemType, NavItemTypeObject, OverrideIcon } from 'types'; const linkSX = { display: 'flex', color: 'grey.900', textDecoration: 'none', alignContent: 'center', alignItems: 'center' }; export interface BreadCrumbSxProps extends React.CSSProperties { mb?: string; bgcolor?: string; } export interface BreadCrumbsProps { card?: boolean; divider?: boolean; icon?: boolean; icons?: boolean; maxItems?: number; navigation?: NavItemTypeObject; rightAlign?: boolean; separator?: OverrideIcon; title?: boolean; titleBottom?: boolean; sx?: BreadCrumbSxProps; } // ==============================|| BREADCRUMBS ||============================== // const Breadcrumbs = ({ card, divider, icon, icons, maxItems, navigation, rightAlign, separator, title, titleBottom, ...others }: BreadCrumbsProps) => { const theme = useTheme(); const iconStyle = { marginRight: theme.spacing(0.75), marginTop: `-${theme.spacing(0.25)}`, width: '1rem', height: '1rem', color: theme.palette.secondary.main }; const [main, setMain] = useState(); const [item, setItem] = useState(); useEffect(() => { navigation?.items?.map((menu: NavItemType | NavItemTypeObject, index: number) => { if (menu.type && menu.type === 'group') { getCollapse(menu as { children: NavItemType[]; type?: string }); } return false; }); }); // set active item state const getCollapse = (menu: NavItemTypeObject) => { if (menu.children) { menu.children.filter((collapse: NavItemType) => { if (collapse.type && collapse.type === 'collapse') { getCollapse(collapse as { children: NavItemType[]; type?: string }); } else if (collapse.type && collapse.type === 'item') { if (document.location.pathname === config.basename + collapse.url) { setMain(menu); setItem(collapse); } } return false; }); } }; // item separator const SeparatorIcon = separator!; const separatorIcon = separator ? : ; let mainContent; let itemContent; let breadcrumbContent: React.ReactElement = ; let itemTitle: NavItemType['title'] = ''; let CollapseIcon; let ItemIcon; // collapse item if (main && main.type === 'collapse') { CollapseIcon = main.icon ? main.icon : AccountTreeTwoToneIcon; mainContent = ( {icons && } {main.title} ); } // items if (item && item.type === 'item') { itemTitle = item.title; ItemIcon = item.icon ? item.icon : AccountTreeTwoToneIcon; itemContent = ( {icons && } {itemTitle} ); // main if (item.breadcrumbs !== false) { breadcrumbContent = ( {title && !titleBottom && ( {item.title} )} {icons && } {icon && } {!icon && 'Dashboard'} {mainContent} {itemContent} {title && titleBottom && ( {item.title} )} {card === false && divider !== false && } ); } } return breadcrumbContent; }; export default Breadcrumbs;