diff --git a/packages/base/src/UI5Element.js b/packages/base/src/UI5Element.js index 51af56a5d73a..b7003f12be72 100644 --- a/packages/base/src/UI5Element.js +++ b/packages/base/src/UI5Element.js @@ -321,22 +321,21 @@ class UI5Element extends HTMLElement { const result = metadatas[0]; - // merge properties - result.properties = metadatas.reverse().reduce((allProperties, current) => { // eslint-disable-line - Object.assign(allProperties, current.properties || {}); - return allProperties; - }, {}); - - // merge slots - result.slots = metadatas.reverse().reduce((allSlots, current) => { // eslint-disable-line - Object.assign(allSlots, current.slots || {}); - return allSlots; - }, {}); + result.properties = this._mergeMetadataEntry(metadatas, "properties"); // merge properties + result.slots = this._mergeMetadataEntry(metadatas, "slots"); // merge slots + result.events = this._mergeMetadataEntry(metadatas, "events"); // merge events this._metadata = new UI5ElementMetadata(result); return this._metadata; } + static _mergeMetadataEntry(metadatas, prop) { + return metadatas.reverse().reduce((result, current) => { // eslint-disable-line + Object.assign(result, current[prop] || {}); + return result; + }, {}); + } + _attachChildPropertyUpdated(child, propData) { const listenFor = propData.listenFor, childMetadata = child.constructor.getMetadata(), diff --git a/packages/base/src/UI5ElementMetadata.js b/packages/base/src/UI5ElementMetadata.js index c3df9c6c9a29..ad0c962df3fa 100644 --- a/packages/base/src/UI5ElementMetadata.js +++ b/packages/base/src/UI5ElementMetadata.js @@ -35,6 +35,10 @@ class UI5ElementMetadata { return this.metadata.properties || {}; } + getEvents() { + return this.metadata.events || {}; + } + static validatePropertyValue(value, propData) { const isMultiple = propData.multiple; if (isMultiple) {