@aplus-frontend/ui
Version:
149 lines (148 loc) • 4.43 kB
TypeScript
import { StyleValue } from 'vue';
import { ApTablePaginationConfig, RequestData } from '../ap-table';
import { Recordable } from '../type';
import { InternalPagingType } from '../ap-table/hooks/use-table-paging-ng';
export type ApListProps<RecordType = any, ParamsType = Recordable> = {
/**
* 列表数据源,传入后`request`和`defaultData`都将失效
*/
dataSource?: RecordType[];
/**
* 是否是加载中
*/
loading?: boolean;
/**
* 当点击列表项时触发
* @deprecated 暂未实现
*/
onItem?: (record: RecordType, index: number) => void;
/**
* 依赖的额外的参数
* 变更后会重新发起网络请求
*/
params?: ParamsType;
/**
* 请求数据
* @param params
* @returns
*/
request?: (params: Partial<ParamsType> & {
pageSize: number;
current: number;
}) => Promise<Partial<RequestData<RecordType>>>;
/**
* 表格的默认数据源,这些数据源将会在第一次请求后被替换
*/
defaultData?: RecordType[];
/**
* 表格loading状态变更后触发
* @param loading
* @returns
*/
onLoadingChange?: (loading: boolean) => void;
/**
* 查询表单提交之前,一般用于自定义对查询数据进行变更
* @param params
* @returns
*/
beforeSearchSubmit?: (params: Partial<ParamsType>) => any;
/**
* 是否显示分页器(特定的分页器)或者指定默认的当前页和pageSize
*/
pagination?: false | (Omit<ApTablePaginationConfig, 'showTotal'> & {
/**
* 只有一页时隐藏分页
*/
hideOnSinglePage?: boolean;
});
/**
* 是否手动发起第一次网络请求
*/
manual?: boolean;
/**
* List容器的自定义样式
*/
containerStyle?: StyleValue;
/**
* List内容区域自定义样式
*/
contentStyle?: StyleValue;
/**
* 底部分页器容器的样式
*/
footerWarpperStyle?: StyleValue;
/**
* 列表是否开启虚拟滚动
* @description 设置此属性后,将不会展示分页器,同样`renderContent`插槽将不再可用;
* 如果值为`number`类型,则表示每个元素的尺寸,在尺寸不固定的情况下,则可以设置`minItemSize`和`sizeDependencies`两个属性
* @default false
*/
virtual?: number | {
minItemSize: number;
sizeDependencies?: (item: RecordType) => any[];
};
/**
* 列表数据的key
* @default "id"
*/
rowKey?: string;
/**
* 是否自适应外部容器高度(无数据时充满容器、数据超出时内部滚动)
*/
adaptive?: boolean;
};
export type ApListExpose = {
/**
* 重置页码并发起网络请求
* @returns
*/
submit: () => void;
/**
* 重设查询表单(如果有的话)并发起网络请求
* @returns
*/
reset: () => void;
/**
* 刷新当前页
* @returns
*/
refresh: () => void;
/**
* 删除N条数据后刷新某一页(具体页面会计算)
* @param n 删除的n条数据
* @returns
*/
refreshByDelete: (n: number) => void;
/**
* 滚动到第一行(如果无效需要你传入相对于div.ap-list__content的查询参数)
* @param selector
* @returns
*/
scrollToFirstRow: (selector?: string) => void;
/**
* 获取查询表单的值
* @description 只有在自定义查询表单并且绑定了formRef才能获取到查询表单的值
* @param transform 是否获取转换后的值,默认为`false`
* @returns
*/
getSearchFormValuesIfSetted: (transform?: boolean) => Recordable;
/**
* 设置查询表单的值
* @description 只有在自定义查询表单并且绑定了formRef才能设置查询表单的值
* @param fields 将要设置的值
* @returns
*/
setSearchFormValuesIfSetted: (fields: any) => void;
/**
* 获取分页参数
* @returns
*/
getPaging: () => InternalPagingType;
/**
* 设置表格分页参数
* @param nextPaging 新的分页参数
* @param refreshImmediately 是否立刻刷新数据,默认为`true`
* @returns
*/
setPaging: (nextPaging: InternalPagingType, refreshImmediately?: boolean) => void;
};