From 14b63c5bf9593624755dc36c78ea0f93b1c3150b Mon Sep 17 00:00:00 2001 From: Owen Conti Date: Sun, 9 Jul 2017 13:59:59 -0600 Subject: [PATCH] Fixes #2926 - Add optional `title` prop to `Collapse` so collapse elements can render titles to be clickable --- src/core/components/model.jsx | 45 +++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/src/core/components/model.jsx b/src/core/components/model.jsx index de714403..39c1c8e1 100644 --- a/src/core/components/model.jsx +++ b/src/core/components/model.jsx @@ -50,14 +50,13 @@ class ObjectModel extends Component { } ) + const titleEl = title && + { isRef && schema.get("$$ref") && { schema.get("$$ref") } } + { title } + + return - { - title && - { isRef && schema.get("$$ref") && { schema.get("$$ref") } } - { title } - - } - expandDepth } collapsedContent={ collapsedContent }> + expandDepth } collapsedContent={ collapsedContent }> { braceOpen } { !isRef ? null : @@ -188,14 +187,14 @@ class ArrayModel extends Component { let items = schema.get("items") let title = schema.get("title") || name let properties = schema.filter( ( v, key) => ["type", "items", "$$ref"].indexOf(key) === -1 ) - + const titleEl = title && + + { title } + + + return - { - title && - { title } - - } - expandDepth } collapsedContent="[...]"> + expandDepth } collapsedContent="[...]"> [ ] @@ -292,12 +291,14 @@ class Collapse extends Component { static propTypes = { collapsedContent: PropTypes.any, collapsed: PropTypes.bool, - children: PropTypes.any + children: PropTypes.any, + title: PropTypes.element } static defaultProps = { collapsedContent: "{...}", collapsed: true, + title: null } constructor(props, context) { @@ -318,11 +319,15 @@ class Collapse extends Component { } render () { - return ( - - + const {title} = this.props + return ( + + { title && {title} } + + + + { this.state.collapsed ? this.state.collapsedContent : this.props.children } - { this.state.collapsed ? this.state.collapsedContent : this.props.children } - ) + ) } }