@etsoo/react
Version:
TypeScript ReactJs UI Independent Framework
150 lines (149 loc) • 3.48 kB
TypeScript
import { QueryPagingData, QueryPagingOrder } from "@etsoo/appscript";
import { DataTypes } from "@etsoo/shared";
/**
* Grid size
*/
export type GridSize = number | ((input: number | string) => 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 rowHeight
*/
loadBatchSize?: GridSize;
/**
* Load data
*/
loadData: (props: P, lastItem?: T) => PromiseLike<T[] | null | undefined>;
/**
* Handler for updating rows
* @param rows Rows
* @param state State
*/
onUpdateRows?: (rows: T[], state: GridLoaderStates<T>, reset: boolean) => 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 {};