UNPKG

tablor-core

Version:

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

109 lines (108 loc) 3.35 kB
/** * Defines primitive types used in data items. */ export type PrimitiveTypes = string | number | boolean | null | undefined | Date; /** * Defines primitive types used in data items as strings for type checking. */ export type PrimitiveTypesAsString = 'string' | 'number' | 'boolean' | 'null' | 'undefined' | 'date'; /** * Defines primitive types used in data items as strings for type checking. */ export type PrimitiveTypesAsStringExcludeString = 'number' | 'boolean' | 'null' | 'undefined' | 'date'; /** * A regular data item. */ export type Item<T extends Record<string, PrimitiveTypes>> = { [K in keyof T]: T[K]; }; /** * A partially defined regular item. */ export type PartialItem<T extends Item<T>> = Partial<T>; /** * A read-only version of a regular item. */ export type ImmutableRegularItem<T extends Item<T>> = Readonly<Item<T>>; /** * A read-only version of a partially defined item. */ export type ImmutablePartialRegularItem<T extends Item<T>> = Readonly<PartialItem<T>>; /** * A partially defined version of an augmented partial item. */ export type AugmentedHalfItem<T extends Item<T>> = Partial<T> & { tablorMeta: AugItemMetaData; }; /** * A read-only version of an augmented partial item. */ export type ImmutableAugmentedPartialRegularItem<T extends Item<T>> = Readonly<AugmentedHalfItem<T>>; /** * An augmented data item with metadata for internal use. */ export type AugmentedItem<T extends Item<T>> = T & { tablorMeta: AugItemMetaData; }; /** * A read-only version of an augmented item. */ export type ImmutableAugmentedItem<T extends Item<T>> = Readonly<T & { tablorMeta: Readonly<AugItemMetaData>; }>; /** * A flexible, read-only version of an augmented item. */ export type DynamicImmutableAugmentedItem = Readonly<{ [key: string]: any; tablorMeta: Readonly<AugItemMetaData>; }>; /** * Metadata for tracking item state. * * @property uuid - Unique identifier for the item. * @property isSelected - Whether the item is selected. * @property isLoaded - Always true after loading. */ export type AugItemMetaData = { uuid: number; isSelected: boolean; isLoaded: true; }; /******************** Event Payloads ********************/ /** * Represents the payload for the `loadingStateChanged` event. * * @property state - The new loading state. */ export type StoreLoadingStateChangedPayload<T extends Item<T>> = { state: boolean; }; /** * Represents the payload for the `itemsAdded` event. * * @property addedItems - The added items. */ export type ItemsAddedPayload<T extends Item<T>> = { addedItems: ImmutableAugmentedItem<T>[]; }; /** * Represents the payload for the `itemsRemoved` event. * * @property removedItems - The removed items. */ export type ItemsRemovedPayload<T extends Item<T>> = { removedItems: ImmutableAugmentedItem<T>[]; }; /** * Represents the payload for the `itemsUpdated` event. * * @property updatedItems - The updated items. * @property prevUpdatedItems - The previously updated items. * @property updatedItemsDifference - The difference between the updated and previously updated items. */ export type ItemsUpdatedPayload<T extends Item<T>> = { updatedItems: ImmutableAugmentedItem<T>[]; prevUpdatedItems: ImmutableAugmentedItem<T>[]; updatedItemsDifference: Partial<AugmentedItem<T>>[]; };