UNPKG

@vaadin/hilla-react-crud

Version:

Hilla CRUD utils for React

93 lines (92 loc) 5.12 kB
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 {};