feat: Breadcrumbs Common

This commit is contained in:
sonnguyenkieio 2021-08-31 10:44:11 +07:00
parent 185601f002
commit 8c7c57175d
3 changed files with 16 additions and 27 deletions

View File

@ -1,54 +1,43 @@
import React from 'react' import React from 'react'
import s from './BreadcrumbCommon.module.scss' import s from './BreadcrumbCommon.module.scss'
import { useRouter } from 'next/router'
import BreadcrumbItem from './components/BreadcrumbItem/BreadcrumbItem' import BreadcrumbItem from './components/BreadcrumbItem/BreadcrumbItem'
import BreadcrumbSeparator from './components/BreadcrumbSeparator/BreadcrumbSeparator' import BreadcrumbSeparator from './components/BreadcrumbSeparator/BreadcrumbSeparator'
const BreadcrumbCommon = () => { interface BreadcrumbCommonProps {
crumbs: { link:string, name:string }[];
showHomePage?: boolean;
}
const paths: string | any = { const BreadcrumbCommon = ({ crumbs, showHomePage=true } : BreadcrumbCommonProps) => {
"/": "Home", if (showHomePage) {
"fresh-product-today" : "Fresh Product Today", crumbs.unshift({link: "/", name: "Home"});
"product-list": "Product List",
"recipes-list": "Recipes List",
"blogs": "Blog",
"account": "Account",
"delivery&policy": "Delivery & Policy",
"product-detail": "Product Detail",
"recipes-detail": "Recipes Detail",
"blog-detail": "Blog Detail"
} }
const router = useRouter();
let crumbs = router.route.split('/');
return ( return (
<section className={s.breadcrumbCommon}> <section className={s.breadcrumbCommon}>
<BreadcrumbItem text="Home" href="/" />
{ {
crumbs.map((crumb, i) => { crumbs.map((crumb, i) => {
if (crumb === "") { if (i === 0) {
return return (
<BreadcrumbItem key={i} text={crumb.name} href={crumb.link} />
)
} }
if (i === crumbs.length-1) { if (i === crumbs.length-1) {
return ( return (
<BreadcrumbSeparator key={i}> <BreadcrumbSeparator key={i}>
<BreadcrumbItem text={`${paths[crumb]}`} href="#" /> <BreadcrumbItem key={i} text={crumb.name} href="#" />
</BreadcrumbSeparator> </BreadcrumbSeparator>
) )
} }
return ( return (
<BreadcrumbSeparator key={i}> <BreadcrumbSeparator key={i}>
<BreadcrumbItem text={`${paths[crumb]}`} href={`/${paths[crumb]}`} /> <BreadcrumbItem key={i} text={crumb.name} href={crumb.link} />
</BreadcrumbSeparator> </BreadcrumbSeparator>
) )
}) })
} }
</section> </section>
) )
} }
export default BreadcrumbCommon export default BreadcrumbCommon

View File

@ -8,8 +8,8 @@ interface BreadcrumbItemProps {
const BreadcrumbItem = ({ text, href }: BreadcrumbItemProps) => { const BreadcrumbItem = ({ text, href }: BreadcrumbItemProps) => {
return ( return (
<Link href={`${href}`}> <Link href={href}>
{text} <a>{text}</a>
</Link> </Link>
) )
} }

View File

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
interface BreadcrumbSeparatorProps { interface BreadcrumbSeparatorProps {
children: any; children?: React.ReactNode
} }
const BreadcrumbSeparator = ({ children }: BreadcrumbSeparatorProps) => { const BreadcrumbSeparator = ({ children }: BreadcrumbSeparatorProps) => {