From 789534c587a2d9100fc63bb9f0d10f7f2dccc9c6 Mon Sep 17 00:00:00 2001 From: Owen Conti Date: Sun, 25 Jun 2017 15:51:07 -0600 Subject: [PATCH] Bug fix for #3136 - Update state when scheme options change and previously selected option is no longer available --- src/core/components/operation.jsx | 4 +++- src/core/components/schemes.jsx | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) 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 )