///
import { TableColumnType, FormInstance } from 'antd';
import { SorterResult, TableCurrentDataSource } from 'antd/es/table/interface';
import { BizFieldValueType, BizFieldValueEnum, WithFieldProps } from '../biz-field';
import { BizFormItemAddressProps, BizFormItemAutoCompleteProps, BizFormItemCaptchaProps, BizFormItemCascaderProps, BizFormItemCheckboxProps, BizFormItemColorPickerProps, BizFormItemDateProps, BizFormItemDateRangeProps, BizFormItemInputProps, BizFormItemNumberProps, BizFormItemPasswordProps, BizFormItemProps, BizFormItemRadioProps, BizFormItemSelectProps, BizFormItemSliderProps, BizFormItemSwitchProps, BizFormItemTextAreaProps, BizFormItemTimeProps, BizFormItemTimeRangeProps, BizFormItemUploadProps } from '../biz-form';
import { WithTooltipProps } from '../biz-descriptions/WithTooltip';
import { ItemTypes } from './_util/constants';
export interface AsyncFnReturn extends Record {
data: D[];
total?: number;
}
export type BizTableActionType = {
reload: () => void;
reset: () => void;
submit: () => void;
submitAndCurrent: (current: number) => void;
};
export interface RequestParams extends Record {
pageSize: number;
current: number;
}
export type RequestFilters = Record;
export type RequestSorter = SorterResult | SorterResult[];
export type BizTableRequest = (params: RequestParams, filters: RequestFilters, sorter: RequestSorter, extra: TableCurrentDataSource) => Promise>;
type AssignItemTypeProps = {
itemType: IType;
valueType?: undefined;
};
type MixedItemTypeProps = AssignItemTypeProps | {
itemType?: undefined;
valueType: ValueType;
};
type ExtendFormItemProps = (AssignItemTypeProps<'address'> & BizFormItemAddressProps & {
name?: undefined;
}) | (AssignItemTypeProps<'autoComplete'> & BizFormItemAutoCompleteProps) | (AssignItemTypeProps<'captcha'> & BizFormItemCaptchaProps) | (AssignItemTypeProps<'cascader'> & BizFormItemCascaderProps) | (AssignItemTypeProps<'checkbox'> & BizFormItemCheckboxProps & {
valueEnum?: BizFieldValueEnum;
}) | (MixedItemTypeProps<'color', 'color'> & BizFormItemColorPickerProps) | (MixedItemTypeProps<'date', 'date' | 'dateWeek' | 'dateMonth' | 'dateQuarter' | 'dateYear' | 'dateTime' | 'fromNow'> & BizFormItemDateProps) | (MixedItemTypeProps<'dateRange', 'dateRange' | 'dateTimeRange'> & BizFormItemDateRangeProps) | (MixedItemTypeProps<'input', 'text'> & BizFormItemInputProps) | (MixedItemTypeProps<'number', 'money' | 'index' | 'indexBorder' | 'progress' | 'percent'> & BizFormItemNumberProps) | (AssignItemTypeProps<'password'> & BizFormItemPasswordProps) | (AssignItemTypeProps<'radio'> & BizFormItemRadioProps & {
valueEnum?: BizFieldValueEnum;
}) | (MixedItemTypeProps<'select', 'enum' | 'enumTag' | 'enumBadge'> & BizFormItemSelectProps & {
valueEnum?: BizFieldValueEnum;
}) | (AssignItemTypeProps<'textarea'> & BizFormItemTextAreaProps) | (MixedItemTypeProps<'time', 'time'> & BizFormItemTimeProps) | (MixedItemTypeProps<'timeRange', 'timeRange'> & BizFormItemTimeRangeProps) | (AssignItemTypeProps<'slider'> & BizFormItemSliderProps) | (AssignItemTypeProps<'switch'> & BizFormItemSwitchProps) | (MixedItemTypeProps<'upload', 'image'> & BizFormItemUploadProps) | (BizFormItemProps & {
itemType?: undefined;
valueType?: undefined;
valueEnum?: BizFieldValueEnum;
});
type InternalColumnFormProps = Partial, 'dataIndex' | 'title'>> & {
order?: number;
render?: (originItem: InternalColumnType & WithFieldProps, dom: React.ReactElement, form: FormInstance) => React.ReactElement;
};
export type SearchProps = InternalColumnFormProps & {
order?: number;
} & ExtendFormItemProps;
type BaseColumnType = Omit, 'dataIndex'> & {
tooltip?: WithTooltipProps['tooltip'];
nowrap?: boolean;
search?: boolean | SearchProps;
};
type InternalColumnType = BaseColumnType & {
dataIndex?: string | number | (string | number)[];
};
type ColumnGroupType = BaseColumnType & {
children: BizTableColumnsType;
};
export type BizTableColumnsType = ((ColumnGroupType | InternalColumnType) & WithFieldProps)[];
type ToolbarActionConfig = {
fullScreen?: boolean;
density?: boolean;
reload?: boolean;
columnSetting?: boolean;
};
export interface ToolbarActionProps {
config?: boolean | ToolbarActionConfig;
}
export {};