From 01debf53f676e415241e4b2db0087e30eb1f0e8e Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Wed, 6 Nov 2019 12:08:39 +0000 Subject: [PATCH] [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 --- .../static/src/js/editor/snippets.editor.js | 17 +++++++++++++++++ .../static/src/scss/wysiwyg_snippets.scss | 1 + 2 files changed, 18 insertions(+) diff --git a/addons/web_editor/static/src/js/editor/snippets.editor.js b/addons/web_editor/static/src/js/editor/snippets.editor.js index 4d114fec8dc..9644dbe17f3 100644 --- a/addons/web_editor/static/src/js/editor/snippets.editor.js +++ b/addons/web_editor/static/src/js/editor/snippets.editor.js @@ -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 diff --git a/addons/web_editor/static/src/scss/wysiwyg_snippets.scss b/addons/web_editor/static/src/scss/wysiwyg_snippets.scss index 41515e626db..5ddba517474 100644 --- a/addons/web_editor/static/src/scss/wysiwyg_snippets.scss +++ b/addons/web_editor/static/src/scss/wysiwyg_snippets.scss @@ -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 {