@3mo/fetchable-data-grid
Version:
A fetchable variant of @3mo/data-grid
69 lines • 3.63 kB
TypeScript
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