From 196af99dcd958d69eafb4088dad42c1f545440bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 23 Dec 2022 13:28:15 +0100 Subject: [PATCH] improve workspace-action model --- .../document/workspace-document.element.ts | 37 ++++++++++++++++++- .../workspace-action-node-save.element.ts | 9 +++-- .../workspace-content.element.ts | 3 +- .../workspace-entity.element.ts | 5 +++ .../workspace-action.models.ts | 4 ++ 5 files changed, 52 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/document/workspace-document.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/document/workspace-document.element.ts index c49419a2b8..062829982e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/document/workspace-document.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/document/workspace-document.element.ts @@ -3,7 +3,7 @@ import { css, html, LitElement } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { UmbWorkspaceDocumentContext } from './workspace-document.context'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry'; -import type { ManifestWorkspaceView } from '@umbraco-cms/models'; +import type { ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; import { UmbContextConsumerMixin, UmbContextProviderMixin } from '@umbraco-cms/context-api'; import '../shared/workspace-content/workspace-content.element'; import { UmbObserverMixin } from '@umbraco-cms/observable-api'; @@ -61,7 +61,7 @@ export class UmbWorkspaceDocumentElement extends UmbObserverMixin(UmbContextCons } private _registerWorkspaceViews() { - const dashboards: Array = [ + const dashboards: Array = [ { type: 'workspaceView', alias: 'Umb.WorkspaceView.Document.Edit', @@ -88,6 +88,39 @@ export class UmbWorkspaceDocumentElement extends UmbObserverMixin(UmbContextCons icon: 'info', }, }, + { + type: 'workspaceAction', + alias: 'Umb.WorkspaceAction.Document.SaveAndPreview', + name: 'Save Document Workspace Action', + loader: () => import('../shared/actions/save/workspace-action-node-save.element'), + meta: { + workspaces: ['Umb.Workspace.Document'], + label: 'Save and preview', + }, + }, + { + type: 'workspaceAction', + alias: 'Umb.WorkspaceAction.Document.Save', + name: 'Save Document Workspace Action', + loader: () => import('../shared/actions/save/workspace-action-node-save.element'), + meta: { + workspaces: ['Umb.Workspace.Document'], + look: 'secondary', + label: 'Save' + }, + }, + { + type: 'workspaceAction', + alias: 'Umb.WorkspaceAction.Document.SaveAndPublish', + name: 'Save Document Workspace Action', + loader: () => import('../shared/actions/save/workspace-action-node-save.element'), + meta: { + workspaces: ['Umb.Workspace.Document'], + label: 'Save and publish', + look: 'primary', + color: 'positive' + }, + }, ]; dashboards.forEach((dashboard) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/actions/save/workspace-action-node-save.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/actions/save/workspace-action-node-save.element.ts index e03c33295e..12a71ccb71 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/actions/save/workspace-action-node-save.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/actions/save/workspace-action-node-save.element.ts @@ -4,6 +4,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import type { UUIButtonState } from '@umbraco-ui/uui'; import type { UmbWorkspaceNodeContext } from '../../workspace-context/workspace-node.context'; import { UmbContextConsumerMixin } from '@umbraco-cms/context-api'; +import { ManifestWorkspaceAction } from '@umbraco-cms/models'; @customElement('umb-workspace-action-node-save') export class UmbWorkspaceActionNodeSaveElement extends UmbContextConsumerMixin(LitElement) { @@ -15,6 +16,8 @@ export class UmbWorkspaceActionNodeSaveElement extends UmbContextConsumerMixin(L private _workspaceContext?: UmbWorkspaceNodeContext; + public manifest?: ManifestWorkspaceAction; + constructor() { super(); @@ -38,9 +41,9 @@ export class UmbWorkspaceActionNodeSaveElement extends UmbContextConsumerMixin(L render() { return html``; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/workspace-content/workspace-content.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/workspace-content/workspace-content.element.ts index 0e007307fc..10428653e3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/workspace-content/workspace-content.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/workspace-content/workspace-content.element.ts @@ -189,7 +189,7 @@ export class UmbWorkspaceContentElement extends UmbContextProviderMixin( - + `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/workspace-entity/workspace-entity.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/workspace-entity/workspace-entity.element.ts index 1511f2f33d..e22330651a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/workspace-entity/workspace-entity.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/workspaces/shared/workspace-entity/workspace-entity.element.ts @@ -48,6 +48,11 @@ export class UmbWorkspaceEntity extends UmbContextConsumerMixin(UmbObserverMixin router-slot { height: 100%; } + + umb-extension-slot[slot='actions'] { + display: flex; + gap: 6px; + } `, ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/extensions-registry/workspace-action.models.ts b/src/Umbraco.Web.UI.Client/src/core/extensions-registry/workspace-action.models.ts index 769880df95..9791820eb3 100644 --- a/src/Umbraco.Web.UI.Client/src/core/extensions-registry/workspace-action.models.ts +++ b/src/Umbraco.Web.UI.Client/src/core/extensions-registry/workspace-action.models.ts @@ -1,3 +1,4 @@ +import type { InterfaceColor, InterfaceLook } from '@umbraco-ui/uui-base/lib/types/index' import type { ManifestElement } from './models'; export interface ManifestWorkspaceAction extends ManifestElement { @@ -7,4 +8,7 @@ export interface ManifestWorkspaceAction extends ManifestElement { export interface MetaEditorAction { workspaces: Array; + label: string, + look?: InterfaceLook, + color?: InterfaceColor, }