From 3acd4cc2a3aaddf1e1ee84b38bece2f64dfe8adb Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 13 Sep 2023 11:35:02 +0200 Subject: [PATCH] add recycle bin tree store --- .../document-recycle-bin.repository.ts | 9 ++++--- .../document-recycle.bin.tree.store.ts | 24 +++++++++++++++++++ .../recycle-bin/repository/manifests.ts | 14 +++++++++-- 3 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle.bin.tree.store.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.repository.ts index 0f18b3614c..e943096153 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.repository.ts @@ -1,5 +1,8 @@ -import { UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN, UmbDocumentTreeStore } from '../../repository/document.tree.store.js'; import { UmbDocumentRecycleBinTreeServerDataSource } from './sources/document-recycle-bin.tree.server.data.js'; +import { + UMB_DOCUMENT_RECYCLE_BIN_TREE_STORE_CONTEXT, + UmbDocumentRecycleBinTreeStore, +} from './document-recycle.bin.tree.store.js'; import type { UmbTreeDataSource, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; @@ -11,7 +14,7 @@ export class UmbDocumentRecycleBinRepository implements UmbTreeRepository { + new UmbContextConsumerController(this.#host, UMB_DOCUMENT_RECYCLE_BIN_TREE_STORE_CONTEXT, (instance) => { this.#treeStore = instance; }), ]); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle.bin.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle.bin.tree.store.ts new file mode 100644 index 0000000000..fa3f3290c3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle.bin.tree.store.ts @@ -0,0 +1,24 @@ +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; + +/** + * @export + * @class UmbDocumentRecycleBinTreeStore + * @extends {UmbEntityTreeStore} + * @description - Tree Data Store for the Document Recycle Bin + */ +export class UmbDocumentRecycleBinTreeStore extends UmbEntityTreeStore { + /** + * Creates an instance of UmbDocumentRecycleBinTreeStore. + * @param {UmbControllerHostElement} host + * @memberof UmbDocumentRecycleBinTreeStore + */ + constructor(host: UmbControllerHostElement) { + super(host, UMB_DOCUMENT_RECYCLE_BIN_TREE_STORE_CONTEXT.toString()); + } +} + +export const UMB_DOCUMENT_RECYCLE_BIN_TREE_STORE_CONTEXT = new UmbContextToken( + 'UmbDocumentRecycleBinTreeStore', +); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/manifests.ts index 2304c822bf..658ef93f65 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/manifests.ts @@ -1,5 +1,6 @@ import { UmbDocumentRecycleBinRepository } from './document-recycle-bin.repository.js'; -import type { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry'; +import { UmbDocumentRecycleBinTreeStore } from './document-recycle.bin.tree.store.js'; +import type { ManifestRepository, ManifestTreeStore } from '@umbraco-cms/backoffice/extension-registry'; export const DOCUMENT_RECYCLE_BIN_REPOSITORY_ALIAS = 'Umb.Repository.DocumentRecycleBin'; @@ -10,4 +11,13 @@ const repository: ManifestRepository = { class: UmbDocumentRecycleBinRepository, }; -export const manifests = [repository]; +export const DOCUMENT_RECYCLE_BIN_TREE_STORE_ALIAS = 'Umb.Store.DocumentRecycleBinTree'; + +const treeStore: ManifestTreeStore = { + type: 'treeStore', + alias: DOCUMENT_RECYCLE_BIN_TREE_STORE_ALIAS, + name: 'Document Recycle Bin Tree Store', + class: UmbDocumentRecycleBinTreeStore, +}; + +export const manifests = [repository, treeStore];