Skip to content

Commit 14b63c5

Browse files
committed
Fixes #2926 - Add optional title prop to Collapse so collapse elements can render titles to be clickable
1 parent 42efd8a commit 14b63c5

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

src/core/components/model.jsx

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,13 @@ class ObjectModel extends Component {
5050
}
5151
</span>)
5252

53+
const titleEl = title && <span className="model-title">
54+
{ isRef && schema.get("$$ref") && <span className="model-hint">{ schema.get("$$ref") }</span> }
55+
<span className="model-title__text">{ title }</span>
56+
</span>
57+
5358
return <span className="model">
54-
{
55-
title && <span className="model-title">
56-
{ isRef && schema.get("$$ref") && <span className="model-hint">{ schema.get("$$ref") }</span> }
57-
<span className="model-title__text">{ title }</span>
58-
</span>
59-
}
60-
<Collapse collapsed={ depth > expandDepth } collapsedContent={ collapsedContent }>
59+
<Collapse title={titleEl} collapsed={ depth > expandDepth } collapsedContent={ collapsedContent }>
6160
<span className="brace-open object">{ braceOpen }</span>
6261
{
6362
!isRef ? null : <JumpToPathSection name={ name }/>
@@ -188,14 +187,14 @@ class ArrayModel extends Component {
188187
let items = schema.get("items")
189188
let title = schema.get("title") || name
190189
let properties = schema.filter( ( v, key) => ["type", "items", "$$ref"].indexOf(key) === -1 )
191-
190+
const titleEl = title &&
191+
<span className="model-title">
192+
<span className="model-title__text">{ title }</span>
193+
</span>
194+
195+
192196
return <span className="model">
193-
{
194-
title && <span className="model-title">
195-
<span className="model-title__text">{ title }</span>
196-
</span>
197-
}
198-
<Collapse collapsed={ depth > expandDepth } collapsedContent="[...]">
197+
<Collapse title={titleEl} collapsed={ depth > expandDepth } collapsedContent="[...]">
199198
[
200199
<span><Model { ...this.props } name="" schema={ items } required={ false }/></span>
201200
]
@@ -292,12 +291,14 @@ class Collapse extends Component {
292291
static propTypes = {
293292
collapsedContent: PropTypes.any,
294293
collapsed: PropTypes.bool,
295-
children: PropTypes.any
294+
children: PropTypes.any,
295+
title: PropTypes.element
296296
}
297297

298298
static defaultProps = {
299299
collapsedContent: "{...}",
300300
collapsed: true,
301+
title: null
301302
}
302303

303304
constructor(props, context) {
@@ -318,11 +319,15 @@ class Collapse extends Component {
318319
}
319320

320321
render () {
321-
return (<span>
322-
<span onClick={ this.toggleCollapsed } style={{ "cursor": "pointer" }}>
323-
<span className={ "model-toggle" + ( this.state.collapsed ? " collapsed" : "" ) }></span>
322+
const {title} = this.props
323+
return (
324+
<span>
325+
{ title && <span onClick={this.toggleCollapsed} style={{ "cursor": "pointer" }}>{title}</span> }
326+
<span onClick={ this.toggleCollapsed } style={{ "cursor": "pointer" }}>
327+
<span className={ "model-toggle" + ( this.state.collapsed ? " collapsed" : "" ) }></span>
328+
</span>
329+
{ this.state.collapsed ? this.state.collapsedContent : this.props.children }
324330
</span>
325-
{ this.state.collapsed ? this.state.collapsedContent : this.props.children }
326-
</span>)
331+
)
327332
}
328333
}

0 commit comments

Comments
 (0)