diff options
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_renderer.js | 28 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form/form_renderer.js | 21 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/kanban/kanban_renderer.js | 13 | ||||
| -rw-r--r-- | addons/web/static/src/scss/fields.scss | 3 |
4 files changed, 31 insertions, 34 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_renderer.js b/addons/web/static/src/js/views/basic/basic_renderer.js index b324d2ea772..16ecc473915 100644 --- a/addons/web/static/src/js/views/basic/basic_renderer.js +++ b/addons/web/static/src/js/views/basic/basic_renderer.js @@ -52,6 +52,7 @@ var BasicRenderer = AbstractRenderer.extend(WidgetAdapterMixin, { * Called each time the renderer is attached into the DOM. */ on_attach_callback: function () { + this._isInDom = true; // call on_attach_callback on field widgets for (const handle in this.allFieldWidgets) { this.allFieldWidgets[handle].forEach(widget => { @@ -60,6 +61,12 @@ var BasicRenderer = AbstractRenderer.extend(WidgetAdapterMixin, { } }); } + // call on_attach_callback on widgets + this.widgets.forEach(widget => { + if (widget.on_attach_callback) { + widget.on_attach_callback(); + } + }); // call on_attach_callback on child components (including field components) WidgetAdapterMixin.on_attach_callback.call(this); }, @@ -67,6 +74,7 @@ var BasicRenderer = AbstractRenderer.extend(WidgetAdapterMixin, { * Called each time the renderer is detached from the DOM. */ on_detach_callback: function () { + this._isInDom = false; // call on_detach_callback on field widgets for (const handle in this.allFieldWidgets) { this.allFieldWidgets[handle].forEach(widget => { @@ -75,6 +83,12 @@ var BasicRenderer = AbstractRenderer.extend(WidgetAdapterMixin, { } }); } + // call on_detach_callback on widgets + this.widgets.forEach(widget => { + if (widget.on_detach_callback) { + widget.on_detach_callback(); + } + }); // call on_detach_callback on child components (including field components) WidgetAdapterMixin.on_detach_callback.call(this); }, @@ -667,6 +681,20 @@ var BasicRenderer = AbstractRenderer.extend(WidgetAdapterMixin, { for (const widget of oldWidgets) { widget.destroy(); } + if (this._isInDom) { + for (const handle in this.allFieldWidgets) { + this.allFieldWidgets[handle].forEach(widget => { + if (widget.on_attach_callback) { + widget.on_attach_callback(); + } + }); + } + this.widgets.forEach(widget => { + if (widget.on_attach_callback) { + widget.on_attach_callback(); + } + }); + } }, /** * Instantiates the appropriate AbstractField specialization for the given diff --git a/addons/web/static/src/js/views/form/form_renderer.js b/addons/web/static/src/js/views/form/form_renderer.js index 97e3cbd8cb0..b6e1593b215 100644 --- a/addons/web/static/src/js/views/form/form_renderer.js +++ b/addons/web/static/src/js/views/form/form_renderer.js @@ -52,21 +52,6 @@ var FormRenderer = BasicRenderer.extend({ this._applyFormSizeClass(); return this._super.apply(this, arguments); }, - /** - * Called each time the form view is attached into the DOM - */ - on_attach_callback: function () { - this._isInDom = true; - _.invoke(this.widgets, 'on_attach_callback'); - this._super.apply(this, arguments); - }, - /** - * Called each time the renderer is detached from the DOM. - */ - on_detach_callback: function () { - this._isInDom = false; - this._super.apply(this, arguments); - }, //-------------------------------------------------------------------------- // Public @@ -1053,12 +1038,6 @@ var FormRenderer = BasicRenderer.extend({ if (self.lastActivatedFieldIndex >= 0) { self._activateNextFieldWidget(self.state, self.lastActivatedFieldIndex); } - if (self._isInDom) { - _.forEach(self.allFieldWidgets, function (widgets){ - _.invoke(widgets, 'on_attach_callback'); - }); - _.invoke(self.widgets, 'on_attach_callback'); - } }).guardedCatch(function () { $form.remove(); }); diff --git a/addons/web/static/src/js/views/kanban/kanban_renderer.js b/addons/web/static/src/js/views/kanban/kanban_renderer.js index 555bbd665fa..dfaba0a1a4f 100644 --- a/addons/web/static/src/js/views/kanban/kanban_renderer.js +++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js @@ -141,19 +141,11 @@ var KanbanRenderer = BasicRenderer.extend({ * Called each time the renderer is attached into the DOM. */ on_attach_callback: function () { - this._isInDom = true; - _.invoke(this.widgets, 'on_attach_callback'); + this._super(...arguments); if (this.quickCreate) { this.quickCreate.on_attach_callback(); } }, - /** - * Called each time the renderer is detached from the DOM. - */ - on_detach_callback: function () { - this._isInDom = false; - _.invoke(this.widgets, 'on_detach_callback'); - }, //-------------------------------------------------------------------------- // Public @@ -469,9 +461,6 @@ var KanbanRenderer = BasicRenderer.extend({ self.$el.toggleClass('o_kanban_ungrouped', !isGrouped); self.$el.append(fragment); self._toggleNoContentHelper(); - if (self._isInDom) { - _.invoke(self.widgets, 'on_attach_callback'); - } }); }); }, diff --git a/addons/web/static/src/scss/fields.scss b/addons/web/static/src/scss/fields.scss index 0e948c5921e..70436149d23 100644 --- a/addons/web/static/src/scss/fields.scss +++ b/addons/web/static/src/scss/fields.scss @@ -499,9 +499,10 @@ border: 0; font-size: 12px; user-select: none; - background-color: rgba(lightgray, 0.5);; + background-color: rgba(lightgray, 0.5); font-weight: 500; @include o-text-overflow; + transition: none; // remove transition to prevent badges from flickering at reload } } |
