UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

121 lines (120 loc) 3.55 kB
import React from 'react'; import { RendererProps } from '../factory'; import { BaseSchema, SchemaApi, SchemaClassName, SchemaCollection } from '../Schema'; import { IScopedContext } from '../Scoped'; import { IAppStore } from '../store/app'; export interface AppPage { /** * 菜单文字 */ label?: string; /** * 菜单图标,比如: fa fa-file */ icon?: string; /** * 路由规则。比如:/banner/:id。当地址以 / 打头,则不继承上层的路径,否则将集成父级页面的路径。 */ url?: string; /** * 当match url 时跳转到目标地址.没有配置 schema 和 shcemaApi 时有效. */ redirect?: string; /** * 当match url 转成渲染目标地址的页面.没有配置 schema 和 shcemaApi 时有效. */ rewrite?: string; /** * 不要出现多个,如果出现多个只有第一个有用。在路由找不到的时候作为默认页面。 */ isDefaultPage?: boolean; /** * 二选一,如果配置了 url 一定要配置。否则不知道如何渲染。 */ schema?: any; schemaApi?: any; /** * 单纯的地址。可以设置外部链接。 */ link?: string; /** * 支持多层级。 */ children?: Array<AppPage>; /** * 菜单上的类名 */ className?: SchemaClassName; /** * 是否在导航中可见,适合于那种需要携带参数才显示的页面。比如具体某个数据的编辑页面。 */ visible?: boolean; } /** * App 渲染器,适合 JSSDK 用来做多页渲染。 * 文档:https://baidu.gitee.io/amis/docs/components/app */ export interface AppSchema extends BaseSchema { /** * 指定为 app 类型。 */ type: 'app'; api?: SchemaApi; /** * 系统名称 */ brandName?: string; /** * logo 图片地址,可以是 svg。 */ logo?: string; /** * 顶部区域 */ header?: SchemaCollection; /** * 边栏菜单前面的区域 */ asideBefore?: SchemaCollection; /** * 边栏菜单后面的区域 */ asideAfter?: SchemaCollection; /** * 页面集合。 */ pages?: Array<AppPage> | AppPage; /** * 底部区域。 */ footer?: SchemaCollection; /** * css 类名。 */ className?: SchemaClassName; } export interface AppProps extends RendererProps, Omit<AppSchema, 'type' | 'className'> { children?: JSX.Element | ((props?: any) => JSX.Element); store: IAppStore; } export default class App extends React.Component<AppProps, object> { static propsList: Array<string>; static defaultProps: {}; unWatchRouteChange?: () => void; constructor(props: AppProps); componentDidMount(): Promise<void>; componentDidUpdate(prevProps: AppProps): Promise<void>; componentWillUnmount(): void; reload(subpath?: any, query?: any, ctx?: any, silent?: boolean): Promise<void>; receive(values: object): void; handleNavClick(e: React.MouseEvent): void; renderHeader(): JSX.Element; renderAside(): JSX.Element; renderFooter(): JSX.Element | null; render(): JSX.Element; } export declare class AppRenderer extends App { static contextType: React.Context<IScopedContext>; constructor(props: AppProps, context: IScopedContext); componentWillUnmount(): void; }