UNPKG

@knowmax/genericlist-core

Version:

Knowmax Generic list with basic CRUD support without any user interface implementation.

90 lines (89 loc) 4.22 kB
import { GenericList } from '.'; import type { IGenericListConfiguration } from '.'; export interface IGenericCudListConfiguration<ET> extends IGenericListConfiguration { idField?: string; nameField?: string; /** Returns default item to use for new entries. */ defaultItem: () => ET; /** Validate given item. Return boolean true for valid item or string error. */ validateItem?: (item: ET) => boolean | string; /** Transform given item into item suitable for serialization to server. */ serverItem?: (item: ET) => unknown; endpointPost?: string; endpointPut?: string; endpointDelete?: string; endpointRestore?: string; } export declare class GenericCudList<T, ET> extends GenericList<T> { cudConfiguration: IGenericCudListConfiguration<ET>; constructor(cudConfiguration: IGenericCudListConfiguration<ET>); /** Set in case of Create Update Delete error. Prefer using specialized error fields per mode. */ cudError?: Error | string; setCudError(value?: Error | string): void; /** Might be set in case custom validation method returned error message. */ validationError?: string; setValidationError(value?: string): void; /** Set in case of CUD error or validation error (latter only when in update mode). */ get hasCudOrValidationError(): boolean; /** Set after error in create mode. */ get createError(): string | Error | undefined; /** Set after error in update mode. */ get updateError(): string | Error | undefined; /** Set after error in delete mode. */ get deleteError(): string | Error | undefined; /** Set after error in restore mode. */ get restoreError(): string | Error | undefined; /** Set to editable item when in create or update mode. */ editableItem?: ET; setEditableItem(value?: ET): void; /** Set to original editable item when starting update mode. */ editableItemUnmodified?: ET; setEditableItemUnmodified(value?: ET): void; /** Set to item when in delete mode. */ deleteItem?: T; setDeleteItem(value?: T): void; /** Set with data of just deleted item. */ deletedItem?: T; setDeletedItem(value?: T): void; /** Set with data of newly created item. */ createdItem?: T; setCreatedItem(value?: T): void; /** Set to item when in restore mode. */ restoreItem?: T; setRestoreItem(value?: T): void; /** Set with data of just restored item. */ restoredItem?: T; setRestoredItem(value?: T): void; /** Start create mode for item. */ create: (template?: ET) => void; /** Start update mode for given item. */ update(entity: ET | T): void; /** Start delete mode for given item. */ delete(entity: T): void; /** Start restore mode for given item. */ restore(entity: T): void; /** Cancel any mode we are currently in (create, update, delete, restore). Using lambda syntax here so we can directly hook this method to onClick/onChange like events of user interface. */ cancel: () => void; /** True if in create mode. */ get isCreate(): boolean; /** True if in update mode. */ get isUpdate(): boolean; /** True if in delete mode. */ get isDelete(): boolean; /** True if in restore mode. */ get isRestore(): boolean; /** True is editable data was changed while in update mode. */ get isModified(): boolean; /** True if editable data contains valid data while in create or update mode. */ get isValidated(): boolean | undefined; /** Perform actual create or update operation of item set in create or update mode. */ save(): Promise<boolean>; /** Perform actual delete operation of item previously set in delete mode. */ deleteConfirmed(): Promise<boolean>; /** Perform actual restore operation of item previously set in restore mode. */ restoreConfirmed(): Promise<boolean>; /** Return id of given item using settings provided in provided @see IGenericCudListConfiguration. */ idForItem(item: T | ET): string | number | undefined; /** Return name of given item using settings provided in provided @see IGenericCudListConfiguration. */ nameForItem(item: T | ET): string | number | undefined; }