import { RawData } from '../../util/typeUtil'; import { RouteLocation, Router } from 'vue-router'; import { FavoriteMenuHandler, FrameContext, Menu, MenuCaptionProvider, Page, PageInstance, PageTitleProvider, PageTitleRenderer } from '../FrameModel'; import { ShortcutKeyHandler } from '../ShortcutKeyHandler.ts'; import { MultiLangText } from '../../model/CommonTypes.ts'; export type DefaultFrameConfig = { router: Router; framePrefix: string; logoText: string; menus: Menu[]; extraPages: Page[]; firstPage?: Page; favoriteMenuHandler?: FavoriteMenuHandler; menuCaptionProvider?: MenuCaptionProvider; pageTitleProvider?: PageTitleProvider; pageTitleRenderer?: PageTitleRenderer; fixedMenu?: boolean; maxTabCount?: number; }; export declare class DefaultFrameContext implements FrameContext { config: DefaultFrameConfig; pageManager: PageManager; favoriteMenuHandler?: FavoriteMenuHandler; menuCaptionProvider?: MenuCaptionProvider; sidebarManager: SidebarManager; shortcutKeyHandler?: ShortcutKeyHandler; constructor(config: DefaultFrameConfig); getMenus(): Menu[]; syncCurrentPath(route: RouteLocation): Promise; closeActivePage(): Promise; getPageByRoute(route: RouteLocation): PageInstance | undefined; setPageTitle(route: RouteLocation, title?: MultiLangText): void; setPageSubtitle(route: RouteLocation, subtitle?: string): void; /** * pagePath 에 해당하는 화면 URL 로 이동한다. * @param pagePath ex: 'GeneralProductDetail', 'GeneralProductDetail/UZN0001' */ openPagePath(pagePath: string): Promise; /** * pagePath 에 해당하는 화면 URL 을 리턴한다. * 예를 들어 router-link 에서 사용할 수 있다. * ``` * Link * ``` * @param pagePath ex: 'GeneralProductDetail', 'GeneralProductDetail/UZN0001' */ pageLink(pagePath: string): string; /** * FavoriteMenuHandler 를 등록하거나 제거한다. * @param handler */ setFavoriteMenuHandler(handler?: FavoriteMenuHandler): void; clearStoredTabs(): void; enableShortcutKeyHandler(): ShortcutKeyHandler; private registerShortcutKeys; } export type DefaultFrameConfigParam = RawData; export declare const createDefaultFrameContext: (router: Router, config?: DefaultFrameConfigParam) => DefaultFrameContext; export declare const provideDefaultFrameContext: (router: Router, config?: DefaultFrameConfigParam) => DefaultFrameContext; export declare const useDefaultFrame: () => DefaultFrameContext; declare class PageManager { private context; private menus; private extraPages; private firstPage?; private maxTabCount?; openPages: PageInstance[]; pageMap: Map; tabStore: OpenTabsStore; constructor(context: DefaultFrameContext, menus: Menu[], extraPages: Page[], firstPage?: Page | undefined, maxTabCount?: number | undefined, framePrefix?: string); createPageInstance(pagePath: string): PageInstance | undefined; getPageByPath(pagePath: string): PageInstance | undefined; openPage(pagePath: string): Promise; openPageByIndex(index: number): Promise; openLeftPage(): Promise; openRightPage(): Promise; closePage(page: PageInstance): Promise; closeAllPages(): Promise; closePagesExcludes(excludePages: PageInstance[]): Promise; getActivePage(): PageInstance | undefined; isClosable(page: PageInstance): boolean; private isFirstPagePath; private doCreatePageInstance; private collectPages; private setActivePage; private storePageScrollPosition; private restorePageScrollPosition; private loadStoredTabs; } type OpenTabs = { baseUrl?: string; tabs: Partial[]; }; declare class OpenTabsStore { private pages; private framePrefix?; constructor(pages: PageInstance[], framePrefix?: string | undefined); storeOpenTabs(): void; getStoredTabs(): OpenTabs | undefined; clear(): void; private makeKey; private serializeTabs; } declare class SidebarManager { fixedMenu: import('vue').Ref; constructor(fixedMenu: boolean); } export {};