Skip to content

Commit bbaf49e

Browse files
authored
Merge pull request #3355 from owenconti/feature/2926-click-model-name-to-toggle
Fixes #2926 - Click name of model to collapse/expand
2 parents 59dc570 + 79cc31b commit bbaf49e

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

src/core/components/array-model.jsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,19 @@ export default class ArrayModel extends Component {
1717
render(){
1818
let { getComponent, required, schema, depth, expandDepth } = this.props
1919
let items = schema.get("items")
20+
let title = schema.get("title") || name
2021
let properties = schema.filter( ( v, key) => ["type", "items", "$$ref"].indexOf(key) === -1 )
2122

2223
const ModelCollapse = getComponent("ModelCollapse")
2324
const Model = getComponent("Model")
2425

25-
return <span className="model">
26+
const titleEl = title &&
2627
<span className="model-title">
27-
<span className="model-title__text">{ schema.get("title") }</span>
28+
<span className="model-title__text">{ title }</span>
2829
</span>
29-
<ModelCollapse collapsed={ depth > expandDepth } collapsedContent="[...]">
30+
31+
return <span className="model">
32+
<ModelCollapse title={titleEl} collapsed={ depth > expandDepth } collapsedContent="[...]">
3033
[
3134
<span><Model { ...this.props } schema={ items } required={ false }/></span>
3235
]

src/core/components/model-collapse.jsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ export default class ModelCollapse extends Component {
55
static propTypes = {
66
collapsedContent: PropTypes.any,
77
collapsed: PropTypes.bool,
8-
children: PropTypes.any
8+
children: PropTypes.any,
9+
title: PropTypes.element
910
}
1011

1112
static defaultProps = {
1213
collapsedContent: "{...}",
1314
collapsed: true,
15+
title: null
1416
}
1517

1618
constructor(props, context) {
@@ -31,11 +33,15 @@ export default class ModelCollapse extends Component {
3133
}
3234

3335
render () {
34-
return (<span>
35-
<span onClick={ this.toggleCollapsed } style={{ "cursor": "pointer" }}>
36-
<span className={ "model-toggle" + ( this.state.collapsed ? " collapsed" : "" ) }></span>
36+
const {title} = this.props
37+
return (
38+
<span>
39+
{ title && <span onClick={this.toggleCollapsed} style={{ "cursor": "pointer" }}>{title}</span> }
40+
<span onClick={ this.toggleCollapsed } style={{ "cursor": "pointer" }}>
41+
<span className={ "model-toggle" + ( this.state.collapsed ? " collapsed" : "" ) }></span>
42+
</span>
43+
{ this.state.collapsed ? this.state.collapsedContent : this.props.children }
3744
</span>
38-
{ this.state.collapsed ? this.state.collapsedContent : this.props.children }
39-
</span>)
45+
)
4046
}
4147
}

src/core/components/object-model.jsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,13 @@ export default class ObjectModel extends Component {
3838
}
3939
</span>)
4040

41+
const titleEl = title && <span className="model-title">
42+
{ isRef && schema.get("$$ref") && <span className="model-hint">{ schema.get("$$ref") }</span> }
43+
<span className="model-title__text">{ title }</span>
44+
</span>
4145

4246
return <span className="model">
43-
{
44-
title && <span className="model-title">
45-
{ isRef && schema.get("$$ref") && <span className="model-hint">{ schema.get("$$ref") }</span> }
46-
<span className="model-title__text">{ title }</span>
47-
</span>
48-
}
49-
<ModelCollapse collapsed={ depth > expandDepth } collapsedContent={ collapsedContent }>
47+
<ModelCollapse title={titleEl} collapsed={ depth > expandDepth } collapsedContent={ collapsedContent }>
5048
<span className="brace-open object">{ braceOpen }</span>
5149
{
5250
!isRef ? null : <JumpToPathSection name={ name }/>

0 commit comments

Comments
 (0)