diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/data-type/data-type.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/data-type/data-type.data.ts index 156d8eec47..428b407cae 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/data-type/data-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/data-type/data-type.data.ts @@ -674,6 +674,8 @@ export const data: Array = [ { label: 'Mocked Block Type for Block Grid', contentElementTypeKey: '4f68ba66-6fb2-4778-83b8-6ab4ca3a7c5c', + allowAtRoot: true, + allowInAreas: true, rowMinSpan: 1, rowMaxSpan: 2, columnSpanOptions: [ @@ -720,6 +722,7 @@ export const data: Array = [ iconColor: '#FFFDD0', backgroundColor: '#633f32', editorSize: 'medium', + allowInAreas: true, }, { @@ -728,30 +731,35 @@ export const data: Array = [ backgroundColor: 'gold', editorSize: 'medium', groupKey: 'demo-block-group-id', + allowInAreas: true, }, { label: 'Image', contentElementTypeKey: 'image-umbraco-demo-block-id', editorSize: 'medium', groupKey: 'demo-block-group-id', + allowInAreas: true, }, { label: 'Rich Text', contentElementTypeKey: 'rich-text-umbraco-demo-block-id', editorSize: 'medium', groupKey: 'demo-block-group-id', + allowInAreas: true, }, { label: 'Two Column Layout', contentElementTypeKey: 'two-column-layout-umbraco-demo-block-id', editorSize: 'medium', groupKey: 'demo-block-group-id', + allowAtRoot: false, }, { label: 'Test broken group key', contentElementTypeKey: 'test-block-id', editorSize: 'medium', groupKey: 'group-id-that-does-not-exist', + allowAtRoot: true, }, ], }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/property-editors/block-grid-type-configuration/property-editor-ui-block-grid-type-configuration.element.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/property-editors/block-grid-type-configuration/property-editor-ui-block-grid-type-configuration.element.ts index af64d5931b..0bc58d1c88 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/property-editors/block-grid-type-configuration/property-editor-ui-block-grid-type-configuration.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/property-editors/block-grid-type-configuration/property-editor-ui-block-grid-type-configuration.element.ts @@ -13,7 +13,7 @@ import type { UUIInputEvent } from '@umbraco-cms/backoffice/external/uui'; import { UMB_PROPERTY_DATASET_CONTEXT, type UmbPropertyDatasetContext } from '@umbraco-cms/backoffice/property'; import { UMB_WORKSPACE_MODAL, UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/modal'; -interface MappedGroupWithBlockTypes extends UmbBlockGridTypeGroupType { +interface MappedGroupWithBlockTypes extends Partial { blocks: Array; } @@ -90,7 +90,7 @@ export class UmbPropertyEditorUIBlockGridTypeConfigurationElement return { name: group.name, key: group.key, blocks: this._value.filter((value) => value.groupKey === group.key) }; }); - this._mappedValuesAndGroups = [{ name: '', key: '', blocks: valuesWithNoGroup }, ...valuesWithGroup]; + this._mappedValuesAndGroups = [{ blocks: valuesWithNoGroup }, ...valuesWithGroup]; } #onChange(e: CustomEvent, groupKey?: string) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/block-type-card/block-type-card.element.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/block-type-card/block-type-card.element.ts index e036503810..fa4093cf82 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/block-type-card/block-type-card.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/block-type-card/block-type-card.element.ts @@ -44,10 +44,10 @@ export class UmbBlockTypeCardElement extends UmbLitElement { private _elementTypeKey?: string | undefined; @state() - _name?: string; + _fallbackName?: string; @state() - _icon?: string | null; + _fallbackIcon?: string | null; constructor() { super(); @@ -55,8 +55,9 @@ export class UmbBlockTypeCardElement extends UmbLitElement { this.observe(this.#itemManager.items, (items) => { const item = items[0]; if (item) { - this._icon = item.icon; - this._name = item.name; + console.log('got item', item); + this._fallbackIcon = item.icon; + this._fallbackName = item.name; } }); } @@ -66,9 +67,9 @@ export class UmbBlockTypeCardElement extends UmbLitElement { return html` - + `; diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/input-block-type/input-block-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/input-block-type/input-block-type.element.ts index b8898d834e..8caac68e41 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/input-block-type/input-block-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/input-block-type/input-block-type.element.ts @@ -100,14 +100,14 @@ export class UmbInputBlockTypeElement< `; } - #renderItem = (item: BlockType) => { + #renderItem = (block: BlockType) => { return html` + .href="${this.workspacePath}/edit/${block.contentElementTypeKey}" + .contentElementTypeKey=${block.contentElementTypeKey}> diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/types.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/types.ts index 6919c4f23d..9357b666f1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/types.ts @@ -13,7 +13,7 @@ export interface UmbBlockTypeBaseModel { } export interface UmbBlockTypeGroup { - name?: string | null; + name?: string; key: string; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/modals/block-catalogue/block-catalogue-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/modals/block-catalogue/block-catalogue-modal.element.ts index bc05245210..b31b993fda 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/modals/block-catalogue/block-catalogue-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/modals/block-catalogue/block-catalogue-modal.element.ts @@ -5,7 +5,7 @@ import type { UmbBlockTypeGroup, UmbBlockTypeWithGroupKey, } from '@umbraco-cms/backoffice/block'; -import { css, html, customElement, state, repeat, ifDefined, nothing } from '@umbraco-cms/backoffice/external/lit'; +import { css, html, customElement, state, repeat, nothing } from '@umbraco-cms/backoffice/external/lit'; import { UMB_MODAL_CONTEXT, UmbModalBaseElement, @@ -56,11 +56,9 @@ export class UmbBlockCatalogueModalElement extends UmbModalBaseElement< const blocks: Array = this.data.blocks ?? []; const blockGroups: Array = this.data.blockGroups ?? []; - console.log(blocks, blockGroups); - const noGroupBlocks = blocks.filter((block) => !blockGroups.find((group) => group.key === block.groupKey)); const grouped = blockGroups.map((group) => ({ - name: group.name ?? '', + name: group.name, blocks: blocks.filter((block) => block.groupKey === group.key), })); @@ -88,28 +86,29 @@ export class UmbBlockCatalogueModalElement extends UmbModalBaseElement< } #renderCreateEmpty() { - console.log('render', this._groupedBlocks); return html` - ${this._groupedBlocks.map( - (group) => html` - ${group.name && group.name !== '' ? html`

${group.name}

` : nothing} -
- ${repeat( - group.blocks, - (block) => block.contentElementTypeKey, - (block) => html` - - - `, - )} -
- `, - )} + ${this._groupedBlocks + ? this._groupedBlocks.map( + (group) => html` + ${group.name && group.name !== '' ? html`

${group.name}

` : nothing} +
+ ${repeat( + group.blocks, + (block) => block.contentElementTypeKey, + (block) => html` + + + `, + )} +
+ `, + ) + : ''} `; }