From 71a506fc36b27a95d739e78030f0b91fd875b821 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Nov 2023 15:28:51 +0100 Subject: [PATCH] add file system item store --- .../core/store/file-system-item.store.ts | 31 +++++++++++++++++++ .../src/packages/core/store/index.ts | 1 + 2 files changed, 32 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/store/file-system-item.store.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/store/file-system-item.store.ts b/src/Umbraco.Web.UI.Client/src/packages/core/store/file-system-item.store.ts new file mode 100644 index 0000000000..8c4705a707 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/store/file-system-item.store.ts @@ -0,0 +1,31 @@ +import { UmbStoreBase } from './store-base.js'; +import { UmbItemStore } from './item-store.interface.js'; +import type { FileItemResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; + +/** + * @export + * @class UmbFileSystemItemStore + * @extends {UmbStoreBase} + * @description - Data Store for File system items + */ + +export class UmbFileSystemItemStore + extends UmbStoreBase + implements UmbItemStore +{ + constructor(host: UmbControllerHost, storeAlias: string) { + super(host, storeAlias, new UmbArrayState([], (x) => x.path)); + } + + /** + * Return an observable to observe file system items + * @param {Array} ids + * @return {*} + * @memberof UmbFileSystemItemStore + */ + items(ids: Array) { + return this._data.asObservablePart((items) => items.filter((item) => ids.includes(item.path ?? ''))); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/store/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/store/index.ts index 0ab513ac78..209288b682 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/store/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/store/index.ts @@ -5,3 +5,4 @@ export * from './store-base.js'; export * from './store.interface.js'; export * from './store.js'; export * from './tree-store.interface.js'; +export * from './file-system-item.store.js';