diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/user-picker/property-editor-ui-user-picker.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/user-picker/property-editor-ui-user-picker.element.ts
index 1aaa695503..0535b38937 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/user-picker/property-editor-ui-user-picker.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/user-picker/property-editor-ui-user-picker.element.ts
@@ -1,7 +1,9 @@
import { html, customElement, property } from '@umbraco-cms/backoffice/external/lit';
-import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry';
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 { UmbUserInputElement } from '@umbraco-cms/backoffice/user';
/**
* @element umb-property-editor-ui-user-picker
@@ -9,14 +11,19 @@ import type { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/
@customElement('umb-property-editor-ui-user-picker')
export class UmbPropertyEditorUIUserPickerElement extends UmbLitElement implements UmbPropertyEditorUiElement {
@property()
- value = '';
+ value?: string = '';
@property({ attribute: false })
public config?: UmbPropertyEditorConfigCollection;
- // TODO: implement config
+ #onChange(event: CustomEvent) {
+ const element = event.target as UmbUserInputElement;
+ this.value = element.selection.join(',');
+ this.dispatchEvent(new UmbPropertyValueChangeEvent());
+ }
+
render() {
- return html` `;
+ return html``;
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/components/user-input/user-input.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/components/user-input/user-input.element.ts
index 218c4517c6..6b4f8537e7 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/user/user/components/user-input/user-input.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/components/user-input/user-input.element.ts
@@ -1,12 +1,14 @@
import type { UmbUserItemModel } from '../../repository/index.js';
import { UmbUserPickerContext } from './user-input.context.js';
-import { css, html, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit';
+import { css, html, customElement, property, state, nothing } from '@umbraco-cms/backoffice/external/lit';
import { FormControlMixin } from '@umbraco-cms/backoffice/external/uui';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import { splitStringToArray } from '@umbraco-cms/backoffice/utils';
@customElement('umb-user-input')
export class UmbUserInputElement extends FormControlMixin(UmbLitElement) {
+ // TODO: [LK] Add sorting!
+
/**
* This is a minimum amount of selected items in this input.
* @type {number}
@@ -105,31 +107,42 @@ export class UmbUserInputElement extends FormControlMixin(UmbLitElement) {
return undefined;
}
+ #openPicker() {
+ this.#pickerContext.openPicker({});
+ }
+
render() {
return html`
- ${this._items?.map((item) => this._renderItem(item))}
- this.#pickerContext.openPicker()} label="open"
- >Add
+ ${this._items?.map((item) => this.#renderItem(item))}
+ ${this.#renderAddButton()}
`;
}
- private _renderItem(item: UmbUserItemModel) {
+ #renderItem(item: UmbUserItemModel) {
if (!item.unique) return;
return html`
-
+
- this.#pickerContext.requestRemoveItem(item.unique)} label="Remove ${item.name}"
- >Remove
+ this.#pickerContext.requestRemoveItem(item.unique)}
+ label=${this.localize.term('general_remove')}>
`;
}
+ #renderAddButton() {
+ if (this.max === 1 && this.selection.length >= this.max) return nothing;
+ return html``;
+ }
+
static styles = [
css`
- #add-button {
+ #btn-add {
width: 100%;
}
`,
diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/user-picker/user-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/user-picker/user-picker-modal.element.ts
index d8459f569f..a49ec7f808 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/user-picker/user-picker-modal.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/user-picker/user-picker-modal.element.ts
@@ -48,7 +48,7 @@ export class UmbUserPickerModalElement extends UmbModalBaseElement
+
${this._users.map(
(user) => html`