tablor-core
Version:
Core features for data tables, grids, and advanced search, pagination, and sorting in Angular.
73 lines (72 loc) • 3.49 kB
TypeScript
import { AugmentedItem, DynamicImmutableAugmentedItem, ImmutableAugmentedItem, ImmutableAugmentedPartialRegularItem, ImmutablePartialRegularItem, ImmutableRegularItem, ItemsAddedPayload, ItemsRemovedPayload, ItemsUpdatedPayload, Item, StoreLoadingStateChangedPayload } from './interfaces';
import { FieldsStore } from '../fields-store/fields-store';
import { Subject } from 'rxjs';
/**
* Manages the items with methods for adding, removing, and updating them.
*/
export declare class ItemsStore<T extends Item<T>> {
protected readonly getFieldsAsArray: FieldsStore<T>['getFieldsAsArray'];
protected allItems: AugmentedItem<T>[];
protected _uuidCounter: number;
protected _loading: boolean;
readonly $loadingStateChanged: Subject<StoreLoadingStateChangedPayload<T>>;
readonly $itemsAdded: Subject<ItemsAddedPayload<T>>;
readonly $itemsRemoved: Subject<ItemsRemovedPayload<T>>;
readonly $itemsUpdated: Subject<ItemsUpdatedPayload<T>>;
constructor(getFieldsAsArray: FieldsStore<T>['getFieldsAsArray']);
/**
* Returns the total number of items in the store.
*/
getNbOfItems(): number;
/**
* Returns the loading state.
*/
getLoadingState(): boolean;
getItems(strictlyTyped?: true): ImmutableAugmentedItem<T>[];
getItems(strictlyTyped?: false): DynamicImmutableAugmentedItem[];
getMutableItems(): AugmentedItem<T>[];
/**
* Sets the loading state and triggers the corresponding event.
*/
protected setLoading(state: boolean): void;
/**
* Initializes the store with an array of items.
*/
initialize(items: Readonly<ImmutableRegularItem<T>[]>): void;
/**
* Adds new items to the store.
*/
add(items: Readonly<(ImmutableAugmentedItem<T> | ImmutableRegularItem<T>)[]>): void;
/**
* Removes items from the store by UUID or item reference.
*/
remove(itemsAndUuids: Readonly<(ImmutableAugmentedItem<T> | ImmutableRegularItem<T> | number | undefined)[]>): boolean[];
/**
* Updates items in the store using augmented data.
*/
updateByInItemUuid(items: Readonly<ImmutableAugmentedPartialRegularItem<T>[]>): boolean[];
/**
* Updates items in the store by matching UUIDs.
*/
updateByExternalUuids(items: Readonly<ImmutablePartialRegularItem<T>[]>, uuids: number[]): boolean[];
/**
* Updates items at specified indexes.
*/
updateByIndex(items: Readonly<ImmutablePartialRegularItem<T>[]>, indexes: number[]): boolean[];
/**
* Finds and returns items matching the given UUIDs or item references.
*/
findOneMatchingItemForEach(itemsAndUuids: Readonly<(ImmutableAugmentedItem<T> | ImmutableRegularItem<T> | number | undefined)[]>): (ImmutableAugmentedItem<T> | undefined)[];
/**
* Finds and returns the indexes of items matching the given UUIDs or item references.
*/
findOneIndexForEach(itemsAndUuids: Readonly<(ImmutableAugmentedItem<T> | ImmutableRegularItem<T> | ImmutableAugmentedPartialRegularItem<T> | number | undefined)[]>): number[];
/**
* Finds and returns all the possible indexes of items matching the given UUIDs or item references.
*/
findAllPossibleIndexesForEach(itemsAndUuids: Readonly<(ImmutableAugmentedItem<T> | ImmutableRegularItem<T> | ImmutableAugmentedPartialRegularItem<T> | number | undefined)[]>): number[][];
/**
* Generates a unique identifier (UUID) for items.
*/
protected getNewUuid(): number;
}