add detail store base
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import { UmbDetailStore } from './detail-store.interface.js';
|
||||
import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbStoreBase } from '@umbraco-cms/backoffice/store';
|
||||
import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api';
|
||||
|
||||
/**
|
||||
* @export
|
||||
* @class UmbDetailStoreBase
|
||||
* @extends {UmbStoreBase}
|
||||
* @description - Data Store for Data Type items
|
||||
*/
|
||||
|
||||
export abstract class UmbDetailStoreBase<T extends { unique: string }>
|
||||
extends UmbStoreBase
|
||||
implements UmbDetailStore<T>
|
||||
{
|
||||
/**
|
||||
* Creates an instance of UmbDetailStoreBase.
|
||||
* @param {UmbControllerHost} host
|
||||
* @memberof UmbDetailStoreBase
|
||||
*/
|
||||
constructor(host: UmbControllerHost, storeAlias: string) {
|
||||
super(host, storeAlias, new UmbArrayState<T>([], (x) => x.unique));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a detail model from the store
|
||||
* @param {unique} string unique
|
||||
* @memberof UmbDetailStoreBase
|
||||
*/
|
||||
byUnique(unique: string) {
|
||||
return this._data.asObservablePart((x) => x.find((y) => y.unique === unique));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import { UmbStore } from './store.interface.js';
|
||||
import type { Observable } from '@umbraco-cms/backoffice/external/rxjs';
|
||||
import type { UmbApi } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface UmbDetailStore<T extends { unique: string }> extends UmbStore<T>, UmbApi {
|
||||
byUnique: (unique: string) => Observable<Array<T>>;
|
||||
}
|
||||
@@ -5,3 +5,6 @@ export * from './store.js';
|
||||
export * from './entity-item.store.js';
|
||||
export * from './file-system-item.store.js';
|
||||
export { UmbStoreConnector } from './store-connector.js';
|
||||
|
||||
export { UmbDetailStoreBase } from './detail-store-base.js';
|
||||
export type { UmbDetailStore } from './detail-store.interface.js';
|
||||
|
||||
Reference in New Issue
Block a user