From 00ce3b027504d5ed76cf66001943c1941d61d95f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 20:43:05 +0100 Subject: [PATCH] add conditions to bulk action manifest --- .../extensions-registry/entity-bulk-action.models.ts | 6 +++++- .../documents/entity-bulk-actions/manifests.ts | 8 ++++++-- .../media/media/entity-bulk-actions/manifests.ts | 12 +++++++++--- .../collection-selection-actions.element.ts | 2 +- .../src/stories/extending/entity-actions.mdx | 4 +++- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts index 51db3ce5fe..b2e8900754 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts @@ -3,11 +3,15 @@ import type { ManifestElement } from './models'; export interface ManifestEntityBulkAction extends ManifestElement { type: 'entityBulkAction'; meta: MetaEntityBulkAction; + conditions: ConditionsEntityBulkAction; } export interface MetaEntityBulkAction { label: string; - entityType: string; api: any; // create interface repositoryAlias: string; } + +export interface ConditionsEntityBulkAction { + entityType: string; +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts index 7edd0952e3..b7032e2bc7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts @@ -12,11 +12,13 @@ const entityActions: Array = [ name: 'Move Document Entity Bulk Action', weight: 10, meta: { - entityType, label: 'Move', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentMoveEntityBulkAction, }, + conditions: { + entityType, + }, }, { type: 'entityBulkAction', @@ -24,11 +26,13 @@ const entityActions: Array = [ name: 'Copy Document Entity Bulk Action', weight: 9, meta: { - entityType, label: 'Copy', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentCopyEntityBulkAction, }, + conditions: { + entityType, + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts index 86b84b2856..a7159898b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts @@ -13,11 +13,13 @@ const entityActions: Array = [ name: 'Move Media Entity Bulk Action', weight: 100, meta: { - entityType, label: 'Move', repositoryAlias: MEDIA_REPOSITORY_ALIAS, api: UmbMediaMoveEntityBulkAction, }, + conditions: { + entityType, + }, }, { type: 'entityBulkAction', @@ -25,11 +27,13 @@ const entityActions: Array = [ name: 'Copy Media Entity Bulk Action', weight: 90, meta: { - entityType, label: 'Copy', repositoryAlias: MEDIA_REPOSITORY_ALIAS, api: UmbMediaCopyEntityBulkAction, }, + conditions: { + entityType, + }, }, { type: 'entityBulkAction', @@ -37,11 +41,13 @@ const entityActions: Array = [ name: 'Trash Media Entity Bulk Action', weight: 80, meta: { - entityType, label: 'Trash', repositoryAlias: MEDIA_REPOSITORY_ALIAS, api: UmbMediaTrashEntityBulkAction, }, + conditions: { + entityType, + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts index 099877a7b1..0b663112f6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts @@ -94,7 +94,7 @@ export class UmbCollectionSelectionActionsElement extends UmbLitElement { this.observe( umbExtensionsRegistry.extensionsOfType('entityBulkAction').pipe( map((extensions) => { - return extensions.filter((extension) => extension.meta.entityType === this.entityType); + return extensions.filter((extension) => extension.conditions.entityType === this.entityType); }) ), (bulkActions) => { diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx index 20dc016474..3298aabe03 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx @@ -157,12 +157,14 @@ const manifest = { name: 'My Entity Bulk Action', weight: 10, meta: { - entityType: 'my-entity', icon: 'umb:add', label: 'My Entity Bulk Action', repositoryAlias: 'My.Repository', api: MyEntityBulkAction, }, + conditions: { + entityType: 'my-entity', + }, }; extensionRegistry.register(manifest);