@sparser/au2-data-grid
Version:
A data grid for Aurelia 2
70 lines • 2.66 kB
TypeScript
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