docusaurus-theme-openapi-docs 2.0.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/lib/markdown/utils.d.ts +2 -2
  2. package/lib/markdown/utils.js +4 -4
  3. package/lib/markdown/utils.test.d.ts +1 -0
  4. package/lib/markdown/utils.test.js +43 -0
  5. package/lib/theme/ApiExplorer/Accept/index.d.ts +2 -2
  6. package/lib/theme/ApiExplorer/Authorization/index.d.ts +2 -2
  7. package/lib/theme/ApiExplorer/Authorization/slice.d.ts +1 -1
  8. package/lib/theme/ApiExplorer/Body/index.d.ts +2 -2
  9. package/lib/theme/ApiExplorer/Body/slice.d.ts +3 -3
  10. package/lib/theme/ApiExplorer/CodeSnippets/code-snippets-types.d.ts +21 -0
  11. package/lib/theme/ApiExplorer/CodeSnippets/code-snippets-types.js +8 -0
  12. package/lib/theme/ApiExplorer/CodeSnippets/index.d.ts +4 -14
  13. package/lib/theme/ApiExplorer/CodeSnippets/index.js +86 -8
  14. package/lib/theme/ApiExplorer/CodeSnippets/languages.d.ts +3 -0
  15. package/lib/theme/ApiExplorer/CodeSnippets/languages.js +48 -0
  16. package/lib/theme/ApiExplorer/CodeTabs/_CodeTabs.scss +14 -0
  17. package/lib/theme/ApiExplorer/CodeTabs/index.js +10 -1
  18. package/lib/theme/ApiExplorer/ContentType/index.d.ts +2 -2
  19. package/lib/theme/ApiExplorer/Export/index.d.ts +2 -2
  20. package/lib/theme/ApiExplorer/FloatingButton/index.d.ts +1 -1
  21. package/lib/theme/ApiExplorer/FormFileUpload/index.d.ts +2 -2
  22. package/lib/theme/ApiExplorer/FormItem/index.d.ts +1 -1
  23. package/lib/theme/ApiExplorer/FormMultiSelect/index.d.ts +1 -1
  24. package/lib/theme/ApiExplorer/FormSelect/index.d.ts +1 -1
  25. package/lib/theme/ApiExplorer/FormTextInput/index.d.ts +1 -1
  26. package/lib/theme/ApiExplorer/MethodEndpoint/index.d.ts +2 -2
  27. package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem.d.ts +2 -2
  28. package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.d.ts +2 -2
  29. package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.d.ts +2 -2
  30. package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.d.ts +2 -2
  31. package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.d.ts +2 -2
  32. package/lib/theme/ApiExplorer/ParamOptions/index.d.ts +2 -2
  33. package/lib/theme/ApiExplorer/ParamOptions/slice.d.ts +1 -1
  34. package/lib/theme/ApiExplorer/Request/index.d.ts +2 -2
  35. package/lib/theme/ApiExplorer/Response/index.d.ts +2 -2
  36. package/lib/theme/ApiExplorer/SecuritySchemes/index.d.ts +2 -2
  37. package/lib/theme/ApiExplorer/Server/index.d.ts +2 -2
  38. package/lib/theme/ApiExplorer/buildPostmanRequest.d.ts +1 -1
  39. package/lib/theme/ApiExplorer/index.d.ts +2 -2
  40. package/lib/theme/ApiExplorer/index.js +1 -1
  41. package/lib/theme/ApiExplorer/storage-utils.d.ts +1 -1
  42. package/lib/theme/ApiItem/index.js +24 -0
  43. package/lib/theme/ApiItem/store.d.ts +6 -6
  44. package/lib/theme/SchemaItem/index.js +5 -8
  45. package/lib/types.d.ts +4 -4
  46. package/package.json +3 -3
  47. package/src/markdown/utils.test.ts +48 -0
  48. package/src/markdown/utils.ts +4 -4
  49. package/src/theme/ApiExplorer/CodeSnippets/code-snippets-types.ts +55 -0
  50. package/src/theme/ApiExplorer/CodeSnippets/index.tsx +94 -21
  51. package/src/theme/ApiExplorer/CodeSnippets/languages.ts +53 -0
  52. package/src/theme/ApiExplorer/CodeTabs/_CodeTabs.scss +14 -0
  53. package/src/theme/ApiExplorer/CodeTabs/index.js +10 -1
  54. package/src/theme/ApiExplorer/index.tsx +1 -1
  55. package/src/theme/ApiItem/index.tsx +20 -0
  56. package/src/theme/SchemaItem/index.js +5 -8
  57. package/lib/theme/ApiExplorer/CodeSnippets/languages.json +0 -1386
  58. package/src/theme/ApiExplorer/CodeSnippets/languages.json +0 -1386
@@ -0,0 +1,53 @@
1
+ /* ============================================================================
2
+ * Copyright (c) Palo Alto Networks
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ * ========================================================================== */
7
+
8
+ import { CodeSample, Language } from "./code-snippets-types";
9
+
10
+ export function mergeCodeSampleLanguage(
11
+ languages: Language[],
12
+ codeSamples: CodeSample[]
13
+ ): Language[] {
14
+ return languages.map((language) => {
15
+ const languageCodeSamples = codeSamples.filter(
16
+ ({ lang }) => lang === language.codeSampleLanguage
17
+ );
18
+
19
+ if (languageCodeSamples.length) {
20
+ const samples = languageCodeSamples.map(({ lang }) => lang);
21
+ const samplesLabels = languageCodeSamples.map(
22
+ ({ label, lang }) => label || lang
23
+ );
24
+ const samplesSources = languageCodeSamples.map(({ source }) => source);
25
+
26
+ return {
27
+ ...language,
28
+ sample: samples[0],
29
+ samples,
30
+ samplesSources,
31
+ samplesLabels,
32
+ };
33
+ }
34
+
35
+ return language;
36
+ });
37
+ }
38
+
39
+ export function getCodeSampleSourceFromLanguage(language: Language) {
40
+ if (
41
+ language &&
42
+ language.sample &&
43
+ language.samples &&
44
+ language.samplesSources
45
+ ) {
46
+ const sampleIndex = language.samples.findIndex(
47
+ (smp) => smp === language.sample
48
+ );
49
+ return language.samplesSources[sampleIndex];
50
+ }
51
+
52
+ return "";
53
+ }
@@ -94,6 +94,20 @@ body[class="ReactModal__Body--open"] {
94
94
  padding-right: 0.5rem !important;
95
95
  }
96
96
 
97
+ .openapi-tabs__code-item--sample {
98
+ color: var(--ifm-color-secondary);
99
+
100
+ &.active {
101
+ border-color: var(--ifm-toc-border-color);
102
+ }
103
+ }
104
+
105
+ .openapi-tabs__code-item--sample > span {
106
+ padding-top: unset !important;
107
+ padding-left: 0.5rem !important;
108
+ padding-right: 0.5rem !important;
109
+ }
110
+
97
111
  .openapi-tabs__code-item--python {
98
112
  color: var(--ifm-color-success);
99
113
 
@@ -12,13 +12,14 @@ import {
12
12
  useTabs,
13
13
  } from "@docusaurus/theme-common/internal";
14
14
  import useIsBrowser from "@docusaurus/useIsBrowser";
15
- import { languageSet } from "@theme/ApiExplorer/CodeSnippets";
16
15
  import clsx from "clsx";
17
16
 
18
17
  function TabList({
19
18
  action,
20
19
  currentLanguage,
20
+ languageSet,
21
21
  includeVariant,
22
+ includeSample,
22
23
  className,
23
24
  block,
24
25
  selectedValue,
@@ -47,12 +48,20 @@ function TabList({
47
48
  )[0];
48
49
  newLanguage.variant = newTabValue;
49
50
  action.setSelectedVariant(newTabValue.toLowerCase());
51
+ } else if (currentLanguage && includeSample) {
52
+ newLanguage = languageSet.filter(
53
+ (lang) => lang.language === currentLanguage
54
+ )[0];
55
+ newLanguage.sample = newTabValue;
56
+ action.setSelectedSample(newTabValue);
50
57
  } else {
51
58
  newLanguage = languageSet.filter(
52
59
  (lang) => lang.language === newTabValue
53
60
  )[0];
54
61
  action.setSelectedVariant(newLanguage.variant.toLowerCase());
62
+ action.setSelectedSample(newLanguage.sample);
55
63
  }
64
+
56
65
  action.setLanguage(newLanguage);
57
66
  }
58
67
  };
@@ -30,7 +30,7 @@ function ApiExplorer({
30
30
  {item.method !== "event" && (
31
31
  <CodeSnippets
32
32
  postman={postman}
33
- codeSamples={(item as any)["x-code-samples"] ?? []}
33
+ codeSamples={(item as any)["x-codeSamples"] ?? []}
34
34
  />
35
35
  )}
36
36
  <Request item={item} />
@@ -44,12 +44,17 @@ interface ApiFrontMatter extends DocFrontMatter {
44
44
  readonly api?: ApiItemType;
45
45
  }
46
46
 
47
+ interface SchemaFrontMatter extends DocFrontMatter {
48
+ readonly schema?: boolean;
49
+ }
50
+
47
51
  export default function ApiItem(props: Props): JSX.Element {
48
52
  const docHtmlClassName = `docs-doc-id-${props.content.metadata.unversionedId}`;
49
53
  const MDXComponent = props.content;
50
54
  const { frontMatter } = MDXComponent;
51
55
  const { info_path: infoPath } = frontMatter as DocFrontMatter;
52
56
  let { api } = frontMatter as ApiFrontMatter;
57
+ const { schema } = frontMatter as SchemaFrontMatter;
53
58
  // decompress and parse
54
59
  if (api) {
55
60
  api = JSON.parse(
@@ -159,6 +164,21 @@ export default function ApiItem(props: Props): JSX.Element {
159
164
  </HtmlClassNameProvider>
160
165
  </DocProvider>
161
166
  );
167
+ } else if (schema) {
168
+ return (
169
+ <DocProvider content={props.content}>
170
+ <HtmlClassNameProvider className={docHtmlClassName}>
171
+ <DocItemMetadata />
172
+ <DocItemLayout>
173
+ <div className={clsx("row", "theme-api-markdown")}>
174
+ <div className="col col--12">
175
+ <MDXComponent />
176
+ </div>
177
+ </div>
178
+ </DocItemLayout>
179
+ </HtmlClassNameProvider>
180
+ </DocProvider>
181
+ );
162
182
  }
163
183
 
164
184
  // Non-API docs
@@ -79,14 +79,11 @@ function SchemaItem({
79
79
  </div>
80
80
  ));
81
81
 
82
- const renderDefaultValue = guard(
83
- typeof defaultValue === "boolean" ? defaultValue.toString() : defaultValue,
84
- (value) => (
85
- <div className="">
86
- <ReactMarkdown children={`**Default value:** \`${value}\``} />
87
- </div>
88
- )
89
- );
82
+ const renderDefaultValue = guard(defaultValue, (value) => (
83
+ <div className="">
84
+ <ReactMarkdown children={`**Default value:** \`${value}\``} />
85
+ </div>
86
+ ));
90
87
 
91
88
  const schemaContent = (
92
89
  <div>