Hide variants from page breadcrumbs
Luke Karrys committed
Oct 16, 2023 at 21:57 UTC
c06c056dbb1717800abbb4b80554dca6dd78eb9a
3 files changed
+24
-17
src/components/breadcrumbs.js
+1
-2
@@ -5,7 +5,6 @@ import * as getNav from '../util/get-nav'
5
import {useLocation} from '../layout'
6
7
const BreadcrumbItem = ({item, path}) => {
8
- // TODO: hide variant name
8
const href = getNav.getLocation(item.url)
9
const selected = getNav.isPathForItem(path, getNav.getItem(href))
10
@@ -19,7 +18,7 @@ const BreadcrumbItem = ({item, path}) => {
18
const Breadcrumbs = () => {
19
const location = useLocation()
20
const path = getNav.getLocation(location.pathname)
22
- const items = getNav.getItemBreadcrumbs(location.pathname)
21
+ const items = getNav.getItemBreadcrumbs(location.pathname, {hideVariants: true})
22
23
if (!items || items.length <= 1) {
24
return null
src/components/search-results.js
+6
-7
@@ -5,14 +5,13 @@ import * as getNav from '../util/get-nav'
5
6
const Breadcrumbs = ({item, highlighted}) => {
7
const siteMetadata = useSiteMetadata()
8
- const hierarchy = getNav.getItemBreadcrumbs(item.path)
8
+ let hierarchy = getNav.getItemBreadcrumbs(item.path)
9
10
- const text = hierarchy
11
- ? hierarchy
12
- .slice(0, -1)
13
- .map(s => s.title)
14
- .join(' / ')
15
- : siteMetadata.shortName
10
+ if (hierarchy) {
11
+ hierarchy = hierarchy.slice(0, -1)
12
+ }
13
+
14
+ const text = hierarchy && hierarchy.length ? hierarchy.map(s => s.title).join(' / ') : siteMetadata.shortName
15
16
return <Text sx={{fontSize: 0, color: highlighted ? 'blue.2' : 'gray.7'}}>{text}</Text>
17
}
src/util/get-nav.js
+17
-8
@@ -1,14 +1,23 @@
1
import {withPrefix} from 'gatsby'
2
import navItems from '../../content/nav.yml'
3
4
-export const getItemBreadcrumbs = path => {
5
- const hierarchy = getItemHierarchy(path)
6
- return hierarchy
7
- ? hierarchy.map(item => {
8
- item.title = item.shortName || item.title
9
- return item
10
- })
11
- : null
4
+export const getItemBreadcrumbs = (path, props = {}) => {
5
+ let hierarchy = getItemHierarchy(path)
6
+
7
+ if (!hierarchy) {
8
+ return null
9
+ }
10
+
11
+ if (props.hideVariants) {
12
+ const root = getVariantRoot(path)
13
+ const vp = getVariantAndPage(root, path)
14
+ hierarchy = hierarchy.filter(item => (vp ? item.shortName !== vp.variant : true))
15
+ }
16
+
17
+ return hierarchy.map(item => ({
18
+ ...item,
19
+ title: item.shortName || item.title,
20
+ }))
21
}
22
23
export const getLocation = path => {