diff --git a/web/app/cad/craft/loft/schema.js b/web/app/cad/craft/loft/schema.js index e963272a..ae1aa3d3 100644 --- a/web/app/cad/craft/loft/schema.js +++ b/web/app/cad/craft/loft/schema.js @@ -2,7 +2,8 @@ export default { sections: { type: 'array', itemType: 'loop', - initializeBySelection: true + initializeBySelection: true, + min: 2 }, boolean: { type: 'enum', diff --git a/web/app/cad/craft/materializeParams.js b/web/app/cad/craft/materializeParams.js index 064cdfdd..d4e5e473 100644 --- a/web/app/cad/craft/materializeParams.js +++ b/web/app/cad/craft/materializeParams.js @@ -62,6 +62,13 @@ export default function materializeParams(services, params, schema, result, erro } else if (md.type === 'array') { if (!Array.isArray(value)) { errors.push({path: [...parentPath, field], message: 'not an array type'}); + continue; + } + if (md.min !== undefined && value.length < md.min) { + errors.push({path: [...parentPath, field], message: 'required minimum ' + md.min + ' elements'}); + } + if (md.max !== undefined && value.length > md.max) { + errors.push({path: [...parentPath, field], message: 'required maximum ' + md.max + ' elements'}); } if (md.itemType === 'object') { value = value.map((item , i) => {