fastlion-amis
Version:
一种MIS页面生成工具
208 lines (207 loc) • 6.27 kB
TypeScript
import React from 'react';
import { RendererProps } from '../factory';
import { IServiceStore } from '../store/service';
import { Action, Location } from '../types';
import { IScopedContext } from '../Scoped';
import { BaseSchema, SchemaCollection, SchemaClassName, SchemaDefaultData, SchemaApi, SchemaExpression, SchemaName, SchemaMessage } from '../Schema';
import { SchemaRemark } from './Remark';
/**
* 样式属性名及值
*/
interface Declaration {
[property: string]: string;
}
/**
* css 定义
*/
interface CSSRule {
[selector: string]: Declaration;
}
/**
* amis Page 渲染器。详情请见:https://baidu.gitee.io/amis/docs/components/page
*/
export interface PageSchema extends BaseSchema {
/**
* 指定为 page 渲染器。
*/
type: 'page';
/**
* 页面标题
*/
title?: string;
/**
* 页面副标题
*/
subTitle?: string;
/**
* 页面描述, 标题旁边会出现个小图标,放上去会显示这个属性配置的内容。
*/
remark?: SchemaRemark;
/**
* 内容区域
*/
body?: SchemaCollection;
/**
* 内容区 css 类名
*/
bodyClassName?: SchemaClassName;
/**
* 边栏区域
*/
aside?: SchemaCollection;
/**
* 边栏是否允许拖动
*/
asideResizor?: boolean;
/**
* 边栏最小宽度
*/
asideMinWidth?: number;
/**
* 边栏最小宽度
*/
asideMaxWidth?: number;
/**
* 边栏区 css 类名
*/
asideClassName?: SchemaClassName;
/**
* 配置容器 className
*/
className?: SchemaClassName;
/**
* 自定义页面级别样式表
*/
css?: CSSRule;
/**
* 移动端下的样式表
*/
mobileCSS?: CSSRule;
/**
* 页面级别的初始数据
*/
data?: SchemaDefaultData;
/**
* 配置 header 容器 className
*/
headerClassName?: SchemaClassName;
/**
* 页面初始化的时候,可以设置一个 API 让其取拉取,发送数据会携带当前 data 数据(包含地址栏参数),获取得数据会合并到 data 中,供组件内使用。
*/
initApi?: SchemaApi;
/**
* 是否默认就拉取?
*/
initFetch?: boolean;
/**
* 是否默认就拉取表达式
*/
initFetchOn?: SchemaExpression;
messages?: SchemaMessage;
name?: SchemaName;
/**
* 页面顶部区域,当存在 title 时在右上角显示。
*/
toolbar?: SchemaCollection;
/**
* 配置 toolbar 容器 className
*/
toolbarClassName?: SchemaClassName;
definitions?: any;
/**
* 配置轮询间隔,配置后 initApi 将轮询加载。
*/
interval?: number;
/**
* 是否要静默加载,也就是说不显示进度
*/
silentPolling?: boolean;
/**
* 配置停止轮询的条件。
*/
stopAutoRefreshWhen?: SchemaExpression;
/**
* 是否显示错误信息,默认是显示的。
*/
showErrorMsg?: boolean;
/**
* css 变量
*/
cssVars?: any;
/**
* 默认不设置自动感觉内容来决定要不要展示这些区域
* 如果配置了,以配置为主。
*/
regions?: Array<'aside' | 'body' | 'toolbar' | 'header'>;
/**
* 自定义样式
*/
style?: {
[propName: string]: any;
};
}
export interface PageProps extends RendererProps, Omit<PageSchema, 'type' | 'className'> {
data: any;
store: IServiceStore;
location?: Location;
}
export default class Page extends React.Component<PageProps> {
timer: ReturnType<typeof setTimeout>;
mounted: boolean;
style: HTMLStyleElement;
varStyle: HTMLStyleElement;
startX: number;
startWidth: number;
codeWrap: HTMLElement;
static defaultProps: {
asideClassName: string;
bodyClassName: string;
headerClassName: string;
initFetch: boolean;
toolbarClassName: string;
messages: {};
};
static propsList: Array<keyof PageProps>;
constructor(props: PageProps);
/**
* 构建 css
*/
updateStyle(): void;
buildCSS(cssRules?: CSSRule): string;
/**
* 构建用于 css 变量的内联样式
*/
updateVarStyle(): void;
componentDidMount(): void;
componentDidUpdate(prevProps: PageProps): void;
componentWillUnmount(): void;
reloadTarget(target: string, data?: any): void;
handleAction(e: React.UIEvent<any> | void, action: Action, ctx: object, throwErrors?: boolean, delegate?: IScopedContext): any;
handleQuery(query: any): void;
handleDialogConfirm(values: object[], action: Action, ...args: Array<any>): void;
handleDialogClose(confirmed?: boolean): void;
handleDrawerConfirm(values: object[], action: Action, ...args: Array<any>): void;
handleDrawerClose(): void;
handleClick(e: any): void;
handleResizeMouseDown(e: React.MouseEvent): void;
handleResizeMouseMove(e: MouseEvent): void;
handleResizeMouseUp(): void;
openFeedback(dialog: any, ctx: any): Promise<unknown>;
reload(subpath?: any, query?: any, ctx?: any, silent?: boolean): void;
receive(values: object): void;
silentReload(target?: string, query?: any): void;
initInterval(value: any): any;
handleChange(value: any, name: string, submit?: boolean, changePristine?: boolean): void;
renderHeader(): JSX.Element | undefined;
render(): JSX.Element;
}
export declare class PageRenderer extends Page {
static contextType: React.Context<IScopedContext>;
constructor(props: PageProps, context: IScopedContext);
componentWillUnmount(): void;
reloadTarget(target: string, data?: any): void;
handleAction(e: React.UIEvent<any>, action: Action, ctx: object, throwErrors?: boolean, delegate?: IScopedContext): void;
handleDialogConfirm(values: object[], action: Action, ...rest: Array<any>): void;
handleDrawerConfirm(values: object[], action: Action, ...rest: Array<any>): void;
}
export {};