From 9afce496edb34eca4f00ed0a467cac586a2fa3ec Mon Sep 17 00:00:00 2001 From: leekelleher Date: Tue, 19 Mar 2024 10:41:39 +0000 Subject: [PATCH] Bugfix: Dropdown data structure The property-editor value needs to support both `string` and `string[]` value types. --- .../input-dropdown-list.element.ts | 5 +- .../property-editor-ui-dropdown.element.ts | 52 +++++++------------ 2 files changed, 22 insertions(+), 35 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-dropdown/input-dropdown-list.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-dropdown/input-dropdown-list.element.ts index f876a1cabd..ca52c1e656 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-dropdown/input-dropdown-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-dropdown/input-dropdown-list.element.ts @@ -1,7 +1,8 @@ import { css, html, customElement, property, query } from '@umbraco-cms/backoffice/external/lit'; -import type { UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; import { FormControlMixin } from '@umbraco-cms/backoffice/external/uui'; +import { UmbChangeEvent } from '@umbraco-cms/backoffice/event'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; +import type { UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; @customElement('umb-input-dropdown-list') export class UmbInputDropdownListElement extends FormControlMixin(UmbLitElement) { @@ -25,7 +26,7 @@ export class UmbInputDropdownListElement extends FormControlMixin(UmbLitElement) #onChange(e: UUISelectEvent) { e.stopPropagation(); if (e.target.value) this.value = e.target.value; - this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true })); + this.dispatchEvent(new UmbChangeEvent()); } render() { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/dropdown/property-editor-ui-dropdown.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/dropdown/property-editor-ui-dropdown.element.ts index c200e6b562..fbc1b7a7d8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/dropdown/property-editor-ui-dropdown.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/dropdown/property-editor-ui-dropdown.element.ts @@ -1,55 +1,41 @@ import { html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; +import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; +import { UmbPropertyValueChangeEvent } from '@umbraco-cms/backoffice/property-editor'; +import type { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor'; import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry'; import type { UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; -import type { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; /** * @element umb-property-editor-ui-dropdown */ @customElement('umb-property-editor-ui-dropdown') export class UmbPropertyEditorUIDropdownElement extends UmbLitElement implements UmbPropertyEditorUiElement { - #value = ''; - @property({ type: String }) - public set value(value: string | undefined) { - this.#value = value?.trim() || ''; - } - public get value(): string { - return this.#value; - } + #selection: Array = []; - @state() - _multiple?: boolean; + @property({ type: Array }) + public set value(value: Array | string | undefined) { + this.#selection = Array.isArray(value) ? value : value ? [value] : []; + } + public get value(): Array | undefined { + return this.#selection; + } @state() private _list: Array