diff --git a/src/core/components/array-model.jsx b/src/core/components/array-model.jsx index 6f646bb6ede..e4a64c3b4cf 100644 --- a/src/core/components/array-model.jsx +++ b/src/core/components/array-model.jsx @@ -12,11 +12,12 @@ export default class ArrayModel extends Component { name: PropTypes.string, required: PropTypes.bool, expandDepth: PropTypes.number, + specPath: PropTypes.array.isRequired, depth: PropTypes.number } render(){ - let { getComponent, getConfigs, schema, depth, expandDepth, name } = this.props + let { getComponent, getConfigs, schema, depth, expandDepth, name, specPath } = this.props let description = schema.get("description") let items = schema.get("items") let title = schema.get("title") || name @@ -47,7 +48,7 @@ export default class ArrayModel extends Component { !description ? null : } - + ] diff --git a/src/core/components/model-example.jsx b/src/core/components/model-example.jsx index 0927140e1ca..13db4f20fb1 100644 --- a/src/core/components/model-example.jsx +++ b/src/core/components/model-example.jsx @@ -8,7 +8,8 @@ export default class ModelExample extends React.Component { schema: PropTypes.object.isRequired, example: PropTypes.any.isRequired, isExecute: PropTypes.bool, - getConfigs: PropTypes.func.isRequired + getConfigs: PropTypes.func.isRequired, + specPath: PropTypes.array.isRequired, } constructor(props, context) { @@ -32,7 +33,7 @@ export default class ModelExample extends React.Component { } render() { - let { getComponent, specSelectors, schema, example, isExecute, getConfigs } = this.props + let { getComponent, specSelectors, schema, example, isExecute, getConfigs, specPath } = this.props let { defaultModelExpandDepth } = getConfigs() const ModelWrapper = getComponent("ModelWrapper") @@ -54,7 +55,8 @@ export default class ModelExample extends React.Component { getComponent={ getComponent } getConfigs={ getConfigs } specSelectors={ specSelectors } - expandDepth={ defaultModelExpandDepth } /> + expandDepth={ defaultModelExpandDepth } + specPath={specPath} /> } diff --git a/src/core/components/model.jsx b/src/core/components/model.jsx index a01cfd1331b..836b9f3e863 100644 --- a/src/core/components/model.jsx +++ b/src/core/components/model.jsx @@ -12,7 +12,8 @@ export default class Model extends PureComponent { isRef: PropTypes.bool, required: PropTypes.bool, expandDepth: PropTypes.number, - depth: PropTypes.number + depth: PropTypes.number, + specPath: PropTypes.array.isRequired, } getModelName =( ref )=> { @@ -31,7 +32,7 @@ export default class Model extends PureComponent { } render () { - let { getComponent, getConfigs, specSelectors, schema, required, name, isRef } = this.props + let { getComponent, getConfigs, specSelectors, schema, required, name, isRef, specPath } = this.props const ObjectModel = getComponent("ObjectModel") const ArrayModel = getComponent("ArrayModel") const PrimitiveModel = getComponent("PrimitiveModel") @@ -55,6 +56,7 @@ export default class Model extends PureComponent { case "object": return diff --git a/src/core/components/object-model.jsx b/src/core/components/object-model.jsx index 83530530749..a20ce40652c 100644 --- a/src/core/components/object-model.jsx +++ b/src/core/components/object-model.jsx @@ -14,13 +14,15 @@ export default class ObjectModel extends Component { name: PropTypes.string, isRef: PropTypes.bool, expandDepth: PropTypes.number, - depth: PropTypes.number + depth: PropTypes.number, + specPath: PropTypes.object.isRequired } render(){ - let { schema, name, isRef, getComponent, getConfigs, depth, expandDepth, ...otherProps } = this.props + let { schema, name, isRef, getComponent, getConfigs, depth, specPath, expandDepth, ...otherProps } = this.props let { specSelectors } = otherProps - let { isOAS3 } = specSelectors + + const { isOAS3 } = specSelectors if(!schema) { return null @@ -39,14 +41,13 @@ export default class ObjectModel extends Component { const Model = getComponent("Model") const ModelCollapse = getComponent("ModelCollapse") - const JumpToPathSection = ({ name }) => { - const path = isOAS3 && isOAS3() ? `components.schemas.${name}` : `definitions.${name}` - return + const JumpToPathSection = () => { + return } const collapsedContent = ( { braceOpen }...{ braceClose } { - isRef ? : "" + isRef ? : "" } ) @@ -63,7 +64,7 @@ export default class ObjectModel extends Component { expandDepth } collapsedContent={ collapsedContent }> { braceOpen } { - !isRef ? null : + !isRef ? null : } { @@ -94,6 +95,7 @@ export default class ObjectModel extends Component { @@ -132,6 +134,7 @@ export default class ObjectModel extends Component { @@ -146,6 +149,7 @@ export default class ObjectModel extends Component { {anyOf.map((schema, k) => { return
@@ -161,6 +165,7 @@ export default class ObjectModel extends Component { {oneOf.map((schema, k) => { return
@@ -177,6 +182,7 @@ export default class ObjectModel extends Component { diff --git a/src/core/components/operation.jsx b/src/core/components/operation.jsx index ea1877f3028..1369411ac0c 100644 --- a/src/core/components/operation.jsx +++ b/src/core/components/operation.jsx @@ -6,6 +6,7 @@ import { Iterable } from "immutable" export default class Operation extends PureComponent { static propTypes = { + specPath: PropTypes.array.isRequired, operation: PropTypes.instanceOf(Iterable).isRequired, response: PropTypes.instanceOf(Iterable), request: PropTypes.instanceOf(Iterable), @@ -36,6 +37,7 @@ export default class Operation extends PureComponent { render() { let { + specPath, response, request, toggleShown, @@ -57,7 +59,6 @@ export default class Operation extends PureComponent { let { isShown, isAuthorized, - jumpToKey, path, method, op, @@ -112,8 +113,10 @@ export default class Operation extends PureComponent { let onChangeKey = [ path, method ] // Used to add values to _this_ operation ( indexed by path and method ) return ( +
+ {/*TODO: convert this into a component, that can be wrapped + and pulled in with getComponent */}
-
{method.toUpperCase()} {path} - + {/*TODO: use wrapComponents here, swagger-ui doesn't care about jumpToPath */} { !showSummary ? null : @@ -170,6 +173,7 @@ export default class Operation extends PureComponent { { const path = op.get("path") const method = op.get("method") + const specPath = ["paths", path, method] + // FIXME: (someday) this logic should probably be in a selector, // but doing so would require further opening up @@ -134,6 +136,7 @@ export default class Operations extends React.Component { return { @@ -58,6 +60,7 @@ export default class Parameters extends Component { parameters, allowTryItOut, tryItOutEnabled, + specPath, fn, getComponent, @@ -92,8 +95,10 @@ export default class Parameters extends Component { { - eachMap(parameters, (parameter) => ( - ( + { responses.entrySeq().map( ([code, response]) => { + let className = tryItOutResponse && tryItOutResponse.get("status") == code ? "response_current" : "" return ( { const Markdown = getComponent("Markdown") @@ -37,6 +38,7 @@ const RequestBody = ({ expandDepth={1} isExecute={isExecute} schema={mediaTypeValue.get("schema")} + specPath={[...specPath, "content", contentType]} example={
@@ -136,9 +140,10 @@ class Parameters extends Component { { - eachMap(parameters, (parameter) => ( + eachMap(parameters, (parameter, i) => (
{ diff --git a/test/components/models.js b/test/components/models.js index 750a8cf123b..49eff79463c 100644 --- a/test/components/models.js +++ b/test/components/models.js @@ -18,6 +18,7 @@ describe("", function(){ return components[c] }, specSelectors: { + isOAS3: () => false, definitions: function() { return fromJS({ def1: {}, diff --git a/test/components/object-model.js b/test/components/object-model.js index 8c4b9452aa3..640eedf7bfa 100644 --- a/test/components/object-model.js +++ b/test/components/object-model.js @@ -25,6 +25,7 @@ describe("", function() { } }, isRef : false, + specPath: [], schema: Immutable.fromJS( { "properties": {