Bug fix for #3136 - Update state when scheme options change and previously selected option is no longer available

This commit is contained in:
Owen Conti
2017-06-25 15:51:07 -06:00
parent 165c1d7fcb
commit 789534c587
2 changed files with 13 additions and 3 deletions

View File

@@ -131,6 +131,7 @@ export default class Operation extends React.Component {
let schemes = operation.get("schemes") let schemes = operation.get("schemes")
let parameters = getList(operation, ["parameters"]) let parameters = getList(operation, ["parameters"])
let operationId = operation.get("__originalOperationId") let operationId = operation.get("__originalOperationId")
let operationScheme = specSelectors.operationScheme(path, method)
const Responses = getComponent("responses") const Responses = getComponent("responses")
const Parameters = getComponent( "parameters" ) const Parameters = getComponent( "parameters" )
@@ -216,7 +217,8 @@ export default class Operation extends React.Component {
<Schemes schemes={ schemes } <Schemes schemes={ schemes }
path={ path } path={ path }
method={ method } method={ method }
specActions={ specActions }/> specActions={ specActions }
operationScheme={ operationScheme } />
</div> : null </div> : null
} }

View File

@@ -6,7 +6,8 @@ export default class Schemes extends React.Component {
specActions: PropTypes.object.isRequired, specActions: PropTypes.object.isRequired,
schemes: PropTypes.object.isRequired, schemes: PropTypes.object.isRequired,
path: PropTypes.string, path: PropTypes.string,
method: PropTypes.string method: PropTypes.string,
operationScheme: PropTypes.string
} }
componentWillMount() { componentWillMount() {
@@ -16,6 +17,13 @@ export default class Schemes extends React.Component {
this.setScheme(schemes.first()) 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 ) => { onChange =( e ) => {
this.setScheme( e.target.value ) this.setScheme( e.target.value )
} }