From 74c2546d5bc6b6245acd256b1c3212dcbd145976 Mon Sep 17 00:00:00 2001 From: Andrew Telnov Date: Mon, 24 Feb 2025 14:05:45 +0200 Subject: [PATCH] When firstPageIsStartPage is enabled, the number of a ghost page on the design surface is incorrect fix #6623 --- .../src/components/tabs/designer.ts | 12 ++++++++++-- .../survey-creator-core/tests/tabs/designer.test.ts | 6 ++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/survey-creator-core/src/components/tabs/designer.ts b/packages/survey-creator-core/src/components/tabs/designer.ts index de745a9ee4..c1e7311a63 100644 --- a/packages/survey-creator-core/src/components/tabs/designer.ts +++ b/packages/survey-creator-core/src/components/tabs/designer.ts @@ -72,12 +72,17 @@ export class TabDesignerViewModel extends Base { }); } }; - newPage.num = this.survey.pages.length + 1; + newPage.num = this.getNewPageNum(); newPage.onPropertyChanged.add(checkNewElementHandler); DragDropSurveyElements.newGhostPage = newPage; delete newPage["ignoreUndoRedo"]; return newPage; } + private getNewPageNum(): number { + const pages = this.survey.pages; + const num = pages.length + (this.survey.firstPageIsStarted ? 0 : 1); + return num > 0 ? num : 1; + } private get canShowNewPage(): boolean { if (!this.survey || this.creator.pageEditMode === "single" || !this.creator.allowModifyPages) return false; return true; @@ -265,6 +270,9 @@ export class TabDesignerViewModel extends Base { } this.checkNewPage(updatePageController); } + if(propName === "firstPageIsStartPage") { + this.checkNewPage(true); + } this.isUpdatingNewPage = false; } private calculateDesignerCss() { @@ -319,7 +327,7 @@ export class TabDesignerViewModel extends Base { } if (updatePageController) { if (this.newPage) { - this.newPage.num = this.survey.pages.length + 1; + this.newPage.num = this.getNewPageNum(); this.newPage.startLoadingFromJson(); this.newPage.name = SurveyHelper.getNewPageName(this.survey.pages); this.newPage.endLoadingFromJson(); diff --git a/packages/survey-creator-core/tests/tabs/designer.test.ts b/packages/survey-creator-core/tests/tabs/designer.test.ts index 5eccb0bd42..0356b89184 100644 --- a/packages/survey-creator-core/tests/tabs/designer.test.ts +++ b/packages/survey-creator-core/tests/tabs/designer.test.ts @@ -133,8 +133,14 @@ test("StringEditorViewModelBase page title placeholder for started page", () => expect(editor.placeholderValue).toBeUndefined(); expect(editor.placeholder).toBe("Start Page"); expect(editor.placeholderValue).toBe("Start Page"); + const desigerTab = creator.getPlugin("designer").model as TabDesignerViewModel; + const adorderPageGhost = new PageAdorner(creator, desigerTab.newPage); + adorderPageGhost.isGhost = true; + const editorGhost: StringEditorViewModelBase = new StringEditorViewModelBase(desigerTab.newPage.locTitle, null); + expect(editorGhost.placeholder).toBe("Page 2"); survey.firstPageIsStartPage = false; expect(editor.placeholder).toBe("Page 1"); + expect(editorGhost.placeholder).toBe("Page 3"); }); test("Logo css", () => {