Browse Source

Handle properly Component model `defaults` as functions. Closes #5199

pull/5214/head
Artur Arseniev 3 years ago
parent
commit
8d7af1cba1
  1. 13
      src/dom_components/index.ts

13
src/dom_components/index.ts

@ -480,8 +480,7 @@ export default class ComponentManager extends ItemManagerModule<DomComponentsCon
// If the model/view is a simple object I need to extend it // If the model/view is a simple object I need to extend it
if (typeof model === 'object') { if (typeof model === 'object') {
const defaults = result(model, 'defaults'); const modelDefaults = { defaults: model.defaults };
// @ts-ignore
delete model.defaults; delete model.defaults;
methods.model = modelToExt.extend( methods.model = modelToExt.extend(
{ {
@ -492,12 +491,12 @@ export default class ComponentManager extends ItemManagerModule<DomComponentsCon
isComponent: compType && !extendType && !isComponent ? modelToExt.isComponent : isComponent || (() => 0), isComponent: compType && !extendType && !isComponent ? modelToExt.isComponent : isComponent || (() => 0),
} }
); );
// @ts-ignore // Reassign the defaults getter to the model
Object.defineProperty(methods.model.prototype, 'defaults', { Object.defineProperty(methods.model!.prototype, 'defaults', {
value: { get: () => ({
...(result(modelToExt.prototype, 'defaults') || {}), ...(result(modelToExt.prototype, 'defaults') || {}),
...(defaults || {}), ...(result(modelDefaults, 'defaults') || {}),
}, }),
}); });
} }

Loading…
Cancel
Save