From 5dfc604740e1a2c8d11be4e476493aad1316db11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Sun, 3 Mar 2024 23:20:56 +0100 Subject: [PATCH] MetaWorkspaceActionMenuItem --- .../workspace-action-menu-item.model.ts | 24 ++++++++++++++++--- .../workspace-action-menu.element.ts | 4 ++-- .../documents/workspace/manifests.ts | 12 +++++----- .../input-entity-user-permission.element.ts | 2 +- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action-menu-item.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action-menu-item.model.ts index 4e9b9255c3..b0579729e1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action-menu-item.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action-menu-item.model.ts @@ -1,5 +1,4 @@ import type { ConditionTypes } from '../conditions/types.js'; -import type { MetaEntityAction } from './entity-action.model.js'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; import type { UmbWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; @@ -11,8 +10,7 @@ export interface ManifestWorkspaceActionMenuItem meta: MetaWorkspaceActionMenuItem; } -// TODO: Stop inheriting from from EntityActions, they are not equivalent as workspace actions have the workspace context available. [NL] -export interface MetaWorkspaceActionMenuItem extends MetaEntityAction { +export interface MetaWorkspaceActionMenuItem { /** * Define which workspace actions this menu item should be shown for. * @examples [ @@ -22,4 +20,24 @@ export interface MetaWorkspaceActionMenuItem extends MetaEntityAction { * @required */ workspaceActions: string | string[]; + + /** + * An icon to represent the action to be performed + * + * @examples [ + * "icon-box", + * "icon-grid" + * ] + */ + icon: string; + + /** + * The friendly name of the action to perform + * + * @examples [ + * "Create", + * "Create Content Template" + * ] + */ + label: string; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/shared/workspace-action-menu/workspace-action-menu.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/shared/workspace-action-menu/workspace-action-menu.element.ts index f8da450e24..526c61bd9a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/shared/workspace-action-menu/workspace-action-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/shared/workspace-action-menu/workspace-action-menu.element.ts @@ -59,8 +59,8 @@ export class UmbWorkspaceActionMenuElement extends UmbLitElement { const containsAlias = Array.isArray(action.meta.workspaceActions) ? action.meta.workspaceActions : [action.meta.workspaceActions].some((alias) => this.workspaceActions.includes(alias)); - const isValidEntityType = !action.meta.entityTypes.length || action.meta.entityTypes.includes(entityType); - return containsAlias && isValidEntityType; + //const isValidEntityType = !action.forEntityTypes.length || action.forEntityTypes.includes(entityType); + return containsAlias; // && isValidEntityType; }, (ctrls) => { this._actions = ctrls; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts index c27ad84b4d..68ca57a851 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts @@ -158,44 +158,44 @@ const workspaceActions: Array = [ const workspaceActionMenuItems: Array = [ { type: 'workspaceActionMenuItem', + kind: 'default', alias: 'Umb.Document.WorkspaceActionMenuItem.Unpublish', name: 'Unpublish', weight: 10, - api: UmbUnpublishDocumentEntityAction, + api: UmbDocumentSaveAndPublishWorkspaceAction, forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { workspaceActions: 'Umb.WorkspaceAction.Document.SaveAndPublish', label: 'Unpublish', icon: 'icon-globe', - repositoryAlias: 'Umb.Repository.Document.Detail', }, }, { type: 'workspaceActionMenuItem', + kind: 'default', alias: 'Umb.Document.WorkspaceActionMenuItem.PublishWithDescendants', name: 'Publish with descendants', weight: 20, - api: UmbPublishDocumentEntityAction, + api: UmbDocumentSaveAndPublishWorkspaceAction, forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { workspaceActions: 'Umb.WorkspaceAction.Document.SaveAndPublish', label: 'Publish with descendants (TBD)', icon: 'icon-globe', - repositoryAlias: 'Umb.Repository.Document.Detail', }, }, { type: 'workspaceActionMenuItem', + kind: 'default', alias: 'Umb.Document.WorkspaceActionMenuItem.SchedulePublishing', name: 'Schedule publishing', weight: 20, - api: UmbPublishDocumentEntityAction, + api: UmbDocumentSaveAndPublishWorkspaceAction, forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { workspaceActions: 'Umb.WorkspaceAction.Document.SaveAndPublish', label: 'Schedule publishing (TBD)', icon: 'icon-globe', - repositoryAlias: 'Umb.Repository.Document.Detail', }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user-permission/components/input-entity-user-permission/input-entity-user-permission.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user-permission/components/input-entity-user-permission/input-entity-user-permission.element.ts index 77fc38e38f..490b97b45e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user-permission/components/input-entity-user-permission/input-entity-user-permission.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user-permission/components/input-entity-user-permission/input-entity-user-permission.element.ts @@ -43,7 +43,7 @@ export class UmbInputEntityUserPermissionElement extends FormControlMixin(UmbLit umbExtensionsRegistry.byType('entityUserPermission'), (userPermissionManifests) => { this._manifests = userPermissionManifests.filter((manifest) => - manifest.forEntityTypes.some((x) => x === this.entityType), + manifest.forEntityTypes.includes(this.entityType), ); }, 'umbUserPermissionManifestsObserver',