diff --git a/src/Umbraco.Web.UI.Client/examples/entity-content-type-condition/manifest.ts b/src/Umbraco.Web.UI.Client/examples/entity-content-type-condition/manifest.ts index c001d1e0d0..4d0972cc7f 100644 --- a/src/Umbraco.Web.UI.Client/examples/entity-content-type-condition/manifest.ts +++ b/src/Umbraco.Web.UI.Client/examples/entity-content-type-condition/manifest.ts @@ -1,24 +1,22 @@ -import { ManifestWorkspaceView } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestWorkspaceView } from '@umbraco-cms/backoffice/extension-registry'; const workspace: ManifestWorkspaceView = { - type: 'workspaceView', - alias: 'Example.WorkspaceView.EntityContentTypeCondition', - name: "Example Workspace View With Entity Content Type Condition", - element : () => import('./workspace-view.element.js'), - meta: { - icon : 'icon-bus', - label : 'Conditional', - pathname : 'conditional' - }, - conditions : [ - { - alias : 'Umb.Condition.WorkspaceContentTypeAlias', + type: 'workspaceView', + alias: 'Example.WorkspaceView.EntityContentTypeCondition', + name: 'Example Workspace View With Entity Content Type Condition', + element: () => import('./workspace-view.element.js'), + meta: { + icon: 'icon-bus', + label: 'Conditional', + pathname: 'conditional', + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceContentTypeAlias', //match : 'blogPost' - oneOf : ['blogPost','mediaType1'] - } - ] + oneOf: ['blogPost', 'mediaType1'], + }, + ], }; -export const manifests = [ - workspace -] +export const manifests = [workspace]; diff --git a/src/Umbraco.Web.UI.Client/examples/entity-content-type-condition/workspace-view.element.ts b/src/Umbraco.Web.UI.Client/examples/entity-content-type-condition/workspace-view.element.ts index eaa81ba3b9..cd6a518e36 100644 --- a/src/Umbraco.Web.UI.Client/examples/entity-content-type-condition/workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/examples/entity-content-type-condition/workspace-view.element.ts @@ -1,20 +1,19 @@ -import { css, html } from 'lit'; -import { customElement } from 'lit/decorators.js'; +import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; @customElement('umb-example-entity-content-type-condition') export class UmbWorkspaceViewElement extends UmbLitElement { - render() { - return html`

This is a conditional element that is only shown in workspaces based on it's entities content type.

`; - } - - static styles = [css``]; + override render() { + return html`

+ This is a conditional element that is only shown in workspaces based on it's entities content type. +

`; + } } -export default UmbWorkspaceViewElement +export default UmbWorkspaceViewElement; declare global { - interface HTMLElementTagNameMap { - 'umb-example-entity-content-type-condition': UmbWorkspaceViewElement; - } -} \ No newline at end of file + interface HTMLElementTagNameMap { + 'umb-example-entity-content-type-condition': UmbWorkspaceViewElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-content-type-alias.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-content-type-alias.condition.ts index e25d8c2ef6..f8daf58a67 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-content-type-alias.condition.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-content-type-alias.condition.ts @@ -11,23 +11,33 @@ import type { /** * Condition to apply workspace extension based on a content type alias */ -export class UmbWorkspaceContentTypeAliasCondition extends UmbConditionBase implements UmbExtensionCondition { - constructor(host: UmbControllerHost, args: UmbConditionControllerArguments) { +export class UmbWorkspaceContentTypeAliasCondition + extends UmbConditionBase + implements UmbExtensionCondition +{ + constructor( + host: UmbControllerHost, + args: UmbConditionControllerArguments, + ) { super(host, args); let permissionCheck: ((contentTypeAliases: string[]) => boolean) | undefined = undefined; if (this.config.match) { permissionCheck = (contentTypeAliases: string[]) => contentTypeAliases.includes(this.config.match!); } else if (this.config.oneOf) { - permissionCheck = (contentTypeAliases: string[]) => contentTypeAliases.some(item => this.config.oneOf!.includes(item)); + permissionCheck = (contentTypeAliases: string[]) => + contentTypeAliases.some((item) => this.config.oneOf!.includes(item)); } if (permissionCheck !== undefined) { this.consumeContext(UMB_PROPERTY_STRUCTURE_WORKSPACE_CONTEXT, (context) => { - this.observe(context.structure.contentTypeAliases,(contentTypeAliases) => { - this.permitted = contentTypeAliases ? permissionCheck(contentTypeAliases) : false; - }, - 'workspaceContentTypeAliasConditionObserver'); + this.observe( + context.structure.contentTypeAliases, + (contentTypeAliases) => { + this.permitted = contentTypeAliases ? permissionCheck(contentTypeAliases) : false; + }, + 'workspaceContentTypeAliasConditionObserver', + ); }); } else { throw new Error( @@ -37,22 +47,21 @@ export class UmbWorkspaceContentTypeAliasCondition extends UmbConditionBase & { - /** - * Define a content type alias in which workspace this extension should be available - * - * @example - * Depends on implementation, but i.e. "article", "image", "blockPage" - */ - match?: string; - /** - * Define one or more content type aliases in which workspace this extension should be available - * - * @example - * ["article", "image", "blockPage"] - */ - oneOf?: Array; -}; +export type WorkspaceContentTypeAliasConditionConfig = + UmbConditionConfigBase<'Umb.Condition.WorkspaceContentTypeAlias'> & { + /** + * Define a content type alias in which workspace this extension should be available + * @example + * Depends on implementation, but i.e. "article", "image", "blockPage" + */ + match?: string; + /** + * Define one or more content type aliases in which workspace this extension should be available + * @example + * ["article", "image", "blockPage"] + */ + oneOf?: Array; + }; export const manifest: ManifestCondition = { type: 'condition', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/index.ts index df2ac1f831..69ba11bc07 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/index.ts @@ -6,7 +6,6 @@ export * from './routable-workspace.context-token.js'; export * from './submittable-workspace.context-token.js'; export * from './variant-workspace.context-token.js'; export * from './workspace.context-token.js'; -export * from './entity-with-content-type-workspace-context-token.js'; export type * from './collection-workspace-context.interface.js'; export type * from './entity-workspace-context.interface.js'; export type * from './invariant-dataset-workspace-context.interface.js'; @@ -16,4 +15,3 @@ export type * from './routable-workspace-context.interface.js'; export type * from './submittable-workspace-context.interface.js'; export type * from './variant-dataset-workspace-context.interface.js'; export type * from './workspace-context.interface.js'; -export type * from './entity-with-content-type-workspace-context.interface.js'; \ No newline at end of file