diff --git a/src/dom_components/index.ts b/src/dom_components/index.ts index af41491cb..bece1ad8c 100644 --- a/src/dom_components/index.ts +++ b/src/dom_components/index.ts @@ -522,7 +522,7 @@ export default class ComponentManager extends ItemManagerModule 0), } ); diff --git a/src/dom_components/model/Component.ts b/src/dom_components/model/Component.ts index 1a8d9c028..ff496aa59 100644 --- a/src/dom_components/model/Component.ts +++ b/src/dom_components/model/Component.ts @@ -1771,7 +1771,10 @@ export default class Component extends StyleableModel { if (!cmp) return false; - return this instanceof cmp; + // A tiny hack to make isInstanceOf work properly where there a multiple inheritance + const { typeExtends } = this.constructor as typeof Component; + + return this instanceof cmp || typeExtends.has(type); } /** @@ -1861,6 +1864,8 @@ export default class Component extends StyleableModel { selector && selector.set({ name: id, label: id }); } + static typeExtends = new Set(); + static getDefaults() { return result(this.prototype, 'defaults'); }