add detail store base

This commit is contained in:
Mads Rasmussen
2023-11-24 14:47:17 +01:00
parent dde7fb46e8
commit b38e2b3e5e
3 changed files with 44 additions and 0 deletions

View File

@@ -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));
}
}

View File

@@ -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>>;
}

View File

@@ -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';