From 06ebd3a2c07b47ff5d79449bee083cfd02eed7ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 28 May 2024 14:38:40 +0200 Subject: [PATCH] fix inserting block at the right spot --- .../context/block-grid-manager.context.ts | 15 +++++++++------ .../workspace/block-grid-workspace.modal-token.ts | 13 +++++++------ .../workspace/block-list-workspace.modal-token.ts | 9 +++++---- .../block/block/context/block-manager.context.ts | 7 ++----- .../block/workspace/block-workspace.context.ts | 6 +++--- 5 files changed, 26 insertions(+), 24 deletions(-) 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 3d655736d2..7535e4b126 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 @@ -124,9 +124,16 @@ export class UmbBlockGridManagerContext< settings: UmbBlockDataType | undefined, modalData: UmbBlockGridWorkspaceData, ) { - const index = modalData.originData.index ?? -1; + this.setOneLayout(layoutEntry, modalData); + this.insertBlockData(layoutEntry, content, settings, modalData); - if (modalData.originData.parentUnique && modalData.originData.areaKey) { + return true; + } + + setOneLayout(layoutEntry: BlockLayoutType, modalData?: UmbBlockGridWorkspaceData) { + const index = modalData?.originData.index ?? -1; + + if (modalData?.originData.parentUnique && modalData?.originData.areaKey) { // Find layout entry based on parentUnique, recursively, as it needs to check layout of areas as well: const layoutEntries = this.#appendLayoutEntryToArea( layoutEntry, @@ -143,10 +150,6 @@ export class UmbBlockGridManagerContext< } else { this._layouts.appendOneAt(layoutEntry, index); } - - this.insertBlockData(layoutEntry, content, settings, modalData); - - return true; } onDragStart() { diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/workspace/block-grid-workspace.modal-token.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/workspace/block-grid-workspace.modal-token.ts index bbe0f6b456..25bf6cb533 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/workspace/block-grid-workspace.modal-token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/workspace/block-grid-workspace.modal-token.ts @@ -2,12 +2,13 @@ import type { UmbBlockWorkspaceData } from '@umbraco-cms/backoffice/block'; import type { UmbWorkspaceModalData, UmbWorkspaceModalValue } from '@umbraco-cms/backoffice/modal'; import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; -export interface UmbBlockGridWorkspaceData - extends UmbBlockWorkspaceData<{ - index: number; - parentUnique: string | null; - areaKey?: string; - }> {} +export interface UmbBlockGridWorkspaceOriginData { + index: number; + parentUnique: string | null; + areaKey?: string; +} + +export interface UmbBlockGridWorkspaceData extends UmbBlockWorkspaceData {} export const UMB_BLOCK_GRID_WORKSPACE_MODAL = new UmbModalToken( 'Umb.Modal.Workspace', diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-list/workspace/block-list-workspace.modal-token.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-list/workspace/block-list-workspace.modal-token.ts index e86a26f97d..d6ccd489c1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-list/workspace/block-list-workspace.modal-token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-list/workspace/block-list-workspace.modal-token.ts @@ -2,10 +2,11 @@ import type { UmbBlockWorkspaceData } from '@umbraco-cms/backoffice/block'; import type { UmbWorkspaceModalData, UmbWorkspaceModalValue } from '@umbraco-cms/backoffice/modal'; import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; -export interface UmbBlockListWorkspaceData - extends UmbBlockWorkspaceData<{ - index: number; - }> {} +export interface UmbBlockListWorkspaceOriginData { + index: number; +} + +export interface UmbBlockListWorkspaceData extends UmbBlockWorkspaceData {} export const UMB_BLOCK_LIST_WORKSPACE_MODAL = new UmbModalToken( 'Umb.Modal.Workspace', 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 0178c48acb..ac57bd8a24 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 @@ -167,7 +167,7 @@ export abstract class UmbBlockManagerContext< return this.#contents.value.find((x) => x.udi === contentUdi); } - setOneLayout(layoutData: BlockLayoutType) { + setOneLayout(layoutData: BlockLayoutType, modalData?: UmbBlockWorkspaceData) { this._layouts.appendOne(layoutData); } setOneContent(contentData: UmbBlockDataType) { @@ -190,10 +190,7 @@ export abstract class UmbBlockManagerContext< modalData?: UmbBlockWorkspaceData, ): UmbBlockDataObjectModel | undefined; - protected createBlockData( - contentElementTypeKey: string, - partialLayoutEntry?: Omit, - ) { + protected createBlockData(contentElementTypeKey: string, partialLayoutEntry?: Omit) { // Find block type. const blockType = this.#blockTypes.value.find((x) => x.contentElementTypeKey === contentElementTypeKey); if (!blockType) { 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 624e93d557..5ee750a166 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 @@ -242,7 +242,7 @@ export class UmbBlockWorkspaceContext { if (layoutData) { - this.#blockManager?.setOneLayout(layoutData); + this.#blockManager?.setOneLayout(layoutData, this.#modalContext?.data as UmbBlockWorkspaceData); } }); this.observe(this.content.data, (contentData) => { @@ -324,7 +324,7 @@ export class UmbBlockWorkspaceContext