fix inserting block at the right spot
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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<UmbBlockGridWorkspaceOriginData> {}
|
||||
|
||||
export const UMB_BLOCK_GRID_WORKSPACE_MODAL = new UmbModalToken<UmbBlockGridWorkspaceData, UmbWorkspaceModalValue>(
|
||||
'Umb.Modal.Workspace',
|
||||
|
||||
@@ -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<UmbBlockListWorkspaceOriginData> {}
|
||||
|
||||
export const UMB_BLOCK_LIST_WORKSPACE_MODAL = new UmbModalToken<UmbBlockListWorkspaceData, UmbWorkspaceModalValue>(
|
||||
'Umb.Modal.Workspace',
|
||||
|
||||
@@ -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<BlockLayoutType> | undefined;
|
||||
|
||||
protected createBlockData<ModalDataType extends UmbBlockWorkspaceData>(
|
||||
contentElementTypeKey: string,
|
||||
partialLayoutEntry?: Omit<BlockLayoutType, 'contentUdi'>,
|
||||
) {
|
||||
protected createBlockData(contentElementTypeKey: string, partialLayoutEntry?: Omit<BlockLayoutType, 'contentUdi'>) {
|
||||
// Find block type.
|
||||
const blockType = this.#blockTypes.value.find((x) => x.contentElementTypeKey === contentElementTypeKey);
|
||||
if (!blockType) {
|
||||
|
||||
@@ -242,7 +242,7 @@ export class UmbBlockWorkspaceContext<LayoutDataType extends UmbBlockLayoutBaseM
|
||||
#establishLiveSync() {
|
||||
this.observe(this.layout, (layoutData) => {
|
||||
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<LayoutDataType extends UmbBlockLayoutBaseM
|
||||
} else {
|
||||
// Update data:
|
||||
|
||||
this.#blockManager.setOneLayout(layoutData);
|
||||
this.#blockManager.setOneLayout(layoutData, this.#modalContext?.data as UmbBlockWorkspaceData);
|
||||
if (contentData) {
|
||||
this.#blockManager.setOneContent(contentData);
|
||||
}
|
||||
@@ -350,7 +350,7 @@ export class UmbBlockWorkspaceContext<LayoutDataType extends UmbBlockLayoutBaseM
|
||||
} else {
|
||||
// TODO: Revert the layout, content & settings data to the original state.
|
||||
if (this.#initialLayout) {
|
||||
this.#blockManager?.setOneLayout(this.#initialLayout);
|
||||
this.#blockManager?.setOneLayout(this.#initialLayout, this.#modalContext?.data as UmbBlockWorkspaceData);
|
||||
}
|
||||
if (this.#initialContent) {
|
||||
this.#blockManager?.setOneContent(this.#initialContent);
|
||||
|
||||
Reference in New Issue
Block a user