mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-12 05:48:57 +00:00
Response examples with status code tabs (#2448)
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@gitbook/react-openapi': patch
|
||||
---
|
||||
|
||||
Adds tabs to Response Example section e.g. for status code examples
|
||||
@@ -36,37 +36,47 @@ export function OpenAPIResponseExample(props: {
|
||||
}
|
||||
return Number(a) - Number(b);
|
||||
});
|
||||
// Take the first one
|
||||
const response = responses[0];
|
||||
|
||||
if (!response) {
|
||||
return null;
|
||||
}
|
||||
const examples = responses
|
||||
.map((response) => {
|
||||
const responseObject = noReference(response[1]);
|
||||
|
||||
const responseObject = noReference(response[1]);
|
||||
const schema = noReference(
|
||||
(
|
||||
responseObject.content?.['application/json'] ??
|
||||
responseObject.content?.[Object.keys(responseObject.content)[0]]
|
||||
)?.schema,
|
||||
);
|
||||
|
||||
const schema = noReference(
|
||||
(
|
||||
responseObject.content?.['application/json'] ??
|
||||
responseObject.content?.[Object.keys(responseObject.content)[0]]
|
||||
)?.schema,
|
||||
);
|
||||
if (!schema) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!schema) {
|
||||
return null;
|
||||
}
|
||||
const example = generateSchemaExample(schema);
|
||||
return {
|
||||
key: `${response[0]}`,
|
||||
label: `${response[0]}`,
|
||||
body: (
|
||||
<context.CodeBlock
|
||||
code={
|
||||
typeof example === 'string' ? example : JSON.stringify(example, null, 2)
|
||||
}
|
||||
syntax="json"
|
||||
/>
|
||||
),
|
||||
};
|
||||
})
|
||||
.filter((val): val is { key: string; label: string; body: any } => Boolean(val));
|
||||
|
||||
const example = generateSchemaExample(schema);
|
||||
if (example === undefined) {
|
||||
if (examples.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<InteractiveSection header="Response" className="openapi-response-example">
|
||||
<context.CodeBlock
|
||||
code={typeof example === 'string' ? example : JSON.stringify(example, null, 2)}
|
||||
syntax="json"
|
||||
/>
|
||||
</InteractiveSection>
|
||||
<InteractiveSection
|
||||
header="Response"
|
||||
className="openapi-response-example"
|
||||
tabs={examples}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user