// 16-10-2024 import React from 'react'; import { Link, useLocation } from 'react-router-dom'; import { BreadcrumbData } from 'use-react-router-breadcrumbs'; // ICONS import { Divider, styled, useTheme } from '@mui/material'; import { IoMdHome as HomeIcon } from 'react-icons/io'; import { MdOutlineArrowForwardIos as DividerIcon } from 'react-icons/md'; // STYLE const breadcrumbAlignItem: React.CSSProperties = { display: 'flex', alignSelf: 'center' } const breadcrumbLinkDecorationLight: React.CSSProperties = { textDecoration: 'none', color: '#166CC8' } const breadcrumbLinkDecorationDark: React.CSSProperties = { textDecoration: 'none', color: '#CFD2D6' } const colorUnlinkLight: React.CSSProperties = { color: '#606060' } const colorUnlinkDark: React.CSSProperties = { color: '#C5C8CB' } const BreadcrumbWrapperStyled = styled('div')(({ theme }) => ({ display: 'flex', width: '100%', paddingBlock: 10, paddingInline: 10, boxSizing: 'border-box', [theme.breakpoints.up('sm')]: { paddingInline: 20, } })) export interface IBreadcrumbsBaseComponentProps extends React.DetailedHTMLProps, HTMLDivElement> { homeRouteName: string, breadcrumbs: BreadcrumbData[], unLink?: string[], ignoreRoutes?: string[], showBottomBorder?: boolean, } export const BreadcrumbsBaseComponent: React.FC = ({ homeRouteName, breadcrumbs, unLink, ignoreRoutes, showBottomBorder, ...props }) => { const theme = useTheme() // const unLink = [ // '/bla', // '/blabla' // ] const location = useLocation() const checkArrays = (arrayA: any[], arrayB: any[]) => arrayA.some(r => arrayB.indexOf(r) >= 0) return <> {/* */} {breadcrumbs.filter(b => !ignoreRoutes?.includes(b.match.pathname)).map((args, index) => { return {/* */} {/* HOME */} {args.match.pathname == homeRouteName ? : null} {/* ARROW DIVIDER */} {args.match.pathname != homeRouteName ? : null} {/* PATH/ROUTES NAMES */} {[':id', 'new'].includes(args.match.params.id ?? '') ? 'Novo' : location.pathname == args.match.pathname ?
{args.breadcrumb}
: checkArrays([args.match.pathname], unLink ?? []) ?
{args.match.route?.breadcrumb as string}
: {args.breadcrumb}}
})}
{showBottomBorder == true && } }