add save action

This commit is contained in:
Mads Rasmussen
2024-04-09 20:15:28 +02:00
parent f36b09bccb
commit d4330a122d
3 changed files with 30 additions and 8 deletions

View File

@@ -22,9 +22,7 @@ export class UmbSubmitWorkspaceAction extends UmbWorkspaceActionBase<UmbSubmitta
(unique) => {
// We can't save if we don't have a unique
if (unique === undefined) {
this._isDisabled.setValue(true);
} else {
this._isDisabled.setValue(false);
this.disable();
}
},
'saveWorkspaceActionUniqueObserver',

View File

@@ -0,0 +1,27 @@
import { UMB_USER_PERMISSION_DOCUMENT_UPDATE } from '../../user-permissions/constants.js';
import { UmbDocumentUserPermissionCondition } from '../../user-permissions/document-user-permission.condition.js';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace';
export class UmbDocumentSaveWorkspaceAction extends UmbSubmitWorkspaceAction {
constructor(host: UmbControllerHost, args: any) {
super(host, args);
/* The action is disabled by default because the onChange callback
will first be triggered when the condition is changed to permitted */
this.disable();
const condition = new UmbDocumentUserPermissionCondition(host, {
host,
config: {
alias: 'Umb.Condition.UserPermission.Document',
allOf: [UMB_USER_PERMISSION_DOCUMENT_UPDATE],
},
onChange: () => {
condition.permitted ? this.enable() : this.disable();
},
});
}
}
export { UmbDocumentSaveWorkspaceAction as api };

View File

@@ -16,6 +16,7 @@ import type {
ManifestWorkspaceView,
} from '@umbraco-cms/backoffice/extension-registry';
import { UmbDocumentSaveAndPreviewWorkspaceAction } from './actions/save-and-preview.action.js';
import { UmbDocumentSaveWorkspaceAction } from './actions/save.action.js';
export const UMB_DOCUMENT_WORKSPACE_ALIAS = 'Umb.Workspace.Document';
@@ -115,7 +116,7 @@ const workspaceActions: Array<ManifestWorkspaceActions> = [
alias: 'Umb.WorkspaceAction.Document.Save',
name: 'Save Document Workspace Action',
weight: 80,
api: UmbSubmitWorkspaceAction,
api: () => import('./actions/save.action.js'),
meta: {
label: 'Save',
look: 'secondary',
@@ -126,10 +127,6 @@ const workspaceActions: Array<ManifestWorkspaceActions> = [
alias: 'Umb.Condition.WorkspaceAlias',
match: workspace.alias,
},
{
alias: 'Umb.Condition.UserPermission.Document',
allOf: [UMB_USER_PERMISSION_DOCUMENT_UPDATE],
},
],
},
{