diff --git a/src/components/composer/composer/abstract_composer_store.ts b/src/components/composer/composer/abstract_composer_store.ts index edc1e0bcea..83fdf08544 100644 --- a/src/components/composer/composer/abstract_composer_store.ts +++ b/src/components/composer/composer/abstract_composer_store.ts @@ -93,6 +93,7 @@ export abstract class AbstractComposerStore extends SpreadsheetStore { this.highlightStore.register(this); this.onDispose(() => { this.highlightStore.unRegister(this); + this._cancelEdition(); }); } protected abstract confirmEdition(content: string): void; diff --git a/tests/conditional_formatting/conditional_formatting_panel_component.test.ts b/tests/conditional_formatting/conditional_formatting_panel_component.test.ts index d84ca9d16b..8afe695fca 100644 --- a/tests/conditional_formatting/conditional_formatting_panel_component.test.ts +++ b/tests/conditional_formatting/conditional_formatting_panel_component.test.ts @@ -1,5 +1,6 @@ import { Component } from "@odoo/owl"; import { Model } from "../../src"; +import { ComposerFocusStore } from "../../src/components/composer/composer_focus_store"; import { ConditionalFormattingPanel } from "../../src/components/side_panel/conditional_formatting/conditional_formatting"; import { toHex, toZone } from "../../src/helpers"; import { ConditionalFormatPlugin } from "../../src/plugins/core/conditional_format"; @@ -1571,4 +1572,26 @@ describe("Integration tests", () => { expect(fixture.querySelector(selectors.ruleEditor.range)).toBeNull(); expect(fixture.querySelector(selectors.listPreview)).toBeDefined(); }); + + test("CF standalone composer becomes inactive on sheet change", async () => { + const sheetId = model.getters.getActiveSheetId(); + model.dispatch("ADD_CONDITIONAL_FORMAT", { + cf: createEqualCF("2", { bold: true, fillColor: "#ff0000" }, "99"), + ranges: toRangesData(sheetId, "A1:A2"), + sheetId, + }); + createSheet(model, { sheetId: "42" }); + const zone = toZone("A1:A2"); + parent.env.openSidePanel("ConditionalFormatting", { selection: [zone] }); + await nextTick(); + await editStandaloneComposer(selectors.ruleEditor.editor.valueInput, "=", { + confirm: false, + }); + const composerFocusStore = parent.env.getStore(ComposerFocusStore); + expect(composerFocusStore.activeComposer.id).toBe("standaloneComposer"); + expect(composerFocusStore.activeComposer.editionMode).toBe("selecting"); + activateSheet(model, "42"); + await nextTick(); + expect(composerFocusStore.activeComposer.editionMode).toBe("inactive"); + }); });