UNPKG

@3mo/fetchable-data-grid

Version:

A fetchable variant of @3mo/data-grid

69 lines 3.63 kB
import { Binder } from '@a11d/lit'; import { DataGrid } from '@3mo/data-grid'; import { FetchableDataGridFetcherController } from './FetchableDataGridFetcherController.js'; import './FetchableDataGridRefetchIconButton.js'; export type FetchableDataGridParametersType = Record<string, unknown>; type NonPaginatedResult<TData> = Array<TData>; type PaginatedResult<TData> = Readonly<{ data: NonPaginatedResult<TData>; } & ({ hasNextPage: boolean; dataLength?: undefined; } | { hasNextPage?: undefined; dataLength: number; })>; export type FetchableDataGridResult<TData> = PaginatedResult<TData> | NonPaginatedResult<TData>; /** * @element mo-fetchable-data-grid * * @attr fetch - A function that fetches the data from the server. * @attr silentFetch - If set, the DataGrid's content will not be cleared when the fetch is initiated. * @attr parameters - The parameters that are passed to the fetch function. * @attr paginationParameters - The parameters that are passed to the fetch function when the page changes. This enables server-side pagination. * @attr sortParameters - The parameters that are passed to the fetch function when the sort changes. This enables server-side sorting. * @attr autoRefetch - The interval in seconds at which the data should be refetched automatically. If set, the DataGrid will automatically refetch the data at the specified interval. * * @slot error-no-selection - A slot for displaying an error message when user action is required in order for DataGrid to initiate the fetch. * * @fires parametersChange * @fires dataFetch */ export declare class FetchableDataGrid<TData, TDataFetcherParameters extends FetchableDataGridParametersType = Record<string, never>, TDetailsElement extends Element | undefined = undefined> extends DataGrid<TData, TDetailsElement> { readonly parametersChange: EventDispatcher<TDataFetcherParameters | undefined>; readonly dataFetch: EventDispatcher<FetchableDataGridResult<TData>>; fetch: (parameters: TDataFetcherParameters) => Promise<FetchableDataGridResult<TData>>; silentFetch: boolean; parameters?: TDataFetcherParameters; paginationParameters?: (parameters: { readonly page: number; readonly pageSize: number; }) => Partial<TDataFetcherParameters>; sortParameters?: () => Partial<TDataFetcherParameters>; autoRefetch?: number; readonly fetcherController: FetchableDataGridFetcherController<TData>; get hasNextPage(): boolean; get dataLength(): number | undefined; requestFetch(...parameters: Parameters<typeof this.fetcherController.fetch>): Promise<void>; protected readonly parametersBinder: Binder<TDataFetcherParameters>; static get styles(): import("@a11d/lit").CSSResult; get hasServerSidePagination(): boolean; get hasServerSideSort(): boolean; setParameters(parameters: TDataFetcherParameters): void; protected get dataSkip(): number; protected get dataTake(): number; getCsvData(): AsyncGenerator<number, import("@3mo/data-grid").DataRecord<TData>[], unknown>; get hasPagination(): boolean; get supportsDynamicPageSize(): boolean; protected get toolbarActionsTemplate(): import("lit-html").HTMLTemplateResult; protected get contentTemplate(): import("lit-html").HTMLTemplateResult; private get fetchingTemplate(); protected get noSelectionTemplate(): import("lit-html").HTMLTemplateResult; } declare global { interface HTMLElementTagNameMap { 'mo-fetchable-data-grid': FetchableDataGrid<unknown, Record<string, never>>; } } export {}; //# sourceMappingURL=FetchableDataGrid.d.ts.map