Skip to content

Commit cd478ed

Browse files
committed
refactor: change ResponseSamples to CodeSamples
1 parent 294609b commit cd478ed

File tree

10 files changed

+73
-141
lines changed

10 files changed

+73
-141
lines changed

packages/docusaurus-plugin-openapi-docs/src/openapi/createSchemaExample.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ const primitives: Primitives = {
5656
},
5757
};
5858

59-
type ExampleType = "request" | "response";
59+
export type ExampleType = "request" | "response";
6060

61-
interface ExampleContext {
61+
export interface ExampleContext {
6262
type: ExampleType;
6363
}
6464

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.openapi-code__code-samples-container {
2+
margin-top: 2rem;
3+
}

packages/docusaurus-theme-openapi-docs/src/theme/ResponseSamples/index.tsx renamed to packages/docusaurus-theme-openapi-docs/src/theme/CodeSamples/index.tsx

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,16 @@ import CodeBlock from "@theme/CodeBlock";
1111
import { Language } from "prism-react-renderer";
1212

1313
export interface Props {
14-
readonly responseExample: string;
14+
readonly example: string;
1515
readonly language: Language;
1616
}
1717

18-
function ResponseSamples({
19-
responseExample,
20-
language,
21-
}: Props): React.JSX.Element {
18+
function CodeSamples({ example, language }: Props): React.JSX.Element {
2219
return (
23-
<div className="openapi-code__response-samples-container">
24-
<CodeBlock language={language ? language : "json"}>
25-
{responseExample}
26-
</CodeBlock>
20+
<div className="openapi-code__code-samples-container">
21+
<CodeBlock language={language ? language : "json"}>{example}</CodeBlock>
2722
</div>
2823
);
2924
}
3025

31-
export default ResponseSamples;
26+
export default CodeSamples;

packages/docusaurus-theme-openapi-docs/src/theme/Examples/index.tsx

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@
77

88
import React from "react";
99

10+
import CodeSamples from "@theme/CodeSamples";
1011
import Markdown from "@theme/Markdown";
11-
import ResponseSamples from "@theme/ResponseSamples";
1212
import TabItem from "@theme/TabItem";
13-
import { sampleResponseFromSchema } from "docusaurus-plugin-openapi-docs/lib/openapi/createResponseExample";
13+
import {
14+
sampleFromSchema,
15+
ExampleContext,
16+
} from "docusaurus-plugin-openapi-docs/lib/openapi/createSchemaExample";
1417
import format from "xml-formatter";
1518

1619
export function json2xml(o: Record<string, any>, tab: string): string {
@@ -79,7 +82,7 @@ export const MimeExample: React.FC<MimeExampleProps> = ({
7982
{example.summary}
8083
</Markdown>
8184
)}
82-
<ResponseSamples responseExample={exampleContent} language={language} />
85+
<CodeSamples example={exampleContent} language={language} />
8386
</TabItem>
8487
);
8588
};
@@ -111,10 +114,7 @@ export const MimeExamples: React.FC<MimeExamplesProps> = ({
111114
{exampleValue.summary}
112115
</Markdown>
113116
)}
114-
<ResponseSamples
115-
responseExample={exampleContent}
116-
language={language}
117-
/>
117+
<CodeSamples example={exampleContent} language={language} />
118118
</TabItem>
119119
);
120120
}
@@ -145,7 +145,7 @@ export const SchemaExample: React.FC<SchemaExampleProps> = ({
145145
{example.summary}
146146
</Markdown>
147147
)}
148-
<ResponseSamples responseExample={exampleContent} language={language} />
148+
<CodeSamples example={exampleContent} language={language} />
149149
</TabItem>
150150
);
151151
};
@@ -172,7 +172,7 @@ export const SchemaExamples: React.FC<SchemaExamplesProps> = ({
172172
return (
173173
// @ts-ignore
174174
<TabItem label={exampleName} value={exampleName} key={exampleName}>
175-
<ResponseSamples responseExample={exampleContent} language={language} />
175+
<CodeSamples example={exampleContent} language={language} />
176176
</TabItem>
177177
);
178178
});
@@ -183,13 +183,15 @@ export const SchemaExamples: React.FC<SchemaExamplesProps> = ({
183183
export interface ExampleFromSchemaProps {
184184
schema: any;
185185
mimeType: string;
186+
context: ExampleContext;
186187
}
187188

188189
export const ExampleFromSchema: React.FC<ExampleFromSchemaProps> = ({
189190
schema,
190191
mimeType,
192+
context,
191193
}) => {
192-
const example = sampleResponseFromSchema(schema);
194+
const example = sampleFromSchema(schema, context);
193195

194196
if (mimeType.endsWith("xml")) {
195197
let exampleObject;
@@ -222,7 +224,7 @@ export const ExampleFromSchema: React.FC<ExampleFromSchemaProps> = ({
222224
return (
223225
// @ts-ignore
224226
<TabItem label="Example (auto)" value="Example (auto)">
225-
<ResponseSamples responseExample={xmlExample} language="xml" />
227+
<CodeSamples example={xmlExample} language="xml" />
226228
</TabItem>
227229
);
228230
}
@@ -232,8 +234,8 @@ export const ExampleFromSchema: React.FC<ExampleFromSchemaProps> = ({
232234
return (
233235
// @ts-ignore
234236
<TabItem label="Example (auto)" value="Example (auto)">
235-
<ResponseSamples
236-
responseExample={JSON.stringify(example, null, 2)}
237+
<CodeSamples
238+
example={JSON.stringify(example, null, 2)}
237239
language="json"
238240
/>
239241
</TabItem>

packages/docusaurus-theme-openapi-docs/src/theme/RequestExamples/index.tsx

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

packages/docusaurus-theme-openapi-docs/src/theme/RequestSchema/index.tsx

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ import React from "react";
99

1010
import BrowserOnly from "@docusaurus/BrowserOnly";
1111
import Details from "@theme/Details";
12-
import Markdown from "@theme/Markdown";
13-
import MimeTabs from "@theme/MimeTabs"; // Assume these components exist
1412
import {
1513
ExampleFromSchema,
16-
RequestMimeExample,
17-
RequestMimeExamples,
18-
RequestSchemaExample,
19-
RequestSchemaExamples,
20-
} from "@theme/RequestExamples";
14+
MimeExample,
15+
MimeExamples,
16+
SchemaExample,
17+
SchemaExamples,
18+
} from "@theme/Examples";
19+
import Markdown from "@theme/Markdown";
20+
import MimeTabs from "@theme/MimeTabs"; // Assume these components exist
2121
import SchemaNode from "@theme/Schema";
2222
import SchemaTabs from "@theme/SchemaTabs";
2323
import SkeletonLoader from "@theme/SkeletonLoader";
@@ -110,19 +110,22 @@ const RequestSchemaComponent: React.FC<Props> = ({ title, body, style }) => {
110110
</Details>
111111
</TabItem>
112112
{firstBody &&
113-
ExampleFromSchema({ schema: firstBody, mimeType })}
113+
ExampleFromSchema({
114+
schema: firstBody,
115+
mimeType,
116+
context: { type: "request" },
117+
})}
114118

115119
{mimeExamples &&
116-
RequestMimeExamples({ examples: mimeExamples, mimeType })}
120+
MimeExamples({ examples: mimeExamples, mimeType })}
117121

118-
{mimeExample &&
119-
RequestMimeExample({ example: mimeExample, mimeType })}
122+
{mimeExample && MimeExample({ example: mimeExample, mimeType })}
120123

121124
{schemaExamples &&
122-
RequestSchemaExamples({ examples: schemaExamples, mimeType })}
125+
SchemaExamples({ examples: schemaExamples, mimeType })}
123126

124127
{schemaExample &&
125-
RequestSchemaExample({ example: schemaExample, mimeType })}
128+
SchemaExample({ example: schemaExample, mimeType })}
126129
</SchemaTabs>
127130
</TabItem>
128131
);

packages/docusaurus-theme-openapi-docs/src/theme/ResponseExamples/index.tsx

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

packages/docusaurus-theme-openapi-docs/src/theme/ResponseSamples/_ResponseSamples.scss

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

packages/docusaurus-theme-openapi-docs/src/theme/ResponseSchema/index.tsx

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ import React from "react";
99

1010
import BrowserOnly from "@docusaurus/BrowserOnly";
1111
import Details from "@theme/Details";
12-
import Markdown from "@theme/Markdown";
13-
import MimeTabs from "@theme/MimeTabs"; // Assume these components exist
1412
import {
1513
ExampleFromSchema,
16-
ResponseExample,
17-
ResponseExamples,
18-
} from "@theme/ResponseExamples";
14+
MimeExample,
15+
MimeExamples,
16+
SchemaExample,
17+
SchemaExamples,
18+
} from "@theme/Examples";
19+
import Markdown from "@theme/Markdown";
20+
import MimeTabs from "@theme/MimeTabs"; // Assume these components exist
1921
import SchemaNode from "@theme/Schema";
2022
import SchemaTabs from "@theme/SchemaTabs";
2123
import SkeletonLoader from "@theme/SkeletonLoader";
@@ -54,15 +56,20 @@ const ResponseSchemaComponent: React.FC<Props> = ({
5456
return (
5557
<MimeTabs className="openapi-tabs__mime" schemaType="response">
5658
{mimeTypes.map((mimeType: any) => {
57-
const responseExamples = body.content![mimeType].examples;
58-
const responseExample = body.content![mimeType].example;
59+
const mimeExamples = body.content![mimeType].examples;
60+
const mimeExample = body.content![mimeType].example;
61+
const schemaExamples = body.content![mimeType].schema?.examples;
62+
const schemaExample = body.content![mimeType].schema?.example;
63+
5964
const firstBody: any =
6065
body.content![mimeType].schema ?? body.content![mimeType];
6166

6267
if (
6368
firstBody === undefined &&
64-
responseExample === undefined &&
65-
responseExamples === undefined
69+
mimeExample === undefined &&
70+
mimeExamples === undefined &&
71+
schemaExample === undefined &&
72+
schemaExamples === undefined
6673
) {
6774
return undefined;
6875
}
@@ -109,13 +116,23 @@ const ResponseSchemaComponent: React.FC<Props> = ({
109116
</Details>
110117
</TabItem>
111118
{firstBody &&
112-
ExampleFromSchema({ schema: firstBody, mimeType })}
119+
ExampleFromSchema({
120+
schema: firstBody,
121+
mimeType,
122+
context: { type: "response" },
123+
})}
124+
125+
{mimeExamples &&
126+
MimeExamples({ examples: mimeExamples, mimeType })}
127+
128+
{mimeExample &&
129+
MimeExample({ example: mimeExample, mimeType })}
113130

114-
{responseExamples &&
115-
ResponseExamples({ examples: responseExamples, mimeType })}
131+
{schemaExamples &&
132+
SchemaExamples({ examples: schemaExamples, mimeType })}
116133

117-
{responseExample &&
118-
ResponseExample({ example: responseExample, mimeType })}
134+
{schemaExample &&
135+
SchemaExample({ example: schemaExample, mimeType })}
119136
</SchemaTabs>
120137
</TabItem>
121138
);

packages/docusaurus-theme-openapi-docs/src/theme/styles.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
@use "./SchemaTabs/SchemaTabs";
3939
@use "./OperationTabs/OperationTabs";
4040
/* Code Samples */
41-
@use "./ResponseSamples/ResponseSamples";
41+
@use "./CodeSamples/CodeSamples";
4242
/* Markdown Styling */
4343
@use "./Markdown/Details/Details";
4444

0 commit comments

Comments
 (0)