consider mount of properties for create in workspace
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -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<UmbBlockTypeWithGroupKey> }> = [];
|
||||
|
||||
@@ -28,6 +31,9 @@ export class UmbBlockCatalogueModalElement extends UmbModalBaseElement<
|
||||
@state()
|
||||
private _filtered: Array<{ name?: string; blocks: Array<UmbBlockTypeWithGroupKey> }> = [];
|
||||
|
||||
@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`
|
||||
<umb-body-layout headline="${this.localize.term('blockEditor_addBlock')}">
|
||||
${this.#renderViews()} ${this._openClipboard ? this.#renderClipboard() : this.#renderCreateEmpty()}
|
||||
${this.#renderViews()}${this.#renderMain()}
|
||||
<div slot="actions">
|
||||
<uui-button label=${this.localize.term('general_close')} @click=${this._rejectModal}></uui-button>
|
||||
<uui-button
|
||||
@@ -111,6 +121,10 @@ export class UmbBlockCatalogueModalElement extends UmbModalBaseElement<
|
||||
`;
|
||||
}
|
||||
|
||||
#renderMain() {
|
||||
return this._manager ? (this._openClipboard ? this.#renderClipboard() : this.#renderCreateEmpty()) : nothing;
|
||||
}
|
||||
|
||||
#renderClipboard() {
|
||||
return html`Clipboard`;
|
||||
}
|
||||
@@ -140,7 +154,7 @@ export class UmbBlockCatalogueModalElement extends UmbModalBaseElement<
|
||||
.backgroundColor=${block.backgroundColor}
|
||||
.contentElementTypeKey=${block.contentElementTypeKey}
|
||||
@open=${() => this.#chooseBlock(block.contentElementTypeKey)}
|
||||
.href=${this._workspacePath
|
||||
.href=${this._workspacePath && this._manager!.getContentTypeHasProperties(block.contentElementTypeKey)
|
||||
? `${this._workspacePath}create/${block.contentElementTypeKey}`
|
||||
: undefined}>
|
||||
</umb-block-type-card>
|
||||
|
||||
Reference in New Issue
Block a user