feat: add tryItOutEnabled configuration (#6865)
* feat: add tryItOutEnabled configuration allow users to set tryItOutEnabled: true to display the "Try it out" section by default tryItOutEnabled to take === "true" for the query string value or === true if someone implements query string type parsing in the query
This commit is contained in:
@@ -91,6 +91,10 @@ const standardVariables = {
|
|||||||
type: "array",
|
type: "array",
|
||||||
name: "supportedSubmitMethods"
|
name: "supportedSubmitMethods"
|
||||||
},
|
},
|
||||||
|
TRY_IT_OUT_ENABLED: {
|
||||||
|
type: "boolean",
|
||||||
|
name: "tryItOutEnabled"
|
||||||
|
},
|
||||||
VALIDATOR_URL: {
|
VALIDATOR_URL: {
|
||||||
type: "string",
|
type: "string",
|
||||||
name: "validatorUrl"
|
name: "validatorUrl"
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ Parameter name | Docker variable | Description
|
|||||||
<a name="syntaxHighlight"></a>`syntaxHighlight` | _Unavailable_ | Set to `false` to deactivate syntax highlighting of payloads and cURL command, can be otherwise an object with the `activate` and `theme` properties.
|
<a name="syntaxHighlight"></a>`syntaxHighlight` | _Unavailable_ | Set to `false` to deactivate syntax highlighting of payloads and cURL command, can be otherwise an object with the `activate` and `theme` properties.
|
||||||
<a name="syntaxHighlight.activate"></a>`syntaxHighlight.activate` | _Unavailable_ | `Boolean=true`. Whether syntax highlighting should be activated or not.
|
<a name="syntaxHighlight.activate"></a>`syntaxHighlight.activate` | _Unavailable_ | `Boolean=true`. Whether syntax highlighting should be activated or not.
|
||||||
<a name="syntaxHighlight.theme"></a>`syntaxHighlight.theme` | _Unavailable_ | `String=["agate"*, "arta", "monokai", "nord", "obsidian", "tomorrow-night"]`. [Highlight.js](https://highlightjs.org/static/demo/) syntax coloring theme to use. (Only these 6 styles are available.)
|
<a name="syntaxHighlight.theme"></a>`syntaxHighlight.theme` | _Unavailable_ | `String=["agate"*, "arta", "monokai", "nord", "obsidian", "tomorrow-night"]`. [Highlight.js](https://highlightjs.org/static/demo/) syntax coloring theme to use. (Only these 6 styles are available.)
|
||||||
|
<a name="tryItOutEnabled"></a>`tryItOutEnabled` | `TRY_IT_OUT_ENABLED` | `Boolean=false`. Controls whether the "Try it out" section should be enabled by default.
|
||||||
|
|
||||||
##### Network
|
##### Network
|
||||||
|
|
||||||
|
|||||||
@@ -113,6 +113,12 @@ An array of functions that augment and modify Swagger UI's functionality. See Sw
|
|||||||
|
|
||||||
⚠️ This prop is currently only applied once, on mount. Changes to this prop's value will not be propagated to the underlying Swagger UI instance. A future version of this module will remove this limitation, and the change will not be considered a breaking change.
|
⚠️ This prop is currently only applied once, on mount. Changes to this prop's value will not be propagated to the underlying Swagger UI instance. A future version of this module will remove this limitation, and the change will not be considered a breaking change.
|
||||||
|
|
||||||
|
#### `tryItOutEnabled`: PropTypes.bool
|
||||||
|
|
||||||
|
Controls whether the "Try it out" section should start enabled. The default is false.
|
||||||
|
|
||||||
|
⚠️ This prop is currently only applied once, on mount. Changes to this prop's value will not be propagated to the underlying Swagger UI instance. A future version of this module will remove this limitation, and the change will not be considered a breaking change.
|
||||||
|
|
||||||
## Limitations
|
## Limitations
|
||||||
|
|
||||||
* Not all configuration bindings are available.
|
* Not all configuration bindings are available.
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ export default class SwaggerUI extends React.Component {
|
|||||||
supportedSubmitMethods: this.props.supportedSubmitMethods,
|
supportedSubmitMethods: this.props.supportedSubmitMethods,
|
||||||
defaultModelExpandDepth: this.props.defaultModelExpandDepth,
|
defaultModelExpandDepth: this.props.defaultModelExpandDepth,
|
||||||
displayOperationId: this.props.displayOperationId,
|
displayOperationId: this.props.displayOperationId,
|
||||||
|
tryItOutEnabled: this.props.tryItOutEnabled,
|
||||||
showMutatedRequest: typeof this.props.showMutatedRequest === "boolean" ? this.props.showMutatedRequest : true,
|
showMutatedRequest: typeof this.props.showMutatedRequest === "boolean" ? this.props.showMutatedRequest : true,
|
||||||
deepLinking: typeof this.props.deepLinking === "boolean" ? this.props.deepLinking : false,
|
deepLinking: typeof this.props.deepLinking === "boolean" ? this.props.deepLinking : false,
|
||||||
})
|
})
|
||||||
@@ -101,6 +102,7 @@ SwaggerUI.propTypes = {
|
|||||||
defaultModelsExpandDepth: PropTypes.number,
|
defaultModelsExpandDepth: PropTypes.number,
|
||||||
presets: PropTypes.arrayOf(PropTypes.func),
|
presets: PropTypes.arrayOf(PropTypes.func),
|
||||||
deepLinking: PropTypes.bool,
|
deepLinking: PropTypes.bool,
|
||||||
|
tryItOutEnabled: PropTypes.bool
|
||||||
}
|
}
|
||||||
|
|
||||||
SwaggerUI.defaultProps = {
|
SwaggerUI.defaultProps = {
|
||||||
@@ -7,8 +7,11 @@ import { Iterable, fromJS, Map } from "immutable"
|
|||||||
export default class OperationContainer extends PureComponent {
|
export default class OperationContainer extends PureComponent {
|
||||||
constructor(props, context) {
|
constructor(props, context) {
|
||||||
super(props, context)
|
super(props, context)
|
||||||
|
|
||||||
|
const { tryItOutEnabled } = props.getConfigs()
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
tryItOutEnabled: false,
|
tryItOutEnabled: tryItOutEnabled === true || tryItOutEnabled === "true",
|
||||||
executeInProgress: false
|
executeInProgress: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ export default function SwaggerUI(opts) {
|
|||||||
displayOperationId: false,
|
displayOperationId: false,
|
||||||
displayRequestDuration: false,
|
displayRequestDuration: false,
|
||||||
deepLinking: false,
|
deepLinking: false,
|
||||||
|
tryItOutEnabled: false,
|
||||||
requestInterceptor: (a => a),
|
requestInterceptor: (a => a),
|
||||||
responseInterceptor: (a => a),
|
responseInterceptor: (a => a),
|
||||||
showMutatedRequest: true,
|
showMutatedRequest: true,
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ export default function authorize ( { auth, authActions, errActions, configs, au
|
|||||||
scopesArray = scopes.toArray()
|
scopesArray = scopes.toArray()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scopesArray.length > 0) {
|
if (scopesArray.length > 0) {
|
||||||
let scopeSeparator = authConfigs.scopeSeparator || " "
|
let scopeSeparator = authConfigs.scopeSeparator || " "
|
||||||
|
|
||||||
query.push("scope=" + encodeURIComponent(scopesArray.join(scopeSeparator)))
|
query.push("scope=" + encodeURIComponent(scopesArray.join(scopeSeparator)))
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
openapi: 3.0.2
|
||||||
|
info:
|
||||||
|
title: try it out enabled test
|
||||||
|
version: 0.0.1
|
||||||
|
description: |-
|
||||||
|
a simple test to ensure tryItOutEnabled=true expands "Try it out"
|
||||||
|
paths:
|
||||||
|
/:
|
||||||
|
get:
|
||||||
|
summary: an operation
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
22
test/e2e-cypress/tests/features/try-it-out-enabled.js
Normal file
22
test/e2e-cypress/tests/features/try-it-out-enabled.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
describe("Try it out enabled configuration", () => {
|
||||||
|
it("should enable the try it out section when true", () => {
|
||||||
|
|
||||||
|
cy
|
||||||
|
.visit("?tryItOutEnabled=true&url=/documents/features/try-it-out-enabled.yaml")
|
||||||
|
.get("#operations-default-get_")
|
||||||
|
.click()
|
||||||
|
.get(".try-out__btn")
|
||||||
|
.should("have.text","Cancel")
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should disable the try it out section when false", () => {
|
||||||
|
|
||||||
|
cy
|
||||||
|
.visit("?tryItOutEnabled=false&url=/documents/features/try-it-out-enabled.yaml")
|
||||||
|
.get("#operations-default-get_")
|
||||||
|
.click()
|
||||||
|
.get(".try-out__btn")
|
||||||
|
.should("have.text","Try it out ")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
@@ -245,6 +245,7 @@ describe("docker: env translator", function() {
|
|||||||
OAUTH2_REDIRECT_URL: "http://google.com/",
|
OAUTH2_REDIRECT_URL: "http://google.com/",
|
||||||
SHOW_MUTATED_REQUEST: "true",
|
SHOW_MUTATED_REQUEST: "true",
|
||||||
SUPPORTED_SUBMIT_METHODS: `["get", "post"]`,
|
SUPPORTED_SUBMIT_METHODS: `["get", "post"]`,
|
||||||
|
TRY_IT_OUT_ENABLED: "true",
|
||||||
VALIDATOR_URL: "http://smartbear.com/"
|
VALIDATOR_URL: "http://smartbear.com/"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,6 +271,7 @@ describe("docker: env translator", function() {
|
|||||||
oauth2RedirectUrl: "http://google.com/",
|
oauth2RedirectUrl: "http://google.com/",
|
||||||
showMutatedRequest: true,
|
showMutatedRequest: true,
|
||||||
supportedSubmitMethods: ["get", "post"],
|
supportedSubmitMethods: ["get", "post"],
|
||||||
|
tryItOutEnabled: true,
|
||||||
validatorUrl: "http://smartbear.com/",`
|
validatorUrl: "http://smartbear.com/",`
|
||||||
).trim())
|
).trim())
|
||||||
})
|
})
|
||||||
@@ -299,6 +301,7 @@ describe("docker: env translator", function() {
|
|||||||
OAUTH2_REDIRECT_URL: "http://google.com/",
|
OAUTH2_REDIRECT_URL: "http://google.com/",
|
||||||
SHOW_MUTATED_REQUEST: "true",
|
SHOW_MUTATED_REQUEST: "true",
|
||||||
SUPPORTED_SUBMIT_METHODS: `["get", "post"]`,
|
SUPPORTED_SUBMIT_METHODS: `["get", "post"]`,
|
||||||
|
TRY_IT_OUT_ENABLED: "false",
|
||||||
VALIDATOR_URL: "http://smartbear.com/"
|
VALIDATOR_URL: "http://smartbear.com/"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -331,6 +334,7 @@ describe("docker: env translator", function() {
|
|||||||
oauth2RedirectUrl: "http://google.com/",
|
oauth2RedirectUrl: "http://google.com/",
|
||||||
showMutatedRequest: true,
|
showMutatedRequest: true,
|
||||||
supportedSubmitMethods: ["get", "post"],
|
supportedSubmitMethods: ["get", "post"],
|
||||||
|
tryItOutEnabled: false,
|
||||||
validatorUrl: "http://smartbear.com/",`
|
validatorUrl: "http://smartbear.com/",`
|
||||||
).trim())
|
).trim())
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user