UNPKG

@aplus-frontend/ui

Version:

149 lines (148 loc) 4.43 kB
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; };