Skip to content

Commit d587d9c

Browse files
authored
Merge pull request #3482 from shockey/ft/oas3
OAS3: Rendering
2 parents 624e8f3 + 84f6653 commit d587d9c

39 files changed

+1065
-45
lines changed

dist/swagger-ui-bundle.js

Lines changed: 16 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/swagger-ui-bundle.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/swagger-ui.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/swagger-ui.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/swagger-ui.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
"react-height": "^2.0.0",
5959
"react-hot-loader": "1.3.1",
6060
"react-immutable-proptypes": "2.1.0",
61+
"react-markdown": "^2.5.0",
6162
"react-motion": "0.4.4",
6263
"react-object-inspector": "0.2.1",
6364
"react-redux": "^4.x.x",

src/core/components/content-type.jsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const noop = ()=>{}
88
export default class ContentType extends React.Component {
99

1010
static propTypes = {
11-
contentTypes: PropTypes.oneOfType([ImPropTypes.list, ImPropTypes.set]),
11+
contentTypes: PropTypes.oneOfType([ImPropTypes.list, ImPropTypes.set, ImPropTypes.seq]),
1212
value: PropTypes.string,
1313
onChange: PropTypes.func,
1414
className: PropTypes.string
@@ -22,7 +22,9 @@ export default class ContentType extends React.Component {
2222

2323
componentDidMount() {
2424
// Needed to populate the form, initially
25-
this.props.onChange(this.props.contentTypes.first())
25+
if(this.props.contentTypes) {
26+
this.props.onChange(this.props.contentTypes.first())
27+
}
2628
}
2729

2830
onChangeWrapper = e => this.props.onChange(e.target.value)

src/core/components/info.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,13 @@ export default class Info extends React.Component {
8888
const { url:externalDocsUrl, description:externalDocsDescription } = (externalDocs || fromJS({})).toJS()
8989

9090
const Markdown = getComponent("Markdown")
91+
const VersionStamp = getComponent("VersionStamp")
9192

9293
return (
9394
<div className="info">
9495
<hgroup className="main">
9596
<h2 className="title" >{ title }
96-
{ version && <small><pre className="version"> { version } </pre></small> }
97+
{ version && <VersionStamp version={version}></VersionStamp> }
9798
</h2>
9899
{ host || basePath ? <Path host={ host } basePath={ basePath } /> : null }
99100
{ url && <a target="_blank" href={ url }><span className="url"> { url } </span></a> }

src/core/components/model-example.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ export default class ModelExample extends React.Component {
3535
<li className={ "tabitem" + ( isExecute || this.state.activeTab === "example" ? " active" : "") }>
3636
<a className="tablinks" data-name="example" onClick={ this.activeTab }>Example Value</a>
3737
</li>
38-
<li className={ "tabitem" + ( !isExecute && this.state.activeTab === "model" ? " active" : "") }>
38+
{ schema ? <li className={ "tabitem" + ( !isExecute && this.state.activeTab === "model" ? " active" : "") }>
3939
<a className={ "tablinks" + ( isExecute ? " inactive" : "" )} data-name="model" onClick={ this.activeTab }>Model</a>
40-
</li>
40+
</li> : null }
4141
</ul>
4242
<div>
4343
{

src/core/components/model.jsx

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ export default class Model extends Component {
1717
if ( ref.indexOf("#/definitions/") !== -1 ) {
1818
return ref.replace(/^.*#\/definitions\//, "")
1919
}
20+
if ( ref.indexOf("#/components/schemas/") !== -1 ) {
21+
return ref.replace("#/components/schemas/", "")
22+
}
2023
}
2124

2225
getRefSchema =( model )=> {
@@ -26,14 +29,16 @@ export default class Model extends Component {
2629
}
2730

2831
render () {
29-
let { schema, getComponent, required, name, isRef } = this.props
32+
let { getComponent, specSelectors, schema, required, name, isRef } = this.props
3033
let ObjectModel = getComponent("ObjectModel")
3134
let ArrayModel = getComponent("ArrayModel")
3235
let PrimitiveModel = getComponent("PrimitiveModel")
3336
let $$ref = schema && schema.get("$$ref")
3437
let modelName = $$ref && this.getModelName( $$ref )
3538
let modelSchema, type
3639

40+
const deprecated = specSelectors.isOAS3() && schema.get("deprecated")
41+
3742
if ( schema && (schema.get("type") || schema.get("properties")) ) {
3843
modelSchema = schema
3944
} else if ( $$ref ) {
@@ -47,17 +52,30 @@ export default class Model extends Component {
4752

4853
switch(type) {
4954
case "object":
50-
return <ObjectModel className="object" { ...this.props } schema={ modelSchema }
51-
name={ name || modelName } required={ required }
52-
isRef={ isRef!== undefined ? isRef : !!$$ref }/>
55+
return <ObjectModel
56+
className="object" { ...this.props }
57+
schema={ modelSchema }
58+
name={ name || modelName }
59+
deprecated={deprecated}
60+
isRef={ isRef!== undefined ? isRef : !!$$ref } />
5361
case "array":
54-
return <ArrayModel className="array" { ...this.props } schema={ modelSchema } required={ required } />
62+
return <ArrayModel
63+
className="array" { ...this.props }
64+
schema={ modelSchema }
65+
name={ name || modelName }
66+
deprecated={deprecated}
67+
required={ required } />
5568
case "string":
5669
case "number":
5770
case "integer":
5871
case "boolean":
5972
default:
60-
return <PrimitiveModel getComponent={ getComponent } schema={ modelSchema } required={ required }/>
61-
}
73+
return <PrimitiveModel
74+
{ ...this.props }
75+
getComponent={ getComponent }
76+
schema={ modelSchema }
77+
name={ name || modelName }
78+
deprecated={deprecated}
79+
required={ required }/> }
6280
}
63-
}
81+
}

0 commit comments

Comments
 (0)