UNPKG

tablor-core

Version:

Core features for data tables, grids, and advanced search, pagination, and sorting in Angular.

87 lines (86 loc) 4.31 kB
import { ImmutableAugmentedItem, Item, ItemsAddedPayload, ItemsRemovedPayload, ItemsUpdatedPayload } from '../stores/items-store/interfaces'; import { Subject } from 'rxjs'; import { DraftSortingOptions, ImmutableProcessedSortingOption, ItemsSortedPayload, ProcessedSortingOptions, SortedItemsChangedPayload, SortingOptionsChangedPayload, SortRange } from './interfaces'; import { SearchedItemsChangedPayload } from '../searcher/searcher/interfaces'; import { FieldsStore } from '../stores/fields-store/fields-store'; import { Searcher } from '../searcher/searcher/searcher'; /** * `Sorter` is responsible for sorting items. */ export declare class Sorter<T extends Item<T>> { protected readonly hasField: FieldsStore<T>['hasField']; protected readonly getSearchResults: Searcher<T>['getMutableItems']; protected readonly $searchedItemsChanged: Subject<SearchedItemsChangedPayload<T>>; protected readonly $itemsAdded: Subject<ItemsAddedPayload<T>>; protected readonly $itemsRemoved: Subject<ItemsRemovedPayload<T>>; protected readonly $itemsUpdated: Subject<ItemsUpdatedPayload<T>>; protected readonly _options: ProcessedSortingOptions<T, keyof T>[]; protected readonly _sortingRanges: SortRange[][]; readonly $sortingOptionsChanged: Subject<SortingOptionsChangedPayload<T>>; readonly $itemsSorted: Subject<ItemsSortedPayload<T>>; readonly $sortedItemsChanged: Subject<SortedItemsChangedPayload<T>>; constructor(hasField: FieldsStore<T>['hasField'], getSearchResults: Searcher<T>['getMutableItems'], $searchedItemsChanged: Subject<SearchedItemsChangedPayload<T>>, $itemsAdded: Subject<ItemsAddedPayload<T>>, $itemsRemoved: Subject<ItemsRemovedPayload<T>>, $itemsUpdated: Subject<ItemsUpdatedPayload<T>>); /** * Returns the current sorting options */ getOptions(includingNoneOrdered?: boolean): Readonly<ImmutableProcessedSortingOption<T, keyof T>[]>; /** * Returns the keys of all current sorting options */ getSortingFieldKeys(includingNoneOrdered?: boolean): (keyof T)[]; /** * Returns the order of all current sorting options */ getSortingFieldOrders(includingNoneOrdered?: boolean): ProcessedSortingOptions<T, keyof T>['order'][]; /** * Returns the order of a specific sorting option */ getSortingFieldOrder(indexOrKey: number | keyof T): ProcessedSortingOptions<T, keyof T>['order'] | undefined; /** * Returns whether a field is currently sorted */ isFieldSorted(field: keyof T, includingNoneOrdered?: boolean): boolean; /** * Returns the current sorted items */ getItems(): Readonly<ImmutableAugmentedItem<T>[]>; /** * Returns the current sorting ranges * * @remarks * This method is only for testing purposes */ getSortingRanges(): Readonly<Readonly<Readonly<SortRange>[]>[]>; /** * Clears the sorting */ clearSort(): void; /** * Sorts the items based on the provided options. */ sort<K extends keyof T>(options: DraftSortingOptions<T, K>): void; /** * Sorts the items based on the current sorting options. */ protected sortItems(optionsIndex: number): void; /** * Creates sorting ranges for nested sorting options. */ protected makeSortingRangesForNestedSortingOptions(items: ImmutableAugmentedItem<T>[], currCompareFnForNestedMatch: ProcessedSortingOptions<T, keyof T>['customCompareFnForNestedMatch'], optionsIndex?: number): SortRange[]; /** * Sorts the items based on the given compare function. */ protected applySort<K extends keyof T>(items: ImmutableAugmentedItem<T>[], compareFn: ProcessedSortingOptions<T, K>['customCompareFn'], optionsIndex: number): ImmutableAugmentedItem<T>[]; /** * Transform\\\\s the given draft options into processed options with meta-data. */ protected processOptions<K extends keyof T>(options: DraftSortingOptions<T, K>): ProcessedSortingOptions<T, K>; /** * Performs the behavior for handling new and previously sorted fields. */ protected addNewOptions<K extends keyof T>(options: ProcessedSortingOptions<T, K>): void; /** * Sorts the items based on the current sorting options. */ protected handleSearchedItemsChange(): void; }