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 d6be254013..0b3d26e95b 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 @@ -148,6 +148,10 @@ export abstract class UmbBlockManagerContext< getContentTypeNameOf(contentTypeKey: string) { return this.#contentTypes.getValue().find((x) => x.unique === contentTypeKey)?.name; } + getContentTypeHasProperties(contentTypeKey: string) { + const properties = this.#contentTypes.getValue().find((x) => x.unique === contentTypeKey)?.properties; + return properties ? properties.length > 0 : false; + } blockTypeOf(contentTypeKey: string) { return this.#blockTypes.asObservablePart((source) => source.find((x) => x.contentElementTypeKey === contentTypeKey), 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 6d735b18f6..92de7b54d6 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 @@ -1,6 +1,10 @@ import { UMB_BLOCK_WORKSPACE_MODAL } from '../../workspace/index.js'; import type { UmbBlockTypeGroup, UmbBlockTypeWithGroupKey } from '@umbraco-cms/backoffice/block-type'; -import type { UmbBlockCatalogueModalData, UmbBlockCatalogueModalValue } from '@umbraco-cms/backoffice/block'; +import { + UMB_BLOCK_MANAGER_CONTEXT, + type UmbBlockCatalogueModalData, + type UmbBlockCatalogueModalValue, +} from '@umbraco-cms/backoffice/block'; import { css, html, customElement, state, repeat, nothing } from '@umbraco-cms/backoffice/external/lit'; import type { UUIInputEvent } from '@umbraco-cms/backoffice/external/uui'; import { UMB_MODAL_CONTEXT, UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; @@ -14,8 +18,7 @@ export class UmbBlockCatalogueModalElement extends UmbModalBaseElement< UmbBlockCatalogueModalData, UmbBlockCatalogueModalValue > { - // - private _search = ''; + #search = ''; private _groupedBlocks: Array<{ name?: string; blocks: Array }> = []; @@ -28,6 +31,9 @@ export class UmbBlockCatalogueModalElement extends UmbModalBaseElement< @state() private _filtered: Array<{ name?: string; blocks: Array }> = []; + @state() + _manager?: typeof UMB_BLOCK_MANAGER_CONTEXT.TYPE; + constructor() { super(); @@ -49,6 +55,10 @@ export class UmbBlockCatalogueModalElement extends UmbModalBaseElement< }); } }); + + this.consumeContext(UMB_BLOCK_MANAGER_CONTEXT, (manager) => { + this._manager = manager; + }); } override connectedCallback() { @@ -71,10 +81,10 @@ export class UmbBlockCatalogueModalElement extends UmbModalBaseElement< } #updateFiltered() { - if (this._search.length === 0) { + if (this.#search.length === 0) { this._filtered = this._groupedBlocks; } else { - const search = this._search.toLowerCase(); + const search = this.#search.toLowerCase(); this._filtered = this._groupedBlocks.map((group) => { return { ...group, blocks: group.blocks.filter((block) => block.label?.toLocaleLowerCase().includes(search)) }; }); @@ -82,7 +92,7 @@ export class UmbBlockCatalogueModalElement extends UmbModalBaseElement< } #onSearch(e: UUIInputEvent) { - this._search = e.target.value as string; + this.#search = e.target.value as string; this.#updateFiltered(); } @@ -98,7 +108,7 @@ export class UmbBlockCatalogueModalElement extends UmbModalBaseElement< override render() { return html` - ${this.#renderViews()} ${this._openClipboard ? this.#renderClipboard() : this.#renderCreateEmpty()} + ${this.#renderViews()}${this.#renderMain()}
this.#chooseBlock(block.contentElementTypeKey)} - .href=${this._workspacePath + .href=${this._workspacePath && this._manager!.getContentTypeHasProperties(block.contentElementTypeKey) ? `${this._workspacePath}create/${block.contentElementTypeKey}` : undefined}>