import React, { ReactNode } from 'react'; import { TableSize, ColumnProps as AntColumnProps, TableRowSelection, TableEventListeners, PaginationConfig, SorterResult, TableCurrentDataSource } from 'asp-antd-compatible/lib/table/interface'; import { WrappedFormUtils, ValidationRule, FormComponentProps } from 'asp-antd-compatible/lib/form/Form'; import './style/index.less'; export declare type TableContextProps = { form?: WrappedFormUtils; table?: Table; dropdownMenu?: any; }; export declare const TableContext: React.Context>; export interface ColumnProps extends AntColumnProps { isEditing?: boolean | Function; inputType?: JSX.Element | Function; rules?: ValidationRule[]; inputModal?: 'click' | 'display'; aliasDataIndex?: string; inputWidth?: number; children?: ColumnProps[]; } /** * 默认文案设置 */ export declare type TableLocale = { editText?: string; deleteText?: string; }; interface Props extends FormComponentProps { /** * 列的信息,以下是一些约定的dataIndex的信息 * * $operating 用来修改数据的默认操作列(包含编辑和删除的列信息) * $operating#edit 只显示编辑按钮的列 * $operating#del 只显示删除的列 * $state 当前编辑状态 * $index 序号 */ columns: ColumnProps[]; bordered?: boolean; /** * 是否在第一次自动装载数据,默认为true装载 */ isAutoLoadData?: boolean; /** * 表格显示大小 */ theme?: TableSize; /** * 是否是虚拟表格 */ virtual?: boolean; /** * 默认页面显示大小,默认为300条 */ defaultPageSize?: number; /** * 用户默认参数 */ defaultParam?: any; /** * 默认导出的文件名称 */ defaultExportFileName?: string; /** * 表格高度 */ height?: string | number; /** * 表格的宽度 */ width?: string | number; /** * 数据中默认的key,默认字段为id */ rowKey?: string; /** * 是否可以选中行,默认为不显示选择框 */ rowSelection?: 'single' | 'multiple' | undefined; /** * 选中的key */ rowSelectedKeys?: string[]; /** * 当前key绑定的名称 */ rowSelectedKeyName?: string; editingType?: 'cell' | 'row' | 'none'; locale?: TableLocale; expandIconColumnIndex?: number; style?: React.CSSProperties; refExt?: Function | any; pageSizeOptions?: string[]; onChange?: (pagination: PaginationConfig, filters: Partial>, sorter: SorterResult, extra: TableCurrentDataSource) => void; /** * 当前表格的选择状态 * @param changeRowsKeys 当前所有变化的Row的key * @param changeRows 当前选中的行数据 * @param selected 变化状态true表示选中,false表示取消 */ onSelect?: (changeRowsKeys: string[], changeRows: T[], selected: boolean) => boolean | undefined; /** * 当前行的事件 * @param record 当前行的数据 * @param index 当前行的索引 */ onRow?: (record: T, index: number) => TableEventListeners; /** * 保存数据,对row编辑模式,点击保存即可触发,cell编辑模式下onSave会在点击下一个单元格的时候触发 * @param record 要操作的数据 * @param type 当前数据变更的类型,删除更新和创建 * @returns 如果成功则返回true,否则返回false */ onSave?: (record: T, type: 'DELETE' | 'UPDATE' | 'CREATE') => Promise; /** * 在渲染约定的特殊列之前所做的操作 * @param record 当前列的数据信息 * @param column 当前的列的信息 * @param render 当前数据渲染的react的节点数据 * @returns 返回一个react组件对象 */ onBeforeRenderPromiseColumn?: (record: T, column: ColumnProps, render: JSX.Element) => JSX.Element; /** * 在调用特殊约定的列的时候触发的click事件 * @param record 当前列的数据信息 * @param column 当前的列的信息 * @returns 返回一个true/false对象,true表示执行默认逻辑,false表示不执行默认逻辑 */ onBeforeClickPromiseColumn?: (type: 'EDIT' | 'DELETE' | 'SAVE' | 'CANCEL', record: T) => Promise; /** * 表格渲染的行事件 * @param rowIndex 当前渲染的行号 * @param record 当前行渲染的数据 * @returns 返回一个css样式进行装饰 */ onRenderBodyRowCssStyle?: (rowIndex: number, record: T) => React.CSSProperties; /** * 表格渲染选择框 */ onRenderCheckboxProps?: (record: T) => Object; /** * 头部渲染的事件 * @param rowIndex 当前渲染的行号 * @param record 当前行渲染的数据 * @returns 返回一个css样式进行装饰 */ onRenderHeaderRowCssStyle?: () => React.CSSProperties; /** * 拖动表格行触发的事件 * @param 源数据 * @param 目标数据 */ onDragRow?: (source: T, targe: T) => Promise; /** * 渲染下拉框的时候触发的事件 */ onRenderDropdownMenu?: () => JSX.Element; /** * 装载子节点数据 * @param record 当前展开的节点数据 */ onLoadChildren?: (record: T) => Promise; /** * 拦截渲染的Tooltip */ onRenderTooltip?: (tooltip: JSX.Element, props: any, td: ReactNode) => JSX.Element; expandedRowKeys?: string[]; expandedRowRender?: (record: T, index: number, indent: number, expanded: boolean) => React.ReactNode; onExpand?: (expanded: boolean, record: T) => void; /** * 装载数据的方法 * @param page 当前第几页信息 * @param pageSize 当前页面的大小 * @param param 当前请求数据的参数 * @param sorter 当前数据查询的参数 */ loadData({ page, pageSize, param, sorter }: { page: number; pageSize: number; param?: any; sorter?: TableSorter; }): Promise<{ dataSource: T[]; total: number; }>; } declare class DataSourceState { update: Array; delete: Array; create: Array; } declare type State = { dataSource: T[]; total: number; loading: boolean; page: number; pageSize: number; sorter?: TableSorter; editingKey?: string; disabledCheck: boolean; rowSelectedKeys: string[]; columns?: ColumnProps[]; }; export declare type TableSorter = { name: string; order: string; }; /** * 和后台交互的表格对象,并且可编辑 */ declare class Table extends React.Component, State> { static defaultProps: { theme: string; defaultPageSize: number; width: string; height: number; rowKey: string; editingType: string; isAutoLoadData: boolean; defaultParam: {}; defaultExportFileName: string; rowSelectedKeys: never[]; bordered: boolean; virtual: boolean; pageSizeOptions: string[]; inputModal: string; onSelect: () => boolean; onRow: () => void; onSave: () => Promise; onBeforeClickPromiseColumn: () => Promise; onBeforeRenderPromiseColumn: (_record: any, _column: any, render: JSX.Element) => JSX.Element; onRenderBodyRowCssStyle: () => {}; onRenderHeaderRowCssStyle: () => {}; onRenderDropdownMenu: () => JSX.Element; onRenderTooltip: (render: JSX.Element) => JSX.Element; }; blankDivElement: React.RefObject; state: { dataSource: never[]; total: number; loading: boolean; page: number; pageSize: number; sorter: undefined; editingKey: undefined; disabledCheck: boolean; rowSelectedKeys: never[]; columns: never[]; }; private table; private REQUEST_PARAM; private dataSourceState; private backupDataSource; private currentEditorCell; constructor(props: Props); componentDidMount(): void; componentDidUpdate(): void; /** * 修改暂存,取消当前所有的修改状态 */ editStash(): void; editStatus(): boolean; restore(): void; /** * * 修改当前行的数据 * * @param id 当前行的唯一ID * @param value 要修改的数据 */ updateRow(id: string, value: any): void; exchangeRow(source: T, targe: T): void; /** * 获取当前表格的编辑状态 * @returns DataSourceState */ getDataSourceState(): DataSourceState; /** * 设置选中的key * @param rowSelectedKeys 表格选中的key */ setRowSelectedKeys(rowSelectedKeys: string[]): void; /** * 用来进行表格的数据刷新,如果参数为空,则是使用上一次的参数进行数据请求 * @param param 刷新表格的参数 * @param isCurrentPage 是否在当前页,进行重新装载数据 */ reload(param?: any, isCurrentPage?: boolean): void; editHide(): Promise; /** * 获取当前选择的数据 */ getSelectRowKeys(): never[]; delRow(id: any | any[]): void; /** * 新增一条数据 * @param 添加的数据 */ appendRow(data: T | T[], displayEditor?: boolean): void; exportData(type: 'xls'): void; /** * 获取当前表格数据的数据源 */ getDataSource(): T[]; render(): JSX.Element; /** * 验证ID数据是否正确 */ protected verifyAppendRowKey(data: any): void; protected recursiveDataSource(dataSource: any[], callbackfn: (data: any) => any): any[]; /** * 判断当前行的数据是否可以编辑 * @param record 当前行的数据 * @returns true表示可编辑 false表示不可编辑 */ protected isEditing(record: T): boolean; protected getColumnState(column: ColumnProps): void; protected getColumnOperatingRender(editor: JSX.Element, record: any): JSX.Element; protected getEditorRowIndex(): number | undefined; protected getColumnOperatingEdit(column: ColumnProps): void; protected getColumnOperatingDel(column: ColumnProps): void; protected getColumnOperating(column: ColumnProps): void; protected getColumnDelElement(record: T): JSX.Element; protected getColumnEditElement(record: T): JSX.Element; protected getColumnIndex(column: ColumnProps): void; /** * 获得当前列的信息 */ protected getColumns(): ColumnProps[]; protected updateDataSource(values: T): void; /** * 滚动到最底部 */ protected toScrollBottom(): void; /** * 向后台请求数据 * @param page 当前页面 * @param pageSize 当前页面显示的数据条数 */ protected requestLoadData({ page, pageSize, param, sorter }: { page: number; pageSize: number; param?: any; sorter?: TableSorter; }): void; protected onSelect(changeRowsKeys: string[], changeRows: T[], selected: boolean): boolean | undefined; protected getRowSelection(): TableRowSelection | undefined; protected getDropdownMenu(): JSX.Element; } declare const _default: import("asp-antd-compatible/lib/form/interface").ConnectedComponentClass, Pick, "style" | "onDragRow" | "editingType" | "onSave" | "onRenderTooltip" | "rowSelection" | "columns" | "rowKey" | "expandedRowRender" | "expandedRowKeys" | "expandIconColumnIndex" | "onExpand" | "onChange" | "locale" | "onRow" | "bordered" | "onSelect" | "isAutoLoadData" | "theme" | "virtual" | "defaultPageSize" | "defaultParam" | "defaultExportFileName" | "height" | "width" | "rowSelectedKeys" | "rowSelectedKeyName" | "refExt" | "pageSizeOptions" | "onBeforeRenderPromiseColumn" | "onBeforeClickPromiseColumn" | "onRenderBodyRowCssStyle" | "onRenderCheckboxProps" | "onRenderHeaderRowCssStyle" | "onRenderDropdownMenu" | "onLoadChildren" | "loadData" | "wrappedComponentRef">>; export default _default;