diff --git a/CHANGELOG.md b/CHANGELOG.md index 01121d5..8df7953 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Editor initialization failure error handling. #INT-3366 +- Disconnected Editor not destroyed. ## 2.3.1 - 2025-08-11 diff --git a/src/main/ts/component/Editor.ts b/src/main/ts/component/Editor.ts index 80759b3..4922e17 100644 --- a/src/main/ts/component/Editor.ts +++ b/src/main/ts/component/Editor.ts @@ -338,6 +338,9 @@ class TinyMceEditor extends HTMLElement { disconnectedCallback(): void { this._mutationObserver.disconnect(); this._updateForm(); + if (this._editor) { + this._getTinymce().remove(this._editor); + } } get value(): string | null { diff --git a/src/test/ts/browser/LoadTest.ts b/src/test/ts/browser/LoadTest.ts index 9c44a5a..2c7d4ff 100644 --- a/src/test/ts/browser/LoadTest.ts +++ b/src/test/ts/browser/LoadTest.ts @@ -33,13 +33,18 @@ UnitTest.asynctest('LoadTest', (success, failure) => { }), Step.sync(() => makeTinymceElement({ 'setup': 'customElementTinymceSetup', - 'on-init': 'customElementTinymceInit' + 'on-init': 'customElementTinymceInit', + 'id': 'example_id' }, '

Hello world

')), Waiter.sTryUntilPredicate('Waiting for editor setup', () => seenSetup), Waiter.sTryUntilPredicate('Waiting for editor init', () => seenInit), Step.sync(() => { Assertions.assertHtmlStructure('', '

Hello world

', editorInstance.getContent() as string); + Assertions.assertEq('An editor instance is registered', true, Global.tinymce.get('example_id') !== null); }), - Step.sync(() => removeTinymceElement()) + Step.sync(() => removeTinymceElement()), + Step.sync(() => { + Assertions.assertEq('The editor instance is removed', true, Global.tinymce.get('example_id') === null); + }) ], success, failure); }); \ No newline at end of file