Adds "media workspace has collection" condition
plus updates associated types/interfaces.
This commit is contained in:
@@ -0,0 +1 @@
|
||||
export { UMB_MEDIA_WORKSPACE_HAS_COLLECTION_CONDITION } from './media-workspace-has-collection.condition.js';
|
||||
@@ -0,0 +1,3 @@
|
||||
import { manifest as mediaWorkspaceHasCollectionCondition } from './media-workspace-has-collection.condition.js';
|
||||
|
||||
export const manifests = [mediaWorkspaceHasCollectionCondition];
|
||||
@@ -0,0 +1,44 @@
|
||||
import { UMB_MEDIA_WORKSPACE_CONTEXT } from '../workspace/media-workspace.context-token.js';
|
||||
import { UmbBaseController } from '@umbraco-cms/backoffice/class-api';
|
||||
import type {
|
||||
ManifestCondition,
|
||||
UmbConditionConfigBase,
|
||||
UmbConditionControllerArguments,
|
||||
UmbExtensionCondition,
|
||||
} from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export class UmbMediaWorkspaceHasCollectionCondition extends UmbBaseController implements UmbExtensionCondition {
|
||||
config: MediaWorkspaceHasCollectionConditionConfig;
|
||||
permitted = false;
|
||||
#onChange: () => void;
|
||||
|
||||
constructor(args: UmbConditionControllerArguments<MediaWorkspaceHasCollectionConditionConfig>) {
|
||||
super(args.host);
|
||||
this.config = args.config;
|
||||
this.#onChange = args.onChange;
|
||||
|
||||
this.consumeContext(UMB_MEDIA_WORKSPACE_CONTEXT, (context) => {
|
||||
this.observe(
|
||||
context.contentTypeCollection,
|
||||
(collection) => {
|
||||
this.permitted = !!collection?.id;
|
||||
this.#onChange();
|
||||
},
|
||||
'observeCollection',
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export type MediaWorkspaceHasCollectionConditionConfig = UmbConditionConfigBase<
|
||||
typeof UMB_MEDIA_WORKSPACE_HAS_COLLECTION_CONDITION
|
||||
>;
|
||||
|
||||
export const UMB_MEDIA_WORKSPACE_HAS_COLLECTION_CONDITION = 'Umb.Condition.MediaWorkspaceHasCollection';
|
||||
|
||||
export const manifest: ManifestCondition = {
|
||||
type: 'condition',
|
||||
name: 'Media Workspace Has Collection Condition',
|
||||
alias: UMB_MEDIA_WORKSPACE_HAS_COLLECTION_CONDITION,
|
||||
api: UmbMediaWorkspaceHasCollectionCondition,
|
||||
};
|
||||
@@ -7,6 +7,7 @@ export * from './tracked-reference/index.js';
|
||||
export * from './user-permissions/index.js';
|
||||
export * from './utils/index.js';
|
||||
export * from './workspace/index.js';
|
||||
export * from './conditions/index.js';
|
||||
|
||||
export { UMB_MEDIA_TREE_ALIAS } from './tree/index.js';
|
||||
export { UMB_MEDIA_COLLECTION_ALIAS } from './collection/index.js';
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { manifests as collectionManifests } from './collection/manifests.js';
|
||||
import { manifests as conditionManifests } from './conditions/manifests.js';
|
||||
import { manifests as entityActionsManifests } from './entity-actions/manifests.js';
|
||||
import { manifests as entityBulkActionsManifests } from './entity-bulk-actions/manifests.js';
|
||||
import { manifests as menuItemManifests } from './menu-item/manifests.js';
|
||||
@@ -11,6 +12,7 @@ import { manifests as workspaceManifests } from './workspace/manifests.js';
|
||||
|
||||
export const manifests = [
|
||||
...collectionManifests,
|
||||
...conditionManifests,
|
||||
...entityActionsManifests,
|
||||
...entityBulkActionsManifests,
|
||||
...menuItemManifests,
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
import type { UmbMediaEntityType } from './entity.js';
|
||||
import type { UmbReferenceById } from '@umbraco-cms/backoffice/models';
|
||||
import type { UmbVariantModel } from '@umbraco-cms/backoffice/variant';
|
||||
import type { MediaUrlInfoModel, MediaValueModel } from '@umbraco-cms/backoffice/external/backend-api';
|
||||
|
||||
export interface UmbMediaDetailModel {
|
||||
mediaType: { unique: string };
|
||||
mediaType: {
|
||||
unique: string;
|
||||
collection: UmbReferenceById | null;
|
||||
};
|
||||
entityType: UmbMediaEntityType;
|
||||
isTrashed: boolean;
|
||||
unique: string;
|
||||
|
||||
@@ -32,6 +32,7 @@ export class UmbMediaWorkspaceContext
|
||||
|
||||
readonly unique = this.#currentData.asObservablePart((data) => data?.unique);
|
||||
readonly contentTypeUnique = this.#currentData.asObservablePart((data) => data?.mediaType.unique);
|
||||
readonly contentTypeCollection = this.#currentData.asObservablePart((data) => data?.mediaType.collection);
|
||||
|
||||
readonly variants = this.#currentData.asObservablePart((data) => data?.variants || []);
|
||||
readonly urls = this.#currentData.asObservablePart((data) => data?.urls || []);
|
||||
|
||||
Reference in New Issue
Block a user