From 7440b9d83d15a8ace6078efce0bf67e6f5947edd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 5 Dec 2024 10:17:52 +0100 Subject: [PATCH] Feat: Content Property Datatset Context Token (#17723) * introduce UMB_CONTENT_PROPERTY_DATASET_CONTEXT * Updating List and RTE --- .../block-grid/context/block-grid-entries.context.ts | 4 ++-- .../block-list/context/block-list-entries.context.ts | 5 +++-- .../block-rte/context/block-rte-entries.context.ts | 4 ++-- .../content-property-dataset.context-token.ts | 12 ++++++++++++ .../content-property-dataset.context.ts | 2 ++ .../core/content/property-dataset-context/index.ts | 1 + 6 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/content-property-dataset.context-token.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/context/block-grid-entries.context.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/context/block-grid-entries.context.ts index 1850c2dd14..2335d0d301 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/context/block-grid-entries.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/context/block-grid-entries.context.ts @@ -19,7 +19,7 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/router'; import { pathFolderName } from '@umbraco-cms/backoffice/utils'; import type { UmbNumberRangeValueType } from '@umbraco-cms/backoffice/models'; -import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property'; +import { UMB_CONTENT_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/content'; interface UmbBlockGridAreaTypeInvalidRuleType { groupKey?: string; @@ -222,7 +222,7 @@ export class UmbBlockGridEntriesContext this._workspacePath.setValue(newPath); }); - this.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (dataset) => { + this.consumeContext(UMB_CONTENT_PROPERTY_DATASET_CONTEXT, (dataset) => { const variantId = dataset.getVariantId(); this.#catalogueModal.setUniquePathValue('variantId', variantId?.toString()); this.#workspaceModal.setUniquePathValue('variantId', variantId?.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-list/context/block-list-entries.context.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-list/context/block-list-entries.context.ts index f381f7d00b..a69476c174 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-list/context/block-list-entries.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-list/context/block-list-entries.context.ts @@ -7,7 +7,7 @@ import { UMB_BLOCK_LIST_MANAGER_CONTEXT } from './block-list-manager.context-tok import { UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/router'; -import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property'; +import { UMB_CONTENT_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/content'; export class UmbBlockListEntriesContext extends UmbBlockEntriesContext< typeof UMB_BLOCK_LIST_MANAGER_CONTEXT, @@ -83,7 +83,8 @@ export class UmbBlockListEntriesContext extends UmbBlockEntriesContext< this._workspacePath.setValue(newPath); }); - this.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (dataset) => { + // TODO: This must later be switched out with a smarter Modal Registration System, cause here is a issue with Block Editors in inline mode in Block Editors, cause the hosting Block is also of type Content. [NL] + this.consumeContext(UMB_CONTENT_PROPERTY_DATASET_CONTEXT, (dataset) => { const variantId = dataset.getVariantId(); this.#catalogueModal.setUniquePathValue('variantId', variantId?.toString()); this.#workspaceModal.setUniquePathValue('variantId', variantId?.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/context/block-rte-entries.context.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/context/block-rte-entries.context.ts index 70846d23fd..343c009ccf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/context/block-rte-entries.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/context/block-rte-entries.context.ts @@ -9,7 +9,7 @@ import { UMB_BLOCK_RTE_MANAGER_CONTEXT } from './block-rte-manager.context-token import { UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/router'; -import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property'; +import { UMB_CONTENT_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/content'; export class UmbBlockRteEntriesContext extends UmbBlockEntriesContext< typeof UMB_BLOCK_RTE_MANAGER_CONTEXT, @@ -79,7 +79,7 @@ export class UmbBlockRteEntriesContext extends UmbBlockEntriesContext< this._workspacePath.setValue(newPath); }); - this.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (dataset) => { + this.consumeContext(UMB_CONTENT_PROPERTY_DATASET_CONTEXT, (dataset) => { const variantId = dataset.getVariantId(); this.#catalogueModal.setUniquePathValue('variantId', variantId?.toString()); this.#workspaceModal.setUniquePathValue('variantId', variantId?.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/content-property-dataset.context-token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/content-property-dataset.context-token.ts new file mode 100644 index 0000000000..5dbfc4e8d3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/content-property-dataset.context-token.ts @@ -0,0 +1,12 @@ +import type { UmbContentPropertyDatasetContext } from './content-property-dataset.context.js'; +import type { UmbPropertyDatasetContext } from '@umbraco-cms/backoffice/property'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; + +export const IsContentPropertyDatasetContext = ( + context: UmbPropertyDatasetContext, +): context is UmbContentPropertyDatasetContext => (context as any).IS_CONTENT === true; + +export const UMB_CONTENT_PROPERTY_DATASET_CONTEXT = new UmbContextToken< + UmbPropertyDatasetContext, + UmbContentPropertyDatasetContext +>('UmbPropertyDatasetContext', undefined, IsContentPropertyDatasetContext); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/content-property-dataset.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/content-property-dataset.context.ts index 3fff502923..bff5d6469b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/content-property-dataset.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/content-property-dataset.context.ts @@ -23,6 +23,8 @@ export class UmbContentPropertyDatasetContext< culture = this.#currentVariant.asObservablePart((x) => x?.culture); segment = this.#currentVariant.asObservablePart((x) => x?.segment); + readonly IS_CONTENT = true; + getName(): string | undefined { return this._dataOwner.getName(this.getVariantId()); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/index.ts index 7bede3e9c5..9b317fc1f0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/index.ts @@ -1,3 +1,4 @@ +export * from './content-property-dataset.context-token.js'; export * from './content-property-dataset.context.js'; export type * from './element-property-data-owner.interface.js'; export * from './element-property-dataset.context.js';