Skip to content

Commit 9d3e6d8

Browse files
authored
feat: show additional properties are (not) allowed (#118)
1 parent ab24ff8 commit 9d3e6d8

File tree

4 files changed

+24
-8
lines changed

4 files changed

+24
-8
lines changed

library/src/containers/Schemas/Schema.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ export const SchemaComponent: React.FunctionComponent<Props> = ({
7878
>
7979
{renderSchemaProps(name, schema)}
8080
</Table>
81+
<div className={bemClasses.element('additional-properties-notice')}>
82+
Additional properties are{' '}
83+
{schema.additionalProperties === false && 'NOT'} allowed.
84+
</div>
8185
</div>
8286
{/* we need to disable this component if schema has "not" field anywhere in it */}
8387
{hasNotField ? null : (

library/src/helpers/beautifier.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
Channels,
1010
Parameters,
1111
Operation,
12+
AdditionalProperties,
1213
} from '../types';
1314

1415
import { renderMd } from './renderMarkdown';
@@ -104,18 +105,16 @@ class Beautifier {
104105

105106
if (schema.additionalProperties) {
106107
const additionalProperties = schema.additionalProperties;
107-
const newAdditionalProperties: Record<
108-
string,
109-
Schema
110-
> = additionalProperties;
108+
const newAdditionalProperties: AdditionalProperties = additionalProperties;
111109

112110
for (const [key, prop] of Object.entries(additionalProperties)) {
113111
if (prop.description) {
114112
prop.description = renderMd(prop.description as string);
115113
}
116-
if (prop.additionalProperties) {
117-
const propAdditionalProperties = prop.additionalProperties;
118-
const newPropAdditionalProperties: Record<string, Schema> = {};
114+
if (typeof prop.additionalProperties !== 'boolean') {
115+
const propAdditionalProperties: AdditionalProperties =
116+
prop.additionalProperties;
117+
const newPropAdditionalProperties: AdditionalProperties = {};
119118

120119
for (const [propKey, propValue] of Object.entries(
121120
propAdditionalProperties,

library/src/styles/fiori.css

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1265,3 +1265,14 @@
12651265
padding: 0 0.5rem;
12661266
color: #fff;
12671267
}
1268+
1269+
.asyncapi__additional-properties-notice {
1270+
text-align: center;
1271+
font-style: italic;
1272+
font-weight: bold;
1273+
color: #333333;
1274+
font-size: 0.75rem;
1275+
line-height: 2;
1276+
margin-right: 0.5rem;
1277+
margin-top: 0.5rem;
1278+
}

library/src/types.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,8 @@ export interface XML {
310310
wrapped?: boolean;
311311
}
312312

313+
export type AdditionalProperties = boolean | Record<string, Schema>;
314+
313315
export interface Schema {
314316
nullable?: boolean;
315317
format?: string;
@@ -346,7 +348,7 @@ export interface Schema {
346348
not?: Schema;
347349
properties?: Record<string, Schema>;
348350

349-
additionalProperties?: Record<string, Schema>;
351+
additionalProperties?: AdditionalProperties;
350352

351353
// old field
352354

0 commit comments

Comments
 (0)