mirror of
https://github.com/Redocly/redoc.git
synced 2025-11-09 04:07:30 +03:00
59 lines
2.0 KiB
TypeScript
59 lines
2.0 KiB
TypeScript
import { observer } from 'mobx-react';
|
|
import * as React from 'react';
|
|
import { isPayloadSample, OperationModel, RedocNormalizedOptions } from '../../services';
|
|
import { PayloadSamples } from '../PayloadSamples/PayloadSamples';
|
|
import { SourceCodeWithCopy } from '../SourceCode/SourceCode';
|
|
|
|
import { RightPanelHeader, Tab, TabList, TabPanel, Tabs } from '../../common-elements';
|
|
import { OptionsContext } from '../OptionsProvider';
|
|
import { l } from '../../services/Labels';
|
|
import { RequestSamplesWrap } from './styled.elements';
|
|
|
|
export interface RequestSamplesProps {
|
|
operation: OperationModel;
|
|
}
|
|
|
|
@observer
|
|
export class RequestSamples extends React.Component<RequestSamplesProps> {
|
|
static contextType = OptionsContext;
|
|
context: RedocNormalizedOptions;
|
|
operation: OperationModel;
|
|
|
|
render() {
|
|
const { operation } = this.props;
|
|
const samples = operation.codeSamples;
|
|
|
|
const hasSamples = samples.length > 0;
|
|
const hideTabList = samples.length === 1 ? this.context.hideSingleRequestSampleTab : false;
|
|
return (
|
|
(hasSamples && (
|
|
<RequestSamplesWrap>
|
|
<RightPanelHeader> {l('requestSamples')} </RightPanelHeader>
|
|
|
|
<Tabs defaultIndex={0}>
|
|
<TabList hidden={hideTabList}>
|
|
{samples.map(sample => (
|
|
<Tab key={sample.lang + '_' + (sample.label || '')}>
|
|
{sample.label !== undefined ? sample.label : sample.lang}
|
|
</Tab>
|
|
))}
|
|
</TabList>
|
|
{samples.map(sample => (
|
|
<TabPanel key={sample.lang + '_' + (sample.label || '')}>
|
|
{isPayloadSample(sample) ? (
|
|
<div>
|
|
<PayloadSamples content={sample.requestBodyContent} />
|
|
</div>
|
|
) : (
|
|
<SourceCodeWithCopy lang={sample.lang} source={sample.source} />
|
|
)}
|
|
</TabPanel>
|
|
))}
|
|
</Tabs>
|
|
</RequestSamplesWrap>
|
|
)) ||
|
|
null
|
|
);
|
|
}
|
|
}
|