From a92e1898e31adfca82ebc05745a12cf6063de153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=AB=8B=E5=B8=AE?= <3294713004@qq.com> Date: Mon, 31 Mar 2025 19:44:32 +0800 Subject: [PATCH] =?UTF-8?q?fix(core):=20=E4=BF=AE=E5=A4=8Dpages=E5=AE=B9?= =?UTF-8?q?=E5=99=A8=E5=8D=B8=E8=BD=BD=E4=BC=9A=E5=AF=BC=E8=87=B4=E8=AF=A5?= =?UTF-8?q?=E5=AE=B9=E5=99=A8=E4=B8=8B=E4=BA=8B=E4=BB=B6=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mixly-modules/common/pages-manager.js | 46 +++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/common/modules/mixly-modules/common/pages-manager.js b/common/modules/mixly-modules/common/pages-manager.js index 4c627528..e8618482 100644 --- a/common/modules/mixly-modules/common/pages-manager.js +++ b/common/modules/mixly-modules/common/pages-manager.js @@ -13,7 +13,7 @@ const { class PagesManager extends Component { #tabs_ = null; - #$welcomePage_ = null; + #welcomePage_ = null; #$editorContainer_ = null; #$tabsContainer_ = null; #pagesRegistry_ = new Registry(); @@ -47,8 +47,8 @@ class PagesManager extends Component { this.mountOn($parentContainer); let PageType = this.#typesRegistry_.getItem('#welcome'); if (PageType) { - this.#$welcomePage_ = (new PageType()).getContent(); - $content.replaceWith(this.#$welcomePage_); + this.#welcomePage_ = new PageType(); + this.#showWelcomePage_(); } this.#addEventsListener_(); } @@ -84,11 +84,10 @@ class PagesManager extends Component { let page = new PageType(); this.#pagesRegistry_.register(id, page); page.setTab($(tabEl)); - if (this.#$welcomePage_) { - if (this.#pagesRegistry_.length() && this.#page_ === 'welcome') { - this.#$welcomePage_.replaceWith(this.getContent()); - this.#page_ = 'editor'; - } + if (this.#welcomePage_ + && this.#pagesRegistry_.length() + && this.#page_ === 'welcome') { + this.#hideWelcomePage_(); } page.init(); }); @@ -103,15 +102,31 @@ class PagesManager extends Component { } page.dispose(); this.#pagesRegistry_.unregister(id); - if (this.#$welcomePage_) { - if (!this.#pagesRegistry_.length() && this.#page_ !== 'welcome') { - this.getContent().replaceWith(this.#$welcomePage_); - this.#page_ = 'welcome'; - } + if (this.#welcomePage_ + && !this.#pagesRegistry_.length() + && this.#page_ !== 'welcome') { + this.#showWelcomePage_(); } }); } + #showWelcomePage_() { + const $parent = this.getContent().parent(); + this.getContent().detach(); + $parent.append(this.#welcomePage_.getContent()); + this.#welcomePage_.onMounted(); + this.#page_ = 'welcome'; + } + + #hideWelcomePage_() { + const $page = this.#welcomePage_.getContent(); + const $parent = $page.parent(); + $page.detach(); + this.#welcomePage_.onUnmounted(); + $parent.append(this.getContent()); + this.#page_ = 'editor'; + } + resize() { super.resize(); const page = this.getActive(); @@ -177,6 +192,11 @@ class PagesManager extends Component { this.remove(id); } this.#tabs_.dispose(); + this.#welcomePage_ && this.#welcomePage_.dispose(); + this.#tabs_ = null; + this.#welcomePage_ = null; + this.#$tabsContainer_ = null; + this.#$editorContainer_ = null; super.dispose(); } }