diff --git a/library/src/containers/Schemas/Schema.tsx b/library/src/containers/Schemas/Schema.tsx index 73461ce68..047131cd0 100644 --- a/library/src/containers/Schemas/Schema.tsx +++ b/library/src/containers/Schemas/Schema.tsx @@ -78,6 +78,10 @@ export const SchemaComponent: React.FunctionComponent = ({ > {renderSchemaProps(name, schema)} +
+ Additional properties are{' '} + {schema.additionalProperties === false && 'NOT'} allowed. +
{/* we need to disable this component if schema has "not" field anywhere in it */} {hasNotField ? null : ( diff --git a/library/src/helpers/beautifier.ts b/library/src/helpers/beautifier.ts index 46d219779..d91973af4 100644 --- a/library/src/helpers/beautifier.ts +++ b/library/src/helpers/beautifier.ts @@ -9,6 +9,7 @@ import { Channels, Parameters, Operation, + AdditionalProperties, } from '../types'; import { renderMd } from './renderMarkdown'; @@ -104,18 +105,16 @@ class Beautifier { if (schema.additionalProperties) { const additionalProperties = schema.additionalProperties; - const newAdditionalProperties: Record< - string, - Schema - > = additionalProperties; + const newAdditionalProperties: AdditionalProperties = additionalProperties; for (const [key, prop] of Object.entries(additionalProperties)) { if (prop.description) { prop.description = renderMd(prop.description as string); } - if (prop.additionalProperties) { - const propAdditionalProperties = prop.additionalProperties; - const newPropAdditionalProperties: Record = {}; + if (typeof prop.additionalProperties !== 'boolean') { + const propAdditionalProperties: AdditionalProperties = + prop.additionalProperties; + const newPropAdditionalProperties: AdditionalProperties = {}; for (const [propKey, propValue] of Object.entries( propAdditionalProperties, diff --git a/library/src/styles/fiori.css b/library/src/styles/fiori.css index 21ccd0c64..f164cb7b6 100644 --- a/library/src/styles/fiori.css +++ b/library/src/styles/fiori.css @@ -1265,3 +1265,14 @@ padding: 0 0.5rem; color: #fff; } + +.asyncapi__additional-properties-notice { + text-align: center; + font-style: italic; + font-weight: bold; + color: #333333; + font-size: 0.75rem; + line-height: 2; + margin-right: 0.5rem; + margin-top: 0.5rem; +} diff --git a/library/src/types.ts b/library/src/types.ts index a456e29f8..8a26e2f77 100644 --- a/library/src/types.ts +++ b/library/src/types.ts @@ -310,6 +310,8 @@ export interface XML { wrapped?: boolean; } +export type AdditionalProperties = boolean | Record; + export interface Schema { nullable?: boolean; format?: string; @@ -346,7 +348,7 @@ export interface Schema { not?: Schema; properties?: Record; - additionalProperties?: Record; + additionalProperties?: AdditionalProperties; // old field