All files / src/components AppBreadcrumb.js

0% Statements 0/17
0% Branches 0/8
0% Functions 0/6
0% Lines 0/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52                                                                                                       
import React from 'react'
import { useLocation } from 'react-router-dom'
 
import routes from '../routes'
 
import { CBreadcrumb, CBreadcrumbItem } from '@coreui/react'
 
const AppBreadcrumb = () => {
	const currentLocation = useLocation().pathname
 
	const getRouteName = (pathname, routes) => {
		const currentRoute = routes.find((route) => route.path === pathname)
		return currentRoute ? currentRoute.name : false
	}
 
	const getBreadcrumbs = (location) => {
		const breadcrumbs = []
		location.split('/').reduce((prev, curr, index, array) => {
			const currentPathname = `${prev}/${curr}`
			const routeName = getRouteName(currentPathname, routes)
			routeName &&
				breadcrumbs.push({
					pathname: currentPathname,
					name: routeName,
					active: index + 1 === array.length ? true : false,
				})
			return currentPathname
		})
		return breadcrumbs
	}
 
	const breadcrumbs = getBreadcrumbs(currentLocation)
 
	return (
		<CBreadcrumb className="my-0">
			<CBreadcrumbItem href="/">Home</CBreadcrumbItem>
			{breadcrumbs.map((breadcrumb, index) => {
				return (
					<CBreadcrumbItem
						{...(breadcrumb.active ? { active: true } : { href: breadcrumb.pathname })}
						key={index}
					>
						{breadcrumb.name}
					</CBreadcrumbItem>
				)
			})}
		</CBreadcrumb>
	)
}
 
export default React.memo(AppBreadcrumb)