summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/js
diff options
context:
space:
mode:
authorMichael Mattiello (mcm) <mcm@odoo.com>2020-03-16 08:28:17 +0000
committerMichael Mattiello (mcm) <mcm@odoo.com>2020-04-16 07:19:25 +0000
commitdcf9a4c38da5d50a6e597d3d68c3d46fdef61df5 (patch)
treed17339ec7d9a543deb5937052415fe768d1298d7 /addons/mail/static/src/js
parent5cc42022fc159e71ccd2dde122ddde80dd66e23e (diff)
[IMP] web: add es6 class patcher
This commit implements a new way to monkey-patch ES6 classes (for instance, Owl Components). Usage ----- odoo.module('module.BaseClass', function (require) { const patchMixin = require('web.patchMixin'); // Define your class as usual class BaseClass { constructor() { this.foo = 'foo'; } bar() { console.log(this.foo); } } // but export it like this to have a "patchable" version return patchMixin(BaseClass); }); odoo.module('module.Patch', function (require) { // imports the "patchable" version const BaseClass = require('module.BaseClass'); BaseClass.patch('key', T => class extends T { constructor() { super(); this.foo = 'patched foo'; } bar() { super.bar(); console.log('patched bar()'); } } ); }); odoo.module('module.instance', function (require) { // imports the "patchable" version const BaseClass = require('module.BaseClass'); const obj = new BaseClass(); obj.bar(); // if module.patch is loaded before this module the patch // will be apply and calling obj.bar() will log: // patched foo // patched bar() // You can unpatch a patchable class BaseClass.unpatch('key'); });
Diffstat (limited to 'addons/mail/static/src/js')
0 files changed, 0 insertions, 0 deletions