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.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 @@
{
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"