diff --git a/lib/components/JsonSchema/json-schema.html b/lib/components/JsonSchema/json-schema.html
index 298b3943..51a9b0a7 100644
--- a/lib/components/JsonSchema/json-schema.html
+++ b/lib/components/JsonSchema/json-schema.html
@@ -12,7 +12,7 @@
{{prop._displayType}} {{prop._displayFormat}}
- Required
+ Required
This field value determines the exact schema:
diff --git a/lib/components/JsonSchema/json-schema.js b/lib/components/JsonSchema/json-schema.js
index 75f723e3..0ed590aa 100644
--- a/lib/components/JsonSchema/json-schema.js
+++ b/lib/components/JsonSchema/json-schema.js
@@ -71,7 +71,8 @@ export default class JsonSchema extends BaseComponent {
let discriminatorFieldIdx = -1;
let props = Object.keys(schema.properties).map((prop, idx) => {
let propData = schema.properties[prop];
- propData = this.injectPropData(prop, propData, schema);
+ let propPointer = JsonPointer.join(this.pointer, ['properties', prop]);
+ propData = JsonSchema.injectPropData(propData, prop, propPointer, this.requiredMap, schema);
if (propData.isDiscriminator) discriminatorFieldIdx = idx;
return propData;
});
@@ -97,18 +98,19 @@ export default class JsonSchema extends BaseComponent {
if (discrValues) discrValues.style.paddingLeft = maxWidth + 'px';
}
- injectPropData(prop, propData, schema) {
+ static injectPropData(propData, propName, propPointer, requiredMap, schema) {
propData = Object.assign({}, propData);
- propData._name = prop;
- propData.isRequired = this.requiredMap[prop];
+ propData._name = propName;
+ propData.required = propData.required || (requiredMap && requiredMap[propName]);
propData._displayType = propData.type;
- propData.isDiscriminator = (schema.discriminator === prop);
+ propData.isDiscriminator = (schema && schema.discriminator === propName);
if (propData.type === 'array') {
let itemType = propData.items.type;
let itemFormat = propData.items.format;
if (itemType === 'object' || !itemType) {
itemType = propData.items.title || 'object';
- propData._pointer = propData.items._pointer || JsonPointer.join(this.pointer, ['properties', prop, 'items']);
+ propData._pointer = propData.items._pointer
+ || JsonPointer.join(propPointer, ['items']);
}
propData._displayType = `${itemType}`;
propData.format = itemFormat;
diff --git a/lib/components/ParamsList/params-list.html b/lib/components/ParamsList/params-list.html
index fbbdb382..8bfe6853 100644
--- a/lib/components/ParamsList/params-list.html
+++ b/lib/components/ParamsList/params-list.html
@@ -6,7 +6,8 @@
- {{param.type}}
+ {{param._displayType}} {{param._displayFormat}}
Required
diff --git a/lib/components/ParamsList/params-list.js b/lib/components/ParamsList/params-list.js
index 2e296513..13233e5f 100644
--- a/lib/components/ParamsList/params-list.js
+++ b/lib/components/ParamsList/params-list.js
@@ -26,6 +26,11 @@ export default class ParamsList extends BaseComponent {
this.data.bodyParam = bodyParam;
}
+ params = params.map((paramData) => {
+ let propPointer = paramData._pointer;
+ return JsonSchema.injectPropData(paramData, paramData.name, propPointer);
+ });
+
this.data.noParams = !(params.length || this.data.bodyParam);
this.data.params = params;
}