71 lines
2.7 KiB
TypeScript
71 lines
2.7 KiB
TypeScript
import type { TableColumnType } from 'antd';
|
||
import type { LabelTooltipType } from 'antd/lib/form/FormItemLabel';
|
||
import React from 'react';
|
||
import type { ActionType, OptionSearchProps, ProTableProps } from '../../typing';
|
||
import type { ListToolBarProps } from '../ListToolBar';
|
||
export type SettingOptionType = {
|
||
draggable?: boolean;
|
||
checkable?: boolean;
|
||
showListItemOption?: boolean;
|
||
checkedReset?: boolean;
|
||
listsHeight?: number;
|
||
extra?: React.ReactNode;
|
||
children?: React.ReactNode;
|
||
settingIcon?: React.ReactNode;
|
||
};
|
||
export type OptionConfig = {
|
||
density?: boolean;
|
||
fullScreen?: OptionsType;
|
||
reload?: OptionsType;
|
||
setting?: boolean | SettingOptionType;
|
||
search?: (OptionSearchProps & {
|
||
name?: string;
|
||
}) | boolean;
|
||
reloadIcon?: React.ReactNode;
|
||
densityIcon?: React.ReactNode;
|
||
};
|
||
export type OptionsFunctionType = (e: React.MouseEvent<HTMLSpanElement>, action?: ActionType) => void;
|
||
export type OptionsType = OptionsFunctionType | boolean;
|
||
export type ToolBarProps<T = unknown> = {
|
||
headerTitle?: React.ReactNode;
|
||
tooltip?: string | LabelTooltipType;
|
||
/** @deprecated 你可以使用 tooltip,这个更改是为了与 antd 统一 */
|
||
tip?: string;
|
||
toolbar?: ListToolBarProps;
|
||
toolBarRender?: (action: ActionType | undefined, rows: {
|
||
selectedRowKeys?: (string | number)[];
|
||
selectedRows?: T[];
|
||
}) => React.ReactNode[];
|
||
action: React.MutableRefObject<ActionType | undefined>;
|
||
options?: OptionConfig | false;
|
||
optionsRender?: ToolbarRenderProps<T>['optionsRender'];
|
||
selectedRowKeys?: (string | number)[];
|
||
selectedRows?: T[];
|
||
className?: string;
|
||
onSearch?: (keyWords: string) => void;
|
||
columns: TableColumnType<T>[];
|
||
};
|
||
export type ToolbarRenderProps<T> = {
|
||
hideToolbar: boolean;
|
||
onFormSearchSubmit: (params: any) => void;
|
||
searchNode: React.ReactNode;
|
||
tableColumn: any[];
|
||
tooltip?: string | LabelTooltipType;
|
||
selectedRows: T[];
|
||
selectedRowKeys: React.Key[] | (string | number)[];
|
||
headerTitle: React.ReactNode;
|
||
toolbar: ProTableProps<T, any, any>['toolbar'];
|
||
options: ProTableProps<T, any, any>['options'];
|
||
optionsRender?: (props: ToolBarProps<T>, defaultDom: React.ReactNode[]) => React.ReactNode[];
|
||
toolBarRender?: ToolBarProps<T>['toolBarRender'];
|
||
actionRef: React.MutableRefObject<ActionType | undefined>;
|
||
};
|
||
/** 这里负责与table交互,并且减少 render次数 */
|
||
declare class ToolbarRender<T> extends React.Component<ToolbarRenderProps<T>> {
|
||
onSearch: (keyword: string) => void;
|
||
isEquals: (next: ToolbarRenderProps<T>) => boolean;
|
||
shouldComponentUpdate: (next: ToolbarRenderProps<T>) => boolean;
|
||
render: () => import("react/jsx-runtime").JSX.Element | null;
|
||
}
|
||
export default ToolbarRender;
|