From 4f2a8fa554a8c97033ab88887660ed4d9736b287 Mon Sep 17 00:00:00 2001 From: Wojciech Baszczyk Date: Thu, 26 Sep 2024 11:44:01 +0200 Subject: [PATCH] fix: schema.required is not a mandatory property --- src/lib/schema-form.js | 2 +- src/organisms/gv-resources/gv-resources.js | 5 +++-- .../gv-schema-form-control-object.js | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/lib/schema-form.js b/src/lib/schema-form.js index f3f4f848..8065513d 100644 --- a/src/lib/schema-form.js +++ b/src/lib/schema-form.js @@ -39,6 +39,6 @@ function _canInline(schema, key) { } export function canGrid(schema) { - const keys = Object.keys(schema.properties); + const keys = Object.keys(schema.properties || {}); return keys.length > 2 && keys.filter((key) => _canInline(schema, key)).length === keys.length; } diff --git a/src/organisms/gv-resources/gv-resources.js b/src/organisms/gv-resources/gv-resources.js index 111fb36f..fee2bd0b 100644 --- a/src/organisms/gv-resources/gv-resources.js +++ b/src/organisms/gv-resources/gv-resources.js @@ -135,10 +135,11 @@ export class GvResources extends KeyboardElement(LitElement) { }; const schema = typeof resourceType.schema === 'string' ? JSON.parse(resourceType.schema) : resourceType.schema; + const schemaRequired = schema.required ? schema.required : []; return { - properties: { ...defaultSchema.properties, ...schema.properties }, - required: [...defaultSchema.required, ...schema.required], + properties: { ...defaultSchema.properties, ...schema.properties}, + required: [...defaultSchema.required, ...schemaRequired], }; } diff --git a/src/organisms/gv-schema-form-control-object/gv-schema-form-control-object.js b/src/organisms/gv-schema-form-control-object/gv-schema-form-control-object.js index 7151e202..4707b89d 100644 --- a/src/organisms/gv-schema-form-control-object/gv-schema-form-control-object.js +++ b/src/organisms/gv-schema-form-control-object/gv-schema-form-control-object.js @@ -91,7 +91,7 @@ export class GvSchemaFormControlObject extends UpdateAfterBrowser(LitElement) { } render() { - const keys = Object.keys(this.schema.properties); + const keys = Object.keys(this.schema.properties || {}); const isGrid = canGrid(this.schema); const classes = { 'form_control-inline': canInline(this.schema),