-
- Downloads
[FIX] website, *: hide .s_popup itself too, not only its .modal child
*: website_mass_mailing (tests) - Web Editor facts: Since the refactoring of the editor done at [1], the cookies bar popup is receiving a `contenteditable=true` attribute, making it receive the chrome default `height` style for such elements. The problem is that if this cookies bar's modal is hidden, the bar will be shown as a thin empty white bar. - Website Builder / Popup Snippet / Cookies bar facts: A popup element is composed of a `.s_popup` parent containing the actual `.modal` BS modal. Our internal logic and events are hiding and showing this inner `.modal` modal element without considering its `.s_popup` parent. It means that when the `.modal` is hidden, its `.s_popup` parent is not touched and kept visible. It might looks like it's not an issue as it would just be an empty element (its only child is hidden) but it leads to some issues as explained just above: an ugly white bar is shown. Note that the cookies bar is nothing more than a `.s_popup` snippet. - Web Editor facts 2: During the mentioned refactoring [1], they actually added some code to hide this bug once you were playing with the edit mode (mainly for when you clicked on the invisible panel element or before saving). But this code was actually not fixing the case when you just entered edit mode. This commit simply remove that "edit only" web editor logic and add a new one in charge of simply synchronizing the `.s_popup` snippet visibility with its `.modal` BS modal in a public widget (which is obviously also executed in edit mode). Finally: - note that if there is no way through regular flow to arrive to the same result with a normal popup snippet, it is still concerned by this issue and you can reproduce it by moving it somewhere else in the DOM and/or simply adding it the `contenteditable=true` attribute. - we already fixed that issue a few months/years ago, I couldn't find a commit related to that so I don't know if it was due to the same root cause - in case one is wondering why we simply couldn't do that in the already existing `_onHideModal` of the `PopupWidget`, it is because that `hide.bs.modal` is not called when entering edit mode, because the `destroy` is destroying it before hiding the modal. The event is thus not fired. And we can't move the hide part before the destroy's super because otherwise, it would go through the normal hidden process which is creating a "seen" cookie for the popup as if it was closed manually. [1]: https://github.com/odoo/odoo/commit/740168ce8d27da3d6a7156d2d79655a898394923 task-2754108 closes odoo/odoo#103382 Signed-off-by:Quentin Smetz (qsm) <qsm@odoo.com> Co-authored-by:
qsm-odoo <qsm@odoo.com>
Showing
- addons/website/static/src/js/editor/snippets.options.js 0 additions, 23 deletionsaddons/website/static/src/js/editor/snippets.options.js
- addons/website/static/src/snippets/s_popup/000.js 75 additions, 0 deletionsaddons/website/static/src/snippets/s_popup/000.js
- addons/website_mass_mailing/static/tests/tours/newsletter_popup.js 27 additions, 23 deletions...bsite_mass_mailing/static/tests/tours/newsletter_popup.js
Loading