From b9fe69f1d6bc214af93753dffc55f8b5a4813354 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Wed, 20 Mar 2024 00:21:02 +0400 Subject: [PATCH] Added ability to preselect page on project load. Closes #5463 --- src/canvas/model/Canvas.ts | 2 +- src/pages/index.ts | 6 +++++- src/pages/types.ts | 11 ++++++++++- test/specs/pages/index.ts | 23 +++++++++++++++++++---- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/canvas/model/Canvas.ts b/src/canvas/model/Canvas.ts index 0e0cbf061..85a85c393 100644 --- a/src/canvas/model/Canvas.ts +++ b/src/canvas/model/Canvas.ts @@ -42,7 +42,7 @@ export default class Canvas extends ModuleModel { init() { const { em } = this; - const mainPage = em.Pages.getMain(); + const mainPage = em.Pages._initPage(); this.set('frames', mainPage.getFrames()); this.updateDevice({ frame: mainPage.getMainFrame() }); } diff --git a/src/pages/index.ts b/src/pages/index.ts index ae81a182e..e674e5dbb 100644 --- a/src/pages/index.ts +++ b/src/pages/index.ts @@ -93,7 +93,7 @@ export default class PageManager extends ItemManagerModule new Page(page, { em, config })) || []; pages.add(configPages, opt); - const mainPage = !pages.length ? this.add({ type: typeMain }, opt) : this.getMain(); + const mainPage = !pages.length ? this.add({ type: typeMain }, opt) : this._initPage(); mainPage && this.select(mainPage, opt); } @@ -242,6 +242,10 @@ export default class PageManager extends ItemManagerModule { let editor: Editor; @@ -70,7 +71,7 @@ describe('Pages', () => { let idComp2 = 'comp2'; let comp1: ComponentDefinition; let comp2: ComponentDefinition; - let initPages; + let initPages: PageProperties[]; let allbyId: ReturnType; const createCompDef = (id: string): ComponentDefinition => ({ @@ -116,8 +117,8 @@ describe('Pages', () => { }, }); em = editor.getModel(); - domc = em.get('DomComponents'); - pm = em.get('PageManager'); + domc = em.Components; + pm = em.Pages; pm.onLoad(); allbyId = domc.allById(); initCmpLen = Object.keys(allbyId).length; @@ -145,7 +146,21 @@ describe('Pages', () => { // Number of wrappers (eg. 3) where each one containes 1 component and 1 textnode (3 * 3) expect(initCmpLen).toBe(initPages.length * 3); // Each page contains 1 rule per component - expect(em.get('CssComposer').getAll().length).toBe(initPages.length); + expect(em.Css.getAll().length).toBe(initPages.length); + }); + + test('Change initial selected page', () => { + const selected = 'page-3'; + editor = new Editor({ + pageManager: { + pages: initPages, + selected, + }, + }); + pm = editor.getModel().Pages; + pm.onLoad(); + pm.getSelected(); + expect(pm.getSelected()?.id).toBe(selected); }); }); });