import React, { useMemo } from 'react'; import MaterialUIBreadcrumbs from '@material-ui/core/Breadcrumbs'; import Link from '@material-ui/core/Link'; import HomeIcon from '@material-ui/icons/Home'; type LinkType = { href?: string; label?: string; }; interface BreadcrumbsProps extends React.HTMLAttributes { separator?: React.ReactNode; showHomeIcon?: boolean; homeIcon?: React.ReactNode; links: LinkType[]; } const buildLink = (link: LinkType, index: number): React.ReactNode => { const { href, label } = link; if (href) { return ( {label} ); } return ( {label} ); }; const Breadcrumbs: React.FC = (props: BreadcrumbsProps) => { const { separator = '/', links, showHomeIcon, homeIcon } = props; const linkElements = useMemo(() => links.map((link, index: number) => buildLink(link, index)), [links]); return (
{showHomeIcon && (homeIcon || )} Home {linkElements}
); }; export default Breadcrumbs;