UNPKG

@sparser/au2-data-grid

Version:
70 lines 2.66 kB
import { ILogger } from '@aurelia/kernel'; import { SortOption } from './sorting-options.js'; /** * Handles the data part of the grid. * This has very little to do with the presentation of the data. */ export declare class ContentModel<T> { readonly onSorting: ApplySorting<T> | null; readonly isAnySelected: boolean; readonly isOneSelected: boolean; readonly selectionCount: number; allItems: T[] | null; readonly selectedItems: T[]; readonly selectionMode: ItemSelectionMode; private readonly onSelectionChange; private readonly pageSize; private readonly fetchPage; private readonly fetchCount; private readonly logger; private _currentPage; private _currentPageNumber; private pagePromise; private countPromise; private _totalCount; private _sortOptions; private _pageCount; private initialized; constructor(allItems: T[] | null, pagingOptions: Partial<PagingOptions<T>> | null, selectionOptions: Partial<SelectionOptions<T>> | null, onSorting: ApplySorting<T> | null, logger: ILogger); get currentPage(): T[]; get totalCount(): number; get pageCount(): number; get currentPageNumber(): number; selectItem(item: T): void; selectRange(startIndex: number, endIndex: number): void; toggleSelection(item: T): void; private handleSelectionChange; clearSelections(): void; isSelected(item: T): boolean; applySorting(...sortOptions: SortOption<T>[]): void; goToPage(pageNumber: number, force?: boolean): void; goToPreviousPage(): void; goToNextPage(): void; /** @internal */ setTotalCount(): void; /** @internal */ setPage(): void; wait(rethrowError?: boolean): Promise<void>; refresh(rethrowError?: boolean): Promise<void>; private allItemsChanged; } export declare enum ItemSelectionMode { None = 0, Single = 1, Multiple = 2 } type SelectionChangeHandler<T> = (selectedItems: T[], isOneSelected: boolean, isAnySelected: boolean) => void; export interface SelectionOptions<T> { mode: ItemSelectionMode; onSelectionChange: SelectionChangeHandler<T>; } export type FetchCount<T> = (model: ContentModel<T>) => number | Promise<number>; export type FetchPage<T> = (currentPage: number, pageSize: number, model: ContentModel<T>) => T[] | Promise<T[]>; export interface PagingOptions<T> { pageSize: number | null; fetchPage: FetchPage<T>; fetchCount: FetchCount<T>; } export type ApplySorting<T> = (newValue: SortOption<T>[], oldValue: SortOption<T>[], allItems: T[] | null, model: ContentModel<T>) => void; export {}; //# sourceMappingURL=content-model.d.ts.map