mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-16 18:46:57 +02:00
feat(docs,blog,pages): add support for "unlisted" front matter - hide md content in production (#8004)
Co-authored-by: sebastienlorber <lorber.sebastien@gmail.com>
This commit is contained in:
parent
7a023a2c41
commit
683ba3d2a0
131 changed files with 2449 additions and 303 deletions
|
@ -28,6 +28,37 @@ import type {
|
|||
LoadedVersion,
|
||||
} from '@docusaurus/plugin-content-docs';
|
||||
|
||||
export function toSidebarDocItemLinkProp({
|
||||
item,
|
||||
doc,
|
||||
}: {
|
||||
item: SidebarItemDoc;
|
||||
doc: Pick<
|
||||
DocMetadata,
|
||||
'id' | 'title' | 'permalink' | 'unlisted' | 'frontMatter' | 'unversionedId'
|
||||
>;
|
||||
}): PropSidebarItemLink {
|
||||
const {
|
||||
title,
|
||||
permalink,
|
||||
frontMatter: {
|
||||
sidebar_label: sidebarLabel,
|
||||
sidebar_custom_props: customProps,
|
||||
},
|
||||
unlisted,
|
||||
unversionedId,
|
||||
} = doc;
|
||||
return {
|
||||
type: 'link',
|
||||
label: sidebarLabel ?? item.label ?? title,
|
||||
href: permalink,
|
||||
className: item.className,
|
||||
customProps: item.customProps ?? customProps,
|
||||
docId: unversionedId,
|
||||
unlisted,
|
||||
};
|
||||
}
|
||||
|
||||
export function toSidebarsProp(loadedVersion: LoadedVersion): PropSidebars {
|
||||
const docsById = createDocsByIdIndex(loadedVersion.docs);
|
||||
|
||||
|
@ -44,21 +75,8 @@ Available document ids are:
|
|||
}
|
||||
|
||||
const convertDocLink = (item: SidebarItemDoc): PropSidebarItemLink => {
|
||||
const docMetadata = getDocById(item.id);
|
||||
const {
|
||||
title,
|
||||
permalink,
|
||||
frontMatter: {sidebar_label: sidebarLabel},
|
||||
} = docMetadata;
|
||||
return {
|
||||
type: 'link',
|
||||
label: sidebarLabel ?? item.label ?? title,
|
||||
href: permalink,
|
||||
className: item.className,
|
||||
customProps:
|
||||
item.customProps ?? docMetadata.frontMatter.sidebar_custom_props,
|
||||
docId: docMetadata.unversionedId,
|
||||
};
|
||||
const doc = getDocById(item.id);
|
||||
return toSidebarDocItemLinkProp({item, doc});
|
||||
};
|
||||
|
||||
function getCategoryLinkHref(
|
||||
|
@ -74,6 +92,15 @@ Available document ids are:
|
|||
}
|
||||
}
|
||||
|
||||
function getCategoryLinkUnlisted(
|
||||
link: SidebarItemCategoryLink | undefined,
|
||||
): boolean {
|
||||
if (link?.type === 'doc') {
|
||||
return getDocById(link.id).unlisted;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function getCategoryLinkCustomProps(
|
||||
link: SidebarItemCategoryLink | undefined,
|
||||
) {
|
||||
|
@ -88,12 +115,14 @@ Available document ids are:
|
|||
function convertCategory(item: SidebarItemCategory): PropSidebarItemCategory {
|
||||
const {link, ...rest} = item;
|
||||
const href = getCategoryLinkHref(link);
|
||||
const linkUnlisted = getCategoryLinkUnlisted(link);
|
||||
const customProps = item.customProps ?? getCategoryLinkCustomProps(link);
|
||||
|
||||
return {
|
||||
...rest,
|
||||
items: item.items.map(normalizeItem),
|
||||
...(href && {href}),
|
||||
...(linkUnlisted && {linkUnlisted}),
|
||||
...(customProps && {customProps}),
|
||||
};
|
||||
}
|
||||
|
@ -180,15 +209,18 @@ export function toTagDocListProp({
|
|||
allTagsPath,
|
||||
count: tag.docIds.length,
|
||||
items: toDocListProp(),
|
||||
unlisted: tag.unlisted,
|
||||
};
|
||||
}
|
||||
|
||||
export function toTagsListTagsProp(
|
||||
versionTags: VersionTags,
|
||||
): PropTagsListPage['tags'] {
|
||||
return Object.values(versionTags).map((tagValue) => ({
|
||||
label: tagValue.label,
|
||||
permalink: tagValue.permalink,
|
||||
count: tagValue.docIds.length,
|
||||
}));
|
||||
return Object.values(versionTags)
|
||||
.filter((tagValue) => !tagValue.unlisted)
|
||||
.map((tagValue) => ({
|
||||
label: tagValue.label,
|
||||
permalink: tagValue.permalink,
|
||||
count: tagValue.docIds.length,
|
||||
}));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue