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) { 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,