Skip to content

Commit af52e68

Browse files
Clean up workspace conditions folder structure (#19634)
* Refactor section conditions into subfolders Split section condition logic into 'section-alias' and 'section-user-permission' subfolders, each with their own constants, manifests, and types. Updated imports and manifest aggregation to use the new structure for improved modularity and maintainability. * use const * fix build * Refactor section alias condition to use constant Replaces hardcoded 'Umb.Condition.SectionAlias' strings with the UMB_SECTION_ALIAS_CONDITION_ALIAS constant across all manifests and related files. This improves maintainability and consistency by centralizing the section alias condition reference. * clean up workspace conditions
1 parent 05aef6a commit af52e68

File tree

21 files changed

+133
-96
lines changed

21 files changed

+133
-96
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * from './workspace-alias/constants.js';
2+
export * from './workspace-entity-is-new/constants.js';
3+
export * from './workspace-entity-type/constants.js';
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { manifest as workspaceAliasCondition } from './workspace-alias.condition.js';
2-
import { manifest as workspaceEntityTypeCondition } from './workspace-entity-type.condition.js';
3-
import { manifest as workspaceEntityIsNewCondition } from './workspace-entity-is-new.condition.js';
1+
import { manifests as workspaceAliasCondition } from './workspace-alias/manifests.js';
2+
import { manifests as workspaceEntityIsNewCondition } from './workspace-entity-is-new/manifests.js';
3+
import { manifests as workspaceEntityTypeCondition } from './workspace-entity-type/manifests.js';
44

55
export const manifests: Array<UmbExtensionManifest> = [
6-
workspaceEntityIsNewCondition,
7-
workspaceAliasCondition,
8-
workspaceEntityTypeCondition,
6+
...workspaceAliasCondition,
7+
...workspaceEntityIsNewCondition,
8+
...workspaceEntityTypeCondition,
99
];
Lines changed: 3 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,3 @@
1-
import type { UMB_WORKSPACE_CONDITION_ALIAS, UMB_WORKSPACE_ENTITY_IS_NEW_CONDITION_ALIAS } from './const.js';
2-
import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';
3-
4-
export interface WorkspaceAliasConditionConfig extends UmbConditionConfigBase<typeof UMB_WORKSPACE_CONDITION_ALIAS> {
5-
/**
6-
* Define the workspace that this extension should be available in
7-
* @example
8-
* "Umb.Workspace.Document"
9-
*/
10-
match?: string;
11-
/**
12-
* Define one or more workspaces that this extension should be available in
13-
* @example
14-
* ["Umb.Workspace.Document", "Umb.Workspace.Media"]
15-
*/
16-
oneOf?: Array<string>;
17-
}
18-
19-
export type UmbWorkspaceEntityTypeConditionConfig = UmbConditionConfigBase<'Umb.Condition.WorkspaceEntityType'> & {
20-
/**
21-
* Define the workspace that this extension should be available in
22-
* @example
23-
* "Document"
24-
*/
25-
match: string;
26-
};
27-
/**
28-
* @deprecated Use `UmbWorkspaceEntityTypeConditionConfig` instead. This will be removed in Umbraco 17.
29-
*/
30-
export type WorkspaceEntityTypeConditionConfig = UmbWorkspaceEntityTypeConditionConfig;
31-
32-
export interface UmbWorkspaceEntityIsNewConditionConfig
33-
extends UmbConditionConfigBase<typeof UMB_WORKSPACE_ENTITY_IS_NEW_CONDITION_ALIAS> {
34-
match: boolean;
35-
}
36-
37-
/**
38-
* @deprecated Use `UmbWorkspaceEntityIsNewConditionConfig` instead. This will be removed in Umbraco 17.
39-
*/
40-
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
41-
export interface WorkspaceEntityIsNewConditionConfig extends UmbWorkspaceEntityIsNewConditionConfig {}
42-
43-
declare global {
44-
interface UmbExtensionConditionConfigMap {
45-
umbWorkspaceAlias: WorkspaceAliasConditionConfig;
46-
umbWorkspaceEntityIsNewConditionConfig: UmbWorkspaceEntityIsNewConditionConfig;
47-
umbWorkspaceEntityType: UmbWorkspaceEntityTypeConditionConfig;
48-
}
49-
}
1+
export type * from './workspace-alias/types.js';
2+
export type * from './workspace-entity-is-new/types.js';
3+
export type * from './workspace-entity-type/types.js';
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/**
2+
* Workspace alias condition alias
3+
*/
4+
export const UMB_WORKSPACE_CONDITION_ALIAS = 'Umb.Condition.WorkspaceAlias';
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { UMB_WORKSPACE_CONDITION_ALIAS } from './constants.js';
2+
import { UmbWorkspaceAliasCondition } from './workspace-alias.condition.js';
3+
4+
export const manifests: Array<UmbExtensionManifest> = [
5+
{
6+
type: 'condition',
7+
name: 'Workspace Alias Condition',
8+
alias: UMB_WORKSPACE_CONDITION_ALIAS,
9+
api: UmbWorkspaceAliasCondition,
10+
},
11+
];
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import type { UMB_WORKSPACE_CONDITION_ALIAS } from './constants.js';
2+
import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';
3+
4+
export interface WorkspaceAliasConditionConfig extends UmbConditionConfigBase<typeof UMB_WORKSPACE_CONDITION_ALIAS> {
5+
/**
6+
* Define the workspace that this extension should be available in
7+
* @example
8+
* "Umb.Workspace.Document"
9+
*/
10+
match?: string;
11+
/**
12+
* Define one or more workspaces that this extension should be available in
13+
* @example
14+
* ["Umb.Workspace.Document", "Umb.Workspace.Media"]
15+
*/
16+
oneOf?: Array<string>;
17+
}
18+
19+
declare global {
20+
interface UmbExtensionConditionConfigMap {
21+
umbWorkspaceAlias: WorkspaceAliasConditionConfig;
22+
}
23+
}

src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-alias.condition.ts renamed to src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-alias/workspace-alias.condition.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { UMB_WORKSPACE_CONTEXT } from '../workspace.context-token.js';
2-
import type { UmbWorkspaceContext } from '../workspace-context.interface.js';
3-
import type { WorkspaceAliasConditionConfig } from './types.js';
4-
import { UMB_WORKSPACE_CONDITION_ALIAS } from './const.js';
1+
import type { WorkspaceAliasConditionConfig } from '../types.js';
2+
import type { UmbWorkspaceContext } from '../../workspace-context.interface.js';
3+
import { UMB_WORKSPACE_CONTEXT } from '../../workspace.context-token.js';
4+
import { UMB_WORKSPACE_CONDITION_ALIAS } from './constants.js';
55
import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry';
66
import type { UmbConditionControllerArguments, UmbExtensionCondition } from '@umbraco-cms/backoffice/extension-api';
77
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
@@ -35,10 +35,3 @@ export class UmbWorkspaceAliasCondition
3535
}
3636
}
3737
}
38-
39-
export const manifest: UmbExtensionManifest = {
40-
type: 'condition',
41-
name: 'Workspace Alias Condition',
42-
alias: UMB_WORKSPACE_CONDITION_ALIAS,
43-
api: UmbWorkspaceAliasCondition,
44-
};

src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/const.ts renamed to src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-entity-is-new/constants.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,3 @@
22
* Workspace entity is new condition alias
33
*/
44
export const UMB_WORKSPACE_ENTITY_IS_NEW_CONDITION_ALIAS = 'Umb.Condition.WorkspaceEntityIsNew';
5-
6-
/**
7-
* Workspace alias condition alias
8-
*/
9-
export const UMB_WORKSPACE_CONDITION_ALIAS = 'Umb.Condition.WorkspaceAlias';
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { UMB_WORKSPACE_ENTITY_IS_NEW_CONDITION_ALIAS } from './constants.js';
2+
import { UmbWorkspaceEntityIsNewCondition } from './workspace-entity-is-new.condition.js';
3+
4+
export const manifests: Array<UmbExtensionManifest> = [
5+
{
6+
type: 'condition',
7+
name: 'Workspace Entity Is New Condition',
8+
alias: UMB_WORKSPACE_ENTITY_IS_NEW_CONDITION_ALIAS,
9+
api: UmbWorkspaceEntityIsNewCondition,
10+
},
11+
];
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import type { UMB_WORKSPACE_ENTITY_IS_NEW_CONDITION_ALIAS } from './constants.js';
2+
import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';
3+
4+
export interface UmbWorkspaceEntityIsNewConditionConfig
5+
extends UmbConditionConfigBase<typeof UMB_WORKSPACE_ENTITY_IS_NEW_CONDITION_ALIAS> {
6+
match: boolean;
7+
}
8+
9+
/**
10+
* @deprecated Use `UmbWorkspaceEntityIsNewConditionConfig` instead. This will be removed in Umbraco 17.
11+
*/
12+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
13+
export interface WorkspaceEntityIsNewConditionConfig extends UmbWorkspaceEntityIsNewConditionConfig {}
14+
15+
declare global {
16+
interface UmbExtensionConditionConfigMap {
17+
umbWorkspaceEntityIsNewConditionConfig: UmbWorkspaceEntityIsNewConditionConfig;
18+
}
19+
}

0 commit comments

Comments
 (0)