UNPKG

@etsoo/react

Version:

TypeScript ReactJs UI Independent Framework

156 lines (155 loc) 3.63 kB
import { QueryPagingData, QueryPagingOrder } from "@etsoo/appscript"; import { DataTypes } from "@etsoo/shared"; /** * Grid size */ export type GridSize = number | ((input: number) => number); /** * Grid size calculation * @param size Size * @param input Input */ export declare const GridSizeGet: (size: GridSize, input: number) => number; /** * Grid data type */ export type GridData = FormData | DataTypes.StringRecord; /** * Grid template type */ export type GridTemplateType<T> = DataTypes.BasicTemplateType<{ [k in keyof T]: T[k] extends "date" ? "date" | "string" : T[k] extends DataTypes.BasicNames ? T[k] : never; }>; /** * Grid data get with format * @param data Data * @param template Template * @param keepSource Keep source data * @returns Json data */ export declare function GridDataGet<const T>(props: GridLoadDataProps, template?: T, keepSource?: boolean): GridJsonData & GridTemplateType<T>; /** * Grid data get with format * @param data Data * @param template Template * @param keepSource Keep source data * @returns Json data */ export declare function GridDataGetData<const T>(data?: GridData, template?: T, keepSource?: boolean): GridTemplateType<T>; /** * Grid Json data */ export type GridJsonData = { /** * Query paging data */ queryPaging: QueryPagingData; }; /** * Grid data load props */ export type GridLoadDataProps = GridJsonData & { /** * Data related */ data?: GridData; }; /** * Grid data load partial props */ export type GridLoadDataPartialProps = { /** * Query paging data */ queryPaging?: Partial<QueryPagingData>; /** * Data related */ data?: GridData; }; /** * Grid data loader */ export type GridLoader<T extends object, P extends GridJsonData = GridLoadDataProps> = { /** * Auto load data, otherwise call reset * @default true */ autoLoad?: boolean; /** * Default order by */ defaultOrderBy?: QueryPagingOrder[]; /** * Batch size when load data, default will be calcuated with height and itemSize */ loadBatchSize?: GridSize; /** * Load data */ loadData: (props: P, lastItem?: T) => PromiseLike<T[] | null | undefined>; /** * Handler for init load * @param ref Ref * @returns Result */ onInitLoad?: (ref: any) => [T[], GridLoaderPartialStates<T>?] | null | undefined; /** * Handler for updating rows * @param rows Rows * @param state State */ onUpdateRows?: (rows: T[], state: GridLoaderStates<T>) => void; /** * Threshold at which to pre-fetch data; default is half of loadBatchSize */ threshold?: number | undefined; }; type GridLoaderProps<T> = { /** * Auto load data, otherwise call reset * @default true */ autoLoad: boolean; /** * Last loaded item */ lastItem?: T; /** * Last loaded items */ lastLoadedItems?: number; /** * All loaded items count */ loadedItems: number; /** * Has next page? */ hasNextPage: boolean; /** * Is next page loading? */ isNextPageLoading: boolean; /** * Is mounted */ isMounted?: boolean; /** * Selected items of id */ selectedItems: T[]; /** * Id cache */ idCache: Record<any, null>; }; /** * Grid loader states */ export type GridLoaderStates<T> = GridLoadDataProps & GridLoaderProps<T>; /** * Grid loader states */ export type GridLoaderPartialStates<T> = GridLoadDataPartialProps & Partial<GridLoaderProps<T>>; export {};