@knowmax/genericlist-core
Version:
Knowmax Generic list with basic CRUD support without any user interface implementation.
90 lines (89 loc) • 4.22 kB
TypeScript
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;
}