From 1a1655b0e04abf13d8809cb9b3a35919144dc3d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 24 Jun 2024 15:09:22 +0200 Subject: [PATCH] Make allowAtRoot preset for Block Grid Types --- .../block-grid-area-type-workspace.context.ts | 9 ++++----- ...i-block-grid-type-configuration.element.ts | 12 ++++-------- .../block-grid-type-workspace.modal-token.ts | 17 +++++++++++++++++ .../block-grid-workspace.modal-token.ts | 2 +- .../block/block-grid/workspace/index.ts | 1 + .../block-list-workspace.modal-token.ts | 2 +- .../block-rte-workspace.modal-token.ts | 2 +- .../workspace/block-type-workspace.context.ts | 19 ++++++++++++++----- .../workspace/block-workspace.modal-token.ts | 2 +- .../core/modal/context/modal.context.ts | 12 ++++++------ .../data-type-workspace.modal-token.ts | 2 +- .../document-type-workspace.modal-token.ts | 2 +- .../language-workspace.modal-token.ts | 2 +- 13 files changed, 53 insertions(+), 31 deletions(-) create mode 100644 src/packages/block/block-grid/workspace/block-grid-type-workspace.modal-token.ts diff --git a/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/block-grid-area-type-workspace.context.ts b/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/block-grid-area-type-workspace.context.ts index ea31742d63..d8330661ec 100644 --- a/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/block-grid-area-type-workspace.context.ts +++ b/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/block-grid-area-type-workspace.context.ts @@ -1,11 +1,10 @@ import type { UmbBlockGridTypeAreaType } from '../../../types.js'; import type { UmbPropertyDatasetContext } from '@umbraco-cms/backoffice/property'; import { UMB_PROPERTY_CONTEXT } from '@umbraco-cms/backoffice/property'; -import { - type UmbInvariantDatasetWorkspaceContext, - type UmbRoutableWorkspaceContext, - type UmbWorkspaceContext, - UmbWorkspaceRouteManager, +import type { + UmbInvariantDatasetWorkspaceContext, + UmbRoutableWorkspaceContext, + UmbWorkspaceContext, } from '@umbraco-cms/backoffice/workspace'; import { UmbSubmittableWorkspaceContextBase, diff --git a/src/packages/block/block-grid/property-editors/block-grid-type-configuration/property-editor-ui-block-grid-type-configuration.element.ts b/src/packages/block/block-grid/property-editors/block-grid-type-configuration/property-editor-ui-block-grid-type-configuration.element.ts index 93db7296ee..ff15f941e7 100644 --- a/src/packages/block/block-grid/property-editors/block-grid-type-configuration/property-editor-ui-block-grid-type-configuration.element.ts +++ b/src/packages/block/block-grid/property-editors/block-grid-type-configuration/property-editor-ui-block-grid-type-configuration.element.ts @@ -17,14 +17,13 @@ import { } from '@umbraco-cms/backoffice/property-editor'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import { UMB_BLOCK_GRID_TYPE, type UmbBlockGridTypeGroupType } from '@umbraco-cms/backoffice/block-grid'; +import { UMB_BLOCK_GRID_TYPE, UMB_BLOCK_GRID_TYPE_WORKSPACE_MODAL, type UmbBlockGridTypeGroupType } from '@umbraco-cms/backoffice/block-grid'; import type { UUIInputEvent } from '@umbraco-cms/backoffice/external/uui'; import { UMB_PROPERTY_CONTEXT, UMB_PROPERTY_DATASET_CONTEXT, type UmbPropertyDatasetContext, } from '@umbraco-cms/backoffice/property'; -import { UMB_WORKSPACE_MODAL } from '@umbraco-cms/backoffice/modal'; import { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/router'; import { UmbSorterController } from '@umbraco-cms/backoffice/sorter'; @@ -61,8 +60,8 @@ export class UmbPropertyEditorUIBlockGridTypeConfigurationElement #datasetContext?: UmbPropertyDatasetContext; #blockTypeWorkspaceModalRegistration?: UmbModalRouteRegistrationController< - typeof UMB_WORKSPACE_MODAL.DATA, - typeof UMB_WORKSPACE_MODAL.VALUE + typeof UMB_BLOCK_GRID_TYPE_WORKSPACE_MODAL.DATA, + typeof UMB_BLOCK_GRID_TYPE_WORKSPACE_MODAL.VALUE >; #value: Array = []; @@ -105,11 +104,8 @@ export class UmbPropertyEditorUIBlockGridTypeConfigurationElement this.#observeBlockGroups(); }); - this.#blockTypeWorkspaceModalRegistration = new UmbModalRouteRegistrationController(this, UMB_WORKSPACE_MODAL) + this.#blockTypeWorkspaceModalRegistration = new UmbModalRouteRegistrationController(this, UMB_BLOCK_GRID_TYPE_WORKSPACE_MODAL) .addAdditionalPath(UMB_BLOCK_GRID_TYPE) - .onSetup(() => { - return { data: { entityType: UMB_BLOCK_GRID_TYPE, preset: {} }, modal: { size: 'large' } }; - }) .observeRouteBuilder((routeBuilder) => { const newpath = routeBuilder({}); this._workspacePath = newpath; diff --git a/src/packages/block/block-grid/workspace/block-grid-type-workspace.modal-token.ts b/src/packages/block/block-grid/workspace/block-grid-type-workspace.modal-token.ts new file mode 100644 index 0000000000..6ba06a2c67 --- /dev/null +++ b/src/packages/block/block-grid/workspace/block-grid-type-workspace.modal-token.ts @@ -0,0 +1,17 @@ +import { UMB_BLOCK_GRID_TYPE, type UmbBlockGridTypeModel } from '../types.js'; +import type { UmbWorkspaceModalData, UmbWorkspaceModalValue } from '@umbraco-cms/backoffice/modal'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export type UmbBlockGridTypeWorkspaceData = UmbWorkspaceModalData; + +export const UMB_BLOCK_GRID_TYPE_WORKSPACE_MODAL = new UmbModalToken( + 'Umb.Modal.Workspace', + { + modal: { + type: 'sidebar', + size: 'large', + }, + data: { entityType: UMB_BLOCK_GRID_TYPE, preset: {allowAtRoot: true} }, + }, + // Recast the type, so the entityType data prop is not required: +) as UmbModalToken, UmbWorkspaceModalValue>; diff --git a/src/packages/block/block-grid/workspace/block-grid-workspace.modal-token.ts b/src/packages/block/block-grid/workspace/block-grid-workspace.modal-token.ts index 25bf6cb533..fba0224034 100644 --- a/src/packages/block/block-grid/workspace/block-grid-workspace.modal-token.ts +++ b/src/packages/block/block-grid/workspace/block-grid-workspace.modal-token.ts @@ -18,6 +18,6 @@ export const UMB_BLOCK_GRID_WORKSPACE_MODAL = new UmbModalToken, UmbWorkspaceModalValue>; diff --git a/src/packages/block/block-grid/workspace/index.ts b/src/packages/block/block-grid/workspace/index.ts index e94538cd86..1b1fe65307 100644 --- a/src/packages/block/block-grid/workspace/index.ts +++ b/src/packages/block/block-grid/workspace/index.ts @@ -1,2 +1,3 @@ export const UMB_BLOCK_GRID_TYPE_WORKSPACE_ALIAS = 'Umb.Workspace.BlockGridType'; export * from './block-grid-workspace.modal-token.js'; +export * from './block-grid-type-workspace.modal-token.js'; diff --git a/src/packages/block/block-list/workspace/block-list-workspace.modal-token.ts b/src/packages/block/block-list/workspace/block-list-workspace.modal-token.ts index d6ccd489c1..e2334ca5a0 100644 --- a/src/packages/block/block-list/workspace/block-list-workspace.modal-token.ts +++ b/src/packages/block/block-list/workspace/block-list-workspace.modal-token.ts @@ -16,6 +16,6 @@ export const UMB_BLOCK_LIST_WORKSPACE_MODAL = new UmbModalToken, UmbWorkspaceModalValue>; diff --git a/src/packages/block/block-rte/workspace/block-rte-workspace.modal-token.ts b/src/packages/block/block-rte/workspace/block-rte-workspace.modal-token.ts index f93502f052..84ca328671 100644 --- a/src/packages/block/block-rte/workspace/block-rte-workspace.modal-token.ts +++ b/src/packages/block/block-rte/workspace/block-rte-workspace.modal-token.ts @@ -12,6 +12,6 @@ export const UMB_BLOCK_RTE_WORKSPACE_MODAL = new UmbModalToken, UmbWorkspaceModalValue>; diff --git a/src/packages/block/block-type/workspace/block-type-workspace.context.ts b/src/packages/block/block-type/workspace/block-type-workspace.context.ts index 8352cfea9f..667af0cdd1 100644 --- a/src/packages/block/block-type/workspace/block-type-workspace.context.ts +++ b/src/packages/block/block-type/workspace/block-type-workspace.context.ts @@ -10,7 +10,6 @@ import { UmbSubmittableWorkspaceContextBase, UmbInvariantWorkspacePropertyDatasetContext, UmbWorkspaceIsNewRedirectController, - UmbWorkspaceRouteManager, } from '@umbraco-cms/backoffice/workspace'; import { UmbArrayState, UmbObjectState, appendToFrozenArray } from '@umbraco-cms/backoffice/observable-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; @@ -99,12 +98,22 @@ export class UmbBlockTypeWorkspaceContext, UmbWorkspaceModalValue>; diff --git a/src/packages/core/modal/context/modal.context.ts b/src/packages/core/modal/context/modal.context.ts index 7031517034..0caeee481b 100644 --- a/src/packages/core/modal/context/modal.context.ts +++ b/src/packages/core/modal/context/modal.context.ts @@ -26,7 +26,7 @@ export type UmbModalContextClassArgs< // TODO: consider splitting this into two separate handlers export class UmbModalContext< - ModalPreset extends { [key: string]: any } = { [key: string]: any }, + ModalData extends { [key: string]: any } = { [key: string]: any }, ModalValue = any, > extends UmbControllerBase { // @@ -35,19 +35,19 @@ export class UmbModalContext< #submitRejecter?: (reason?: UmbModalRejectReason) => void; public readonly key: string; - public readonly data: ModalPreset; + public readonly data: ModalData; public readonly type: UmbModalType = 'dialog'; public readonly size: UUIModalSidebarSize = 'small'; public readonly backdropBackground?: string; public readonly router: IRouterSlot | null = null; - public readonly alias: string | UmbModalToken; + public readonly alias: string | UmbModalToken; #value; public readonly value; constructor( host: UmbControllerHost, - modalAlias: string | UmbModalToken, + modalAlias: string | UmbModalToken, args: UmbModalContextClassArgs, ) { super(host); @@ -69,9 +69,9 @@ export class UmbModalContext< this.data = Object.freeze( // If we have both data and defaultData perform a deep merge args.data && defaultData - ? (umbDeepMerge(args.data as UmbDeepPartialObject, defaultData) as ModalPreset) + ? (umbDeepMerge(args.data as UmbDeepPartialObject, defaultData) as ModalData) : // otherwise pick one of them: - (args.data as ModalPreset) ?? defaultData, + (args.data as ModalData) ?? defaultData, ); const initValue = diff --git a/src/packages/data-type/workspace/data-type-workspace.modal-token.ts b/src/packages/data-type/workspace/data-type-workspace.modal-token.ts index 457a0f5ff4..19f13ca274 100644 --- a/src/packages/data-type/workspace/data-type-workspace.modal-token.ts +++ b/src/packages/data-type/workspace/data-type-workspace.modal-token.ts @@ -1,6 +1,6 @@ -import type { UmbDataTypeDetailModel } from '../types.js'; import type { UmbWorkspaceModalData, UmbWorkspaceModalValue } from '@umbraco-cms/backoffice/modal'; import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; +import type { UmbDataTypeDetailModel } from '../types.js'; export const UMB_DATATYPE_WORKSPACE_MODAL = new UmbModalToken< UmbWorkspaceModalData, diff --git a/src/packages/documents/document-types/workspace/document-type-workspace.modal-token.ts b/src/packages/documents/document-types/workspace/document-type-workspace.modal-token.ts index 87da2aba36..354e727f45 100644 --- a/src/packages/documents/document-types/workspace/document-type-workspace.modal-token.ts +++ b/src/packages/documents/document-types/workspace/document-type-workspace.modal-token.ts @@ -1,7 +1,7 @@ -import { UMB_DOCUMENT_TYPE_ENTITY_TYPE } from '../entity.js'; import { UMB_WORKSPACE_MODAL, UmbModalToken } from '@umbraco-cms/backoffice/modal'; import type { UmbDeepPartialObject } from '@umbraco-cms/backoffice/utils'; import type { UmbWorkspaceModalData, UmbWorkspaceModalValue } from '@umbraco-cms/backoffice/modal'; +import { UMB_DOCUMENT_TYPE_ENTITY_TYPE } from '../entity.js'; export interface UmbDocumentTypeWorkspaceData extends UmbWorkspaceModalData {} diff --git a/src/packages/language/workspace/language/language-workspace.modal-token.ts b/src/packages/language/workspace/language/language-workspace.modal-token.ts index 1e82ee6dd6..154ad2c671 100644 --- a/src/packages/language/workspace/language/language-workspace.modal-token.ts +++ b/src/packages/language/workspace/language/language-workspace.modal-token.ts @@ -1,6 +1,6 @@ -import type { UmbLanguageDetailModel } from '../../types.js'; import type { UmbWorkspaceModalData, UmbWorkspaceModalValue } from '@umbraco-cms/backoffice/modal'; import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; +import type { UmbLanguageDetailModel } from '../../types.js'; export const UMB_LANGUAGE_WORKSPACE_MODAL = new UmbModalToken< UmbWorkspaceModalData,