From 5201dd6ca0ca729b0aff2a11979ace16da29d56f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 13 Sep 2024 13:32:12 +0200 Subject: [PATCH 1/7] global type definition --- .../extension-registry/conditions/types.ts | 38 ++++++++++++++++--- .../models/collection-action.model.ts | 5 ++- .../models/collection-view.model.ts | 3 +- .../models/collection.models.ts | 5 ++- .../models/current-user-action.model.ts | 3 +- .../models/dashboard.model.ts | 3 +- 6 files changed, 42 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts index 2c4296cae0..72219b0bb7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts @@ -12,11 +12,6 @@ import type { import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api'; import type { UmbDocumentUserPermissionConditionConfig } from '@umbraco-cms/backoffice/document'; -/* TODO: in theory should't the core package import from other packages. -Are there any other way we can do this? -Niels: Sadly I don't see any other solutions currently. But are very open for ideas :-) now that I think about it maybe there is some ability to extend a global type, similar to the 'declare global' trick we use on Elements. -*/ - // temp location to avoid circular dependencies export type BlockWorkspaceHasSettingsConditionConfig = UmbConditionConfigBase<'Umb.Condition.BlockWorkspaceHasSettings'>; @@ -38,3 +33,36 @@ export type ConditionTypes = | WorkspaceAliasConditionConfig | WorkspaceContentTypeAliasConditionConfig | WorkspaceEntityTypeConditionConfig; + +type UnionOfProperties = T extends object ? T[keyof T] : never; + +declare global { + /** + * This global type allows to declare condition types from its own module. + * @example + ```js + declare global { + interface UmbExtensionConditionMap { + My_UNIQUE_CONDITION_NAME: MyExtensionConditionType; + } + } + ``` + If you have multiple types, you can declare them in this way: + ```js + declare global { + interface UmbExtensionConditionMap { + My_UNIQUE_CONDITION_NAME: MyExtensionConditionTypeA | MyExtensionConditionTypeB; + } + } + ``` + */ + interface UmbExtensionConditionMap { + UMB_CORE: ConditionTypes; + } + + /** + * This global type provides a union of all declared manifest types. + * If this is a local package that declares additional Manifest Types, then these will also be included in this union. + */ + type UmbExtensionCondition = UnionOfProperties; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection-action.model.ts index af178c67bd..edc76284d8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection-action.model.ts @@ -1,4 +1,3 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; /** @@ -6,7 +5,9 @@ import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbr * For example for content you may wish to create a new document etc */ // TODO: create interface for API -export interface ManifestCollectionAction extends ManifestElementAndApi, ManifestWithDynamicConditions { +export interface ManifestCollectionAction + extends ManifestElementAndApi, + ManifestWithDynamicConditions { type: 'collectionAction'; meta: MetaCollectionAction; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection-view.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection-view.model.ts index 5f1e3d3ba3..6298377e55 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection-view.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection-view.model.ts @@ -1,7 +1,6 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; -export interface ManifestCollectionView extends ManifestElement, ManifestWithDynamicConditions { +export interface ManifestCollectionView extends ManifestElement, ManifestWithDynamicConditions { type: 'collectionView'; meta: MetaCollectionView; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection.models.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection.models.ts index c3a5b4e16b..d5e2bc4cec 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection.models.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/collection.models.ts @@ -1,7 +1,8 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; -export interface ManifestCollection extends ManifestElementAndApi, ManifestWithDynamicConditions { +export interface ManifestCollection + extends ManifestElementAndApi, + ManifestWithDynamicConditions { type: 'collection'; meta: MetaCollection; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/current-user-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/current-user-action.model.ts index 5366cb251e..90ad56e9dd 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/current-user-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/current-user-action.model.ts @@ -1,4 +1,3 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UmbAction } from '../../action/action.interface.js'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; @@ -24,7 +23,7 @@ export interface UmbCurrentUserAction extends UmbAction extends ManifestElementAndApi>, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'currentUserAction'; meta: MetaType; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/dashboard.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/dashboard.model.ts index 95d78dcafb..c800737f0c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/dashboard.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/dashboard.model.ts @@ -1,10 +1,9 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UmbDashboardElement } from '../interfaces/index.js'; import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; export interface ManifestDashboard extends ManifestElement, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'dashboard'; meta: MetaDashboard; } From eb3d6437c8b778ae5c0f73ece0be91df8e1c5089 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 13 Sep 2024 14:03:57 +0200 Subject: [PATCH 2/7] use global type --- .../core/extension-registry/models/entity-action.model.ts | 3 +-- .../extension-registry/models/entity-bulk-action.model.ts | 3 +-- .../core/extension-registry/models/menu-item.model.ts | 3 +-- .../core/extension-registry/models/property-action.model.ts | 3 +-- .../core/extension-registry/models/repository.model.ts | 3 +-- .../extension-registry/models/section-sidebar-app.model.ts | 3 +-- .../core/extension-registry/models/section-view.model.ts | 3 +-- .../packages/core/extension-registry/models/section.model.ts | 3 +-- .../packages/core/extension-registry/models/tree.model.ts | 3 +-- .../models/workspace-action-menu-item.model.ts | 3 +-- .../core/extension-registry/models/workspace-action.model.ts | 3 +-- .../extension-registry/models/workspace-context.model.ts | 5 +++-- .../extension-registry/models/workspace-footer-app.model.ts | 3 +-- .../core/extension-registry/models/workspace-view.model.ts | 3 +-- 14 files changed, 16 insertions(+), 28 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts index 7a5c58c46a..2108a6b1fc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts @@ -1,4 +1,3 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; import type { UmbEntityAction, UmbEntityActionElement } from '@umbraco-cms/backoffice/entity-action'; import type { UmbModalToken, UmbPickerModalData, UmbPickerModalValue } from '@umbraco-cms/backoffice/modal'; @@ -9,7 +8,7 @@ import type { UmbModalToken, UmbPickerModalData, UmbPickerModalValue } from '@um */ export interface ManifestEntityAction extends ManifestElementAndApi>, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'entityAction'; forEntityTypes: Array; meta: MetaType; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-bulk-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-bulk-action.model.ts index ee70697aaf..b3244c18ed 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-bulk-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-bulk-action.model.ts @@ -1,4 +1,3 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UmbEntityBulkActionElement } from '../../entity-bulk-action/entity-bulk-action-element.interface.js'; import type { UmbEntityBulkAction } from '@umbraco-cms/backoffice/entity-bulk-action'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; @@ -9,7 +8,7 @@ import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbr */ export interface ManifestEntityBulkAction extends ManifestElementAndApi>, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'entityBulkAction'; forEntityTypes: Array; meta: MetaType; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/menu-item.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/menu-item.model.ts index 68f7d2f354..eb5893aaba 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/menu-item.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/menu-item.model.ts @@ -1,10 +1,9 @@ import type { UmbMenuItemElement } from '../interfaces/menu-item-element.interface.js'; -import type { ConditionTypes } from '../conditions/types.js'; import type { ManifestWithDynamicConditions, ManifestElement } from '@umbraco-cms/backoffice/extension-api'; export interface ManifestMenuItem extends ManifestElement, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'menuItem'; meta: MetaMenuItem; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/property-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/property-action.model.ts index 563ca1894c..b166089768 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/property-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/property-action.model.ts @@ -1,11 +1,10 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UmbPropertyAction } from '../../property-action/components/property-action/property-action.interface.js'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; export interface ManifestPropertyAction extends ManifestElementAndApi>, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'propertyAction'; forPropertyEditorUis: string[]; meta: MetaType; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/repository.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/repository.model.ts index 3a169b1d9a..ac865f4488 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/repository.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/repository.model.ts @@ -1,8 +1,7 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UmbApi, ManifestApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; // TODO: Consider adding a ClassType for this manifest. (Currently we cannot know the scope of a repository, therefor we are going with ExtensionApi for now.) export interface ManifestRepository extends ManifestApi, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'repository'; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-sidebar-app.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-sidebar-app.model.ts index 2a0abb3bc7..6325b00182 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-sidebar-app.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-sidebar-app.model.ts @@ -1,10 +1,9 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UmbSectionSidebarAppElement } from '../interfaces/section-sidebar-app-element.interface.js'; import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; export interface ManifestSectionSidebarApp extends ManifestElement, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'sectionSidebarApp'; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-view.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-view.model.ts index 426dd4eaae..f650d7c922 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-view.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-view.model.ts @@ -1,10 +1,9 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UmbSectionViewElement } from '../interfaces/section-view-element.interface.js'; import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; export interface ManifestSectionView extends ManifestElement, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'sectionView'; meta: MetaSectionView; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section.model.ts index 95b6661c05..226cc8b9f3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section.model.ts @@ -1,10 +1,9 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UmbSectionElement } from '../interfaces/index.js'; import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; export interface ManifestSection extends ManifestElement, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'section'; meta: MetaSection; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/tree.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/tree.model.ts index fce6b56f7a..061eaeabb6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/tree.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/tree.model.ts @@ -1,7 +1,6 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; -export interface ManifestTree extends ManifestElementAndApi, ManifestWithDynamicConditions { +export interface ManifestTree extends ManifestElementAndApi, ManifestWithDynamicConditions { type: 'tree'; meta: MetaTree; } 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 8c09805c6d..c5eb61f729 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,4 +1,3 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UmbWorkspaceActionMenuItem } from '../../workspace/components/workspace-action-menu-item/workspace-action-menu-item.interface.js'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; @@ -6,7 +5,7 @@ import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbr export interface ManifestWorkspaceActionMenuItem< MetaType extends MetaWorkspaceActionMenuItem = MetaWorkspaceActionMenuItem, > extends ManifestElementAndApi>, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'workspaceActionMenuItem'; /** * Define which workspace actions this menu item should be shown for. diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action.model.ts index ee83060735..815f5a8916 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action.model.ts @@ -1,4 +1,3 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UUIInterfaceColor, UUIInterfaceLook } from '@umbraco-cms/backoffice/external/uui'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; import type { UmbWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; @@ -6,7 +5,7 @@ import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controlle export interface ManifestWorkspaceAction extends ManifestElementAndApi>, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'workspaceAction'; meta: MetaType; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-context.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-context.model.ts index 98181a6f38..d35c05d967 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-context.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-context.model.ts @@ -1,6 +1,7 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { ManifestApi, ManifestWithDynamicConditions, UmbApi } from '@umbraco-cms/backoffice/extension-api'; -export interface ManifestWorkspaceContext extends ManifestWithDynamicConditions, ManifestApi { +export interface ManifestWorkspaceContext + extends ManifestWithDynamicConditions, + ManifestApi { type: 'workspaceContext'; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-footer-app.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-footer-app.model.ts index b1d3972895..8de8e2a736 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-footer-app.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-footer-app.model.ts @@ -1,10 +1,9 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; export interface ManifestWorkspaceFooterApp extends ManifestElementAndApi, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'workspaceFooterApp'; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-view.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-view.model.ts index a8e3af27ac..fc6e49012a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-view.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-view.model.ts @@ -1,4 +1,3 @@ -import type { ConditionTypes } from '../conditions/types.js'; import type { UmbWorkspaceViewElement } from '../interfaces/workspace-view-element.interface.js'; import type { ManifestWithDynamicConditions, @@ -8,7 +7,7 @@ import type { export interface ManifestWorkspaceView extends ManifestWithView, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'workspaceView'; meta: MetaType; } From c924bd950cf008c6755a363cd8c1ac08c39167ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 13 Sep 2024 14:05:55 +0200 Subject: [PATCH 3/7] use UmbExtensionCondition --- .../core/extension-registry/models/entity-action.model.ts | 2 +- .../core/extension-registry/models/entity-bulk-action.model.ts | 2 +- .../packages/core/extension-registry/models/menu-item.model.ts | 2 +- .../core/extension-registry/models/property-action.model.ts | 2 +- .../packages/core/extension-registry/models/repository.model.ts | 2 +- .../core/extension-registry/models/section-sidebar-app.model.ts | 2 +- .../core/extension-registry/models/section-view.model.ts | 2 +- .../packages/core/extension-registry/models/section.model.ts | 2 +- .../src/packages/core/extension-registry/models/tree.model.ts | 2 +- .../models/workspace-action-menu-item.model.ts | 2 +- .../core/extension-registry/models/workspace-action.model.ts | 2 +- .../core/extension-registry/models/workspace-context.model.ts | 2 +- .../extension-registry/models/workspace-footer-app.model.ts | 2 +- .../core/extension-registry/models/workspace-view.model.ts | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts index 2108a6b1fc..5baafff43d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts @@ -8,7 +8,7 @@ import type { UmbModalToken, UmbPickerModalData, UmbPickerModalValue } from '@um */ export interface ManifestEntityAction extends ManifestElementAndApi>, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'entityAction'; forEntityTypes: Array; meta: MetaType; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-bulk-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-bulk-action.model.ts index b3244c18ed..302710ac14 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-bulk-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-bulk-action.model.ts @@ -8,7 +8,7 @@ import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbr */ export interface ManifestEntityBulkAction extends ManifestElementAndApi>, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'entityBulkAction'; forEntityTypes: Array; meta: MetaType; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/menu-item.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/menu-item.model.ts index eb5893aaba..c0e8cbf63a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/menu-item.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/menu-item.model.ts @@ -3,7 +3,7 @@ import type { ManifestWithDynamicConditions, ManifestElement } from '@umbraco-cm export interface ManifestMenuItem extends ManifestElement, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'menuItem'; meta: MetaMenuItem; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/property-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/property-action.model.ts index b166089768..f5ca9ab23c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/property-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/property-action.model.ts @@ -4,7 +4,7 @@ import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbr export interface ManifestPropertyAction extends ManifestElementAndApi>, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'propertyAction'; forPropertyEditorUis: string[]; meta: MetaType; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/repository.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/repository.model.ts index ac865f4488..0008dd88a0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/repository.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/repository.model.ts @@ -2,6 +2,6 @@ import type { UmbApi, ManifestApi, ManifestWithDynamicConditions } from '@umbrac // TODO: Consider adding a ClassType for this manifest. (Currently we cannot know the scope of a repository, therefor we are going with ExtensionApi for now.) export interface ManifestRepository extends ManifestApi, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'repository'; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-sidebar-app.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-sidebar-app.model.ts index 6325b00182..8bf18b69c2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-sidebar-app.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-sidebar-app.model.ts @@ -3,7 +3,7 @@ import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cm export interface ManifestSectionSidebarApp extends ManifestElement, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'sectionSidebarApp'; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-view.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-view.model.ts index f650d7c922..8001e645cf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-view.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section-view.model.ts @@ -3,7 +3,7 @@ import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cm export interface ManifestSectionView extends ManifestElement, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'sectionView'; meta: MetaSectionView; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section.model.ts index 226cc8b9f3..8e615a895b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/section.model.ts @@ -3,7 +3,7 @@ import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cm export interface ManifestSection extends ManifestElement, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'section'; meta: MetaSection; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/tree.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/tree.model.ts index 061eaeabb6..848ad65021 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/tree.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/tree.model.ts @@ -1,6 +1,6 @@ import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; -export interface ManifestTree extends ManifestElementAndApi, ManifestWithDynamicConditions { +export interface ManifestTree extends ManifestElementAndApi, ManifestWithDynamicConditions { type: 'tree'; meta: MetaTree; } 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 c5eb61f729..c82d42b19f 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 @@ -5,7 +5,7 @@ import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbr export interface ManifestWorkspaceActionMenuItem< MetaType extends MetaWorkspaceActionMenuItem = MetaWorkspaceActionMenuItem, > extends ManifestElementAndApi>, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'workspaceActionMenuItem'; /** * Define which workspace actions this menu item should be shown for. diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action.model.ts index 815f5a8916..78c988d443 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action.model.ts @@ -5,7 +5,7 @@ import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controlle export interface ManifestWorkspaceAction extends ManifestElementAndApi>, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'workspaceAction'; meta: MetaType; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-context.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-context.model.ts index d35c05d967..0824891b54 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-context.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-context.model.ts @@ -1,7 +1,7 @@ import type { ManifestApi, ManifestWithDynamicConditions, UmbApi } from '@umbraco-cms/backoffice/extension-api'; export interface ManifestWorkspaceContext - extends ManifestWithDynamicConditions, + extends ManifestWithDynamicConditions, ManifestApi { type: 'workspaceContext'; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-footer-app.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-footer-app.model.ts index 8de8e2a736..70bbcd4eb4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-footer-app.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-footer-app.model.ts @@ -3,7 +3,7 @@ import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbr export interface ManifestWorkspaceFooterApp extends ManifestElementAndApi, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'workspaceFooterApp'; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-view.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-view.model.ts index fc6e49012a..5fa18028e0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-view.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-view.model.ts @@ -7,7 +7,7 @@ import type { export interface ManifestWorkspaceView extends ManifestWithView, - ManifestWithDynamicConditions { + ManifestWithDynamicConditions { type: 'workspaceView'; meta: MetaType; } From a8a53637b652c01d994f7c634f8c9f4ec26627d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 13 Sep 2024 14:08:08 +0200 Subject: [PATCH 4/7] Block Conditions --- .../src/packages/block/block/conditions/types.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/block/block/conditions/types.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/conditions/types.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/conditions/types.ts new file mode 100644 index 0000000000..b7d4e6f2ae --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/conditions/types.ts @@ -0,0 +1,13 @@ +import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api'; + +export type BlockWorkspaceHasSettingsConditionConfig = + UmbConditionConfigBase<'Umb.Condition.BlockWorkspaceHasSettings'>; + +export type BlockEntryShowContentEditConditionConfig = + UmbConditionConfigBase<'Umb.Condition.BlockEntryShowContentEdit'>; + +declare global { + interface UmbExtensionConditionMap { + UmbBlock: BlockEntryShowContentEditConditionConfig | BlockWorkspaceHasSettingsConditionConfig; + } +} From 28548b8e0e6ddcbd6b34208d6189f89db055e5dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 13 Sep 2024 14:14:20 +0200 Subject: [PATCH 5/7] workspace conditions --- .../extension-registry/conditions/types.ts | 10 +--- .../core/workspace/conditions/const.ts | 1 + .../core/workspace/conditions/index.ts | 6 +-- .../core/workspace/conditions/types.ts | 46 +++++++++++++++++++ .../conditions/workspace-alias.condition.ts | 17 +------ .../workspace-content-type-alias.condition.ts | 18 +------- .../workspace-entity-type.condition.ts | 11 +---- .../workspace-has-collection.condition.ts | 13 ++---- 8 files changed, 57 insertions(+), 65 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/const.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts index 72219b0bb7..0939e4845c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/conditions/types.ts @@ -4,11 +4,6 @@ import type { UmbSectionUserPermissionConditionConfig } from '../../section/cond import type { SectionAliasConditionConfig } from './section-alias.condition.js'; import type { SwitchConditionConfig } from './switch.condition.js'; import type { UmbMultipleAppLanguageConditionConfig } from './multiple-app-languages.condition.js'; -import type { - WorkspaceAliasConditionConfig, - WorkspaceEntityTypeConditionConfig, - WorkspaceContentTypeAliasConditionConfig, -} from '@umbraco-cms/backoffice/workspace'; import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api'; import type { UmbDocumentUserPermissionConditionConfig } from '@umbraco-cms/backoffice/document'; @@ -29,10 +24,7 @@ export type ConditionTypes = | UmbConditionConfigBase | UmbDocumentUserPermissionConditionConfig | UmbMultipleAppLanguageConditionConfig - | UmbSectionUserPermissionConditionConfig - | WorkspaceAliasConditionConfig - | WorkspaceContentTypeAliasConditionConfig - | WorkspaceEntityTypeConditionConfig; + | UmbSectionUserPermissionConditionConfig; type UnionOfProperties = T extends object ? T[keyof T] : never; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/const.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/const.ts new file mode 100644 index 0000000000..aa7f5b839f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/const.ts @@ -0,0 +1 @@ +export const UMB_WORKSPACE_HAS_COLLECTION_CONDITION = 'Umb.Condition.WorkspaceHasCollection'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/index.ts index 9ec898b193..06c33f562f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/index.ts @@ -1,5 +1 @@ -export type { WorkspaceAliasConditionConfig } from './workspace-alias.condition.js'; -export type { WorkspaceEntityTypeConditionConfig } from './workspace-entity-type.condition.js'; -export type { WorkspaceHasCollectionConditionConfig } from './workspace-has-collection.condition.js'; -export type { WorkspaceContentTypeAliasConditionConfig as WorkspaceEntityContentTypeConditionConfig } from './workspace-content-type-alias.condition.js'; -export type { WorkspaceContentTypeAliasConditionConfig } from './workspace-content-type-alias.condition.js'; +export type * from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts new file mode 100644 index 0000000000..dc934238f1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts @@ -0,0 +1,46 @@ +import type { UMB_WORKSPACE_HAS_COLLECTION_CONDITION } from './const.js'; +import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api'; + +export type WorkspaceAliasConditionConfig = UmbConditionConfigBase<'Umb.Condition.WorkspaceAlias'> & { + /** + * Define the workspace that this extension should be available in + * @example + * "Umb.Workspace.Document" + */ + match?: string; + /** + * Define one or more workspaces that this extension should be available in + * @example + * ["Umb.Workspace.Document", "Umb.Workspace.Media"] + */ + 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 type WorkspaceEntityTypeConditionConfig = UmbConditionConfigBase<'Umb.Condition.WorkspaceEntityType'> & { + /** + * Define the workspace that this extension should be available in + * @example + * "Document" + */ + match: string; +}; + +export type WorkspaceHasCollectionConditionConfig = UmbConditionConfigBase< + typeof UMB_WORKSPACE_HAS_COLLECTION_CONDITION +>; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-alias.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-alias.condition.ts index cd9026d329..e065f2d7a6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-alias.condition.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-alias.condition.ts @@ -1,8 +1,8 @@ import { UMB_WORKSPACE_CONTEXT, type UmbWorkspaceContext } from '../contexts/index.js'; +import type { WorkspaceAliasConditionConfig } from './types.js'; import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry'; import type { ManifestCondition, - UmbConditionConfigBase, UmbConditionControllerArguments, UmbExtensionCondition, } from '@umbraco-cms/backoffice/extension-api'; @@ -34,21 +34,6 @@ export class UmbWorkspaceAliasCondition } } -export type WorkspaceAliasConditionConfig = UmbConditionConfigBase<'Umb.Condition.WorkspaceAlias'> & { - /** - * Define the workspace that this extension should be available in - * @example - * "Umb.Workspace.Document" - */ - match?: string; - /** - * Define one or more workspaces that this extension should be available in - * @example - * ["Umb.Workspace.Document", "Umb.Workspace.Media"] - */ - oneOf?: Array; -}; - export const manifest: ManifestCondition = { type: 'condition', name: 'Workspace Alias Condition', 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 eefd16baa0..c6bb6b8a4d 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 @@ -1,9 +1,9 @@ import { UmbConditionBase } from '../../extension-registry/conditions/condition-base.controller.js'; +import type { WorkspaceContentTypeAliasConditionConfig } from './types.js'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UMB_PROPERTY_STRUCTURE_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace'; import type { ManifestCondition, - UmbConditionConfigBase, UmbConditionControllerArguments, UmbExtensionCondition, } from '@umbraco-cms/backoffice/extension-api'; @@ -49,22 +49,6 @@ export class UmbWorkspaceContentTypeAliasCondition } } -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', name: 'Workspace Content Type Alias Condition', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-entity-type.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-entity-type.condition.ts index b8b510681f..45e61e61f6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-entity-type.condition.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-entity-type.condition.ts @@ -1,8 +1,8 @@ import { UMB_WORKSPACE_CONTEXT } from '../contexts/index.js'; +import type { WorkspaceEntityTypeConditionConfig } from './types.js'; import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry'; import type { ManifestCondition, - UmbConditionConfigBase, UmbConditionControllerArguments, UmbExtensionCondition, } from '@umbraco-cms/backoffice/extension-api'; @@ -20,15 +20,6 @@ export class UmbWorkspaceEntityTypeCondition } } -export type WorkspaceEntityTypeConditionConfig = UmbConditionConfigBase<'Umb.Condition.WorkspaceEntityType'> & { - /** - * Define the workspace that this extension should be available in - * @example - * "Document" - */ - match: string; -}; - export const manifest: ManifestCondition = { type: 'condition', name: 'Workspace Entity Type Condition', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-has-collection.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-has-collection.condition.ts index ef1ef8c203..1ce9048884 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-has-collection.condition.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-has-collection.condition.ts @@ -1,13 +1,16 @@ import { UMB_COLLECTION_WORKSPACE_CONTEXT } from '../contexts/tokens/collection-workspace.context-token.js'; +import type { WorkspaceHasCollectionConditionConfig } from './types.js'; +import { UMB_WORKSPACE_HAS_COLLECTION_CONDITION } from './const.js'; import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry'; import type { ManifestCondition, - UmbConditionConfigBase, UmbConditionControllerArguments, UmbExtensionCondition, } from '@umbraco-cms/backoffice/extension-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +const ObserveSymbol = Symbol(); + export class UmbWorkspaceHasCollectionCondition extends UmbConditionBase implements UmbExtensionCondition @@ -21,18 +24,12 @@ export class UmbWorkspaceHasCollectionCondition (hasCollection) => { this.permitted = hasCollection; }, - 'observeHasCollection', + ObserveSymbol, ); }); } } -export type WorkspaceHasCollectionConditionConfig = UmbConditionConfigBase< - typeof UMB_WORKSPACE_HAS_COLLECTION_CONDITION ->; - -export const UMB_WORKSPACE_HAS_COLLECTION_CONDITION = 'Umb.Condition.WorkspaceHasCollection'; - export const manifest: ManifestCondition = { type: 'condition', name: 'Workspace Has Collection Condition', From ba6178b738896d66bff90800cde85ca576b06d6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 13 Sep 2024 14:16:54 +0200 Subject: [PATCH 6/7] expose workspace conditions --- .../src/packages/core/workspace/conditions/types.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts index dc934238f1..9f4d0fc1b0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts @@ -44,3 +44,12 @@ export type WorkspaceEntityTypeConditionConfig = UmbConditionConfigBase<'Umb.Con export type WorkspaceHasCollectionConditionConfig = UmbConditionConfigBase< typeof UMB_WORKSPACE_HAS_COLLECTION_CONDITION >; + +declare global { + interface UmbExtensionConditionMap { + UmbWorkspaceAlias: WorkspaceAliasConditionConfig; + UmbWorkspaceContentTypeAlias: WorkspaceContentTypeAliasConditionConfig; + UmbWorkspaceEntityType: WorkspaceEntityTypeConditionConfig; + UmbWorkspaceHasCollection: WorkspaceHasCollectionConditionConfig; + } +} From 316126b8c934e6f1003945b1ba436ea7375b4391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 13 Sep 2024 14:27:06 +0200 Subject: [PATCH 7/7] lower case u --- .../src/packages/block/block/conditions/types.ts | 2 +- .../src/packages/core/workspace/conditions/types.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/conditions/types.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/conditions/types.ts index b7d4e6f2ae..90b96ec552 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/conditions/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/conditions/types.ts @@ -8,6 +8,6 @@ export type BlockEntryShowContentEditConditionConfig = declare global { interface UmbExtensionConditionMap { - UmbBlock: BlockEntryShowContentEditConditionConfig | BlockWorkspaceHasSettingsConditionConfig; + umbBlock: BlockEntryShowContentEditConditionConfig | BlockWorkspaceHasSettingsConditionConfig; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts index 9f4d0fc1b0..1dbba27b51 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/types.ts @@ -47,9 +47,9 @@ export type WorkspaceHasCollectionConditionConfig = UmbConditionConfigBase< declare global { interface UmbExtensionConditionMap { - UmbWorkspaceAlias: WorkspaceAliasConditionConfig; - UmbWorkspaceContentTypeAlias: WorkspaceContentTypeAliasConditionConfig; - UmbWorkspaceEntityType: WorkspaceEntityTypeConditionConfig; - UmbWorkspaceHasCollection: WorkspaceHasCollectionConditionConfig; + umbWorkspaceAlias: WorkspaceAliasConditionConfig; + umbWorkspaceContentTypeAlias: WorkspaceContentTypeAliasConditionConfig; + umbWorkspaceEntityType: WorkspaceEntityTypeConditionConfig; + umbWorkspaceHasCollection: WorkspaceHasCollectionConditionConfig; } }