summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/renderer_wrapper.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/views/renderer_wrapper.js')
-rw-r--r--addons/web/static/src/js/views/renderer_wrapper.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/addons/web/static/src/js/views/renderer_wrapper.js b/addons/web/static/src/js/views/renderer_wrapper.js
new file mode 100644
index 00000000000..7c1c5d6b273
--- /dev/null
+++ b/addons/web/static/src/js/views/renderer_wrapper.js
@@ -0,0 +1,57 @@
+odoo.define('web.RendererWrapper', function (require) {
+ "use strict";
+
+ const { xml } = owl.tags;
+ const AbstractRenderer = require('web.AbstractRendererOwl');
+
+ class RendererWrapper extends owl.Component {
+ /**
+ *
+ * @param {Object} parent
+ * @param {Object} props
+ * @param {Class} concreteRenderer
+ */
+ constructor(parent, props, concreteRenderer) {
+ super(...arguments);
+ this.concreteRenderer = concreteRenderer;
+ this.data = props;
+ }
+
+ /**
+ * Update the props of the renderer before a re-render
+ * called on the initial render as well as when the renderer is re-mounted (view switched)
+ *
+ * @param {Object} props new props
+ */
+ updateProps(props) {
+ this.data = Object.assign(this.data || {}, props);
+ }
+
+ mounted() {
+ for (let x in this.__owl__.children) {
+ this.__owl__.children[x].__callMounted();
+ }
+ }
+
+ willUnmount() {
+ for (let x in this.__owl__.children) {
+ this.__owl__.children[x].__callWillUnmount();
+ }
+ }
+
+ setParent() { }
+
+ getLocalState() { }
+
+ setLocalState() { }
+
+ giveFocus() { }
+ };
+
+ RendererWrapper.template = xml`<t t-component="concreteRenderer" t-props="data"/>`;
+
+ RendererWrapper.components = { AbstractRenderer };
+
+ return RendererWrapper;
+
+});