diff --git a/src/core/components/model-collapse.jsx b/src/core/components/model-collapse.jsx index ff783bfe5f8..2caf37e97f6 100644 --- a/src/core/components/model-collapse.jsx +++ b/src/core/components/model-collapse.jsx @@ -1,5 +1,6 @@ import React, { Component } from "react" import PropTypes from "prop-types" +import Im from "immutable" export default class ModelCollapse extends Component { static propTypes = { @@ -11,6 +12,8 @@ export default class ModelCollapse extends Component { classes: PropTypes.string, onToggle: PropTypes.func, hideSelfOnExpand: PropTypes.bool, + layoutActions: PropTypes.object, + layoutSelectors: PropTypes.object.isRequired } static defaultProps = { @@ -58,6 +61,16 @@ export default class ModelCollapse extends Component { }) } + onLoad = (ref) => { + if(ref) { + const name = this.props.modelName + const scrollToKey = this.props.layoutSelectors.getScrollToKey() + + if( Im.is(scrollToKey, Im.fromJS(["models", name])) ) this.toggleCollapsed() + this.props.layoutActions.readyToScroll(["models", name], ref.parentElement) + } + } + render () { const { title, classes } = this.props diff --git a/src/core/components/model-wrapper.jsx b/src/core/components/model-wrapper.jsx index fe878d613b3..f48960ce00b 100644 --- a/src/core/components/model-wrapper.jsx +++ b/src/core/components/model-wrapper.jsx @@ -18,10 +18,15 @@ export default class ModelWrapper extends Component { layoutSelectors: PropTypes.object.isRequired } + getSchemaBasePath = () => { + const isOAS3 = this.props.specSelectors.isOAS3() + return isOAS3 ? ["components", "schemas"] : ["definitions"] + } + onToggle = (name,isShown) => { // If this prop is present, we'll have deepLinking for it if(this.props.layoutActions) { - this.props.layoutActions.show(["models", name],isShown) + this.props.layoutActions.show([...this.getSchemaBasePath(), name],isShown) } } diff --git a/src/core/components/models.jsx b/src/core/components/models.jsx index 28c3bd67a90..fa421f3b18e 100644 --- a/src/core/components/models.jsx +++ b/src/core/components/models.jsx @@ -29,6 +29,13 @@ export default class Models extends Component { } } + onLoad = (ref) => { + if (ref) { + const name = ref.getAttribute("data-name") + this.props.layoutActions.readyToScroll(["models", name], ref) + } + } + render(){ let { specSelectors, getComponent, layoutSelectors, layoutActions, getConfigs } = this.props let definitions = specSelectors.definitions() @@ -91,7 +98,8 @@ export default class Models extends Component { - return