add condition to check for content properties

This commit is contained in:
Mads Rasmussen
2024-07-02 07:56:58 +02:00
parent 2ca2d27dd8
commit 5e3907df54
4 changed files with 44 additions and 0 deletions

View File

@@ -0,0 +1 @@
export const UMB_CONTENT_HAS_PROPERTIES_WORKSPACE_CONDITION = 'Umb.Condition.Workspace.ContentHasProperties';

View File

@@ -0,0 +1,8 @@
import type { ManifestCondition } from '@umbraco-cms/backoffice/extension-api';
export const manifest: ManifestCondition = {
type: 'condition',
name: 'Content has properties Workspace Condition',
alias: 'Umb.Condition.Workspace.ContentHasProperties',
api: () => import('./content-has-properties.condition.js'),
};

View File

@@ -0,0 +1,34 @@
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import type {
UmbConditionConfigBase,
UmbConditionControllerArguments,
UmbExtensionCondition,
} from '@umbraco-cms/backoffice/extension-api';
import { UMB_CONTENT_WORKSPACE_CONTEXT } from '../../../../content-workspace.context-token.js';
import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry';
import type { UmbContentTypeModel } from '@umbraco-cms/backoffice/content-type';
import { UmbContentTypePropertyStructureHelper } from '@umbraco-cms/backoffice/content-type';
export class UmbContentHasPropertiesWorkspaceCondition
extends UmbConditionBase<UmbConditionConfigBase>
implements UmbExtensionCondition
{
#propertyStructureHelper = new UmbContentTypePropertyStructureHelper<UmbContentTypeModel>(this);
constructor(host: UmbControllerHost, args: UmbConditionControllerArguments<UmbConditionConfigBase>) {
super(host, args);
this.consumeContext(UMB_CONTENT_WORKSPACE_CONTEXT, (context) => {
this.observe(
context.structure.contentTypes,
(contentTypes) => {
const hasProperties = contentTypes.some((contentType) => contentType.properties.length > 0);
this.permitted = hasProperties;
},
'contentTypesObserver',
);
});
}
}
export { UmbContentHasPropertiesWorkspaceCondition as api };

View File

@@ -0,0 +1 @@
export * from './constants.js';