diff --git a/addons/mass_mailing/static/src/js/mailing_mailing_view_form_full_width.js b/addons/mass_mailing/static/src/js/mailing_mailing_view_form_full_width.js index f4a58a5e230..67c370c8e1a 100644 --- a/addons/mass_mailing/static/src/js/mailing_mailing_view_form_full_width.js +++ b/addons/mass_mailing/static/src/js/mailing_mailing_view_form_full_width.js @@ -105,12 +105,10 @@ export class MassMailingFullWidthViewController extends formView.Controller { */ _onToggleFullscreen() { const $iframeDoc = this.$iframe.contents(); - const iframeTarget = $iframeDoc.find('#iframe_target'); + const html = $iframeDoc.find('html').get(0); + html.scrollTop = 0; + html.classList.toggle('o_fullscreen'); const isFullscreen = this._isFullScreen(); - iframeTarget.css({ - display: isFullscreen ? '' : 'flex', - 'flex-direction': isFullscreen ? '' : 'column', - }); const wysiwyg = $iframeDoc.find('.note-editable').data('wysiwyg'); if (wysiwyg && wysiwyg.snippetsMenu) { // Restore the appropriate scrollable depending on the mode. @@ -118,6 +116,7 @@ export class MassMailingFullWidthViewController extends formView.Controller { wysiwyg.snippetsMenu.$scrollable = isFullscreen ? $iframeDoc.find('.note-editable') : this._$scrollable; } this._repositionMailingEditorSidebar(); + this._resizeMailingEditorIframe(); } /** * Return true if the mailing editor is in full screen mode, false @@ -138,19 +137,18 @@ export class MassMailingFullWidthViewController extends formView.Controller { * @private */ _resizeMailingEditorIframe() { - const VERTICAL_OFFSET = 12; // Vertical offset picked for visual design purposes. - const minHeight = $(window).height() - Math.abs(this.$iframe.offset().top) - (VERTICAL_OFFSET / 2); + const minHeight = $(window).height() - Math.abs(this.$iframe.offset().top); const $iframeDoc = this.$iframe.contents(); const $themeSelectorNew = $iframeDoc.find('.o_mail_theme_selector_new'); if ($themeSelectorNew.length) { - this.$iframe.height(Math.max($themeSelectorNew[0].scrollHeight + VERTICAL_OFFSET, minHeight)); + this.$iframe.height(Math.max($themeSelectorNew[0].scrollHeight, minHeight)); } else { const ref = $iframeDoc.find('#iframe_target')[0]; if (ref) { this.$iframe.css({ height: this._isFullScreen() ? $(window).height() - : Math.max(ref.scrollHeight + VERTICAL_OFFSET, minHeight), + : Math.max(ref.scrollHeight, minHeight), }); } } diff --git a/addons/mass_mailing/static/src/js/mass_mailing_html_field.js b/addons/mass_mailing/static/src/js/mass_mailing_html_field.js index 644134c0478..1e2b15db610 100644 --- a/addons/mass_mailing/static/src/js/mass_mailing_html_field.js +++ b/addons/mass_mailing/static/src/js/mass_mailing_html_field.js @@ -562,6 +562,7 @@ MassMailingHtmlField.props = { ...HtmlField.props, filterTemplates: { type: Boolean, optional: true }, inlineField: { type: String, optional: true }, + iframeHtmlClass: { type: String, optional: true }, }; MassMailingHtmlField.displayName = _lt("Email"); @@ -572,6 +573,7 @@ MassMailingHtmlField.extractProps = (...args) => { ...htmlProps, filterTemplates: attrs.options.filterTemplates, inlineField: attrs.options['inline-field'], + iframeHtmlClass: attrs['iframeHtmlClass'], }; }; diff --git a/addons/mass_mailing/static/src/scss/mass_mailing.ui.scss b/addons/mass_mailing/static/src/scss/mass_mailing.ui.scss index ed24a947887..a15b62057ba 100644 --- a/addons/mass_mailing/static/src/scss/mass_mailing.ui.scss +++ b/addons/mass_mailing/static/src/scss/mass_mailing.ui.scss @@ -7,10 +7,15 @@ margin-bottom: -$o-sheet-cancel-bpadding; } -html, body { +html:not(.o_mass_mailing_iframe), body:not(.o_mass_mailing_iframe), html.o_fullscreen { overflow: visible !important; } +#iframe_target:not(.o_fullscreen) { + display: flex; + flex-direction: column; +} + .o_mail_theme_selector { > a { height: $o-we-toolbar-height; diff --git a/addons/mass_mailing/views/mailing_mailing_views.xml b/addons/mass_mailing/views/mailing_mailing_views.xml index 1dd4948176d..a1af5512eee 100644 --- a/addons/mass_mailing/views/mailing_mailing_views.xml +++ b/addons/mass_mailing/views/mailing_mailing_views.xml @@ -443,6 +443,9 @@ + + o_mass_mailing_iframe + diff --git a/addons/web_editor/static/src/js/backend/html_field.js b/addons/web_editor/static/src/js/backend/html_field.js index aef093a398c..a8f76e08830 100644 --- a/addons/web_editor/static/src/js/backend/html_field.js +++ b/addons/web_editor/static/src/js/backend/html_field.js @@ -603,6 +603,7 @@ HtmlField.extractProps = ({ attrs, field }) => { noAttachment: attrs.options['no-attachment'], inIframe: Boolean(attrs.options.cssEdit), iframeCssAssets: attrs.options.cssEdit, + iframeHtmlClass: attrs.iframeHtmlClass, snippets: attrs.options.snippets, allowCommandVideo: Boolean(attrs.options.allowCommandVideo) && (!field.sanitize || !field.sanitize_tags), mediaModalParams: { diff --git a/addons/web_editor/static/src/js/wysiwyg/wysiwyg_iframe.js b/addons/web_editor/static/src/js/wysiwyg/wysiwyg_iframe.js index 1ab602e205f..8d2b5454aad 100644 --- a/addons/web_editor/static/src/js/wysiwyg/wysiwyg_iframe.js +++ b/addons/web_editor/static/src/js/wysiwyg/wysiwyg_iframe.js @@ -149,7 +149,9 @@ Wysiwyg.include({ }); self.$iframe[0].contentWindow.document .open("text/html", "replace") - .write(`${iframeContent}`); + .write(`${iframeContent}`); }); self.options.document = self.$iframe[0].contentWindow.document; });