@antdp/basic-layouts
Version:
83 lines (82 loc) • 2.95 kB
TypeScript
import { ItemType } from 'antd/lib/menu/hooks/useItems';
import React from 'react';
import { IntlShape } from 'react-intl/lib/src/types';
import { HandleMenuProps, RouterMenu, LayoutModel } from './interface';
/**
*
* 1. 对路由权限进行判定
* 2. 保存每个子集对应的父级
* 3. 父级链
*/
export declare class HandleMenu {
authMenus: any[];
/**所有直接渲染的父级菜单*/
parentMenu: RouterMenu[];
parentflatMenu: RouterMenu[];
/**子集key对应的父级key*/
childParent: Map<string, string>;
/**key对应子集数据*/
childMenu: Map<string, RouterMenu[]>;
flatMenu: RouterMenu[];
flatAllMenu: RouterMenu[];
/**语言转换*/
intlLanguage?: IntlShape;
/**路由数据*/
routers: RouterMenu[];
/**处理权限后的菜单**/
checkAuthMenus: RouterMenu[];
/**当前菜单对应的父级菜单*/
pathToParentMenus: Map<string, RouterMenu[]>;
/**是否进行权限校验*/
isCheckAuth?: boolean;
/**是否使用*/
isTOPLEFT?: boolean;
/**记录上次父级菜单*/
preParentPath?: string;
/**记录上次菜单*/
prePath?: string;
constructor(props: HandleMenuProps);
/**验证权限*/
checkAuth(path: string): boolean;
/**
* 1. 权限处理
* 1. 子集全部没权限,父级也没有权限
* 2. 子集存在权限,父级也存在权限
* 3. 没有权限的自动把 path 转换成 403
* */
initAuth(routers: RouterMenu[], isParent?: boolean): RouterMenu[];
/**
* 2. 国际化翻译
* */
initLanguage(menus?: RouterMenu[], parentLocale?: string): void;
/**
* 3. 扁平化数据
*/
initFlat(menus?: RouterMenu[], parentMenu?: RouterMenu[]): void;
/**
* 4. 处理数据,用于顶部和侧边菜单展示联动
* */
handelSiderMenu(menus?: RouterMenu[], isSider?: boolean, parentPath?: string): void;
/**
* 5. 获取顶部渲染数据
* */
getTopMenus(menus?: RouterMenu[], index?: number): RouterMenu[];
/**
* 6. 获取导航面包屑
* */
getBreadcrumb(path: string): RouterMenu[];
/**7. 根据当前路由地址取父级key,再使用父级key进行取渲染内容,如果不是顶部渲染方式,则直接默认*/
getSiderMenus(path: string): RouterMenu[];
/**8. 获取父级path*/
getParentPath(path: string): string;
getCheckAuthAll(path: string): boolean;
/**9. 获取跳转地址*/
getToPath(path: string): any;
/**10 更加path地址获取当前配置数据*/
getPathItem(path: string): RouterMenu | undefined;
}
export declare function isUrl(path: string): boolean;
export declare function getIcon(icon: string): React.JSX.Element;
/**获取菜单渲染**/
export declare const getSiderMenus: (menus?: RouterMenu[], isSider?: boolean) => ItemType[];
export declare const defaultThemeColors: (layout?: LayoutModel) => any;