From 3258f3897eadfe3c18ad2a24d291eec188ce425b Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Sun, 3 Mar 2024 10:51:13 +0100 Subject: [PATCH] add reload tree item children kind --- .../core/entity-action/entity-action.event.ts | 4 +-- .../models/entity-action.model.ts | 9 ++++++ .../core/extension-registry/models/index.ts | 2 ++ .../src/packages/core/tree/manifests.ts | 2 ++ .../reload-tree-item-children/manifests.ts | 3 ++ .../reload-tree-item-children.action.kind.ts | 18 ++++++++++++ .../reload-tree-item-children.action.ts | 28 +++++++++---------- 7 files changed, 49 insertions(+), 17 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.kind.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/entity-action.event.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/entity-action.event.ts index 4eafc96b78..138b4a1381 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/entity-action.event.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/entity-action.event.ts @@ -1,7 +1,7 @@ import { UmbControllerEvent } from '@umbraco-cms/backoffice/controller-api'; export interface UmbEntityActionEventArgs { - unique: string; + unique: string | null; entityType: string; } @@ -17,7 +17,7 @@ export class UmbEntityActionEvent extends UmbControllerEvent { return this.#args.entityType; } - getUnique(): string { + getUnique(): string | null { return this.#args.unique; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts index 01db0d0b15..91201cffe1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts @@ -57,3 +57,12 @@ export interface MetaEntityActionRenameKind extends MetaEntityAction { renameRepositoryAlias: string; itemRepositoryAlias: string; } + +// RELOAD TREE ITEM CHILDREN +export interface ManifestEntityActionReloadTreeItemChildrenKind extends ManifestEntityAction { + type: 'entityAction'; + kind: 'reloadTreeItemChildren'; + meta: MetaEntityActionRenameKind; +} + +export interface MetaEntityActionReloadTreeItemChildrenKind extends MetaEntityAction {} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts index 51a326b372..54bee0b152 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts @@ -7,6 +7,7 @@ import type { ManifestEntityAction, ManifestEntityActionDeleteKind, ManifestEntityActionRenameKind, + ManifestEntityActionReloadTreeItemChildrenKind, } from './entity-action.model.js'; import type { ManifestDynamicRootOrigin, ManifestDynamicRootQueryStep } from './dynamic-root.model.js'; import type { ManifestEntityBulkAction } from './entity-bulk-action.model.js'; @@ -100,6 +101,7 @@ export type ManifestTypes = | ManifestEntityAction | ManifestEntityActionDeleteKind | ManifestEntityActionRenameKind + | ManifestEntityActionReloadTreeItemChildrenKind | ManifestEntityBulkAction | ManifestEntryPoint | ManifestExternalLoginProvider diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/manifests.ts index 199493e22d..4dfa87dba4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/manifests.ts @@ -2,10 +2,12 @@ import { manifests as folderManifests } from './folder/manifests.js'; import { manifests as defaultTreeItemManifests } from './tree-item/tree-item-default/manifests.js'; import { manifests as defaultTreeManifests } from './default/manifests.js'; import { manifests as treePickerManifests } from './tree-picker/manifests.js'; +import { manifests as reloadTreeItemChildrenManifests } from './reload-tree-item-children/manifests.js'; export const manifests = [ ...defaultTreeManifests, ...folderManifests, ...defaultTreeItemManifests, ...treePickerManifests, + ...reloadTreeItemChildrenManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/manifests.ts new file mode 100644 index 0000000000..cce86e0a41 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/manifests.ts @@ -0,0 +1,3 @@ +import { manifest as reloadTreeItemChildren } from './reload-tree-item-children.action.kind.js'; + +export const manifests = [reloadTreeItemChildren]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.kind.ts new file mode 100644 index 0000000000..65bda90ea0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.kind.ts @@ -0,0 +1,18 @@ +import { UmbReloadTreeItemChildrenEntityAction } from './reload-tree-item-children.action.js'; +import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifest: UmbBackofficeManifestKind = { + type: 'kind', + alias: 'Umb.Kind.EntityAction.Tree.ReloadChildrenOf', + matchKind: 'reloadTreeItemChildren', + matchType: 'entityAction', + manifest: { + type: 'entityAction', + kind: 'reloadTreeItemChildren', + api: UmbReloadTreeItemChildrenEntityAction, + weight: 800, + meta: { + entityTypes: [], + }, + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.ts index a04eecf148..f9194ae5bf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/reload-tree-item-children/reload-tree-item-children.action.ts @@ -1,27 +1,25 @@ import { UmbReloadTreeItemChildrenRequestEntityActionEvent } from './reload-tree-item-children-request.event.js'; -import type { UmbCopyDataTypeRepository } from '@umbraco-cms/backoffice/data-type'; +import type { UmbEntityActionArgs } from '@umbraco-cms/backoffice/entity-action'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; -import { UMB_ACTION_EVENT_CONTEXT, type UmbActionEventContext } from '@umbraco-cms/backoffice/action'; +import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; +import type { MetaEntityActionReloadTreeItemChildrenKind } from '@umbraco-cms/backoffice/extension-registry'; -export class UmbReloadTreeItemChildrenEntityAction extends UmbEntityActionBase { - #actionEventContext?: UmbActionEventContext; - - constructor(host: UmbControllerHostElement, repositoryAlias: string, unique: string, entityType: string) { - super(host, repositoryAlias, unique, entityType); - - this.consumeContext(UMB_ACTION_EVENT_CONTEXT, (instance) => { - this.#actionEventContext = instance; - }); +export class UmbReloadTreeItemChildrenEntityAction extends UmbEntityActionBase { + constructor(host: UmbControllerHostElement, args: UmbEntityActionArgs) { + super(host, args); } async execute() { - if (!this.#actionEventContext) throw new Error('Action Event context is not available'); - this.#actionEventContext.dispatchEvent( + const eventContext = await this.getContext(UMB_ACTION_EVENT_CONTEXT); + + eventContext.dispatchEvent( new UmbReloadTreeItemChildrenRequestEntityActionEvent({ - unique: this.unique, - entityType: this.entityType, + unique: this.args.unique, + entityType: this.args.entityType, }), ); } + + destroy(): void {} }