diff --git a/src/core/components/operation.jsx b/src/core/components/operation.jsx index 9b5133c7..f968f68c 100644 --- a/src/core/components/operation.jsx +++ b/src/core/components/operation.jsx @@ -131,6 +131,7 @@ export default class Operation extends React.Component { let schemes = operation.get("schemes") let parameters = getList(operation, ["parameters"]) let operationId = operation.get("__originalOperationId") + let operationScheme = specSelectors.operationScheme(path, method) const Responses = getComponent("responses") const Parameters = getComponent( "parameters" ) @@ -216,7 +217,8 @@ export default class Operation extends React.Component { + specActions={ specActions } + operationScheme={ operationScheme } /> : null } diff --git a/src/core/components/schemes.jsx b/src/core/components/schemes.jsx index 21d954f0..0b397d03 100644 --- a/src/core/components/schemes.jsx +++ b/src/core/components/schemes.jsx @@ -6,7 +6,8 @@ export default class Schemes extends React.Component { specActions: PropTypes.object.isRequired, schemes: PropTypes.object.isRequired, path: PropTypes.string, - method: PropTypes.string + method: PropTypes.string, + operationScheme: PropTypes.string } componentWillMount() { @@ -16,11 +17,18 @@ export default class Schemes extends React.Component { this.setScheme(schemes.first()) } + componentWillReceiveProps(nextProps) { + if ( this.props.operationScheme && !nextProps.schemes.has(this.props.operationScheme) ) { + //fire 'change' event if our selected scheme is no longer an option + this.setScheme(nextProps.schemes.first()) + } + } + onChange =( e ) => { this.setScheme( e.target.value ) } - setScheme =( value ) => { + setScheme = ( value ) => { let { path, method, specActions } = this.props specActions.setScheme( value, path, method )