Skip to content
Prev Previous commit
Next Next commit
Add allOf support
  • Loading branch information
gazpachoking committed Aug 13, 2015
commit 8145236946a53aede8c6c5c5a6e56b45d11b720e
16 changes: 14 additions & 2 deletions src/services/schema-form.js
Original file line number Diff line number Diff line change
Expand Up @@ -296,9 +296,9 @@ angular.module('schemaForm').provider('schemaForm',
var formselect = function(name, schema, options) {
var types = stripNullType(schema.type);
if (!(schema.oneOf || schema.anyOf || angular.isArray(types))) return;
schemas = [];
var f = stdFormObj(name, schema, options);
f.type = 'formselect';
var schemas = [];
// TODO: What if there are more than one of these keys in the same schema?
if (angular.isArray(types)) {
angular.forEach(types, function(type) {
Expand All @@ -322,10 +322,22 @@ angular.module('schemaForm').provider('schemaForm',
return f;
};

var allof = function(name, schema, options) {
if (schema.allOf) {
var extended = schema;
var allOf = schema.allOf;
delete schema.allOf;
angular.forEach(allOf, function(s) {
extended = extendSchemas(s, extended);
});
return defaultFormDefinition(name, extended, options);
}
};

//First sorted by schema type then a list.
//Order has importance. First handler returning an form snippet will be used.
var defaults = {
any: [formselect],
any: [allof, formselect],
string: [select, text],
object: [fieldset],
number: [number],
Expand Down