[IMP] web_editor: allow to temporary block preview overlay toggling

This will allow to do the following:

1) Show a preview overlay over an element
2) Block preview overlays -> the overlay at step 1 stays no matter what
3) Encourage the user to do something that edits what the preview
   overlay is currently showing.
4) The edition is finished, go back to normal by unblocking preview
   overlays.

Part of https://github.com/odoo/odoo/pull/38959
task-2066614
This commit is contained in:
qsm-odoo
2019-11-18 09:56:40 +00:00
parent 688e21b6e0
commit 01debf53f6
2 changed files with 18 additions and 0 deletions
@@ -736,6 +736,8 @@ var SnippetsMenu = Widget.extend({
'reload_snippet_dropzones': '_disableUndroppableSnippets',
'update_customize_elements': '_onUpdateCustomizeElements',
'hide_overlay': '_onHideOverlay',
'block_preview_overlays': '_onBlockPreviewOverlays',
'unblock_preview_overlays': '_onUnblockPreviewOverlays',
},
/**
@@ -1123,6 +1125,9 @@ var SnippetsMenu = Widget.extend({
* (might be async when an editor must be created)
*/
_activateSnippet: function ($snippet, previewMode, ifInactiveOptions) {
if (this._blockPreviewOverlays && previewMode) {
return Promise.resolve();
}
return this._activateSnippetMutex.exec(() => {
return new Promise(resolve => {
// Take the first parent of the provided DOM (or itself) which
@@ -1838,6 +1843,18 @@ var SnippetsMenu = Widget.extend({
}],
}).open();
},
/**
* @private
*/
_onBlockPreviewOverlays: function (ev) {
this._blockPreviewOverlays = true;
},
/**
* @private
*/
_onUnblockPreviewOverlays: function (ev) {
this._blockPreviewOverlays = false;
},
/**
* @private
* @param {OdooEvent} ev
@@ -776,6 +776,7 @@ body.editor_enable.editor_has_snippets {
}
&.o_we_overlay_preview {
pointer-events: none;
border-color: $o-we-handles-accent-color-preview;
> .o_handles {