From 55e84d0564a07e5784303ef31baa30dd6ce911f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 24 Oct 2024 20:28:33 +0200 Subject: [PATCH] refactor collection conditions --- .../src/packages/block/block/types.ts | 1 + .../collection/collection-alias.manifest.ts | 18 -------------- ...lection-bulk-action-permission.manifest.ts | 17 ------------- .../collection-alias.condition.ts | 4 ++-- ...ection-bulk-action-permission.condition.ts | 4 ++-- .../core/collection/conditions/constants.ts | 3 +++ .../core/collection/conditions/index.ts | 4 ++++ .../core/collection/conditions/manifests.ts | 17 +++++++++++++ .../core/collection/conditions/types.ts | 24 +++++++++++++++++++ .../src/packages/core/collection/index.ts | 4 +--- .../src/packages/core/collection/manifests.ts | 6 ++--- .../src/packages/core/collection/types.ts | 1 + .../extension-registry/conditions/types.ts | 4 ++-- 13 files changed, 59 insertions(+), 48 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-alias.manifest.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-bulk-action-permission.manifest.ts rename src/Umbraco.Web.UI.Client/src/packages/core/collection/{ => conditions}/collection-alias.condition.ts (83%) rename src/Umbraco.Web.UI.Client/src/packages/core/collection/{ => conditions}/collection-bulk-action-permission.condition.ts (89%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/types.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/types.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/types.ts index b027622c03..011f9763f1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/types.ts @@ -1,5 +1,6 @@ import type { UmbElementValueModel } from '@umbraco-cms/backoffice/content'; +export type * from './conditions/types.js'; export type * from './clipboard/types.js'; export interface UmbBlockLayoutBaseModel { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-alias.manifest.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-alias.manifest.ts deleted file mode 100644 index 52eadd23f3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-alias.manifest.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { ManifestCondition, UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api'; - -export type CollectionAliasConditionConfig = UmbConditionConfigBase & { - /** - * The collection that this extension should be available in - * @example - * "Umb.Collection.User" - */ - match: string; -}; - -export const UMB_COLLECTION_ALIAS_CONDITION = 'Umb.Condition.CollectionAlias'; -export const manifest: ManifestCondition = { - type: 'condition', - name: 'Collection Alias Condition', - alias: UMB_COLLECTION_ALIAS_CONDITION, - api: () => import('./collection-alias.condition.js'), -}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-bulk-action-permission.manifest.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-bulk-action-permission.manifest.ts deleted file mode 100644 index 17fb2ba24c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-bulk-action-permission.manifest.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { UmbCollectionBulkActionPermissions } from './types.js'; -import type { ManifestCondition, UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api'; - -export type CollectionBulkActionPermissionConditionConfig = UmbConditionConfigBase< - typeof UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION -> & { - match: (permissions: UmbCollectionBulkActionPermissions) => boolean; -}; - -export const UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION = 'Umb.Condition.CollectionBulkActionPermission'; - -export const manifest: ManifestCondition = { - type: 'condition', - name: 'Collection Bulk Action Permission Condition', - alias: UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION, - api: () => import('./collection-bulk-action-permission.condition.js'), -}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-alias.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/collection-alias.condition.ts similarity index 83% rename from src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-alias.condition.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/collection-alias.condition.ts index 166d81e131..6a4a03f6e0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-alias.condition.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/collection-alias.condition.ts @@ -1,5 +1,5 @@ -import { UMB_COLLECTION_CONTEXT } from './default/index.js'; -import type { CollectionAliasConditionConfig } from './collection-alias.manifest.js'; +import { UMB_COLLECTION_CONTEXT } from '../default/index.js'; +import type { CollectionAliasConditionConfig } from './types.js'; import type { UmbConditionControllerArguments, UmbExtensionCondition } from '@umbraco-cms/backoffice/extension-api'; import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-bulk-action-permission.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/collection-bulk-action-permission.condition.ts similarity index 89% rename from src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-bulk-action-permission.condition.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/collection-bulk-action-permission.condition.ts index 3b13ad47e2..885ad3f982 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-bulk-action-permission.condition.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/collection-bulk-action-permission.condition.ts @@ -1,5 +1,5 @@ -import { UMB_COLLECTION_CONTEXT } from './default/index.js'; -import type { CollectionBulkActionPermissionConditionConfig } from './collection-bulk-action-permission.manifest.js'; +import { UMB_COLLECTION_CONTEXT } from '../default/index.js'; +import type { CollectionBulkActionPermissionConditionConfig } from './types.js'; import type { UmbConditionControllerArguments, UmbExtensionCondition } from '@umbraco-cms/backoffice/extension-api'; import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/constants.ts new file mode 100644 index 0000000000..36fa086ad7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/constants.ts @@ -0,0 +1,3 @@ +export const UMB_COLLECTION_ALIAS_CONDITION = 'Umb.Condition.CollectionAlias'; + +export const UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION = 'Umb.Condition.CollectionBulkActionPermission'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/index.ts new file mode 100644 index 0000000000..83279e8836 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/index.ts @@ -0,0 +1,4 @@ +export * from './collection-bulk-action-permission.condition.js'; +export * from './collection-alias.condition.js'; +export * from './constants.js'; +export type * from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/manifests.ts new file mode 100644 index 0000000000..3e4eadfc62 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/manifests.ts @@ -0,0 +1,17 @@ +import { UMB_COLLECTION_ALIAS_CONDITION, UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION } from './constants.js'; +import type { ManifestCondition } from '@umbraco-cms/backoffice/extension-api'; + +export const manifests: Array = [ + { + type: 'condition', + name: 'Collection Alias Condition', + alias: UMB_COLLECTION_ALIAS_CONDITION, + api: () => import('./collection-alias.condition.js'), + }, + { + type: 'condition', + name: 'Collection Bulk Action Permission Condition', + alias: UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION, + api: () => import('./collection-bulk-action-permission.condition.js'), + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/types.ts new file mode 100644 index 0000000000..11801e6225 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/conditions/types.ts @@ -0,0 +1,24 @@ +import type { UmbCollectionBulkActionPermissions } from '../types.js'; +import type { UMB_COLLECTION_ALIAS_CONDITION, UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION } from './constants.js'; +import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api'; + +export type CollectionBulkActionPermissionConditionConfig = UmbConditionConfigBase< + typeof UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION +> & { + match: (permissions: UmbCollectionBulkActionPermissions) => boolean; +}; + +export type CollectionAliasConditionConfig = UmbConditionConfigBase & { + /** + * The collection that this extension should be available in + * @example + * "Umb.Collection.User" + */ + match: string; +}; + +declare global { + interface UmbExtensionConditionConfigMap { + CollectionAliasConditionConfig: CollectionAliasConditionConfig; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/index.ts index 5123111d27..ca9701d258 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/collection/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/index.ts @@ -5,6 +5,7 @@ import './components/index.js'; export * from './default/collection-default.element.js'; export * from './collection.element.js'; export * from './components/index.js'; +export * from './conditions/index.js'; export * from './collection-item-picker-modal/index.js'; export * from './default/collection-default.context.js'; @@ -12,8 +13,5 @@ export * from './default/collection-default.context-token.js'; export * from './collection-filter-model.interface.js'; export type * from './types.js'; -export { UMB_COLLECTION_ALIAS_CONDITION } from './collection-alias.manifest.js'; -export { UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION } from './collection-bulk-action-permission.manifest.js'; - export { UmbCollectionActionElement, UmbCollectionActionBase } from './action/index.js'; export type { UmbCollectionDataSource, UmbCollectionRepository } from './repository/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/manifests.ts index 1ee0674ee8..0e211901ca 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/collection/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/manifests.ts @@ -1,10 +1,8 @@ import type { UmbExtensionManifestKind } from '../extension-registry/registry.js'; -import { manifest as collectionAliasCondition } from './collection-alias.manifest.js'; -import { manifest as collectionBulkActionPermissionCondition } from './collection-bulk-action-permission.manifest.js'; +import { manifests as conditionManifests } from './conditions/manifests.js'; import { manifests as workspaceViewManifests } from './workspace-view/manifests.js'; export const manifests: Array = [ ...workspaceViewManifests, - collectionAliasCondition, - collectionBulkActionPermissionCondition, + ...conditionManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/types.ts index 9270f28463..352a8176c7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/collection/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/types.ts @@ -3,6 +3,7 @@ import type { Observable } from '@umbraco-cms/backoffice/external/rxjs'; import type { UmbPaginationManager } from '@umbraco-cms/backoffice/utils'; export type * from './extensions/index.js'; +export type * from './conditions/types.js'; export interface UmbCollectionBulkActionPermissions { allowBulkCopy: boolean; 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 9005394877..48d244d804 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 @@ -1,5 +1,5 @@ -import type { CollectionAliasConditionConfig } from '../../collection/collection-alias.manifest.js'; -import type { CollectionBulkActionPermissionConditionConfig } from '../../collection/collection-bulk-action-permission.manifest.js'; +import type { CollectionAliasConditionConfig } from '../../collection/conditions/collection-alias.types.js'; +import type { CollectionBulkActionPermissionConditionConfig } from '../../collection/conditions/collection-bulk-action-permission.manifest.js'; import type { SwitchConditionConfig } from './switch.condition.js'; import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';