diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/core/components/tree-picker-modal/tree-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/core/components/tree-picker-modal/tree-picker-modal.element.ts new file mode 100644 index 0000000000..34edfe18b1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/core/components/tree-picker-modal/tree-picker-modal.element.ts @@ -0,0 +1,70 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, state } from 'lit/decorators.js'; +import type { UmbTreeElement } from '../tree/tree.element'; +import { ManifestModalTreePickerKind } from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbPickerModalData, UmbPickerModalResult } from '@umbraco-cms/backoffice/modal'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; + +@customElement('umb-tree-picker-modal') +export class UmbTreePickerModalElement extends UmbModalBaseElement< + UmbPickerModalData, + UmbPickerModalResult, + ManifestModalTreePickerKind +> { + @state() + _selection: Array = []; + + @state() + _multiple = false; + + connectedCallback() { + super.connectedCallback(); + + this._selection = this.data?.selection ?? []; + this._multiple = this.data?.multiple ?? false; + } + + #onSelectionChange(e: CustomEvent) { + e.stopPropagation(); + const element = e.target as UmbTreeElement; + this._selection = element.selection; + } + + #submit() { + this.modalHandler?.submit({ selection: this._selection }); + } + + #close() { + this.modalHandler?.reject(); + } + + render() { + return html` + + + + +
+ + +
+
+ `; + } + + static styles = [UUITextStyles, css``]; +} + +export default UmbTreePickerModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-tree-picker-modal': UmbTreePickerModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/core/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/core/index.ts index da5ff50bc9..d0c5b467c9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/core/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/core/index.ts @@ -14,8 +14,6 @@ import { ManifestKind, ManifestTypes } from '@umbraco-cms/backoffice/extensions- import './notification'; -import './components/tree-picker-modal/tree-picker-modal.element'; - export const manifests: Array = [ ...componentManifests, ...propertyActionManifests,