From 8b5e40253aae945ed850cf49154d067085afc921 Mon Sep 17 00:00:00 2001 From: Vladislav Tasev Date: Thu, 9 Apr 2020 15:11:11 +0300 Subject: [PATCH 1/2] fix(ui5-shellbar): do not duplicate popover menu items --- packages/fiori/src/ShellBar.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/fiori/src/ShellBar.js b/packages/fiori/src/ShellBar.js index 544dbafdb810..823f00b09044 100644 --- a/packages/fiori/src/ShellBar.js +++ b/packages/fiori/src/ShellBar.js @@ -138,8 +138,8 @@ const metadata = { }, _menuPopoverItems: { - type: Array, - defaultValue: [], + type: String, + multiple: true, }, }, managedSlots: true, From 4da0db42c93c3bb978a65445a29fe376822bc629 Mon Sep 17 00:00:00 2001 From: Vladislav Tasev Date: Thu, 9 Apr 2020 15:25:07 +0300 Subject: [PATCH 2/2] fix framework checks --- packages/base/src/UI5Element.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/base/src/UI5Element.js b/packages/base/src/UI5Element.js index d37622ad848a..ba423584be2d 100644 --- a/packages/base/src/UI5Element.js +++ b/packages/base/src/UI5Element.js @@ -748,10 +748,22 @@ class UI5Element extends HTMLElement { throw new Error(`"${prop}" is not a valid property name. Use a name that does not collide with DOM APIs`); } - if (propData.type === "boolean" && propData.defaultValue) { + if (propData.type === Boolean && propData.defaultValue) { throw new Error(`Cannot set a default value for property "${prop}". All booleans are false by default.`); } + if (propData.type === Array) { + throw new Error(`Wrong type for property "${prop}". Properties cannot be of type Array - use "multiple: true" and set "type" to the single value type, such as "String", "Object", etc...`); + } + + if (propData.type === Object && propData.defaultValue) { + throw new Error(`Cannot set a default value for property "${prop}". All properties of type "Object" are empty objects by default.`); + } + + if (propData.multiple && propData.defaultValue) { + throw new Error(`Cannot set a default value for property "${prop}". All multiple properties are empty arrays by default.`); + } + Object.defineProperty(proto, prop, { get() { if (this._state[prop] !== undefined) {