refactor collection conditions

This commit is contained in:
Niels Lyngsø
2024-10-24 20:28:33 +02:00
parent 5a460a15c6
commit 55e84d0564
13 changed files with 59 additions and 48 deletions

View File

@@ -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 {

View File

@@ -1,18 +0,0 @@
import type { ManifestCondition, UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';
export type CollectionAliasConditionConfig = UmbConditionConfigBase<typeof UMB_COLLECTION_ALIAS_CONDITION> & {
/**
* 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'),
};

View File

@@ -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'),
};

View File

@@ -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';

View File

@@ -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';

View File

@@ -0,0 +1,3 @@
export const UMB_COLLECTION_ALIAS_CONDITION = 'Umb.Condition.CollectionAlias';
export const UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION = 'Umb.Condition.CollectionBulkActionPermission';

View File

@@ -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';

View File

@@ -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<ManifestCondition> = [
{
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'),
},
];

View File

@@ -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<typeof UMB_COLLECTION_ALIAS_CONDITION> & {
/**
* The collection that this extension should be available in
* @example
* "Umb.Collection.User"
*/
match: string;
};
declare global {
interface UmbExtensionConditionConfigMap {
CollectionAliasConditionConfig: CollectionAliasConditionConfig;
}
}

View File

@@ -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';

View File

@@ -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<UmbExtensionManifest | UmbExtensionManifestKind> = [
...workspaceViewManifests,
collectionAliasCondition,
collectionBulkActionPermissionCondition,
...conditionManifests,
];

View File

@@ -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;

View File

@@ -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';