UNPKG

fs-virtual-waterfall

Version:

Vue3 虚拟瀑布流组件

74 lines (73 loc) 1.71 kB
import { CSSProperties } from '../../node_modules/vue'; export interface IVirtuallistProps<T> { itemHeight: number; loading: boolean; loadingText: string; loadingBg: string; dataSource: T[]; } export interface IEstimatedListProps<T> { loading: boolean; estimatedHeight: number; dataSource: T[]; } export interface IPosInfo { index: number; top: number; bottom: number; height: number; dHeight: number; } export interface IWaterFallProps { gap: number; column: number; pageSize: number; request: (page: number, pageSize: number) => Promise<IImageItem[]>; } export interface IImageItem { id: string | number; url: string; width: number; height: number; [key: string]: any; } export interface IVirtualWaterFallProps { data: IDataItem[]; loading?: boolean; hasMore?: boolean; column?: number; columnItemCount?: number; gap?: number; hoverScale?: number; themeMode?: 'light' | 'dark' | 'auto'; cardStyle?: 'rounded' | 'square'; scrollBehavior?: 'smooth' | 'auto'; emptyText?: string; initialHeight?: number; loadMoreThreshold?: number; debug?: boolean; } export interface IColumnQueue { list: Array<IRenderItem>; height: number; } export interface IItemRect { width: number; height: number; } export interface IRenderItem { item: IDataItem; y: number; h: number; style: CSSProperties; } export interface IDataItem { id: number | string; width: number; height: number; [key: string]: any; } export type FsVirtualWaterfallReuqest = (page: number, pageSize: number) => Promise<{ total: number; list: IDataItem[]; }>;