mirror of
https://github.com/Redocly/redoc.git
synced 2025-01-31 10:04:08 +03:00
feat: New option onlyRequiredInSamples (#646)
* Add onlyRequiredInSamples option that let user to show only required fields in Request samples.
This commit is contained in:
parent
fbcec82275
commit
10bca66dce
|
@ -227,6 +227,7 @@ You can use all of the following options with standalone version on <redoc> tag
|
|||
* `nativeScrollbars` - use native scrollbar for sidemenu instead of perfect-scroll (scrolling performance optimization for big specs)
|
||||
* `hideDownloadButton` - do not show "Download" spec button. **THIS DOESN'T MAKE YOUR SPEC PRIVATE**, it just hides the button.
|
||||
* `disableSearch` - disable search indexing and search box
|
||||
* `onlyRequiredInSamples` - shows only required fields in request samples.
|
||||
* `theme` - ReDoc theme. Not documented yet. For details check source code: [theme.ts](https://github.com/Rebilly/ReDoc/blob/master/src/theme.ts)
|
||||
|
||||
## Advanced usage of standalone version
|
||||
|
|
|
@ -18,6 +18,7 @@ export interface RedocRawOptions {
|
|||
hideLoading?: boolean | string;
|
||||
hideDownloadButton?: boolean | string;
|
||||
disableSearch?: boolean | string;
|
||||
onlyRequiredInSamples?: boolean | string;
|
||||
showExtensions?: boolean | string | string[];
|
||||
|
||||
unstable_ignoreMimeParameters?: boolean;
|
||||
|
@ -117,6 +118,7 @@ export class RedocNormalizedOptions {
|
|||
untrustedSpec: boolean;
|
||||
hideDownloadButton: boolean;
|
||||
disableSearch: boolean;
|
||||
onlyRequiredInSamples: boolean;
|
||||
showExtensions: boolean | string[];
|
||||
|
||||
/* tslint:disable-next-line */
|
||||
|
@ -144,6 +146,7 @@ export class RedocNormalizedOptions {
|
|||
this.untrustedSpec = argValueToBoolean(raw.untrustedSpec);
|
||||
this.hideDownloadButton = argValueToBoolean(raw.hideDownloadButton);
|
||||
this.disableSearch = argValueToBoolean(raw.disableSearch);
|
||||
this.onlyRequiredInSamples = argValueToBoolean(raw.onlyRequiredInSamples);
|
||||
this.showExtensions = RedocNormalizedOptions.normalizeShowExtensions(raw.showExtensions);
|
||||
|
||||
this.unstable_ignoreMimeParameters = argValueToBoolean(raw.unstable_ignoreMimeParameters);
|
||||
|
|
|
@ -13,6 +13,7 @@ export class MediaTypeModel {
|
|||
schema?: SchemaModel;
|
||||
name: string;
|
||||
isRequestType: boolean;
|
||||
onlyRequiredInSamples: boolean;
|
||||
|
||||
/**
|
||||
* @param isRequestType needed to know if skipe RO/RW fields in objects
|
||||
|
@ -27,6 +28,7 @@ export class MediaTypeModel {
|
|||
this.name = name;
|
||||
this.isRequestType = isRequestType;
|
||||
this.schema = info.schema && new SchemaModel(parser, info.schema, '', options);
|
||||
this.onlyRequiredInSamples = options.onlyRequiredInSamples;
|
||||
if (info.examples !== undefined) {
|
||||
this.examples = mapValues(info.examples, example => new ExampleModel(parser, example));
|
||||
} else if (info.example !== undefined) {
|
||||
|
@ -39,12 +41,17 @@ export class MediaTypeModel {
|
|||
}
|
||||
|
||||
generateExample(parser: OpenAPIParser, info: OpenAPIMediaType) {
|
||||
const samplerOptions = {
|
||||
skipReadOnly: this.isRequestType,
|
||||
skipNonRequired: this.isRequestType && this.onlyRequiredInSamples,
|
||||
skipWriteOnly: !this.isRequestType,
|
||||
};
|
||||
if (this.schema && this.schema.oneOf) {
|
||||
this.examples = {};
|
||||
for (const subSchema of this.schema.oneOf) {
|
||||
const sample = Sampler.sample(
|
||||
subSchema.rawSchema,
|
||||
{ skipReadOnly: this.isRequestType, skipWriteOnly: !this.isRequestType },
|
||||
samplerOptions,
|
||||
parser.spec,
|
||||
);
|
||||
|
||||
|
@ -61,7 +68,7 @@ export class MediaTypeModel {
|
|||
default: new ExampleModel(parser, {
|
||||
value: Sampler.sample(
|
||||
info.schema,
|
||||
{ skipReadOnly: this.isRequestType, skipWriteOnly: !this.isRequestType },
|
||||
samplerOptions,
|
||||
parser.spec,
|
||||
),
|
||||
}),
|
||||
|
|
Loading…
Reference in New Issue
Block a user