diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/context/block-grid-manager.context.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/context/block-grid-manager.context.ts index 7a34386848..2f411cfd2b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/context/block-grid-manager.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/context/block-grid-manager.context.ts @@ -186,7 +186,7 @@ export class UmbBlockGridManagerContext< originData: UmbBlockGridWorkspaceOriginData, ) { this.setOneLayout(layoutEntry, originData); - this.insertBlockData(layoutEntry, content, settings); + this.insertBlockData(layoutEntry, content, settings, originData); return true; } 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 2e20c5836e..0ddd1eb326 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 @@ -48,7 +48,11 @@ export class UmbBlockListEntriesContext extends UmbBlockEntriesContext< }) .onSubmit(async (value, data) => { if (value?.create && data) { - const created = await this.create(value.create.contentElementTypeKey, {}); + const created = await this.create( + value.create.contentElementTypeKey, + {}, + data.originData as UmbBlockListWorkspaceOriginData, + ); if (created) { this.insert( created.layout, @@ -127,9 +131,13 @@ export class UmbBlockListEntriesContext extends UmbBlockEntriesContext< this._manager?.setLayouts(layouts); } - async create(contentElementTypeKey: string, partialLayoutEntry?: Omit) { + async create( + contentElementTypeKey: string, + partialLayoutEntry?: Omit, + originData?: UmbBlockListWorkspaceOriginData, + ) { await this._retrieveManager; - return this._manager?.create(contentElementTypeKey, partialLayoutEntry); + return this._manager?.create(contentElementTypeKey, partialLayoutEntry, originData); } // insert Block? diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-list/context/block-list-manager.context.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-list/context/block-list-manager.context.ts index b2b8d3d065..ccc98f903a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-list/context/block-list-manager.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-list/context/block-list-manager.context.ts @@ -21,7 +21,13 @@ export class UmbBlockListManagerContext< return this.#inlineEditingMode.getValue(); } - create(contentElementTypeKey: string, partialLayoutEntry?: Omit) { + create( + contentElementTypeKey: string, + partialLayoutEntry?: Omit, + // This property is used by some implementations, but not used in this. Do not remove. [NL] + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _originData?: UmbBlockListWorkspaceOriginData, + ) { return super._createBlockData(contentElementTypeKey, partialLayoutEntry); } @@ -33,7 +39,7 @@ export class UmbBlockListManagerContext< ) { this._layouts.appendOneAt(layoutEntry, originData.index ?? -1); - this.insertBlockData(layoutEntry, content, settings); + this.insertBlockData(layoutEntry, content, settings, originData); return true; } 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 441f6c17fb..70846d23fd 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 @@ -53,7 +53,12 @@ export class UmbBlockRteEntriesContext extends UmbBlockEntriesContext< {} as any, ); if (created) { - this.insert(created.layout, created.content, created.settings); + this.insert( + created.layout, + created.content, + created.settings, + data.originData as UmbBlockRteWorkspaceOriginData, + ); } else { throw new Error('Failed to create block'); } @@ -122,9 +127,13 @@ export class UmbBlockRteEntriesContext extends UmbBlockEntriesContext< this._manager?.setLayouts(layouts); } - async create(contentElementTypeKey: string, partialLayoutEntry?: Omit) { + async create( + contentElementTypeKey: string, + partialLayoutEntry?: Omit, + originData?: UmbBlockRteWorkspaceOriginData, + ) { await this._retrieveManager; - return this._manager?.create(contentElementTypeKey, partialLayoutEntry); + return this._manager?.create(contentElementTypeKey, partialLayoutEntry, originData); } // insert Block? @@ -133,9 +142,10 @@ export class UmbBlockRteEntriesContext extends UmbBlockEntriesContext< layoutEntry: UmbBlockRteLayoutModel, content: UmbBlockDataModel, settings: UmbBlockDataModel | undefined, + originData: UmbBlockRteWorkspaceOriginData, ) { await this._retrieveManager; - return this._manager?.insert(layoutEntry, content, settings) ?? false; + return this._manager?.insert(layoutEntry, content, settings, originData) ?? false; } // create Block? diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/context/block-rte-manager.context.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/context/block-rte-manager.context.ts index 876dfb06d8..4fefc64e27 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/context/block-rte-manager.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-rte/context/block-rte-manager.context.ts @@ -1,3 +1,4 @@ +import type { UmbBlockRteWorkspaceOriginData } from '../workspace/block-rte-workspace.modal-token.js'; import type { UmbBlockRteLayoutModel, UmbBlockRteTypeModel } from '../types.js'; import type { UmbBlockDataModel } from '../../block/types.js'; import { UmbBlockManagerContext } from '@umbraco-cms/backoffice/block'; @@ -14,7 +15,13 @@ export class UmbBlockRteManagerContext< this._layouts.removeOne(contentKey); } - create(contentElementTypeKey: string, partialLayoutEntry?: Omit) { + create( + contentElementTypeKey: string, + partialLayoutEntry?: Omit, + // This property is used by some implementations, but not used in this, do not remove. [NL] + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _originData?: UmbBlockRteWorkspaceOriginData, + ) { const data = super._createBlockData(contentElementTypeKey, partialLayoutEntry); // Find block type. @@ -30,10 +37,15 @@ export class UmbBlockRteManagerContext< return data; } - insert(layoutEntry: BlockLayoutType, content: UmbBlockDataModel, settings: UmbBlockDataModel | undefined) { + insert( + layoutEntry: BlockLayoutType, + content: UmbBlockDataModel, + settings: UmbBlockDataModel | undefined, + originData: UmbBlockRteWorkspaceOriginData, + ) { this._layouts.appendOne(layoutEntry); - this.insertBlockData(layoutEntry, content, settings); + this.insertBlockData(layoutEntry, content, settings, originData); return true; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/context/block-manager.context.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/context/block-manager.context.ts index abf7083a70..fcfbf774ab 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/context/block-manager.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/context/block-manager.context.ts @@ -203,7 +203,9 @@ export abstract class UmbBlockManagerContext< getContentOf(contentKey: string) { return this.#contents.value.find((x) => x.key === contentKey); } - setOneLayout(layoutData: BlockLayoutType) { + // originData param is used by some implementations. [NL] should be here, do not remove it. + // eslint-disable-next-line @typescript-eslint/no-unused-vars + setOneLayout(layoutData: BlockLayoutType, _originData?: BlockOriginDataType) { this._layouts.appendOne(layoutData); } setOneContent(contentData: UmbBlockDataModel) { @@ -316,7 +318,13 @@ export abstract class UmbBlockManagerContext< originData: BlockOriginDataType, ): boolean; - protected insertBlockData(layoutEntry: BlockLayoutType, content: UmbBlockDataModel, settings?: UmbBlockDataModel) { + protected insertBlockData( + layoutEntry: BlockLayoutType, + content: UmbBlockDataModel, + settings: UmbBlockDataModel | undefined, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _originData: BlockOriginDataType, + ) { // Create content entry: if (layoutEntry.contentKey) { this.#contents.appendOne(content); diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts index 4c0ad16a16..b9f7bbde7f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts @@ -352,7 +352,10 @@ export class UmbBlockWorkspaceContext { if (layoutData) { - this.#blockManager?.setOneLayout(layoutData); + this.#blockManager?.setOneLayout( + layoutData, + this.#modalContext?.data.originData as UmbBlockWorkspaceOriginData, + ); } }, 'observeThisLayout', @@ -448,7 +451,7 @@ export class UmbBlockWorkspaceContext