@aplus-frontend/ui
Version:
50 lines (49 loc) • 1.75 kB
TypeScript
import { ButtonProps, MenuItemProps } from '@aplus-frontend/antdv';
import { ApButtonProps } from '../../ap-button/interface';
import { DropdownButtonProps } from '@aplus-frontend/antdv/es/dropdown';
import { VNodeChild } from 'vue';
import { ColumnType } from '@aplus-frontend/antdv/es/table';
type ApBatchActionGroupButtonType = ButtonProps['type'] | 'borderLink';
type MixinButton<T> = Omit<T, 'type'> & {
type?: ApBatchActionGroupButtonType;
content?: VNodeChild;
};
interface ApBatchActionGroupTypeProps {
default: ApButtonProps & {
content?: VNodeChild;
};
dropdown: MixinButton<DropdownButtonProps>;
}
export type ApBatchActionGroupPropsKeys = keyof ApBatchActionGroupTypeProps;
export type ApBatchActionGroupButtonProps<T extends ApBatchActionGroupPropsKeys = ApBatchActionGroupPropsKeys> = T extends ApBatchActionGroupPropsKeys ? {
dropdownType?: T;
} & ApBatchActionGroupTypeProps[T] : never;
export type ApBatchActionGroupMenuProps<RecordType = any> = Omit<MenuItemProps, 'title' | 'icon' | 'role' | 'originItemValue' | 'onClick'> & {
content?: VNodeChild;
onClick?: (item?: {
selectedRows?: RecordType[];
}) => Promise<any> | any;
auth?: string;
ifShow?: (item?: {
selectedRows?: RecordType[];
}) => boolean;
};
export type ApBatchActionGroupProps<RecordType = any> = {
/**
* 选中行的列表
*/
selectedRows?: RecordType[];
/**
* 按钮配置
*/
buttonProps?: ApBatchActionGroupButtonProps;
/**
* 下拉列表配置
*/
menuList?: ApBatchActionGroupMenuProps<RecordType>[];
};
export type ApBatchActionGroupExpose<RecordType = any> = {
columns?: ColumnType<any>[];
dataSource?: RecordType[];
};
export {};