Skip to content

Commit 196df94

Browse files
committed
refactor: changes to the breadcrumb
removed unnececary code, add new props and changed rel
1 parent 2b1796a commit 196df94

1 file changed

Lines changed: 45 additions & 50 deletions

File tree

  • packages/ui/src/components/Breadcrumb

packages/ui/src/components/Breadcrumb/index.tsx

Lines changed: 45 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,24 @@ import './index.module.scss';
1212
import styles from './index.module.scss';
1313
import { useScreenSize } from '../../hooks';
1414

15+
export const extendLink = (link: BreadcrumbLinkType) => ({
16+
// Use default `rel`, but actual optional rel should override this
17+
rel: link.current ? undefined : link.href === '/' ? 'home' : 'up',
18+
...link,
19+
});
20+
1521
const css = classnames.bind(styles);
1622
type BreadcrumbLinkType = {
1723
href: string;
1824
label: string;
1925
current: boolean;
26+
rel?: string;
2027
};
2128

2229
interface BreadcrumbProps extends BreadcrumbNavProps {
2330
links: BreadcrumbLinkType[];
2431
Link?: ComponentType<any>;
25-
backLink?: {
26-
href: string;
27-
label: string;
28-
current: boolean;
29-
};
32+
backLink?: BreadcrumbLinkType;
3033
breakpoint?: number;
3134
}
3235

@@ -41,59 +44,51 @@ export const Breadcrumbs = ({
4144

4245
const smallScreen = Number(screenSize) <= breakpoint;
4346

44-
if (smallScreen && backLink?.href && backLink.label) {
47+
const linkData = links.map(extendLink);
48+
const backLinkData = backLink && extendLink(backLink);
49+
50+
if (
51+
(smallScreen && backLinkData?.href && backLinkData.label) ||
52+
(links.length === 1 && backLinkData?.href && backLinkData.label)
53+
) {
4554
return (
4655
<BreadcrumbNav className={css('utrecht-breadcrumb-nav-theme')} {...restBreadcrumbProps}>
47-
<Fragment>
48-
<BreadcrumbNavLink
49-
className={css('utrecht-link', 'utrecht-link--html-a', 'utrecht-breadcrumb-nav__link-custom')}
50-
href={backLink.href}
51-
rel={backLink.href === '/' ? 'home' : 'up'}
52-
current={backLink.current}
53-
Link={Link}
54-
>
55-
{backLink?.label?.toLowerCase() !== 'home' && (
56-
<BreadcrumbNavSeparator>
57-
<UtrechtIconChevronLeft />
58-
</BreadcrumbNavSeparator>
59-
)}
60-
{backLink.label}
61-
</BreadcrumbNavLink>
62-
</Fragment>
56+
<BreadcrumbNavLink
57+
className={css('utrecht-link', 'utrecht-link--html-a', 'utrecht-breadcrumb-nav__link-custom')}
58+
href={backLinkData.href}
59+
rel={backLinkData.rel}
60+
current={backLinkData.current}
61+
Link={Link}
62+
>
63+
{backLinkData?.rel === 'up' && <UtrechtIconChevronLeft />} {backLinkData.label}
64+
</BreadcrumbNavLink>
6365
</BreadcrumbNav>
6466
);
6567
}
6668

6769
return (
6870
<BreadcrumbNav className={css('utrecht-breadcrumb-nav-theme')} {...restBreadcrumbProps}>
69-
{links &&
70-
links.length > 0 &&
71-
links
72-
.filter(({ label }) => label)
73-
.map(({ href, label, current }: any, index: number) => (
74-
<Fragment key={`${href}-${index}`}>
75-
{links.length === 1 && label?.toLowerCase() !== 'home' && (
76-
<BreadcrumbNavSeparator>
77-
<UtrechtIconChevronLeft />
78-
</BreadcrumbNavSeparator>
79-
)}
80-
<BreadcrumbNavLink
81-
className={css('utrecht-link', 'utrecht-link--html-a', 'utrecht-breadcrumb-nav__link-custom')}
82-
href={href}
83-
rel={href === '/' ? 'home' : 'up'}
84-
index={index}
85-
current={current}
86-
Link={UtrechtLink}
87-
>
88-
{label}
89-
</BreadcrumbNavLink>
90-
{index !== links.length - 1 && (
91-
<BreadcrumbNavSeparator>
92-
<UtrechtIconChevronRight />
93-
</BreadcrumbNavSeparator>
94-
)}
95-
</Fragment>
96-
))}
71+
{linkData
72+
.filter(({ label }) => label)
73+
.map(({ href, label, current, rel }: any, index: number) => (
74+
<Fragment key={`${href}-${index}`}>
75+
<BreadcrumbNavLink
76+
className={css('utrecht-link', 'utrecht-link--html-a', 'utrecht-breadcrumb-nav__link-custom')}
77+
href={href}
78+
rel={rel}
79+
index={index}
80+
current={current}
81+
Link={UtrechtLink}
82+
>
83+
{label}
84+
</BreadcrumbNavLink>
85+
{index !== links.length - 1 && (
86+
<BreadcrumbNavSeparator>
87+
<UtrechtIconChevronRight />
88+
</BreadcrumbNavSeparator>
89+
)}
90+
</Fragment>
91+
))}
9792
</BreadcrumbNav>
9893
);
9994
};

0 commit comments

Comments
 (0)