diff --git a/src/core/plugins/json-schema-2020-12/components/JSONSchema/JSONSchema.jsx b/src/core/plugins/json-schema-2020-12/components/JSONSchema/JSONSchema.jsx index 8d019505..f7ab8a8d 100644 --- a/src/core/plugins/json-schema-2020-12/components/JSONSchema/JSONSchema.jsx +++ b/src/core/plugins/json-schema-2020-12/components/JSONSchema/JSONSchema.jsx @@ -57,6 +57,7 @@ const JSONSchema = ({ schema, name }) => { const KeywordAdditionalProperties = useComponent( "KeywordAdditionalProperties" ) + const KeywordPropertyNames = useComponent("KeywordPropertyNames") const KeywordType = useComponent("KeywordType") const KeywordFormat = useComponent("KeywordFormat") const KeywordTitle = useComponent("KeywordTitle") @@ -122,6 +123,7 @@ const JSONSchema = ({ schema, name }) => { + diff --git a/src/core/plugins/json-schema-2020-12/components/keywords/AdditionalProperties.jsx b/src/core/plugins/json-schema-2020-12/components/keywords/AdditionalProperties.jsx index 883bb4ef..bfbfcec2 100644 --- a/src/core/plugins/json-schema-2020-12/components/keywords/AdditionalProperties.jsx +++ b/src/core/plugins/json-schema-2020-12/components/keywords/AdditionalProperties.jsx @@ -15,7 +15,7 @@ const AdditionalProperties = ({ schema }) => { const JSONSchema = useComponent("JSONSchema") const name = ( - Additional Properties + Additional properties ) diff --git a/src/core/plugins/json-schema-2020-12/components/keywords/PropertyNames.jsx b/src/core/plugins/json-schema-2020-12/components/keywords/PropertyNames.jsx new file mode 100644 index 00000000..b84c0bd0 --- /dev/null +++ b/src/core/plugins/json-schema-2020-12/components/keywords/PropertyNames.jsx @@ -0,0 +1,33 @@ +/** + * @prettier + */ +import React from "react" + +import { schema } from "../../prop-types" +import { useFn, useComponent } from "../../hooks" + +const PropertyNames = ({ schema }) => { + const fn = useFn() + + if (!fn.hasKeyword(schema, "propertyNames")) return null + + const { propertyNames } = schema + const JSONSchema = useComponent("JSONSchema") + const name = ( + + Property names + + ) + + return ( +
+ +
+ ) +} + +PropertyNames.propTypes = { + schema: schema.isRequired, +} + +export default PropertyNames diff --git a/src/core/plugins/json-schema-2020-12/fn.js b/src/core/plugins/json-schema-2020-12/fn.js index 98437385..482f1de8 100644 --- a/src/core/plugins/json-schema-2020-12/fn.js +++ b/src/core/plugins/json-schema-2020-12/fn.js @@ -156,6 +156,7 @@ export const isExpandable = (schema) => { schema?.properties || schema?.patternProperties || fn.hasKeyword(schema, "additionalProperties") || + fn.hasKeyword(schema, "propertyNames") || schema?.description ) } diff --git a/src/core/plugins/json-schema-2020-12/hoc.jsx b/src/core/plugins/json-schema-2020-12/hoc.jsx index a7c8ed38..112daa6c 100644 --- a/src/core/plugins/json-schema-2020-12/hoc.jsx +++ b/src/core/plugins/json-schema-2020-12/hoc.jsx @@ -27,6 +27,7 @@ import KeywordContains from "./components/keywords/Contains" import KeywordProperties from "./components/keywords/Properties/Properties" import KeywordPatternProperties from "./components/keywords/PatternProperties/PatternProperties" import KeywordAdditionalProperties from "./components/keywords/AdditionalProperties" +import KeywordPropertyNames from "./components/keywords/PropertyNames" import KeywordType from "./components/keywords/Type/Type" import KeywordFormat from "./components/keywords/Format/Format" import KeywordTitle from "./components/keywords/Title/Title" @@ -71,6 +72,7 @@ export const withJSONSchemaContext = (Component, overrides = {}) => { KeywordProperties, KeywordPatternProperties, KeywordAdditionalProperties, + KeywordPropertyNames, KeywordType, KeywordFormat, KeywordTitle, diff --git a/src/core/plugins/json-schema-2020-12/index.js b/src/core/plugins/json-schema-2020-12/index.js index d35dce61..b967fdc7 100644 --- a/src/core/plugins/json-schema-2020-12/index.js +++ b/src/core/plugins/json-schema-2020-12/index.js @@ -25,6 +25,7 @@ import KeywordContains from "./components/keywords/Contains" import KeywordProperties from "./components/keywords/Properties/Properties" import KeywordPatternProperties from "./components/keywords/PatternProperties/PatternProperties" import KeywordAdditionalProperties from "./components/keywords/AdditionalProperties" +import KeywordPropertyNames from "./components/keywords/PropertyNames" import KeywordType from "./components/keywords/Type/Type" import KeywordFormat from "./components/keywords/Format/Format" import KeywordTitle from "./components/keywords/Title/Title" @@ -61,6 +62,7 @@ const JSONSchema202012Plugin = () => ({ JSONSchema202012KeywordProperties: KeywordProperties, JSONSchema202012KeywordPatternProperties: KeywordPatternProperties, JSONSchema202012KeywordAdditionalProperties: KeywordAdditionalProperties, + JSONSchema202012KeywordPropertyNames: KeywordPropertyNames, JSONSchema202012KeywordType: KeywordType, JSONSchema202012KeywordFormat: KeywordFormat, JSONSchema202012KeywordTitle: KeywordTitle, diff --git a/src/core/plugins/oas31/wrap-components/models.jsx b/src/core/plugins/oas31/wrap-components/models.jsx index d3ebad50..77e8c702 100644 --- a/src/core/plugins/oas31/wrap-components/models.jsx +++ b/src/core/plugins/oas31/wrap-components/models.jsx @@ -40,6 +40,9 @@ const ModelsWrapper = createOnlyOAS31ComponentWrapper(({ getSystem }) => { const KeywordAdditionalProperties = getComponent( "JSONSchema202012KeywordAdditionalProperties" ) + const KeywordPropertyNames = getComponent( + "JSONSchema202012KeywordPropertyNames" + ) const KeywordType = getComponent("JSONSchema202012KeywordType") const KeywordFormat = getComponent("JSONSchema202012KeywordFormat") const KeywordTitle = getComponent("JSONSchema202012KeywordTitle") @@ -81,6 +84,7 @@ const ModelsWrapper = createOnlyOAS31ComponentWrapper(({ getSystem }) => { KeywordProperties, KeywordPatternProperties, KeywordAdditionalProperties, + KeywordPropertyNames, KeywordType, KeywordFormat, KeywordTitle,