fastlion-amis
Version:
一种MIS页面生成工具
220 lines (219 loc) • 6.42 kB
TypeScript
import React from 'react';
import { FormControlProps, FormBaseControl } from './Item';
import { RendererData, Action } from '../../types';
import { SimpleMap } from '../../utils/SimpleMap';
import { TableSchema } from '../Table';
import { SchemaApi } from '../../Schema';
import { IScopedContext } from '../../Scoped';
import { ActionSchema } from '../Action';
import { SchemaNode } from '../../types';
import { ICRUDStore } from '../../store/crud';
export interface TableControlSchema extends FormBaseControl, Omit<TableSchema, 'type'> {
type: 'input-table-mobile';
/**
* 可新增
*/
addable?: boolean;
/**
* 可复制新增
*/
copyable?: boolean;
/**
* 复制按钮文字
*/
copyBtnLabel?: string;
/**
* 复制按钮图标
*/
copyBtnIcon?: string;
/**
* 是否显示复制按钮
*/
copyAddBtn?: boolean;
/**
* 是否可以拖拽排序
*/
draggable?: boolean;
/**
* 新增 API
*/
addApi?: SchemaApi;
/**
* 新增按钮文字
*/
addBtnLabel?: string;
/**
* 新增按钮图标
*/
addBtnIcon?: string;
/**
* 显示新增按钮
*/
showAddBtn?: boolean;
/**
* 可否删除
*/
removable?: boolean;
/**
* 删除的 API
*/
deleteApi?: SchemaApi;
/**
* 可否编辑
*/
editable?: boolean;
/**
* 更新按钮名称
*/
editBtnLabel?: string;
/**
* 更新按钮图标
*/
editBtnIcon?: string;
/**
* 确认按钮文字
*/
confirmBtnLabel?: string;
/**
* 确认按钮图标
*/
confirmBtnIcon?: string;
/**
* 取消按钮文字
*/
cancelBtnLabel?: string;
/**
* 取消按钮图标
*/
cancelBtnIcon?: string;
/**
* 删除按钮文字
*/
deleteBtnLabel?: string;
/**
* 删除按钮图标
*/
deleteBtnIcon?: string;
/**
* 更新 API
*/
updateApi?: SchemaApi;
/**
* 初始值,新增的时候
*/
scaffold?: any;
/**
* 删除确认文字
*/
deleteConfirmText?: string;
/**
* 值字段
*/
valueField?: string;
/**
* 是否为确认的编辑模式。
*/
needConfirm?: boolean;
/**
* 是否可以访问父级数据,正常 combo 已经关联到数组成员,是不能访问父级数据的。
*/
canAccessSuperData?: boolean;
/**
* 是否显示序号
*/
showIndex?: boolean;
/**
* 分页个数,默认不分页
*/
perPage?: number;
/**
* 批量操作
*/
bulkActions?: Array<ActionSchema>;
/**
* 单条操作
*/
itemActions?: Array<ActionSchema>;
mobileLayout: 'vertical' | 'horizontal';
}
export interface TableProps extends FormControlProps, Omit<TableControlSchema, 'type' | 'className' | 'descriptionClassName' | 'inputClassName'> {
store: ICRUDStore;
onInputTableChange: (value: any, name: string) => void;
name: string;
}
export interface TableState {
items: Array<any>;
raw?: any;
columns: Array<any>;
editIndex: number;
isCreateMode?: boolean;
page?: number;
operationType: 'add' | 'edit' | 'delete' | undefined;
insertItems: Array<any>;
updateItems: Array<any>;
deleteItems: Array<any>;
hasClickedToolbar?: boolean;
editStatus: boolean;
[key: string]: any;
}
export default class FormTable extends React.Component<TableProps, TableState> {
static defaultProps: {
placeholder: string;
scaffold: {};
addBtnIcon: string;
copyBtnIcon: string;
editBtnIcon: string;
deleteBtnIcon: string;
confirmBtnIcon: string;
cancelBtnIcon: string;
valueField: string;
mobileLayout: string;
};
static propsList: Array<string>;
entries: SimpleMap<any, number>;
entityId: number;
subForms: any;
rowPrinstine: Array<any>;
editting: any;
constructor(props: TableProps);
componentDidMount(): void;
componentDidUpdate(prevProps: TableProps, prevState: TableState): void;
componentWillUnmount(): void;
subFormRef(form: any, x: number, y: number): void;
startRowEdit(val?: boolean): void;
validate(): Promise<string | void>;
emitValue(): void;
doAction(action: Action, ctx: RendererData, ...rest: Array<any>): Promise<any>;
copyItem(index: number): void;
arrangeData(temp?: any[]): any;
addItem(index: number): void;
startEdit(index: number, isCreate?: boolean): void;
confirmEdit(): Promise<void>;
cancelEdit(): void;
removeItem(index: number): Promise<void>;
buildItemProps(item: any, index: number): {
quickEditEnabled: boolean;
} | null;
buildColumns(props: TableProps, isCreateMode?: boolean): Array<any>;
columnToQuickEdit(column: any): any;
handleInputChange(items?: any[]): void;
handleStoreChange(items: any[]): void;
handleTableSave(rows: Array<object> | object, diff: Array<object> | object, rowIndexes: Array<string> | string): void;
items: any[];
editing: boolean;
handleTableBatchEdit(values: any): void;
handleSaveTableOrder(moved: Array<object>, rows: Array<object>): void;
handlePageChange(page: number): void;
removeEntry(entry: any): void;
getEntryId(entry: any): string;
renderStatistics(): JSX.Element | null;
renderFilterToggler(): JSX.Element | null;
renderExportCSV(): JSX.Element;
renderToolbar(toolbar?: SchemaNode, index?: number, childProps?: any, toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode): {} | null;
renderHeaderToolbar(childProps: any, toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode): {} | null;
renderFooterToolbar(childProps: any, toolbarRenderer?: (toolbar: SchemaNode, index: number) => React.ReactNode): {} | null;
handleAction(e: React.UIEvent<any> | undefined, action: Action, ctx: any, throwErrors?: boolean, delegate?: IScopedContext): any;
render(): JSX.Element | null;
}
export declare class FormTableRenderer extends FormTable {
}