diff --git a/lib/components/JsonSchema/json-schema.js b/lib/components/JsonSchema/json-schema.js index b8d0dbb1..fcb9acb8 100644 --- a/lib/components/JsonSchema/json-schema.js +++ b/lib/components/JsonSchema/json-schema.js @@ -59,8 +59,8 @@ export default class JsonSchema extends BaseComponent { this.pointer = schema._pointer || this.pointer; this.requiredMap = {}; - if (this.schema.required) { - this.schema.required.forEach(prop => this.requiredMap[prop] = true); + if (this.componentSchema.required) { + this.componentSchema.required.forEach(prop => this.requiredMap[prop] = true); } if (!schema.properties) { @@ -108,15 +108,18 @@ export default class JsonSchema extends BaseComponent { propData.format = itemFormat; propData._isArray = true; propData.type = 'array ' + propData.items.type; - } - - if (propData.type === 'object') { + } else if (propData.type === 'object') { propData._displayType = propData.title || 'object'; - } - - if (!propData.type) { + } else if (!propData.type) { propData._displayType = '< * >'; propData._displayTypeHint = 'This field may contain data of any type'; + } else { + // here we are sure that property has simple type + // delete pointer for simple types to not show it as subschema + if (propData._pointer) { + propData._pointer = undefined; + propData._displayType = propData.title ? `${propData.title} (${propData.type})` : propData.type; + } } if (propData.format) propData._displayFormat = `<${propData.format}>`; diff --git a/lib/components/Method/method.html b/lib/components/Method/method.html index 1a428a93..c8fc86c2 100644 --- a/lib/components/Method/method.html +++ b/lib/components/Method/method.html @@ -1,7 +1,7 @@

- {{data.methodInfo.summary}} + {{data.methodInfo.summary}}

{{data.httpMethod}} diff --git a/lib/components/Method/method.js b/lib/components/Method/method.js index fdad9d66..5a8ea3c3 100644 --- a/lib/components/Method/method.js +++ b/lib/components/Method/method.js @@ -8,13 +8,15 @@ import ResponsesList from '../ResponsesList/responses-list'; import ResponsesSamples from '../ResponsesSamples/responses-samples'; import SchemaSample from '../SchemaSample/schema-sample'; import RequestSamples from '../RequestSamples/request-samples'; +import {EncodeURIComponentPipe} from '../../utils/pipes'; @RedocComponent({ selector: 'method', templateUrl: './lib/components/Method/method.html', styleUrls: ['./lib/components/Method/method.css'], directives: [ParamsList, ResponsesList, ResponsesSamples, SchemaSample, RequestSamples], - inputs: ['tag'] + inputs: ['tag'], + pipes: [EncodeURIComponentPipe] }) export default class Method extends BaseComponent { constructor(schemaMgr) { diff --git a/lib/components/MethodsList/methods-list.html b/lib/components/MethodsList/methods-list.html index 10e0ccf6..86a00c90 100644 --- a/lib/components/MethodsList/methods-list.html +++ b/lib/components/MethodsList/methods-list.html @@ -1,7 +1,7 @@
-

{{tag.name}}

+

{{tag.name}}

{ let propPointer = paramData._pointer; + if (paramData.in === 'body') return paramData; return JsonSchema.injectPropData(paramData, paramData.name, propPointer); }); @@ -35,7 +36,7 @@ export default class ParamsList extends BaseComponent { let bodyParam = paramsMap.body[0]; bodyParam.pointer = bodyParam._pointer; this.data.bodyParam = bodyParam; - delete paramsMap.body; + paramsMap.body = undefined; } this.data.noParams = !(Object.keys(paramsMap).length || this.data.bodyParam); diff --git a/lib/components/SideMenu/side-menu.js b/lib/components/SideMenu/side-menu.js index a3791bee..1637749b 100644 --- a/lib/components/SideMenu/side-menu.js +++ b/lib/components/SideMenu/side-menu.js @@ -62,7 +62,7 @@ export default class SideMenu extends BaseComponent { let $el; hash = hash.substr(1); let namespace = hash.split('/')[0]; - let ptr = hash.substr(namespace.length + 1); + let ptr = decodeURIComponent(hash.substr(namespace.length + 1)); if (namespace === 'operation') { $el = this.getMethodElByOperId(ptr); } else if (namespace === 'tag') { diff --git a/lib/utils/pipes.js b/lib/utils/pipes.js index 45f5af15..6d9a1ed6 100644 --- a/lib/utils/pipes.js +++ b/lib/utils/pipes.js @@ -118,3 +118,14 @@ export class PrismPipe { return Prism.highlight(value, grammar); } } + +@Pipe({ name: 'encodeURIComponent' }) +export class EncodeURIComponentPipe { + transform(value) { + if (isBlank(value)) return value; + if (!isString(value)) { + throw new InvalidPipeArgumentException(EncodeURIComponentPipe, value); + } + return encodeURIComponent(value); + } +} diff --git a/package.json b/package.json index 3941db64..bcf3fe6d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "redoc", "description": "Swagger-generated API Reference Documentation", - "version": "0.6.2", + "version": "0.6.3", "repository": { "type": "git", "url": "git://github.com/Rebilly/ReDoc"