fastlion-amis
Version:
一种MIS页面生成工具
286 lines (285 loc) • 8.32 kB
TypeScript
import React from 'react';
import { RendererProps } from '../factory';
import { SchemaNode, Action } from '../types';
import { IListStore, IItem } from '../store/list';
import { SchemaQuickEdit } from './QuickEdit';
import { SchemaPopOver } from './PopOver';
import Sortable from 'sortablejs';
import { TableCell } from './Table';
import { SchemaCopyable } from './Copyable';
import { BaseSchema, SchemaClassName, SchemaCollection, SchemaExpression, SchemaObject, SchemaTokenizeableString, SchemaTpl, SchemaUrlPath } from '../Schema';
import { ActionSchema } from './Action';
import { SchemaRemark } from './Remark';
/**
* 不指定类型默认就是文本
*/
export declare type ListBodyFieldObject = {
/**
* 列标题
*/
label?: string;
/**
* label 类名
*/
labelClassName?: SchemaClassName;
/**
* 绑定字段名
*/
name?: string;
/**
* 配置查看详情功能
*/
popOver?: SchemaPopOver;
/**
* 配置快速编辑功能
*/
quickEdit?: SchemaQuickEdit;
/**
* 配置点击复制功能
*/
copyable?: SchemaCopyable;
};
export declare type ListBodyField = SchemaObject & ListBodyFieldObject;
export interface ListItemSchema extends Omit<BaseSchema, 'type'> {
actions?: Array<ActionSchema>;
/**
* 操作位置,默认在右侧,可以设置成左侧。
*/
actionsPosition?: 'left' | 'right';
/**
* 图片地址
*/
avatar?: SchemaUrlPath;
/**
* 内容区域
*/
body?: Array<ListBodyField | ListBodyFieldObject>;
/**
* 描述
*/
desc?: SchemaTpl;
/**
* tooltip 说明
*/
remark?: SchemaRemark;
/**
* 标题
*/
title?: SchemaTpl;
/**
* 副标题
*/
subTitle?: SchemaTpl;
/**
* 标签
*/
tags?: string;
/**
* 图标
*/
icon?: string;
/**
* 超过num个折叠按钮
*/
num?: number;
/**
* 行的底部展示
*/
footable?: boolean | {
expand: "all";
};
footBody?: {
name: string;
label: string;
type: string;
body: any;
}[];
}
/**
* List 列表展示控件。
* 文档:https://baidu.gitee.io/amis/docs/components/card
*/
export interface ListSchema extends BaseSchema {
/**
* 指定为 List 列表展示控件。
*/
type: 'list' | 'static-list';
/**
* 标题
*/
title?: SchemaTpl;
statistic?: SchemaCollection;
/**
* 底部区域
*/
footer?: SchemaCollection;
/**
* 底部区域类名
*/
footerClassName?: SchemaClassName;
/**
* 顶部区域
*/
header?: SchemaCollection;
/**
* 顶部区域类名
*/
headerClassName?: SchemaClassName;
/**
* 单条数据展示内容配置
*/
listItem?: ListItemSchema;
/**
* 数据源: 绑定当前环境变量
*
* @default ${items}
*/
source?: SchemaTokenizeableString;
/**
* 是否显示底部
*/
showFooter?: boolean;
/**
* 是否显示头部
*/
showHeader?: boolean;
/**
* 无数据提示
*
* @default 暂无数据
*/
placeholder?: SchemaTpl;
/**
* 是否隐藏勾选框
*/
hideCheckToggler?: boolean;
/**
* 是否固顶
*/
affixHeader?: boolean;
/**
* 配置某项是否可以点选
*/
itemCheckableOn?: SchemaExpression;
/**
* 配置某项是否可拖拽排序,前提是要开启拖拽功能
*/
itemDraggableOn?: SchemaExpression;
/**
* 点击卡片的时候是否勾选卡片。
*/
checkOnItemClick?: boolean;
/**
* 可以用来作为值的字段
*/
valueField?: string;
/**
* 大小
*/
size?: 'sm' | 'base';
/**
* 点击列表项的行为
*/
itemAction?: ActionSchema;
}
export interface Column {
type: string;
[propName: string]: any;
}
export interface ListProps extends RendererProps, Omit<ListSchema, 'type' | 'className'> {
store: IListStore;
selectable?: boolean;
selected?: Array<any>;
draggable?: boolean;
onSelect: (selectedItems: Array<object>, unSelectedItems: Array<object>) => void;
onSave?: (items: Array<object> | object, diff: Array<object> | object, rowIndexes: Array<number> | number, unModifiedItems?: Array<object>, rowOrigins?: Array<object> | object, resetOnFailed?: boolean) => void;
onSaveOrder?: (moved: Array<object>, items: Array<object>) => void;
onQuery: (values: object) => void;
}
export default class List extends React.Component<ListProps, object> {
static propsList: Array<keyof ListProps>;
static defaultProps: Partial<ListProps>;
dragTip?: HTMLElement;
sortable?: Sortable;
parentNode?: any;
body?: any;
renderedToolbars: Array<string>;
constructor(props: ListProps);
static syncItems(store: IListStore, props: ListProps, prevProps?: ListProps): boolean;
componentDidMount(): void;
componentDidUpdate(prevProps: ListProps): void;
componentWillUnmount(): void;
bodyRef(ref: HTMLDivElement): void;
affixDetect(): void;
getPopOverContainer(): Element | Text | null;
handleAction(e: React.UIEvent<any>, action: Action, ctx: object): void;
handleCheck(item: IItem): void;
handleCheckAll(): void;
syncSelected(): void;
handleQuickChange(item: IItem, values: object, saveImmediately?: boolean | any, savePristine?: boolean, resetOnFailed?: boolean): void;
handleSave(): void;
handleSaveOrder(): void;
reset(): void;
bulkUpdate(value: object, items: Array<object>): void;
getSelected(): any[];
dragTipRef(ref: any): void;
initDragging(): void;
destroyDragging(): void;
renderActions(region: string): JSX.Element | null;
renderHeading(): JSX.Element | null;
renderHeader(): JSX.Element | JSX.Element[] | null;
renderFooter(): JSX.Element | JSX.Element[] | null;
renderStatistic(): JSX.Element | null;
renderCheckAll(): JSX.Element | null;
renderDragToggler(): JSX.Element | null;
renderToolbar(toolbar: SchemaNode, index: number): JSX.Element | null | undefined;
render(): JSX.Element;
}
export declare class ListRenderer extends List {
dragging: boolean;
selectable: boolean;
selected: boolean;
title?: string;
subTitle?: string;
desc?: string;
avatar?: string;
avatarClassName?: string;
body?: SchemaNode;
actions?: Array<Action>;
onCheck: (item: IItem) => void;
}
export interface ListItemProps extends RendererProps, Omit<ListItemSchema, 'type' | 'className'> {
hideCheckToggler?: boolean;
item: IItem;
itemIndex?: number;
checkable?: boolean;
checkOnItemClick?: boolean;
itemAction?: ActionSchema;
}
export declare class ListItem extends React.Component<ListItemProps> {
touchStartTime: number;
static defaultProps: Partial<ListItemProps>;
static propsList: Array<string>;
constructor(props: ListItemProps);
handleClick(e: React.MouseEvent<HTMLDivElement>): void;
handleCheck(): void;
handleAction(e: React.UIEvent<any>, action: Action, ctx: object): void;
handleQuickChange(values: object, saveImmediately?: boolean, savePristine?: boolean, resetOnFailed?: boolean): void;
renderLeft(): JSX.Element | null;
renderRight(): JSX.Element | null;
renderChild(node: SchemaNode, region?: string, key?: any): React.ReactNode;
itemRender(field: any, index: number, props: any): JSX.Element | null;
renderFeild(region: string, field: any, key: any, props: any): JSX.Element | null;
renderBody(): React.ReactNode;
render(): JSX.Element;
}
export declare class ListItemRenderer extends ListItem {
static propsList: string[];
}
export declare class ListItemFieldRenderer extends TableCell {
static defaultProps: {
wrapperComponent: string;
};
static propsList: string[];
render(): JSX.Element;
}