From 5bd9846006ef7fdf6acbc008128ce658554594f8 Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Thu, 25 Jan 2018 17:53:02 -0800 Subject: [PATCH 1/4] default to empty `ImmutableMap` when grabbing op metadata --- src/core/plugins/spec/reducers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/plugins/spec/reducers.js b/src/core/plugins/spec/reducers.js index bf8dadf5e33..bdeabc04490 100644 --- a/src/core/plugins/spec/reducers.js +++ b/src/core/plugins/spec/reducers.js @@ -52,7 +52,7 @@ export default { }, [VALIDATE_PARAMS]: ( state, { payload: { pathMethod, isOAS3 } } ) => { - let meta = state.getIn( [ "meta", "paths", ...pathMethod ] ) + let meta = state.getIn( [ "meta", "paths", ...pathMethod ], fromJS({}) ) let isXml = /xml/i.test(meta.get("consumes_value")) return state.updateIn( [ "resolved", "paths", ...pathMethod, "parameters" ], fromJS([]), parameters => { From 573028811205d0e46c33351ac3f9d15b8cc09d6d Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Thu, 25 Jan 2018 17:54:25 -0800 Subject: [PATCH 2/4] pass `errors` into JsonSchema components --- src/core/components/parameter-row.jsx | 3 ++- src/core/json-schema-components.js | 34 +++++++++++++++------------ 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/core/components/parameter-row.jsx b/src/core/components/parameter-row.jsx index 653914171b4..42f45bd9b48 100644 --- a/src/core/components/parameter-row.jsx +++ b/src/core/components/parameter-row.jsx @@ -158,7 +158,7 @@ export default class ParameterRow extends Component { Available values: " + paramItemsEnum.map(function(item) { return item - }).toArray().join(", ")}/> + }).toArray().join(", ")}/> : null } @@ -181,6 +181,7 @@ export default class ParameterRow extends Component { required={ required } description={param.get("description") ? `${param.get("name")} - ${param.get("description")}` : `${param.get("name")}`} onChange={ this.onChangeWrapper } + errors={ param.get("errors") } schema={ isOAS3 && isOAS3() ? param.get("schema") : param }/> } diff --git a/src/core/json-schema-components.js b/src/core/json-schema-components.js index 07fcada2e23..1edf2b12110 100644 --- a/src/core/json-schema-components.js +++ b/src/core/json-schema-components.js @@ -11,6 +11,7 @@ const JsonSchemaPropShape = { keyName: PropTypes.any, fn: PropTypes.object.isRequired, schema: PropTypes.object, + errors: PropTypes.array, required: PropTypes.bool, description: PropTypes.any } @@ -20,7 +21,8 @@ const JsonSchemaDefaultProps = { onChange: noop, schema: {}, keyName: "", - required: false + required: false, + errors: [] } export class JsonSchemaForm extends Component { @@ -29,7 +31,7 @@ export class JsonSchemaForm extends Component { static defaultProps = JsonSchemaDefaultProps render() { - let { schema, value, onChange, getComponent, fn } = this.props + let { schema, errors, value, onChange, getComponent, fn } = this.props if(schema.toJS) schema = schema.toJS() @@ -37,7 +39,7 @@ export class JsonSchemaForm extends Component { let { type, format="" } = schema let Comp = (format ? getComponent(`JsonSchema_${type}_${format}`) : getComponent(`JsonSchema_${type}`)) || getComponent("JsonSchema_string") - return + return } } @@ -51,14 +53,15 @@ export class JsonSchema_string extends Component { } onEnumChange = (val) => this.props.onChange(val) render() { - let { getComponent, value, schema, required, description } = this.props + let { getComponent, value, schema, errors, required, description } = this.props let enumValue = schema["enum"] - let errors = schema.errors || [] + + errors = errors || [] if ( enumValue ) { const Select = getComponent("Select") return ( err.index === i) - if (err.length) schema.errors = [ err[0].error + i ] + if (err.length) errors = [ err[0].error + i ] } return (
@@ -182,12 +186,12 @@ export class JsonSchema_boolean extends Component { onEnumChange = (val) => this.props.onChange(val) render() { - let { getComponent, value, schema } = this.props - let errors = schema.errors || [] + let { getComponent, value, errors, schema } = this.props + errors = errors || [] const Select = getComponent("Select") return (