From 0ff9eb7307c5b2c0a14b73fe9bc54f4d75e45ce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Theys?= Date: Wed, 23 Sep 2020 09:24:56 +0000 Subject: [PATCH] [FIX] web, mail: recompute popover on content change Because the position of the popover depends on the size of its content. Part of task-2270731 X-original-commit: 3066a946ef1ca0973503207d0486515798168fa2 --- .../emojis_popover/emojis_popover.js | 20 +++++++++++++++++++ addons/web/static/src/js/core/popover.js | 10 ++++++++++ addons/web/static/src/xml/base.xml | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/addons/mail/static/src/components/emojis_popover/emojis_popover.js b/addons/mail/static/src/components/emojis_popover/emojis_popover.js index 6d3798d0774..9259b24bee5 100644 --- a/addons/mail/static/src/components/emojis_popover/emojis_popover.js +++ b/addons/mail/static/src/components/emojis_popover/emojis_popover.js @@ -15,6 +15,26 @@ class EmojisPopover extends Component { this.emojis = emojis; } + + mounted() { + this._update(); + } + + patched() { + this._update(); + } + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * @private + */ + _update() { + this.trigger('o-popover-compute'); + } + //-------------------------------------------------------------------------- // Public //-------------------------------------------------------------------------- diff --git a/addons/web/static/src/js/core/popover.js b/addons/web/static/src/js/core/popover.js index 53e5b960e9c..28843d55d47 100644 --- a/addons/web/static/src/js/core/popover.js +++ b/addons/web/static/src/js/core/popover.js @@ -194,6 +194,16 @@ odoo.define('web.Popover', function () { this.state.displayed = false; } + /** + * Popover must recompute its position when children content changes. + * + * @private + * @param {Event} ev + */ + _onPopoverCompute(ev) { + this._compute(); + } + /** * A resize event will need to 'reposition' the popover close to its * target. diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 25099d03fa8..8b774d0daee 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -496,7 +496,7 @@ -
+