Skip to content

Commit 3182599

Browse files
authored
fix: Simplify DocBreadcrumbs so we don't need the swizzle warning comment (#715)
1 parent 7d93c98 commit 3182599

File tree

3 files changed

+23
-80
lines changed

3 files changed

+23
-80
lines changed

packages/docs/sidebars.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,13 @@ function nestMarkdownFiles() {
3939
} else {
4040
let item = items.find(({ label }) => label === category);
4141
if (item === undefined) {
42+
const anchor = category.toLowerCase() === 'enums' ? 'enumerations' : category.toLowerCase();
4243
item = {
4344
type: 'category',
4445
label: category,
4546
items: [],
4647
customProps: {
47-
breadcrumbLink: `/api/namespaces/${parts[0]}#${category.toLowerCase()}`,
48+
breadcrumbLink: `/api/namespaces/${parts[0]}#${anchor}`,
4849
},
4950
};
5051
items.push(item);
Lines changed: 21 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,6 @@
1-
// Swizzled from facebook/docusaurus@44ebe73e506fb3e09540c7650a6b2db0a1a435a0
2-
// To get updated version:
3-
// 1. `cd packages/docs`
4-
// 2. `npm run swizzle`
5-
// 3. Select `@docusaurus/theme-classic`
6-
// 4. Select `DocBreadcrumbs (Unsafe)`
7-
// 5. Select `Eject (Unsafe)`
8-
// Only change is adding getHrefFromItem
9-
10-
/**
11-
* Copyright (c) Facebook, Inc. and its affiliates.
12-
*
13-
* This source code is licensed under the MIT license found in the
14-
* LICENSE file in the root directory of this source tree.
15-
*/
16-
171
import React from 'react';
18-
import { ThemeClassNames, useSidebarBreadcrumbs, useHomePageRoute } from '@docusaurus/theme-common';
19-
import styles from './styles.module.css';
20-
import clsx from 'clsx';
2+
import { useSidebarBreadcrumbs, useHomePageRoute } from '@docusaurus/theme-common';
213
import Link from '@docusaurus/Link';
22-
import useBaseUrl from '@docusaurus/useBaseUrl'; // TODO move to design system folder
23-
24-
function BreadcrumbsItemLink({ children, href }) {
25-
const className = 'breadcrumbs__link';
26-
return href ? (
27-
<Link className={className} href={href} itemProp="item">
28-
<span itemProp="name">{children}</span>
29-
</Link>
30-
) : (
31-
<span className={className} itemProp="item name">
32-
{children}
33-
</span>
34-
);
35-
} // TODO move to design system folder
36-
37-
function BreadcrumbsItem({ children, active, index }) {
38-
return (
39-
<li
40-
itemScope
41-
itemProp="itemListElement"
42-
itemType="https://schema.org/ListItem"
43-
className={clsx('breadcrumbs__item', {
44-
'breadcrumbs__item--active': active,
45-
})}
46-
>
47-
{children}
48-
<meta itemProp="position" content={String(index + 1)} />
49-
</li>
50-
);
51-
}
52-
53-
function HomeBreadcrumbItem() {
54-
const homeHref = useBaseUrl('/');
55-
return (
56-
<li className="breadcrumbs__item">
57-
<Link className={clsx('breadcrumbs__link', styles.breadcrumbsItemLink)} href={homeHref}>
58-
🏠
59-
</Link>
60-
</li>
61-
);
62-
}
634

645
export default function DocBreadcrumbs() {
656
const breadcrumbs = useSidebarBreadcrumbs();
@@ -70,21 +11,33 @@ export default function DocBreadcrumbs() {
7011
}
7112

7213
return (
73-
<nav className={clsx(ThemeClassNames.docs.docBreadcrumbs, styles.breadcrumbsContainer)} aria-label="breadcrumbs">
74-
<ul className="breadcrumbs" itemScope itemType="https://schema.org/BreadcrumbList">
75-
{homePageRoute && <HomeBreadcrumbItem />}
14+
<nav aria-label="breadcrumbs">
15+
<ul className="breadcrumbs">
16+
<li className="breadcrumbs__item">
17+
<Link className="breadcrumbs__link" href={homePageRoute.path}>
18+
🏠
19+
</Link>
20+
</li>
7621
{breadcrumbs.map((item, idx) => (
77-
<BreadcrumbsItem key={idx} active={idx === breadcrumbs.length - 1} index={idx}>
78-
<BreadcrumbsItemLink href={idx < breadcrumbs.length - 1 ? getHrefFromItem(item) : undefined}>
79-
{item.label}
80-
</BreadcrumbsItemLink>
81-
</BreadcrumbsItem>
22+
<li key={idx} className={getItemClassNames(breadcrumbs, idx)}>
23+
<Link className="breadcrumbs__link" href={getHrefFromItem(item)}>
24+
<span>{item.label}</span>
25+
</Link>
26+
</li>
8227
))}
8328
</ul>
8429
</nav>
8530
);
8631
}
8732

33+
function getItemClassNames(breadcrumbs, idx) {
34+
const classes = ['breadcrumbs__item'];
35+
if (idx === breadcrumbs.length - 1) {
36+
classes.push('breadcrumbs__item--active');
37+
}
38+
return classes.join(' ');
39+
}
40+
8841
function getHrefFromItem(item) {
8942
return item.customProps?.breadcrumbLink || item.href;
9043
}

packages/docs/src/theme/DocBreadcrumbs/styles.module.css

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)