/** * 主要布局文件, 不需要单独修改, 以后统一修改 */ import React from 'react'; import { VersionCheckerProps } from 'version-helper'; import { Color } from 'ukelli-ui/core/utils/props'; import { RouterHelper } from './router-multiple'; import { StatusbarConfigItem } from './plugins/statusbar'; import { NavMenuProps } from './nav-menu/nav-menu'; export interface ScaffoldLayoutProps { /** 用户名,用于在左菜单显示 */ username: string; /** 用户登录后的信息,会传递给每一个页面 */ userInfo?: {}; /** 版本号文件的路径 */ versionUrl?: string; /** 国际化文件存放目录的路径 */ i18nMapperUrl?: string; /** 退出登录 */ logout?: () => void; /** 导航栏的配置 */ statusbarConfig?: StatusbarConfigItem[]; /** 插件管理 */ pluginComponent?: { /** 顶部状态栏插件 */ Statusbar?: any; /** DashBoard 插件 */ DashBoard?: any; /** 404 页面插件 */ NotfoundPage?: any; /** Footer 插件 */ Footer?: any; }; /** 默认主题 */ defaultTheme?: Color; /** 默认布局方式 */ defaultLayout?: 'vertical' | 'horizontal'; /** 是否黑夜模式 */ defaultDarkMode?: boolean; /** 所有的页面的 mapper 引用 */ pageComponents?: {}; /** 传给所有页面的 props */ pageProps?: React.Props<{}>; /** 国际化配置 */ i18nConfig?: {}; /** 国际化 Mapper */ i18nMapper?: {}; /** 最大存在的 tab 路由 */ maxRouters?: number; /** 顶级 tab 是否在 statusbar 中 */ tabInStatusbar?: boolean; /** 是否缓存 state */ cacheState?: boolean; /** 背景 */ bgStyle?: React.CSSProperties; /** 所有菜单的配置 */ menuStore?: {}[]; /** 菜单的字段映射 */ menuMappers?: NavMenuProps['menuMappers']; title?: NavMenuProps['title']; versionInfo?: VersionCheckerProps['versionInfo']; } export default class ScaffoldLayout extends RouterHelper { static setI18nUrl: (nextUrl: any) => void; static defaultProps: { bgStyle: {}; maxRouters: number; defaultTheme: string; defaultLayout: string; versionUrl: string; i18nMapperUrl: string; menuMappers: { child: string; code: string; title: string; icon: string; pureIcon: string; }; defaultDarkMode: boolean; statusbarConfig: never[]; tabInStatusbar: boolean; cacheState: boolean; }; constructor(props: any); initThemeConfig: () => { theme: "theme" | "white" | "red" | "orange" | "yellow" | "blue" | "green" | "purple" | "black" | "grey" | "primary" | "default" | "important" | "danger" | "success" | "error" | "warn" | undefined; darkMode: boolean | undefined; layout: "vertical" | "horizontal" | undefined; } & { theme: string; layout: string; darkMode: boolean; }; geti18nUrl: (lang: any) => string | null; initApp(): Promise; changeLang: (lang: any) => Promise; setUILang: (lang: any) => void; changeTheme: (nextTheme: any) => void; changeDarkMode: (nextDarkMode: any) => void; changeLayout: (nextLayout: any) => void; fetchLangMapper: (lang: any) => Promise; $T: (key: any) => any; triggerResize: () => void; componentDidMount(): void; componentWillUnmount(): void; handleCloseFormShortcut: () => void; toggleFloat: () => void; changeMenuData(menuData?: never[]): void; onGetMenuCodeMapper: (menuCodeMapper: any) => void; toggleNavMenu: (showNavMenu: any) => void; getRouteProps(isActive: any, pageName: any): { userInfo: {} | undefined; username: string; isActive: any; pageName: any; $T: (key: any) => any; onNavigate: (config: any) => void; history: any; } | { userInfo: {} | undefined; username: string; isActive: any; pageName: any; $T: (key: any) => any; onNavigate: (config: any) => void; history: any; children?: React.ReactNode; key?: string | number | undefined; ref?: string | ((instance: {} | null) => void) | React.RefObject<{}> | null | undefined; }; loadPlugin: (Plugin: any, props: any) => any; statusbarConfigFilter: () => ({ component: JSX.Element; } | { icon: string; action: () => void; })[]; getI18nConfig: () => { component: JSX.Element; }; getSystemInfoConfig: () => { icon: string; action: () => void; }; renderSystemInfo: () => void; render(): JSX.Element; }