diff --git a/addons/website/__manifest__.py b/addons/website/__manifest__.py index 46c21faa89b3e..1d6bde4b73e61 100644 --- a/addons/website/__manifest__.py +++ b/addons/website/__manifest__.py @@ -1,3 +1,4 @@ + # Part of Odoo. See LICENSE file for full copyright and licensing details. { @@ -293,10 +294,13 @@ 'website/static/lib/multirange/*.js', 'website/static/src/core/**/*', 'website/static/src/interactions/**/*', + 'website/static/src/snippets/s_countdown/000.js', + 'website/static/src/snippets/s_chart/000.js', 'website/static/src/snippets/s_dynamic_snippet/000.js', 'website/static/src/snippets/s_dynamic_snippet/000.xml', 'website/static/src/snippets/s_dynamic_snippet_carousel/000.js', 'website/static/src/snippets/s_dynamic_snippet_carousel/000.xml', + 'website/static/src/snippets/s_embed_code/000.js', 'website/static/src/snippets/s_image_gallery/000.js', 'website/static/src/snippets/s_table_of_content/000.js', 'website/static/src/snippets/s_table_of_content/000.scss', @@ -304,8 +308,6 @@ 'website/static/src/snippets/*/*.xml', 'website/static/src/xml/website_form.xml', 'google_recaptcha/static/src/js/recaptcha.js', - 'website/static/src/snippets/s_countdown/000.js', - 'website/static/src/snippets/s_chart/000.js', ], 'web.tests_assets': [ 'website/static/tests/website_service_mock.js', diff --git a/addons/website/static/src/snippets/s_embed_code/000.js b/addons/website/static/src/snippets/s_embed_code/000.js index 0c93d8ce45774..f95e9e0125346 100644 --- a/addons/website/static/src/snippets/s_embed_code/000.js +++ b/addons/website/static/src/snippets/s_embed_code/000.js @@ -1,17 +1,19 @@ -import publicWidget from "@web/legacy/js/public/public_widget"; +import { registry } from "@web/core/registry"; +import { Interaction } from "@website/core/interaction"; import { _t } from "@web/core/l10n/translation"; import { cloneContentEls } from "@website/js/utils"; -const EmbedCodeWidget = publicWidget.Widget.extend({ - selector: ".s_embed_code", - disabledInEditableMode: false, +export class EmbedCode extends Interaction { + static selector = ".s_embed_code"; + // TODO Support edit mode. + disabledInEditableMode = false; - /** - * @override - */ - async start() { + setup() { this.embedCodeEl = this.el.querySelector(".s_embed_code_embedded"); + } + start() { + // TODO Support edit mode. if (this.editableMode && this.embedCodeEl.offsetHeight === 0) { // Shows a placeholder message in edit mode to be able to select // the snippet if it's visually empty. @@ -19,27 +21,21 @@ const EmbedCodeWidget = publicWidget.Widget.extend({ placeholderEl.classList .add("s_embed_code_placeholder", "alert", "alert-info", "pt16", "pb16"); placeholderEl.textContent = _t("Your Embed Code snippet doesn't have anything to display. Click on Edit to modify it."); - this.el.querySelector(".s_embed_code_embedded").appendChild(placeholderEl); + this.embedCodeEl.appendChild(placeholderEl); } - return this._super(...arguments); - }, - /** - * @override - */ - destroy() { - this._super(...arguments); + } + destroy() { // Just before entering edit mode, reinitialize the snippet's content, // without +
+ + `); + expect(core.interactions.length).toBe(1); + expect.verifySteps(["div"]); +}); +*/ + +test("embed code resets on stop", async () => { + const { core, el } = await startInteractions(` +
+ +
original
+
+ `); + expect(core.interactions.length).toBe(1); + let embeddedEl = el.querySelector(".s_embed_code_embedded div"); + embeddedEl.textContent = "changed"; + expect(embeddedEl.textContent).toBe("changed"); + core.stopInteractions(); + expect(core.interactions.length).toBe(0); + embeddedEl = el.querySelector(".s_embed_code_embedded div"); + expect(embeddedEl.textContent).toBe("original"); +});