@@ -113,6 +118,7 @@ export default class ParameterRow extends Component {
{ isOAS3 && isOAS3() && param.get("deprecated") ? "deprecated": null }
({ param.get("in") })
+ { !showExtensions || !extensions.size ? null : extensions.map((v, key) => )}
diff --git a/src/core/components/primitive-model.jsx b/src/core/components/primitive-model.jsx
index c14413a9..1d49d7d4 100644
--- a/src/core/components/primitive-model.jsx
+++ b/src/core/components/primitive-model.jsx
@@ -1,5 +1,6 @@
import React, { Component } from "react"
import PropTypes from "prop-types"
+import { getExtensions } from "core/utils"
const propStyle = { color: "#999", fontStyle: "italic" }
@@ -7,12 +8,15 @@ export default class Primitive extends Component {
static propTypes = {
schema: PropTypes.object.isRequired,
getComponent: PropTypes.func.isRequired,
+ getConfigs: PropTypes.func.isRequired,
name: PropTypes.string,
depth: PropTypes.number
}
render(){
- let { schema, getComponent, name, depth } = this.props
+ let { schema, getComponent, getConfigs, name, depth } = this.props
+
+ const { showExtensions } = getConfigs()
if(!schema || !schema.get) {
// don't render if schema isn't correctly formed
@@ -25,7 +29,10 @@ export default class Primitive extends Component {
let enumArray = schema.get("enum")
let title = schema.get("title") || name
let description = schema.get("description")
- let properties = schema.filter( ( v, key) => ["enum", "type", "format", "description", "$$ref"].indexOf(key) === -1 )
+ let extensions = getExtensions(schema)
+ let properties = schema
+ .filter( ( v, key) => ["enum", "type", "format", "description", "$$ref"].indexOf(key) === -1 )
+ .filterNot( (v, key) => extensions.has(key) )
const Markdown = getComponent("Markdown")
const EnumModel = getComponent("EnumModel")
const Property = getComponent("Property")
@@ -38,6 +45,9 @@ export default class Primitive extends Component {
{
properties.size ? properties.entrySeq().map( ( [ key, v ] ) => ) : null
}
+ {
+ showExtensions && extensions.size ? extensions.entrySeq().map( ( [ key, v ] ) => ) : null
+ }
{
!description ? null :
diff --git a/src/core/index.js b/src/core/index.js
index 7298043a..14c0637f 100644
--- a/src/core/index.js
+++ b/src/core/index.js
@@ -46,6 +46,7 @@ module.exports = function SwaggerUI(opts) {
showMutatedRequest: true,
defaultModelRendering: "example",
defaultModelExpandDepth: 1,
+ showExtensions: false,
// Initial set of plugins ( TODO rename this, or refactor - we don't need presets _and_ plugins. Its just there for performance.
// Instead, we can compile the first plugin ( it can be a collection of plugins ), then batch the rest.
diff --git a/src/core/plugins/oas3/wrap-components/model.jsx b/src/core/plugins/oas3/wrap-components/model.jsx
index ab554534..ad1fa366 100644
--- a/src/core/plugins/oas3/wrap-components/model.jsx
+++ b/src/core/plugins/oas3/wrap-components/model.jsx
@@ -8,12 +8,13 @@ class ModelComponent extends Component {
schema: PropTypes.object.isRequired,
name: PropTypes.string,
getComponent: PropTypes.func.isRequired,
+ getConfigs: PropTypes.func.isRequired,
specSelectors: PropTypes.object.isRequired,
expandDepth: PropTypes.number
}
render(){
- let { schema } = this.props
+ let { getConfigs, schema } = this.props
let classes = ["model-box"]
let isDeprecated = schema.get("deprecated") === true
let message = null
@@ -26,6 +27,7 @@ class ModelComponent extends Component {
return
{message}
diff --git a/src/core/presets/base.js b/src/core/presets/base.js
index d608b544..133df134 100644
--- a/src/core/presets/base.js
+++ b/src/core/presets/base.js
@@ -30,11 +30,14 @@ import LiveResponse from "core/components/live-response"
import OnlineValidatorBadge from "core/components/online-validator-badge"
import Operations from "core/components/operations"
import Operation from "core/components/operation"
+import OperationExt from "core/components/operation-extensions"
+import OperationExtRow from "core/components/operation-extension-row"
import HighlightCode from "core/components/highlight-code"
import Responses from "core/components/responses"
import Response from "core/components/response"
import ResponseBody from "core/components/response-body"
import Parameters from "core/components/parameters"
+import ParameterExt from "core/components/parameter-extension"
import ParameterRow from "core/components/parameter-row"
import Execute from "core/components/execute"
import Headers from "core/components/headers"
@@ -115,6 +118,9 @@ export default function() {
Markdown,
BaseLayout,
VersionStamp,
+ OperationExt,
+ OperationExtRow,
+ ParameterExt,
OperationContainer
}
}
diff --git a/src/core/utils.js b/src/core/utils.js
index 8babdbd8..70dd3cfe 100644
--- a/src/core/utils.js
+++ b/src/core/utils.js
@@ -692,3 +692,5 @@ export function getAcceptControllingResponse(responses) {
export const createDeepLinkPath = (str) => typeof str == "string" || str instanceof String ? str.trim().replace(/\s/g, "_") : ""
export const escapeDeepLinkPath = (str) => cssEscape( createDeepLinkPath(str) )
+
+export const getExtensions = (defObj) => defObj.filter((v, k) => /^x-/.test(k))
diff --git a/src/style/_table.scss b/src/style/_table.scss
index 02dd92ba..3cbcc81f 100644
--- a/src/style/_table.scss
+++ b/src/style/_table.scss
@@ -131,7 +131,8 @@ table
}
}
-.parameter__in
+.parameter__in,
+.parameter__extension
{
font-size: 12px;
font-style: italic;
diff --git a/test/components/primitive-model.js b/test/components/primitive-model.js
index 9394bb8c..4b09b5af 100644
--- a/test/components/primitive-model.js
+++ b/test/components/primitive-model.js
@@ -14,6 +14,9 @@ describe(" ", function() {
}
const props = {
getComponent: c => components[c],
+ getConfigs: () => ({
+ showExtensions: false
+ }),
name: "Name from props",
depth: 1,
schema: fromJS({
@@ -46,4 +49,4 @@ describe(" ", function() {
})
})
-} )
\ No newline at end of file
+} )
|