@plone/volto
Version:
Volto
82 lines (76 loc) • 2.36 kB
JSX
import React from 'react';
import { Breadcrumb } from 'semantic-ui-react';
import { Link, useLocation } from 'react-router-dom';
import { defineMessages, useIntl } from 'react-intl';
import langmap from '@plone/volto/helpers/LanguageMap/LanguageMap';
import ContentsBreadcrumbsRootItem from '@plone/volto/components/manage/Contents/ContentsBreadcrumbsRootItem';
import ContentsBreadcrumbsHomeItem from '@plone/volto/components/manage/Contents/ContentsBreadcrumbsHomeItem';
import config from '@plone/volto/registry';
const messages = defineMessages({
home: {
id: 'Home',
defaultMessage: 'Home',
},
root: {
id: 'Root',
defaultMessage: 'Root',
},
});
const ContentsBreadcrumbs = (props) => {
const { settings } = config;
const { items } = props;
const intl = useIntl();
const pathname = useLocation().pathname;
const lang = pathname.split('/')[1];
return (
<Breadcrumb>
{settings.isMultilingual && (
<>
<Link
to="/contents"
className="section"
title={intl.formatMessage(messages.root)}
>
<ContentsBreadcrumbsRootItem />
</Link>
<Breadcrumb.Divider />
</>
)}
{settings.isMultilingual && pathname?.split('/')?.length > 2 && (
<Link
to={`/${lang}/contents`}
className="section"
title={intl.formatMessage(messages.home)}
>
{langmap?.[lang]?.nativeName ?? lang}
</Link>
)}
{!settings.isMultilingual && (
<Link
to="/contents"
className="section"
title={intl.formatMessage(messages.home)}
>
<ContentsBreadcrumbsHomeItem />
</Link>
)}
{items.map((breadcrumb, index, breadcrumbs) => [
<Breadcrumb.Divider key={`divider-${breadcrumb.url}`} />,
index < breadcrumbs.length - 1 ? (
<Link
key={breadcrumb.url}
to={`${breadcrumb.url}/contents`}
className="section"
>
{breadcrumb.nav_title || breadcrumb.title}
</Link>
) : (
<Breadcrumb.Section key={breadcrumb.url} active>
{breadcrumb.nav_title || breadcrumb.title}
</Breadcrumb.Section>
),
])}
</Breadcrumb>
);
};
export default ContentsBreadcrumbs;