Skip to content

Commit ffc1d7c

Browse files
committed
fix: handle unsupported language tabs
1 parent 3d2fd5a commit ffc1d7c

File tree

2 files changed

+34
-10
lines changed

2 files changed

+34
-10
lines changed

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/CodeSnippets/code-snippets-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export interface Language {
4040
language: string;
4141
codeSampleLanguage: CodeSampleLanguage;
4242
logoClass: string;
43+
label?: string;
4344
variant: string;
4445
variants: string[];
4546
options?: { [key: string]: boolean };

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/CodeSnippets/index.tsx

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,20 +110,43 @@ function CodeSnippets({
110110

111111
// User-defined languages array
112112
// Can override languageSet, change order of langs, override options and variants
113-
const userDefinedLanguageSet =
114-
(siteConfig?.themeConfig?.languageTabs as Language[] | undefined) ??
115-
languageSet;
113+
const languageAliases: Record<
114+
string,
115+
{ language: string; variant?: string }
116+
> = {
117+
curl: { language: "shell", variant: "curl" },
118+
nodejs: { language: "node" },
119+
};
120+
121+
const userDefinedLanguageSet = (
122+
siteConfig?.themeConfig?.languageTabs as Language[] | undefined
123+
)
124+
?.map((lang) => {
125+
const alias = languageAliases[lang.language];
126+
if (alias) {
127+
return {
128+
...lang,
129+
...alias,
130+
label: lang.label ?? lang.language,
131+
};
132+
}
133+
return lang;
134+
})
135+
.filter((lang) => languageSet.some((ls) => ls.language === lang.language));
136+
137+
const finalLanguageSet =
138+
userDefinedLanguageSet && userDefinedLanguageSet.length
139+
? userDefinedLanguageSet
140+
: languageSet;
116141

117142
// Filter languageSet by user-defined langs
118-
const filteredLanguageSet = languageSet.filter((ls) => {
119-
return userDefinedLanguageSet?.some((lang) => {
120-
return lang.language === ls.language;
121-
});
122-
});
143+
const filteredLanguageSet = languageSet.filter((ls) =>
144+
finalLanguageSet.some((lang) => lang.language === ls.language)
145+
);
123146

124147
// Merge user-defined langs into languageSet
125148
const mergedLangs = mergeCodeSampleLanguage(
126-
mergeArraysbyLanguage(userDefinedLanguageSet, filteredLanguageSet),
149+
mergeArraysbyLanguage(finalLanguageSet, filteredLanguageSet),
127150
codeSamples
128151
);
129152

@@ -264,7 +287,7 @@ function CodeSnippets({
264287
return (
265288
<CodeTab
266289
value={lang.language}
267-
label={lang.language}
290+
label={lang.label ?? lang.language}
268291
key={lang.language}
269292
attributes={{
270293
className: `openapi-tabs__code-item--${lang.logoClass}`,

0 commit comments

Comments
 (0)