@daysnap/vue-use
Version:
daysnap vue hooks
50 lines (49 loc) • 1.55 kB
TypeScript
import { type Ref } from 'vue';
export interface UsePagingStatus {
pagingIndex: number;
pagingSize: number;
pagingTotal: number;
pagingError: string;
pagingLoading: boolean;
}
export type UsePagingTaskResult<T = any> = {
pagingList: T[];
pagingTotal: number;
} | [T[], number];
export interface UsePagingTaskOptions {
loading?: boolean;
toast?: boolean;
}
export interface UsePagingTask<T = any> {
(state: [number, number], options: UsePagingTaskOptions): Promise<UsePagingTaskResult<T>>;
}
export interface UsePagingOptions {
/**
* 初始化的状态
*/
initialStatus?: Partial<UsePagingStatus>;
/**
* 是否立即执行 onBeforeMount 执行,默认 false
*/
immediate?: boolean;
/**
* 需要滚动的元素 默认 .hor-scroll
*/
scrollSelector?: string;
}
export type UsePagingTriggerOptions = ((...args: any[]) => any) | boolean | UsePagingTaskOptions;
export declare function usePaging<T = any>(task: UsePagingTask<T>, options?: UsePagingOptions): {
pagingFinished: import("vue").ComputedRef<boolean>;
pagingData: Ref<T[]>;
pagingStatus: {
pagingIndex: number;
pagingSize: number;
pagingTotal: number;
pagingError: string;
pagingLoading: boolean;
};
pagingTrigger: (pagingIndex: number, options?: UsePagingTriggerOptions) => void;
pagingRefresh: (options?: UsePagingTriggerOptions) => void;
pagingLoad: (options?: UsePagingTriggerOptions) => void;
pagingReset: () => void;
};