Merge branch 'main' into feature/update-uui-1.6-rc2

This commit is contained in:
Jacob Overgaard
2023-12-15 12:50:40 +01:00
committed by GitHub
5 changed files with 35 additions and 5 deletions

View File

@@ -46,6 +46,7 @@ export class UmbTreePickerModalElement<TreeItemType extends UmbTreeItemModelBase
@selection-change=${this.#onSelectionChange}
.selection=${this._selection}
selectable
.filter=${this.data?.filter}
.selectableFilter=${this.data?.pickableFilter}
?multiple=${this._multiple}></umb-tree>
</uui-box>

View File

@@ -30,6 +30,8 @@ export class UmbTreeContextBase<TreeItemType extends UmbTreeItemModelBase>
public repository?: UmbTreeRepository<TreeItemType>;
public selectableFilter?: (item: TreeItemType) => boolean = () => true;
public filter?: (item: TreeItemType) => boolean = () => true;
public readonly selection = new UmbSelectionManager(this._host);
#treeAlias?: string;

View File

@@ -66,6 +66,14 @@ export class UmbTreeElement extends UmbLitElement {
this.#treeContext.selectableFilter = newVal;
}
@property()
get filter() {
return this.#treeContext.filter;
}
set filter(newVal) {
this.#treeContext.filter = newVal;
}
@state()
private _items: UmbTreeItemModelBase[] = [];

View File

@@ -1,5 +1,5 @@
import { UmbDocumentTypePickerContext } from './document-type-input.context.js';
import { css, html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit';
import { css, html, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit';
import { FormControlMixin } from '@umbraco-cms/backoffice/external/uui';
import { UmbLitElement } from '@umbraco-cms/internal/lit-element';
import type { DocumentTypeItemResponseModel } from '@umbraco-cms/backoffice/backend-api';
@@ -7,6 +7,15 @@ import { splitStringToArray } from '@umbraco-cms/backoffice/utils';
@customElement('umb-document-type-input')
export class UmbDocumentTypeInputElement extends FormControlMixin(UmbLitElement) {
/**
* Selects the element types only
* @type {boolean}
* @attr
* @default false
*/
@property({ type: Boolean, attribute: 'element-types-only' })
elementTypesOnly: boolean = false;
/**
* This is a minimum amount of selected items in this input.
* @type {number}
@@ -102,19 +111,28 @@ export class UmbDocumentTypeInputElement extends FormControlMixin(UmbLitElement)
return undefined;
}
#openPicker() {
if (this.elementTypesOnly) {
this.#pickerContext.openPicker({
hideTreeRoot: true,
pickableFilter: (x) => x.isElement!,
});
} else {
this.#pickerContext.openPicker({ hideTreeRoot: true });
}
}
render() {
return html`
<uui-ref-list>${this._items?.map((item) => this._renderItem(item))}</uui-ref-list>
<uui-button id="add-button" look="placeholder" @click=${() => this.#pickerContext.openPicker()} label="open"
>Add</uui-button
>
<uui-button id="add-button" look="placeholder" @click=${this.#openPicker} label="open">Add</uui-button>
`;
}
private _renderItem(item: DocumentTypeItemResponseModel) {
if (!item.id) return;
return html`
<uui-ref-node-document-type name=${item.name}>
<uui-ref-node-document-type name=${ifDefined(item.name)}>
<uui-action-bar slot="actions">
<uui-button
@click=${() => this.#pickerContext.requestRemoveItem(item.id!)}

View File

@@ -60,6 +60,7 @@ export class UmbDocumentTypeWorkspaceViewStructureElement extends UmbLitElement
<div slot="editor">
<!-- TODO: maybe we want to somehow display the hierarchy, but not necessary in the same way as old backoffice? -->
<umb-document-type-input
element-types-only
.selectedIds=${this._allowedContentTypeIDs ?? []}
@change="${(e: CustomEvent) => {
const sortedContentTypesList = (e.target as UmbDocumentTypeInputElement).selectedIds.map(