summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/views/basic/basic_renderer.js28
-rw-r--r--addons/web/static/src/js/views/form/form_renderer.js21
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_renderer.js13
-rw-r--r--addons/web/static/src/scss/fields.scss3
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
}
}