Merge pull request #2285 from umbraco/v15/feature/emm-global-condition-types
V15: Global condition types
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -4,19 +4,9 @@ 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';
|
||||
|
||||
/* 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'>;
|
||||
@@ -34,7 +24,37 @@ export type ConditionTypes =
|
||||
| UmbConditionConfigBase
|
||||
| UmbDocumentUserPermissionConditionConfig
|
||||
| UmbMultipleAppLanguageConditionConfig
|
||||
| UmbSectionUserPermissionConditionConfig
|
||||
| WorkspaceAliasConditionConfig
|
||||
| WorkspaceContentTypeAliasConditionConfig
|
||||
| WorkspaceEntityTypeConditionConfig;
|
||||
| UmbSectionUserPermissionConditionConfig;
|
||||
|
||||
type UnionOfProperties<T> = 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<UmbExtensionConditionMap>;
|
||||
}
|
||||
|
||||
@@ -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<ConditionTypes> {
|
||||
export interface ManifestCollectionAction
|
||||
extends ManifestElementAndApi,
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'collectionAction';
|
||||
meta: MetaCollectionAction;
|
||||
}
|
||||
|
||||
@@ -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<ConditionTypes> {
|
||||
export interface ManifestCollectionView extends ManifestElement, ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'collectionView';
|
||||
meta: MetaCollectionView;
|
||||
}
|
||||
|
||||
@@ -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<ConditionTypes> {
|
||||
export interface ManifestCollection
|
||||
extends ManifestElementAndApi,
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'collection';
|
||||
meta: MetaCollection;
|
||||
}
|
||||
|
||||
@@ -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<ArgsMetaType = never> extends UmbAction<Um
|
||||
|
||||
export interface ManifestCurrentUserAction<MetaType extends MetaCurrentUserAction = MetaCurrentUserAction>
|
||||
extends ManifestElementAndApi<UmbControllerHostElement, UmbCurrentUserAction<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'currentUserAction';
|
||||
meta: MetaType;
|
||||
}
|
||||
|
||||
@@ -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<UmbDashboardElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'dashboard';
|
||||
meta: MetaDashboard;
|
||||
}
|
||||
|
||||
@@ -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<MetaType extends MetaEntityAction = MetaEntityAction>
|
||||
extends ManifestElementAndApi<UmbEntityActionElement, UmbEntityAction<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'entityAction';
|
||||
forEntityTypes: Array<string>;
|
||||
meta: MetaType;
|
||||
|
||||
@@ -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<MetaType extends MetaEntityBulkAction = MetaEntityBulkAction>
|
||||
extends ManifestElementAndApi<UmbEntityBulkActionElement, UmbEntityBulkAction<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'entityBulkAction';
|
||||
forEntityTypes: Array<string>;
|
||||
meta: MetaType;
|
||||
|
||||
@@ -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<UmbMenuItemElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'menuItem';
|
||||
meta: MetaMenuItem;
|
||||
}
|
||||
|
||||
@@ -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<MetaType extends MetaPropertyAction = MetaPropertyAction>
|
||||
extends ManifestElementAndApi<UmbControllerHostElement, UmbPropertyAction<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'propertyAction';
|
||||
forPropertyEditorUis: string[];
|
||||
meta: MetaType;
|
||||
|
||||
@@ -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<ApiType extends UmbApi = UmbApi>
|
||||
extends ManifestApi<ApiType>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'repository';
|
||||
}
|
||||
|
||||
@@ -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<UmbSectionSidebarAppElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'sectionSidebarApp';
|
||||
}
|
||||
|
||||
|
||||
@@ -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<UmbSectionViewElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'sectionView';
|
||||
meta: MetaSectionView;
|
||||
}
|
||||
|
||||
@@ -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<UmbSectionElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'section';
|
||||
meta: MetaSection;
|
||||
}
|
||||
|
||||
@@ -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<ConditionTypes> {
|
||||
export interface ManifestTree extends ManifestElementAndApi, ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'tree';
|
||||
meta: MetaTree;
|
||||
}
|
||||
|
||||
@@ -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<UmbControllerHostElement, UmbWorkspaceActionMenuItem<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'workspaceActionMenuItem';
|
||||
/**
|
||||
* Define which workspace actions this menu item should be shown for.
|
||||
|
||||
@@ -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<MetaType extends MetaWorkspaceAction = MetaWorkspaceAction>
|
||||
extends ManifestElementAndApi<UmbControllerHostElement, UmbWorkspaceAction<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'workspaceAction';
|
||||
meta: MetaType;
|
||||
}
|
||||
|
||||
@@ -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<ConditionTypes>, ManifestApi<UmbApi> {
|
||||
export interface ManifestWorkspaceContext
|
||||
extends ManifestWithDynamicConditions<UmbExtensionCondition>,
|
||||
ManifestApi<UmbApi> {
|
||||
type: 'workspaceContext';
|
||||
}
|
||||
|
||||
@@ -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<UmbControllerHostElement, any>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'workspaceFooterApp';
|
||||
}
|
||||
|
||||
|
||||
@@ -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<MetaType extends MetaWorkspaceView = MetaWorkspaceView>
|
||||
extends ManifestWithView<UmbWorkspaceViewElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'workspaceView';
|
||||
meta: MetaType;
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
export const UMB_WORKSPACE_HAS_COLLECTION_CONDITION = 'Umb.Condition.WorkspaceHasCollection';
|
||||
@@ -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';
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
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<string>;
|
||||
};
|
||||
|
||||
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<string>;
|
||||
};
|
||||
|
||||
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
|
||||
>;
|
||||
|
||||
declare global {
|
||||
interface UmbExtensionConditionMap {
|
||||
umbWorkspaceAlias: WorkspaceAliasConditionConfig;
|
||||
umbWorkspaceContentTypeAlias: WorkspaceContentTypeAliasConditionConfig;
|
||||
umbWorkspaceEntityType: WorkspaceEntityTypeConditionConfig;
|
||||
umbWorkspaceHasCollection: WorkspaceHasCollectionConditionConfig;
|
||||
}
|
||||
}
|
||||
@@ -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<string>;
|
||||
};
|
||||
|
||||
export const manifest: ManifestCondition = {
|
||||
type: 'condition',
|
||||
name: 'Workspace Alias Condition',
|
||||
|
||||
@@ -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<string>;
|
||||
};
|
||||
|
||||
export const manifest: ManifestCondition = {
|
||||
type: 'condition',
|
||||
name: 'Workspace Content Type Alias Condition',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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<WorkspaceHasCollectionConditionConfig>
|
||||
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',
|
||||
|
||||
Reference in New Issue
Block a user