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 e5eb288d..b2fb489d 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 @@ -47,6 +47,7 @@ const JSONSchema = ({ schema, name }) => { const KeywordNot = useComponent("KeywordNot") const KeywordIf = useComponent("KeywordIf") const KeywordThen = useComponent("KeywordThen") + const KeywordElse = useComponent("KeywordElse") const KeywordProperties = useComponent("KeywordProperties") const KeywordType = useComponent("KeywordType") const KeywordFormat = useComponent("KeywordFormat") @@ -117,6 +118,7 @@ const JSONSchema = ({ schema, name }) => { + diff --git a/src/core/plugins/json-schema-2020-12/components/_all.scss b/src/core/plugins/json-schema-2020-12/components/_all.scss index 0c613de4..cfbe1e10 100644 --- a/src/core/plugins/json-schema-2020-12/components/_all.scss +++ b/src/core/plugins/json-schema-2020-12/components/_all.scss @@ -14,6 +14,7 @@ @import './keywords/Not/not'; @import './keywords/If/if'; @import './keywords/Then/then'; +@import './keywords/Else/else'; @import './keywords/Type/type'; @import './keywords/Format/format'; @import './keywords/Description/description'; diff --git a/src/core/plugins/json-schema-2020-12/components/keywords/Else/Else.jsx b/src/core/plugins/json-schema-2020-12/components/keywords/Else/Else.jsx new file mode 100644 index 00000000..5c81ba0b --- /dev/null +++ b/src/core/plugins/json-schema-2020-12/components/keywords/Else/Else.jsx @@ -0,0 +1,30 @@ +/** + * @prettier + */ +import React from "react" + +import { schema } from "../../../prop-types" +import { useComponent } from "../../../hooks" + +const Else = ({ schema }) => { + if (!schema?.else) return null + + const JSONSchema = useComponent("JSONSchema") + const name = ( + + Else + + ) + + return ( +
+ +
+ ) +} + +Else.propTypes = { + schema: schema.isRequired, +} + +export default Else diff --git a/src/core/plugins/json-schema-2020-12/components/keywords/Else/_else.scss b/src/core/plugins/json-schema-2020-12/components/keywords/Else/_else.scss new file mode 100644 index 00000000..e3eb5eb4 --- /dev/null +++ b/src/core/plugins/json-schema-2020-12/components/keywords/Else/_else.scss @@ -0,0 +1,10 @@ +.json-schema-2020-12 { + &__else { + .json-schema-2020-12-core-keyword--else { + @extend .json-schema-2020-12-core-keyword--allOf; + } + } +} + + + diff --git a/src/core/plugins/json-schema-2020-12/fn.js b/src/core/plugins/json-schema-2020-12/fn.js index 4a1264b6..85e4139e 100644 --- a/src/core/plugins/json-schema-2020-12/fn.js +++ b/src/core/plugins/json-schema-2020-12/fn.js @@ -132,6 +132,7 @@ export const isExpandable = (schema) => { schema?.not || schema?.if || schema?.then || + schema?.else || schema?.description || schema?.properties ) diff --git a/src/core/plugins/json-schema-2020-12/hoc.jsx b/src/core/plugins/json-schema-2020-12/hoc.jsx index d926d8aa..ba5c2994 100644 --- a/src/core/plugins/json-schema-2020-12/hoc.jsx +++ b/src/core/plugins/json-schema-2020-12/hoc.jsx @@ -19,6 +19,7 @@ import KeywordOneOf from "./components/keywords/OneOf/OneOf" import KeywordNot from "./components/keywords/Not/Not" import KeywordIf from "./components/keywords/If/If" import KeywordThen from "./components/keywords/Then/Then" +import KeywordElse from "./components/keywords/Else/Else" import KeywordProperties from "./components/keywords/Properties/Properties" import KeywordType from "./components/keywords/Type/Type" import KeywordFormat from "./components/keywords/Format/Format" @@ -55,6 +56,7 @@ export const withJSONSchemaContext = (Component, overrides = {}) => { KeywordNot, KeywordIf, KeywordThen, + KeywordElse, KeywordProperties, KeywordType, KeywordFormat, diff --git a/src/core/plugins/json-schema-2020-12/index.js b/src/core/plugins/json-schema-2020-12/index.js index 6caa674d..5bfcd71d 100644 --- a/src/core/plugins/json-schema-2020-12/index.js +++ b/src/core/plugins/json-schema-2020-12/index.js @@ -18,6 +18,7 @@ import KeywordOneOf from "./components/keywords/OneOf/OneOf" import KeywordNot from "./components/keywords/Not/Not" import KeywordIf from "./components/keywords/If/If" import KeywordThen from "./components/keywords/Then/Then" +import KeywordElse from "./components/keywords/Else/Else" import KeywordType from "./components/keywords/Type/Type" import KeywordFormat from "./components/keywords/Format/Format" import KeywordTitle from "./components/keywords/Title/Title" @@ -46,6 +47,7 @@ const JSONSchema202012Plugin = () => ({ JSONSchema202012KeywordNot: KeywordNot, JSONSchema202012KeywordIf: KeywordIf, JSONSchema202012KeywordThen: KeywordThen, + JSONSchema202012KeywordElse: KeywordElse, JSONSchema202012KeywordProperties: KeywordProperties, JSONSchema202012KeywordType: KeywordType, JSONSchema202012KeywordFormat: KeywordFormat, diff --git a/src/core/plugins/oas31/wrap-components/models.jsx b/src/core/plugins/oas31/wrap-components/models.jsx index 7388221a..70bf302e 100644 --- a/src/core/plugins/oas31/wrap-components/models.jsx +++ b/src/core/plugins/oas31/wrap-components/models.jsx @@ -26,6 +26,7 @@ const ModelsWrapper = createOnlyOAS31ComponentWrapper(({ getSystem }) => { const KeywordNot = getComponent("JSONSchema202012KeywordNot") const KeywordIf = getComponent("JSONSchema202012KeywordIf") const KeywordThen = getComponent("JSONSchema202012KeywordThen") + const KeywordElse = getComponent("JSONSchema202012KeywordElse") const KeywordProperties = getComponent("JSONSchema202012KeywordProperties") const KeywordType = getComponent("JSONSchema202012KeywordType") const KeywordFormat = getComponent("JSONSchema202012KeywordFormat") @@ -60,6 +61,7 @@ const ModelsWrapper = createOnlyOAS31ComponentWrapper(({ getSystem }) => { KeywordNot, KeywordIf, KeywordThen, + KeywordElse, KeywordProperties, KeywordType, KeywordFormat,