@vaadin/hilla-react-crud
Version:
Hilla CRUD utils for React
93 lines (92 loc) • 5.12 kB
TypeScript
import type { ComboBoxDataProvider, ComboBoxDataProviderCallback, ComboBoxDataProviderParams } from '@vaadin/react-components';
import type { GridDataProvider, GridDataProviderCallback, GridDataProviderParams } from '@vaadin/react-components/Grid';
import { type DependencyList } from 'react';
import type { CountService, ListService } from './crud.js';
import type FilterUnion from './types/com/vaadin/hilla/crud/filter/FilterUnion.js';
import type Pageable from './types/com/vaadin/hilla/mappedtypes/Pageable.js';
import type Sort from './types/com/vaadin/hilla/mappedtypes/Sort.js';
type MaybeCountService<TItem> = Partial<CountService<TItem>>;
type ListAndMaybeCountService<TItem> = ListService<TItem> & MaybeCountService<TItem>;
type ListAndCountService<TItem> = CountService<TItem> & ListService<TItem>;
type PageRequest = {
pageNumber: number;
pageSize: number;
sort: Sort;
};
type DataPage<TItem> = {
items: TItem[];
pageRequest: PageRequest;
};
export type ItemCounts = {
totalCount?: number;
filteredCount?: number;
};
type AfterLoadCallback = (result: ItemCounts) => void;
type DataProviderOptions = {
initialFilter?: FilterUnion;
loadTotalCount?: boolean;
afterLoad?: AfterLoadCallback;
};
export declare function isCountService<TItem>(service: ListAndMaybeCountService<TItem>): service is ListAndCountService<TItem>;
export declare abstract class DataProvider<TItem> {
protected readonly service: ListAndMaybeCountService<TItem>;
protected readonly loadTotalCount?: boolean;
protected readonly afterLoadCallback?: AfterLoadCallback;
protected filter: FilterUnion | undefined;
protected totalCount: number | undefined;
protected filteredCount: number | undefined;
constructor(service: ListAndMaybeCountService<TItem>, options?: DataProviderOptions);
reset(): void;
setFilter(filter: FilterUnion | undefined): void;
load(params: GridDataProviderParams<TItem>, callback: GridDataProviderCallback<TItem>): Promise<void>;
protected fetchPage(params: GridDataProviderParams<TItem>): Promise<DataPage<TItem>>;
protected abstract fetchTotalCount(page: DataPage<TItem>): Promise<number | undefined> | number | undefined;
protected abstract fetchFilteredCount(page: DataPage<TItem>): Promise<number | undefined> | number | undefined;
}
export declare abstract class AbstractComboBoxDataProvider<TItem> {
protected readonly list: ComboBoxFetchMethod<TItem>;
protected readonly loadTotalCount?: boolean;
protected sort: Sort | undefined;
protected totalCount: number | undefined;
protected filteredCount: number | undefined;
constructor(list: ComboBoxFetchMethod<TItem>, sort: Sort | undefined);
reset(): void;
load(params: ComboBoxDataProviderParams, callback: ComboBoxDataProviderCallback<TItem>): void;
protected fetchPage(params: ComboBoxDataProviderParams): Promise<DataPage<TItem>>;
protected abstract fetchTotalCount(page: DataPage<TItem>): Promise<number | undefined> | number | undefined;
protected abstract fetchFilteredCount(page: DataPage<TItem>): Promise<number | undefined> | number | undefined;
}
export declare class InfiniteDataProvider<TItem> extends DataProvider<TItem> {
protected fetchTotalCount(): undefined;
protected fetchFilteredCount(page: DataPage<TItem>): number | undefined;
}
export declare class InfiniteComboBoxDataProvider<TItem> extends AbstractComboBoxDataProvider<TItem> {
protected fetchTotalCount(): undefined;
protected fetchFilteredCount(page: DataPage<TItem>): number | undefined;
}
export declare class FixedSizeDataProvider<TItem> extends DataProvider<TItem> {
service: ListAndCountService<TItem>;
constructor(service: ListAndMaybeCountService<TItem>, options?: DataProviderOptions);
protected fetchTotalCount(): Promise<number | undefined>;
protected fetchFilteredCount(): Promise<number | undefined>;
}
export declare function createDataProvider<TItem>(service: ListAndMaybeCountService<TItem>, options?: DataProviderOptions): DataProvider<TItem>;
type UseDataProviderResult<TItem> = Readonly<{
dataProvider: GridDataProvider<TItem>;
refresh(): void;
}>;
export declare function useDataProvider<TItem>(service: ListAndMaybeCountService<TItem>, filter?: FilterUnion): UseDataProviderResult<TItem>;
export type UseGridDataProviderResult<TItem> = GridDataProvider<TItem> & {
refresh(): void;
};
export type GridFetchMethod<TItem> = (pageable: Pageable) => Promise<TItem[]>;
export declare function useGridDataProvider<TItem>(fetch: GridFetchMethod<TItem>, dependencies?: DependencyList): UseGridDataProviderResult<TItem>;
export type UseComboBoxDataProviderResult<TItem> = ComboBoxDataProvider<TItem> & {
refresh(): void;
};
export type ComboBoxFetchMethod<TItem> = (pageable: Pageable, filterString: string) => Promise<TItem[]>;
type ComboboxDataProviderOptions = {
sort?: Sort;
};
export declare function useComboBoxDataProvider<TItem>(fetch: ComboBoxFetchMethod<TItem>, options?: ComboboxDataProviderOptions, dependencies?: DependencyList): UseComboBoxDataProviderResult<TItem>;
export {};