Skip to content

Commit ff9e164

Browse files
authored
Merge branch 'master' into feature/3300-updated-version-info
2 parents d8400f8 + 0ee9f95 commit ff9e164

File tree

23 files changed

+478
-315
lines changed

23 files changed

+478
-315
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,8 @@ modelPropertyMacro | MUST be a function. Function to set default values to each
144144
docExpansion | Controls the default expansion setting for the operations and tags. It can be 'list' (expands only the tags), 'full' (expands the tags and operations) or 'none' (expands nothing). The default is 'list'.
145145
displayOperationId | Controls the display of operationId in operations list. The default is `false`.
146146
displayRequestDuration | Controls the display of the request duration (in milliseconds) for `Try it out` requests. The default is `false`.
147+
maxDisplayedTags | If set, limits the number of tagged operations displayed to at most this many. The default is to show all operations.
148+
filter | If set, enables filtering. The top bar will show an edit box that you can use to filter the tagged operations that are shown. Can be true/false to enable or disable, or an explicit filter string in which case filtering will be enabled using that string as the filter expression. Filtering is case sensitive matching the filter expression anywhere inside the tag.
147149

148150
### Plugins
149151

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import React, { Component } from "react"
2+
import PropTypes from "prop-types"
3+
4+
const propStyle = { color: "#999", fontStyle: "italic" }
5+
6+
export default class ArrayModel extends Component {
7+
static propTypes = {
8+
schema: PropTypes.object.isRequired,
9+
getComponent: PropTypes.func.isRequired,
10+
specSelectors: PropTypes.object.isRequired,
11+
name: PropTypes.string,
12+
required: PropTypes.bool,
13+
expandDepth: PropTypes.number,
14+
depth: PropTypes.number
15+
}
16+
17+
render(){
18+
let { getComponent, required, schema, depth, expandDepth } = this.props
19+
let items = schema.get("items")
20+
let properties = schema.filter( ( v, key) => ["type", "items", "$$ref"].indexOf(key) === -1 )
21+
22+
const ModelCollapse = getComponent("ModelCollapse")
23+
const Model = getComponent("Model")
24+
25+
return <span className="model">
26+
<span className="model-title">
27+
<span className="model-title__text">{ schema.get("title") }</span>
28+
</span>
29+
<ModelCollapse collapsed={ depth > expandDepth } collapsedContent="[...]">
30+
[
31+
<span><Model { ...this.props } schema={ items } required={ false }/></span>
32+
]
33+
{
34+
properties.size ? <span>
35+
{ properties.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={propStyle}>
36+
<br />{ `${key}:`}{ String(v) }</span>)
37+
}<br /></span>
38+
: null
39+
}
40+
</ModelCollapse>
41+
{ required && <span style={{ color: "red" }}>*</span>}
42+
</span>
43+
}
44+
}

src/core/components/enum-model.jsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React from "react"
2+
import ImPropTypes from "react-immutable-proptypes"
3+
4+
const EnumModel = ({ value, getComponent }) => {
5+
let ModelCollapse = getComponent("ModelCollapse")
6+
let collapsedContent = <span>Array [ { value.count() } ]</span>
7+
return <span className="prop-enum">
8+
Enum:<br />
9+
<ModelCollapse collapsedContent={ collapsedContent }>
10+
[ { value.join(", ") } ]
11+
</ModelCollapse>
12+
</span>
13+
}
14+
EnumModel.propTypes = {
15+
value: ImPropTypes.iterable,
16+
getComponent: ImPropTypes.func
17+
}
18+
19+
export default EnumModel

src/core/components/layouts/base.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export default class BaseLayout extends React.Component {
2626

2727
let Info = getComponent("info")
2828
let Operations = getComponent("operations", true)
29-
let Models = getComponent("models", true)
29+
let Models = getComponent("Models", true)
3030
let AuthorizeBtn = getComponent("authorizeBtn", true)
3131
let Row = getComponent("Row")
3232
let Col = getComponent("Col")
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import React, { Component } from "react"
2+
import PropTypes from "prop-types"
3+
4+
export default class ModelCollapse extends Component {
5+
static propTypes = {
6+
collapsedContent: PropTypes.any,
7+
collapsed: PropTypes.bool,
8+
children: PropTypes.any
9+
}
10+
11+
static defaultProps = {
12+
collapsedContent: "{...}",
13+
collapsed: true,
14+
}
15+
16+
constructor(props, context) {
17+
super(props, context)
18+
19+
let { collapsed, collapsedContent } = this.props
20+
21+
this.state = {
22+
collapsed: collapsed !== undefined ? collapsed : ModelCollapse.defaultProps.collapsed,
23+
collapsedContent: collapsedContent || ModelCollapse.defaultProps.collapsedContent
24+
}
25+
}
26+
27+
toggleCollapsed=()=>{
28+
this.setState({
29+
collapsed: !this.state.collapsed
30+
})
31+
}
32+
33+
render () {
34+
return (<span>
35+
<span onClick={ this.toggleCollapsed } style={{ "cursor": "pointer" }}>
36+
<span className={ "model-toggle" + ( this.state.collapsed ? " collapsed" : "" ) }></span>
37+
</span>
38+
{ this.state.collapsed ? this.state.collapsedContent : this.props.children }
39+
</span>)
40+
}
41+
}

src/core/components/model-example.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export default class ModelExample extends React.Component {
2828

2929
render() {
3030
let { getComponent, specSelectors, schema, example, isExecute } = this.props
31-
const Model = getComponent("model")
31+
const ModelWrapper = getComponent("ModelWrapper")
3232

3333
return <div>
3434
<ul className="tab">
@@ -44,7 +44,7 @@ export default class ModelExample extends React.Component {
4444
(isExecute || this.state.activeTab === "example") && example
4545
}
4646
{
47-
!isExecute && this.state.activeTab === "model" && <Model schema={ schema }
47+
!isExecute && this.state.activeTab === "model" && <ModelWrapper schema={ schema }
4848
getComponent={ getComponent }
4949
specSelectors={ specSelectors }
5050
expandDepth={ 1 } />
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import React, { Component, } from "react"
2+
import PropTypes from "prop-types"
3+
4+
export default class ModelComponent extends Component {
5+
static propTypes = {
6+
schema: PropTypes.object.isRequired,
7+
name: PropTypes.string,
8+
getComponent: PropTypes.func.isRequired,
9+
specSelectors: PropTypes.object.isRequired,
10+
expandDepth: PropTypes.number
11+
}
12+
13+
render(){
14+
let { getComponent } = this.props
15+
const Model = getComponent("Model")
16+
17+
return <div className="model-box">
18+
<Model { ...this.props } depth={ 1 } expandDepth={ this.props.expandDepth || 0 }/>
19+
</div>
20+
}
21+
}
22+
23+

0 commit comments

Comments
 (0)